diff --git a/.gitignore b/.gitignore index ab1c7c4b842..5e379323af0 100644 --- a/.gitignore +++ b/.gitignore @@ -75,10 +75,7 @@ __pycache__ # Project specific dev-sources.json -product_docs/content/* -!product_docs/content/.keep -product_docs/content_build/* -!product_docs/content_build/.keep +product_docs/content/ +product_docs/content_build/ static/nginx_redirects.generated -temp_kubernetes/build/* - +temp_kubernetes/ diff --git a/advocacy_docs/kubernetes/cloud_native_postgresql/installation.mdx b/advocacy_docs/kubernetes/cloud_native_postgresql/installation.mdx index b90d18d9164..ef356a15e30 100644 --- a/advocacy_docs/kubernetes/cloud_native_postgresql/installation.mdx +++ b/advocacy_docs/kubernetes/cloud_native_postgresql/installation.mdx @@ -11,12 +11,12 @@ product: 'Cloud Native Operator' The operator can be installed like any other resource in Kubernetes, through a YAML manifest applied via `kubectl`. -You can install the [latest operator manifest](https://get.enterprisedb.io/cnp/postgresql-operator-1.2.0.yaml) +You can install the [latest operator manifest](https://get.enterprisedb.io/cnp/postgresql-operator-1.2.1.yaml) as follows: ```sh kubectl apply -f \ - https://get.enterprisedb.io/cnp/postgresql-operator-1.2.0.yaml + https://get.enterprisedb.io/cnp/postgresql-operator-1.2.1.yaml ``` Once you have run the `kubectl` command, Cloud Native PostgreSQL will be installed in your Kubernetes cluster. diff --git a/build-sources.json b/build-sources.json index 0e04802ef96..87b20c54f67 100644 --- a/build-sources.json +++ b/build-sources.json @@ -1,5 +1,5 @@ { - "ark": true, + "ark": false, "bdr": true, "bart": true, "efm": true, diff --git a/docs/how-tos/sync-cnp-docs.md b/docs/how-tos/sync-cnp-docs.md index afea70fb812..8bb0f00aea5 100644 --- a/docs/how-tos/sync-cnp-docs.md +++ b/docs/how-tos/sync-cnp-docs.md @@ -6,8 +6,10 @@ GitHub action dispatch and automated event handling. 1. The CNP team informs us that there's a new version. 1. Check out the appropriate version from the [CNP][] repo. -1. Replace `docs:temp_kubernetes/original/` with - `cloud-native-postgresql:docs/`. +1. Replace `docs:temp_kubernetes/docs/` with `cloud-native-postgresql:docs/`. + + `temp_kubernetes/docs/` is not tracked via Git, so if it's not present + already, you'll need to create the directory yourself. 1. Transpile original source documentation into MDX format: ```sh diff --git a/gatsby-config.js b/gatsby-config.js index 3aa224ee55e..e68cd438239 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -230,6 +230,7 @@ module.exports = { infima: true, customTypes: { seealso: 'note', + hint: 'tip', }, }, ], diff --git a/package.json b/package.json index 3f2c3b32d3d..2153248aaa1 100644 --- a/package.json +++ b/package.json @@ -29,53 +29,52 @@ "@mdx-js/react": "^1.6.1", "algoliasearch": "^4.2.0", "balance-text": "^3.3.0", - "bl": "4.1.0", + "bl": "5.0.0", "bootstrap": "4.6.0", - "gatsby": "^3.1.0", - "gatsby-cli": "^3.1.0", - "gatsby-plugin-algolia": "^0.17.0", - "gatsby-plugin-catch-links": "^3.0.0", + "gatsby": "^3.2.1", + "gatsby-cli": "^3.2.0", + "gatsby-plugin-algolia": "^0.18.0", + "gatsby-plugin-catch-links": "^3.2.0", "gatsby-plugin-google-fonts": "^1.0.1", - "gatsby-plugin-google-tagmanager": "^3.0.0", - "gatsby-plugin-manifest": "^3.0.0", - "gatsby-plugin-mdx": "^2.0.1", + "gatsby-plugin-google-tagmanager": "^3.2.0", + "gatsby-plugin-manifest": "^3.2.0", + "gatsby-plugin-mdx": "^2.2.0", "gatsby-plugin-meta-redirect": "^1.1.1", - "gatsby-plugin-netlify": "^3.0.1", + "gatsby-plugin-netlify": "^3.2.0", "gatsby-plugin-nginx-redirect": "^0.0.11", - "gatsby-plugin-react-helmet": "^4.0.0", + "gatsby-plugin-react-helmet": "^4.2.0", "gatsby-plugin-react-svg": "^3.0.0", - "gatsby-plugin-sass": "^4.0.2", - "gatsby-plugin-sharp": "^3.0.1", - "gatsby-plugin-sitemap": "^3.0.0", - "gatsby-remark-autolink-headers": "^3.0.0", - "gatsby-remark-images": "4.0.0", - "gatsby-remark-prismjs": "^4.0.0", - "gatsby-source-filesystem": "^3.0.0", - "gatsby-transformer-json": "^3.0.0", - "gatsby-transformer-remark": "^3.0.0", - "gatsby-transformer-sharp": "^3.0.0", + "gatsby-plugin-sass": "^4.2.0", + "gatsby-plugin-sharp": "^3.2.0", + "gatsby-plugin-sitemap": "^3.2.0", + "gatsby-remark-autolink-headers": "^3.2.0", + "gatsby-remark-images": "4.2.0", + "gatsby-remark-prismjs": "^4.2.0", + "gatsby-source-filesystem": "^3.2.0", + "gatsby-transformer-json": "^3.2.0", + "gatsby-transformer-remark": "^3.2.0", + "gatsby-transformer-sharp": "^3.2.0", "graceful-fs": "^4.2.4", "is-absolute-url": "^3.0.3", "markdown-to-jsx": "^7.0.0", "prismjs": "^1.21.0", - "react": "^17.0.1", + "react": "^17.0.2", "react-bootstrap": "^1.0.1", - "react-dom": "^17.0.1", + "react-dom": "^17.0.2", "react-helmet": "^6.0.0", "react-instantsearch-dom": "^6.9.0", "remark-admonitions": "https://github.com/josh-heyer/remark-admonitions", "sass": "^1.32.5", - "truncate-utf8-bytes": "^1.0.2", - "yarn": "^1.22.10" + "truncate-utf8-bytes": "^1.0.2" }, "devDependencies": { "fast-glob": "^3.2.5", "hast-util-is-element": "^1.1.0", "hast-util-to-text": "^2.0.1", - "husky": "^5.1.3", + "husky": "^6.0.0", "prettier": "^2.2.1", "pretty-quick": "^3.1.0", - "react-refresh": "^0.9.0", + "react-refresh": "^0.10.0", "rehype-format": "^3.1.0", "rehype-parse": "^7.0.1", "rehype-remark": "^8.0.0", diff --git a/product_docs/docs/.vscode/settings.json b/product_docs/docs/.vscode/settings.json deleted file mode 100644 index ed94f44b108..00000000000 --- a/product_docs/docs/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "git.ignoreLimitWarning": true -} \ No newline at end of file diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_features_admin_tab.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_features_admin_tab.png new file mode 100755 index 00000000000..fb1429ffa08 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_features_admin_tab.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_features_console.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_features_console.png new file mode 100755 index 00000000000..ced1d166b70 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_features_console.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_features_login.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_features_login.png new file mode 100755 index 00000000000..b738fb38e36 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_features_login.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_access_console_logs.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_access_console_logs.png new file mode 100755 index 00000000000..bbc942316d4 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_access_console_logs.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_access_core_usage_logs.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_access_core_usage_logs.png new file mode 100755 index 00000000000..fa0dd6c604f Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_access_core_usage_logs.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_add_db_engine.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_add_db_engine.png new file mode 100755 index 00000000000..28c9cb60b4c Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_add_db_engine.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_add_postgis_db_engine.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_add_postgis_db_engine.png new file mode 100755 index 00000000000..cb53b1be745 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_add_postgis_db_engine.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_add_rhel_sub.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_add_rhel_sub.png new file mode 100755 index 00000000000..332ab7f5d70 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_add_rhel_sub.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_add_template.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_add_template.png new file mode 100755 index 00000000000..a67d05136e7 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_add_template.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_add_user.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_add_user.png new file mode 100755 index 00000000000..a1b4470525f Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_add_user.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_aws_add_role.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_aws_add_role.png new file mode 100755 index 00000000000..a87d412d9af Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_aws_add_role.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_aws_role_arn.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_aws_role_arn.png new file mode 100755 index 00000000000..432433bdb86 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_aws_role_arn.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_aws_role_pane.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_aws_role_pane.png new file mode 100755 index 00000000000..a3cc8133858 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_aws_role_pane.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_console_switcher.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_console_switcher.png new file mode 100755 index 00000000000..2c7542e0e21 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_console_switcher.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_console_switcher_add_url.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_console_switcher_add_url.png new file mode 100755 index 00000000000..7a16c1a357f Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_console_switcher_add_url.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_console_switcher_delete_url.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_console_switcher_delete_url.png new file mode 100755 index 00000000000..c2790763aef Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_console_switcher_delete_url.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_console_switcher_enable.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_console_switcher_enable.png new file mode 100755 index 00000000000..bc1c75d554c Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_console_switcher_enable.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_console_switcher_pane.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_console_switcher_pane.png new file mode 100755 index 00000000000..8e94ab955b3 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_console_switcher_pane.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_create_cross_region.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_create_cross_region.png new file mode 100755 index 00000000000..f82ba226c96 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_create_cross_region.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_create_server.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_create_server.png new file mode 100755 index 00000000000..3f41c28a780 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_create_server.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_delete_db_engine.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_delete_db_engine.png new file mode 100755 index 00000000000..a3127d35904 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_delete_db_engine.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_delete_rhel_sub.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_delete_rhel_sub.png new file mode 100755 index 00000000000..4226d19e001 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_delete_rhel_sub.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_delete_server.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_delete_server.png new file mode 100755 index 00000000000..0a6b3dc2bf9 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_delete_server.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_delete_server_error.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_delete_server_error.png new file mode 100755 index 00000000000..6f2a877347d Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_delete_server_error.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_display_connected.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_display_connected.png new file mode 100755 index 00000000000..b87a97d21e1 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_display_connected.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_edit_inst_prop_pane.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_edit_inst_prop_pane.png new file mode 100755 index 00000000000..48210f4fc3b Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_edit_inst_prop_pane.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_generate_token.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_generate_token.png new file mode 100755 index 00000000000..31f55dba94c Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_generate_token.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_manage_db_engine_pane.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_manage_db_engine_pane.png new file mode 100755 index 00000000000..d75a813881f Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_manage_db_engine_pane.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_manage_server_pane.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_manage_server_pane.png new file mode 100755 index 00000000000..9685e43e171 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_manage_server_pane.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_modify_db_engine.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_modify_db_engine.png new file mode 100755 index 00000000000..3cf0a7c8556 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_modify_db_engine.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_modify_server.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_modify_server.png new file mode 100755 index 00000000000..1cea49ddc7d Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_modify_server.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_name_console.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_name_console.png new file mode 100755 index 00000000000..88b0363209b Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_name_console.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_register_console.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_register_console.png new file mode 100755 index 00000000000..9cfd2edeee5 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_register_console.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_rhel_sub_details.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_rhel_sub_details.png new file mode 100755 index 00000000000..5a4f0600393 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_rhel_sub_details.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_rhel_sub_mgmt_pane.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_rhel_sub_mgmt_pane.png new file mode 100755 index 00000000000..2efb47fd703 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_rhel_sub_mgmt_pane.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_take_manual_backup.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_take_manual_backup.png new file mode 100755 index 00000000000..7229a2fca84 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_take_manual_backup.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_template_details.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_template_details.png new file mode 100755 index 00000000000..9c30bd8aa2f Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_template_details.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_template_pane.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_template_pane.png new file mode 100755 index 00000000000..6a5bdc6bf69 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_template_pane.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_token_revoke.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_token_revoke.png new file mode 100755 index 00000000000..a84a8c8b148 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_token_revoke.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_user_admin_aws_host.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_user_admin_aws_host.png new file mode 100755 index 00000000000..8e7b54eec71 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_user_admin_aws_host.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_user_admin_azure_host.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_user_admin_azure_host.png new file mode 100755 index 00000000000..9ecb1b06193 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_user_admin_azure_host.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_user_pane.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_user_pane.png new file mode 100755 index 00000000000..53e6f5ba682 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_user_pane.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_wall_message.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_wall_message.png new file mode 100755 index 00000000000..6176d64064f Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_wall_message.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_wall_message_pane.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_wall_message_pane.png new file mode 100755 index 00000000000..1bb2fc6c656 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_admin_tab_wall_message_pane.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_architecture_load_balancing.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_architecture_load_balancing.png new file mode 100755 index 00000000000..b0b622e2206 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_architecture_load_balancing.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_architecture_overview.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_architecture_overview.png new file mode 100755 index 00000000000..2bb498533c8 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_architecture_overview.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_architecture_overview_create_new_cluster.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_architecture_overview_create_new_cluster.png new file mode 100755 index 00000000000..566d2b5efaf Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_architecture_overview_create_new_cluster.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_authentication_models_aws_pg_auth.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_authentication_models_aws_pg_auth.png new file mode 100755 index 00000000000..4969ba7ef6b Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_authentication_models_aws_pg_auth.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_authentication_models_aws_provider_auth.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_authentication_models_aws_provider_auth.png new file mode 100755 index 00000000000..4064562987c Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_authentication_models_aws_provider_auth.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_authentication_models_azure_pg_auth.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_authentication_models_azure_pg_auth.png new file mode 100755 index 00000000000..8ef026e3592 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_authentication_models_azure_pg_auth.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_authentication_models_azure_provider_auth.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_authentication_models_azure_provider_auth.png new file mode 100755 index 00000000000..c573a3cfa2a Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_authentication_models_azure_provider_auth.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_console_mgmt_modify_backup_props.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_console_mgmt_modify_backup_props.png new file mode 100755 index 00000000000..b0232063cae Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_console_mgmt_modify_backup_props.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_console_mgmt_recover.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_console_mgmt_recover.png new file mode 100755 index 00000000000..8cc6b08dc14 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_console_mgmt_recover.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_dba_tab.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_dba_tab.png new file mode 100755 index 00000000000..5759b4317ba Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_dba_tab.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_dba_tab_drop_down.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_dba_tab_drop_down.png new file mode 100755 index 00000000000..1f4b971f6cb Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_dba_tab_drop_down.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_dba_tab_user_info.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_dba_tab_user_info.png new file mode 100755 index 00000000000..5ec35d67489 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_dba_tab_user_info.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_add_user_dialog.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_add_user_dialog.png new file mode 100755 index 00000000000..61674dd5467 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_add_user_dialog.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_add_user_success.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_add_user_success.png new file mode 100755 index 00000000000..5037dccf655 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_add_user_success.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_ark_dashboard.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_ark_dashboard.png new file mode 100755 index 00000000000..576494fd0d1 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_ark_dashboard.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_ark_login.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_ark_login.png new file mode 100755 index 00000000000..7733626ee51 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_ark_login.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_attach_perm_policy.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_attach_perm_policy.png new file mode 100755 index 00000000000..919730404ab Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_attach_perm_policy.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_attach_policy.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_attach_policy.png new file mode 100755 index 00000000000..b29e4e557a7 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_attach_policy.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_backup_props.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_backup_props.png new file mode 100755 index 00000000000..258846282b0 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_backup_props.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_complete_policy.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_complete_policy.png new file mode 100755 index 00000000000..464d14ec49d Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_complete_policy.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_conf_ark_console.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_conf_ark_console.png new file mode 100755 index 00000000000..f6a61de718b Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_conf_ark_console.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_create_iam_role.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_create_iam_role.png new file mode 100755 index 00000000000..d86c4ffe034 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_create_iam_role.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_create_policy.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_create_policy.png new file mode 100755 index 00000000000..ad9862ea4b1 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_create_policy.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_create_svc_role.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_create_svc_role.png new file mode 100755 index 00000000000..796b4a8e6c3 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_create_svc_role.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_general_props.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_general_props.png new file mode 100755 index 00000000000..c364525c452 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_general_props.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_iam_role_edit_trust_rel.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_iam_role_edit_trust_rel.png new file mode 100755 index 00000000000..b0f2748d246 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_iam_role_edit_trust_rel.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_iam_role_perm.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_iam_role_perm.png new file mode 100755 index 00000000000..02c26802ac6 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_iam_role_perm.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_iam_role_review.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_iam_role_review.png new file mode 100755 index 00000000000..5d78b04bd08 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_iam_role_review.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_iam_role_sec_policy.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_iam_role_sec_policy.png new file mode 100755 index 00000000000..f7d8be1cb62 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_iam_role_sec_policy.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_iam_role_summary.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_iam_role_summary.png new file mode 100755 index 00000000000..fff2ac7020b Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_iam_role_summary.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_idp_props.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_idp_props.png new file mode 100755 index 00000000000..2ebcd4b50d8 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_idp_props.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_org_props.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_org_props.png new file mode 100755 index 00000000000..242070f325d Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_org_props.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_pem_props.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_pem_props.png new file mode 100755 index 00000000000..98b48855d20 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_pem_props.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_pwd_props.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_pwd_props.png new file mode 100755 index 00000000000..ba619bb703c Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_pwd_props.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_reg_step_1.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_reg_step_1.png new file mode 100755 index 00000000000..ccf9a332d11 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_reg_step_1.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_reg_step_2.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_reg_step_2.png new file mode 100755 index 00000000000..3f21f766e5e Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_reg_step_2.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_review_role.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_review_role.png new file mode 100755 index 00000000000..626b090fdc0 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_review_role.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_review_user.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_review_user.png new file mode 100755 index 00000000000..84e68c652c5 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_review_user.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_role_detail.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_role_detail.png new file mode 100755 index 00000000000..a700b7587e5 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_role_detail.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_role_edit_trust.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_role_edit_trust.png new file mode 100755 index 00000000000..6c8d10cf62d Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_role_edit_trust.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_role_permissions.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_role_permissions.png new file mode 100755 index 00000000000..e89fc7285d9 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_role_permissions.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_role_provide_policy.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_role_provide_policy.png new file mode 100755 index 00000000000..1826efd7da8 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_role_provide_policy.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_role_summary.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_role_summary.png new file mode 100755 index 00000000000..7ecbafb0e80 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_role_summary.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_saml_props.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_saml_props.png new file mode 100755 index 00000000000..398107e1381 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_saml_props.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_sp_props.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_sp_props.png new file mode 100755 index 00000000000..7be310c3dd7 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_sp_props.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_spec_props.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_spec_props.png new file mode 100755 index 00000000000..6047014d3fb Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_spec_props.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_step_3_details.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_step_3_details.png new file mode 100755 index 00000000000..55de5dd9d43 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_step_3_details.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_timezone_props.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_timezone_props.png new file mode 100755 index 00000000000..766cdfe9018 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_timezone_props.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_user_reg.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_user_reg.png new file mode 100755 index 00000000000..fd95cc07932 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_aws_user_reg.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_admin_console.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_admin_console.png new file mode 100755 index 00000000000..ced1d166b70 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_admin_console.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_api_perm_conf.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_api_perm_conf.png new file mode 100755 index 00000000000..8e44525a9c2 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_api_perm_conf.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_api_perm_grant.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_api_perm_grant.png new file mode 100755 index 00000000000..0a324200a6a Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_api_perm_grant.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_backup_props.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_backup_props.png new file mode 100755 index 00000000000..76933ff2892 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_backup_props.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_create_panel.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_create_panel.png new file mode 100755 index 00000000000..e08d6816077 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_create_panel.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_create_storage.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_create_storage.png new file mode 100755 index 00000000000..8066ae0b609 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_create_storage.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_create_vm.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_create_vm.png new file mode 100755 index 00000000000..3fd3034ff9b Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_create_vm.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_deploy.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_deploy.png new file mode 100755 index 00000000000..cc5b3b7f072 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_deploy.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_general_props.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_general_props.png new file mode 100755 index 00000000000..1f1134e5f75 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_general_props.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_idp_props.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_idp_props.png new file mode 100755 index 00000000000..8b2f4a2f921 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_idp_props.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_install_extension.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_install_extension.png new file mode 100755 index 00000000000..46e9044ceb8 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_install_extension.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_login.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_login.png new file mode 100755 index 00000000000..11ecf0baf94 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_login.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_new_app_reg.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_new_app_reg.png new file mode 100755 index 00000000000..18c31e84eb1 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_new_app_reg.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_org_props.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_org_props.png new file mode 100755 index 00000000000..89327f8fa29 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_org_props.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_password_props.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_password_props.png new file mode 100755 index 00000000000..53378cb43e2 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_password_props.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_pem_server_props.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_pem_server_props.png new file mode 100755 index 00000000000..998b49dec46 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_pem_server_props.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_props.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_props.png new file mode 100755 index 00000000000..671678f8a21 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_props.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_required_perm.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_required_perm.png new file mode 100755 index 00000000000..1ecfb05ea56 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_required_perm.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_required_permissions.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_required_permissions.png new file mode 100755 index 00000000000..fab1dc86cbe Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_required_permissions.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_saml_props.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_saml_props.png new file mode 100755 index 00000000000..b52af03db2f Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_saml_props.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_select_api.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_select_api.png new file mode 100755 index 00000000000..6613fbcd7b5 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_select_api.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_select_image.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_select_image.png new file mode 100755 index 00000000000..05f200f27ee Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_select_image.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_select_vm_size.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_select_vm_size.png new file mode 100755 index 00000000000..444cfabf616 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_select_vm_size.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_set_api_permissions.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_set_api_permissions.png new file mode 100755 index 00000000000..ecf89377044 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_set_api_permissions.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_sp_props.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_sp_props.png new file mode 100755 index 00000000000..7be310c3dd7 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_sp_props.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_timezone_props.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_timezone_props.png new file mode 100755 index 00000000000..52b7850e608 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_timezone_props.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_validation_passed.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_validation_passed.png new file mode 100755 index 00000000000..44cf3d6cbb1 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_validation_passed.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_vm_details.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_vm_details.png new file mode 100755 index 00000000000..07e39d5a87d Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_installing_console_azure_vm_details.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem.png new file mode 100755 index 00000000000..d893898ae32 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_architecture.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_architecture.png new file mode 100755 index 00000000000..73632578d1b Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_architecture.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_global_overview.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_global_overview.png new file mode 100755 index 00000000000..93119a97640 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_global_overview.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_group_role_dialog.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_group_role_dialog.png new file mode 100755 index 00000000000..952e36753d7 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_group_role_dialog.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_login_role_dialog.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_login_role_dialog.png new file mode 100755 index 00000000000..e666f4466f5 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_login_role_dialog.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_login_role_dialog_password.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_login_role_dialog_password.png new file mode 100755 index 00000000000..6d50e7fc98d Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_login_role_dialog_password.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_logon.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_logon.png new file mode 100755 index 00000000000..849daa264c6 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_logon.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_pg_hba.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_pg_hba.png new file mode 100755 index 00000000000..d396af2d927 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_pg_hba.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_registered_successfully.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_registered_successfully.png new file mode 100755 index 00000000000..04a9be9a934 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_registered_successfully.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_ssh_session.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_ssh_session.png new file mode 100755 index 00000000000..26917adfc41 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_registering_with_pem_ssh_session.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_securing_ark_editing_inbound_rules.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_securing_ark_editing_inbound_rules.png new file mode 100755 index 00000000000..9d3b2fd27cc Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_securing_ark_editing_inbound_rules.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/ark_securing_ark_using_ssl.png b/product_docs/docs/ark/3.5/ark_admin/images/ark_securing_ark_using_ssl.png new file mode 100755 index 00000000000..75f9f957f3e Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/ark_securing_ark_using_ssl.png differ diff --git a/product_docs/docs/ark/3.5/ark_admin/images/changing_console_passwords.png b/product_docs/docs/ark/3.5/ark_admin/images/changing_console_passwords.png new file mode 100755 index 00000000000..d810b0412f0 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_admin/images/changing_console_passwords.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/accessing_ark_console.png b/product_docs/docs/ark/3.5/ark_gsg/images/accessing_ark_console.png new file mode 100755 index 00000000000..354d31e74f9 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/accessing_ark_console.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/accessing_ark_console_dashboard.png b/product_docs/docs/ark/3.5/ark_gsg/images/accessing_ark_console_dashboard.png new file mode 100755 index 00000000000..92803d6192f Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/accessing_ark_console_dashboard.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/admin_settings_icon.png b/product_docs/docs/ark/3.5/ark_gsg/images/admin_settings_icon.png new file mode 100755 index 00000000000..9aeabd176a4 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/admin_settings_icon.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/ark_architecture_overview.png b/product_docs/docs/ark/3.5/ark_gsg/images/ark_architecture_overview.png new file mode 100755 index 00000000000..004b963c0e5 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/ark_architecture_overview.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/ark_cluster_download_logs.png b/product_docs/docs/ark/3.5/ark_gsg/images/ark_cluster_download_logs.png new file mode 100755 index 00000000000..6adad8bf951 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/ark_cluster_download_logs.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/ark_clusters_ssh_popup.png b/product_docs/docs/ark/3.5/ark_gsg/images/ark_clusters_ssh_popup.png new file mode 100755 index 00000000000..2585c663614 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/ark_clusters_ssh_popup.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/ark_clusters_tab.png b/product_docs/docs/ark/3.5/ark_gsg/images/ark_clusters_tab.png new file mode 100755 index 00000000000..9b06ed670d6 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/ark_clusters_tab.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/ark_create_cross_region.png b/product_docs/docs/ark/3.5/ark_gsg/images/ark_create_cross_region.png new file mode 100755 index 00000000000..f82ba226c96 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/ark_create_cross_region.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/ark_overview_load_balance.png b/product_docs/docs/ark/3.5/ark_gsg/images/ark_overview_load_balance.png new file mode 100755 index 00000000000..bc426cbc78a Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/ark_overview_load_balance.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/ark_overview_private_cloud.png b/product_docs/docs/ark/3.5/ark_gsg/images/ark_overview_private_cloud.png new file mode 100755 index 00000000000..112900cf0f6 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/ark_overview_private_cloud.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/ark_user_tab.png b/product_docs/docs/ark/3.5/ark_gsg/images/ark_user_tab.png new file mode 100755 index 00000000000..9f8f6c622fd Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/ark_user_tab.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/auto_scale_options_dialog.png b/product_docs/docs/ark/3.5/ark_gsg/images/auto_scale_options_dialog.png new file mode 100755 index 00000000000..91f63005a5e Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/auto_scale_options_dialog.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/backup_data_dialog.png b/product_docs/docs/ark/3.5/ark_gsg/images/backup_data_dialog.png new file mode 100755 index 00000000000..8e1b0d0e5f5 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/backup_data_dialog.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/backup_icon.png b/product_docs/docs/ark/3.5/ark_gsg/images/backup_icon.png new file mode 100755 index 00000000000..988d4ec717b Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/backup_icon.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/backups_list.png b/product_docs/docs/ark/3.5/ark_gsg/images/backups_list.png new file mode 100755 index 00000000000..9a8de06d69e Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/backups_list.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/backups_tab.png b/product_docs/docs/ark/3.5/ark_gsg/images/backups_tab.png new file mode 100755 index 00000000000..56dff60d775 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/backups_tab.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/cds_user_green_checkmark.png b/product_docs/docs/ark/3.5/ark_gsg/images/cds_user_green_checkmark.png new file mode 100755 index 00000000000..84da251c996 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/cds_user_green_checkmark.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/cds_user_grey_question.png b/product_docs/docs/ark/3.5/ark_gsg/images/cds_user_grey_question.png new file mode 100755 index 00000000000..dae343899b7 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/cds_user_grey_question.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/cds_user_orange_busy.png b/product_docs/docs/ark/3.5/ark_gsg/images/cds_user_orange_busy.png new file mode 100755 index 00000000000..b6787f808cd Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/cds_user_orange_busy.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/cds_user_red_error.png b/product_docs/docs/ark/3.5/ark_gsg/images/cds_user_red_error.png new file mode 100755 index 00000000000..82271be6104 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/cds_user_red_error.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/cds_user_yellow_alert.png b/product_docs/docs/ark/3.5/ark_gsg/images/cds_user_yellow_alert.png new file mode 100755 index 00000000000..4974f01c0a0 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/cds_user_yellow_alert.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/clone_icon.png b/product_docs/docs/ark/3.5/ark_gsg/images/clone_icon.png new file mode 100755 index 00000000000..28f68a51720 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/clone_icon.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/clusters_tab_details_panel.png b/product_docs/docs/ark/3.5/ark_gsg/images/clusters_tab_details_panel.png new file mode 100755 index 00000000000..32436bea162 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/clusters_tab_details_panel.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/clusters_tab_events_panel.png b/product_docs/docs/ark/3.5/ark_gsg/images/clusters_tab_events_panel.png new file mode 100755 index 00000000000..d38e721bc8c Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/clusters_tab_events_panel.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/clusters_tab_monitoring_panel.png b/product_docs/docs/ark/3.5/ark_gsg/images/clusters_tab_monitoring_panel.png new file mode 100755 index 00000000000..9f0cffd304d Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/clusters_tab_monitoring_panel.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/connecting_psql_login.png b/product_docs/docs/ark/3.5/ark_gsg/images/connecting_psql_login.png new file mode 100755 index 00000000000..a17de9267ba Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/connecting_psql_login.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/connecting_psql_on_ark.png b/product_docs/docs/ark/3.5/ark_gsg/images/connecting_psql_on_ark.png new file mode 100755 index 00000000000..375c29dd724 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/connecting_psql_on_ark.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/console_switcher.png b/product_docs/docs/ark/3.5/ark_gsg/images/console_switcher.png new file mode 100755 index 00000000000..31c505427c7 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/console_switcher.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_admin_settings.png b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_admin_settings.png new file mode 100755 index 00000000000..d9ee35893de Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_admin_settings.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_admin_settings_confirm.png b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_admin_settings_confirm.png new file mode 100755 index 00000000000..17542a46473 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_admin_settings_confirm.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_clone.png b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_clone.png new file mode 100755 index 00000000000..77060f3205a Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_clone.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_clone_manual.png b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_clone_manual.png new file mode 100755 index 00000000000..28ddfb6e778 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_clone_manual.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_clone_template.png b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_clone_template.png new file mode 100755 index 00000000000..5167db8a6d5 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_clone_template.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_complete.png b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_complete.png new file mode 100755 index 00000000000..b16865a4205 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_complete.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_from_template.png b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_from_template.png new file mode 100755 index 00000000000..103ed5e2830 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_from_template.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_icon.png b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_icon.png new file mode 100755 index 00000000000..d4e7330e910 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_icon.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_launch_option.png b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_launch_option.png new file mode 100755 index 00000000000..43c18ef54f8 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_launch_option.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_security_rule.png b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_security_rule.png new file mode 100755 index 00000000000..33de5596250 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_security_rule.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_step_four.png b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_step_four.png new file mode 100755 index 00000000000..41622c7fdcc Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_step_four.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_step_one.png b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_step_one.png new file mode 100755 index 00000000000..43945210555 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_step_one.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_step_three.png b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_step_three.png new file mode 100755 index 00000000000..50050572adc Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_step_three.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_step_two.png b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_step_two.png new file mode 100755 index 00000000000..1f578f45bfe Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_step_two.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_template_details.png b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_template_details.png new file mode 100755 index 00000000000..f3b8f30deed Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/create_cluster_template_details.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/db_mgmt_cluster_major_upgrade.png b/product_docs/docs/ark/3.5/ark_gsg/images/db_mgmt_cluster_major_upgrade.png new file mode 100755 index 00000000000..2d1e37f60d4 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/db_mgmt_cluster_major_upgrade.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/db_mgmt_cluster_upgrade.png b/product_docs/docs/ark/3.5/ark_gsg/images/db_mgmt_cluster_upgrade.png new file mode 100755 index 00000000000..6ac2cbc3c8a Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/db_mgmt_cluster_upgrade.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/db_mgmt_dnsname_table_upgrade.png b/product_docs/docs/ark/3.5/ark_gsg/images/db_mgmt_dnsname_table_upgrade.png new file mode 100755 index 00000000000..caa5eed3b24 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/db_mgmt_dnsname_table_upgrade.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/delete_backup_icon.png b/product_docs/docs/ark/3.5/ark_gsg/images/delete_backup_icon.png new file mode 100755 index 00000000000..fa4a1c68c44 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/delete_backup_icon.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/delete_icon.png b/product_docs/docs/ark/3.5/ark_gsg/images/delete_icon.png new file mode 100755 index 00000000000..d461c88b277 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/delete_icon.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/download_ssh_key_icon.png b/product_docs/docs/ark/3.5/ark_gsg/images/download_ssh_key_icon.png new file mode 100755 index 00000000000..9cb033d5548 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/download_ssh_key_icon.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/manual_promote_confirmation.png b/product_docs/docs/ark/3.5/ark_gsg/images/manual_promote_confirmation.png new file mode 100755 index 00000000000..a1a7161fdd4 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/manual_promote_confirmation.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/manual_promote_context.png b/product_docs/docs/ark/3.5/ark_gsg/images/manual_promote_context.png new file mode 100755 index 00000000000..b1e6a6b98c8 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/manual_promote_context.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/manual_promote_status.png b/product_docs/docs/ark/3.5/ark_gsg/images/manual_promote_status.png new file mode 100755 index 00000000000..5e33560fa13 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/manual_promote_status.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/manually_recover_backup.png b/product_docs/docs/ark/3.5/ark_gsg/images/manually_recover_backup.png new file mode 100755 index 00000000000..ed2d517064b Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/manually_recover_backup.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/manually_scale_down_step_one.png b/product_docs/docs/ark/3.5/ark_gsg/images/manually_scale_down_step_one.png new file mode 100755 index 00000000000..8223a76b658 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/manually_scale_down_step_one.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/manually_scale_down_step_two.png b/product_docs/docs/ark/3.5/ark_gsg/images/manually_scale_down_step_two.png new file mode 100755 index 00000000000..b42204eedf2 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/manually_scale_down_step_two.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/manually_scale_up_step_one.png b/product_docs/docs/ark/3.5/ark_gsg/images/manually_scale_up_step_one.png new file mode 100755 index 00000000000..35ccdb99390 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/manually_scale_up_step_one.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/manually_scale_up_step_two.png b/product_docs/docs/ark/3.5/ark_gsg/images/manually_scale_up_step_two.png new file mode 100755 index 00000000000..dc44921a1ad Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/manually_scale_up_step_two.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/recover_backup_icon.png b/product_docs/docs/ark/3.5/ark_gsg/images/recover_backup_icon.png new file mode 100755 index 00000000000..16b7e99d840 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/recover_backup_icon.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/recovery_in_progress.png b/product_docs/docs/ark/3.5/ark_gsg/images/recovery_in_progress.png new file mode 100755 index 00000000000..ddaa6fdd276 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/recovery_in_progress.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/restart_icon.png b/product_docs/docs/ark/3.5/ark_gsg/images/restart_icon.png new file mode 100755 index 00000000000..4507602f40f Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/restart_icon.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/scale_cluster_icon.png b/product_docs/docs/ark/3.5/ark_gsg/images/scale_cluster_icon.png new file mode 100755 index 00000000000..39216cf028f Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/scale_cluster_icon.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/scale_down_icon.png b/product_docs/docs/ark/3.5/ark_gsg/images/scale_down_icon.png new file mode 100755 index 00000000000..75170217926 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/scale_down_icon.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/scale_machine_icon.png b/product_docs/docs/ark/3.5/ark_gsg/images/scale_machine_icon.png new file mode 100755 index 00000000000..2634ea7b889 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/scale_machine_icon.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/scale_machine_type.png b/product_docs/docs/ark/3.5/ark_gsg/images/scale_machine_type.png new file mode 100755 index 00000000000..6876e8ac20d Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/scale_machine_type.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/select_restore_backup.png b/product_docs/docs/ark/3.5/ark_gsg/images/select_restore_backup.png new file mode 100755 index 00000000000..91625b1695f Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/select_restore_backup.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_attach_policy.png b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_attach_policy.png new file mode 100755 index 00000000000..0ed82dd4a2d Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_attach_policy.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_create_role.png b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_create_role.png new file mode 100755 index 00000000000..8e014e54734 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_create_role.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_custom_policy.png b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_custom_policy.png new file mode 100755 index 00000000000..00cba97c84d Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_custom_policy.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_edit_trust_rel.png b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_edit_trust_rel.png new file mode 100755 index 00000000000..c300d0eb211 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_edit_trust_rel.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_inline_policy.png b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_inline_policy.png new file mode 100755 index 00000000000..af71681d47d Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_inline_policy.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_reg_dialog.png b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_reg_dialog.png new file mode 100755 index 00000000000..dfdcee10fd2 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_reg_dialog.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_review.png b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_review.png new file mode 100755 index 00000000000..579c28172ae Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_review.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_role_detail.png b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_role_detail.png new file mode 100755 index 00000000000..22f2742b7f7 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_role_detail.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_role_type.png b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_role_type.png new file mode 100755 index 00000000000..98283131e8f Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_role_type.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_set_permissions.png b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_set_permissions.png new file mode 100755 index 00000000000..5769f2cda9c Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_set_permissions.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_set_role_name.png b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_set_role_name.png new file mode 100755 index 00000000000..b8891243b36 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_set_role_name.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_step_two.png b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_step_two.png new file mode 100755 index 00000000000..1bac32bb3f2 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_step_two.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_welcome.png b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_welcome.png new file mode 100755 index 00000000000..dd3c89e386c Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/self_reg_welcome.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/template_recover_from_backup.png b/product_docs/docs/ark/3.5/ark_gsg/images/template_recover_from_backup.png new file mode 100755 index 00000000000..e0018ed2ee8 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/template_recover_from_backup.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/upgrade_icon.png b/product_docs/docs/ark/3.5/ark_gsg/images/upgrade_icon.png new file mode 100755 index 00000000000..a4953e95c98 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/upgrade_icon.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/user_tab_change_password.png b/product_docs/docs/ark/3.5/ark_gsg/images/user_tab_change_password.png new file mode 100755 index 00000000000..257418618c9 Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/user_tab_change_password.png differ diff --git a/product_docs/docs/ark/3.5/ark_gsg/images/using_ark_template_only.png b/product_docs/docs/ark/3.5/ark_gsg/images/using_ark_template_only.png new file mode 100755 index 00000000000..5f7c568439c Binary files /dev/null and b/product_docs/docs/ark/3.5/ark_gsg/images/using_ark_template_only.png differ diff --git a/product_docs/docs/bart/2.5.9/bart_inst/02_installing_bart.mdx b/product_docs/docs/bart/2.5.9/bart_inst/02_installing_bart.mdx new file mode 100644 index 00000000000..f4e2ef84cbd --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_inst/02_installing_bart.mdx @@ -0,0 +1,433 @@ +--- +title: 'Installing BART' + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/installation-getting-started/installation-upgrade-guide/2.6.1/installing_bart.html" +--- + +This section will walk you through performing a fresh installation of BART on a host. Installation instructions are organized into the following platform/installer specific sections: + +- [Installing BART on a CentOS Host](#installing-bart-on-a-centos-host) +- [Installing BART on a RHEL Host](#installing-bart-on-a-rhel-host) +- [Installing BART on a RHEL/CentOS 7 PPCLE Host](#installing-bart-on-a-rhelcentos-7-ppcle-host) +- [Installing BART on a Debian or Ubuntu Host](#installing-bart-on-a-debian-or-ubuntu-host) +- [Installing BART on an SLES 12 Host](#installing-bart-on-an-sles-12-host) + +!!! Note + If you are using the pdf version of this document, using the cut/paste command to copy may result in extra spaces or carriage returns in the pasted command. If a command fails, check the command carefully for additional characters. + +## Installing BART on a CentOS Host + +The following section demonstrates installing BART on a CentOS host using an RPM package.  This section assumes that the user has some knowledge of installation and system administration procedures, and has administrative privileges on the host. + +1. To install the repository configuration, assume superuser privileges and invoke one of the following platform-specific commands: + + On CentOS 7: + + ```text + yum -y install https://yum.enterprisedb.com/edbrepos/edb-repo-latest.noarch.rpm + ``` + + On CentOS 8: + + ```text + dnf -y install https://yum.enterprisedb.com/edbrepos/edb-repo-latest.noarch.rpm + ``` + +2. Replace the `USERNAME:PASSWORD` in the following command with the username and password of a registered EnterpriseDB user: + + ```text + sed -i "s@:@USERNAME:PASSWORD@" /etc/yum.repos.d/edb.repo + ``` + + To request credentials for the repository, visit the [EDB website](https://www.enterprisedb.com/user). + +3. Before installing BART, execute the following command to install the Extra Packages for Enterprise Linux (EPEL) release package: + + On CentOS 7: + + ```text + yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm + ``` + + On CentOS 8: + + ```text + dnf -y install epel-release + ``` + +4. For CentOS 8, enable the PowerTools repository to satisfy EPEL package dependencies: + + ```text + dnf config-manager --set-enabled PowerTools + ``` + +5. For CentOS 8, disable the built-in PostgreSQL module: + + ```text + dnf -qy module disable postgresql + ``` + +6. Optionally, install the `pg_basebackup` utility program using the server client package. If you do not already have the `pg_basebackup` program installed on the BART host, you can install a limited number of files that include the `pg_basebackup` program by invoking the following command: + + On CentOS 7: + + ```text + yum install edb-as-server-client + ``` + + On CentOS 8: + + ```text + dnf install edb-as-server-client + ``` + + In the above command, replace `` with the required Advanced Server version. The `pg_basebackup` version must be the same or more recent than the database server to be backed up. For example, `pg_basebackup` version 10 can be used to back up database server version 10, but cannot be used to back up database server version 11. + +7. Use the following command to install BART: + + On CentOS 7: + + ```text + yum -y install edb-bart-2.5.9 + ``` + + On CentOS 8: + + ```text + dnf -y install edb-bart-2.5.9 + ``` + + Repeat the installation process described in this section to install BART on each remote host on which an incremental backup is to be restored. + + To verify the BART installation, navigate to the `/usr/edb/bart/bin` directory and execute the following command: + + ```text + bart --version + ``` + + The `bart --version` command should return the current BART version. If the `bart --version` command returns an error stating the PATH is not available after switching from the root user to another BART user account, adjust the setting of the `PATH` environment variable to include the directory location of the BART `bin` subdirectory in the `~/.bashrc` or `~/.bash_profile` files of the following user accounts: + + - The BART user account on the BART host. See [Configuring BART](03_configuring_bart/#path) for details. + - The remote user account on the remote host to which incremental backups are to be restored. For details, see the *EDB Backup and Recovery User Guide* available at the [EDB website](/bart/latest/bart_user/). + + Upon successful installation, BART is installed in the `BART_HOME` directory: + + `/usr/edb/bart` + + The installation includes the following files: + +| File Name | Location | Description | +| ------------------- | ----------------- | ------------------------------------- | +| bart | ``/bin | BART command line, executable program | +| bart-scanner | ``/bin | BART WAL scanner program | +| bart.cfg.sample | ``/etc | Sample BART configuration file | +| xlogreader_ident.so | ``/lib | Libraries supporting WAL versions | +| bart_license.txt | `` | License agreement | + +After BART is installed successfully, you need to [configure the installation](03_configuring_bart/#configuration). + +## Installing BART on a RHEL Host + +The following section demonstrates installing BART on a RHEL host using an RPM package.  This section assumes that the user has some knowledge of installation and system administration procedures, and has administrative privileges on the host. + +1. To install the repository configuration, assume superuser privileges and invoke one of the following platform-specific commands: + + On RHEL 7: + + ```text + yum -y install https://yum.enterprisedb.com/edbrepos/edb-repo-latest.noarch.rpm + ``` + + On RHEL 8: + + ```text + dnf -y install https://yum.enterprisedb.com/edbrepos/edb-repo-latest.noarch.rpm + ``` + +2. Replace the `USERNAME:PASSWORD` in the following command with the username and password of a registered EnterpriseDB user: + + ```text + sed -i "s@:@USERNAME:PASSWORD@" /etc/yum.repos.d/edb.repo + ``` + + To request credentials for the repository, visit the [EDB website](https://www.enterprisedb.com/user). + +3. Before installing BART, execute the following command to install the Extra Packages for Enterprise Linux (EPEL) release package: + + On RHEL 7: + + ```text + yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm + ``` + + On RHEL 8: + + ```text + dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm + ``` + +4. Enable the repository: + + On RHEL 7, enable the `optional, extras`, and `HA` repositories to satisfy EPEL package dependencies: + + ```text + subscription-manager repos --enable "rhel-*-optional-rpms" --enable "rhel-*-extras-rpms" --enable "rhel-ha-for-rhel-*-server-rpms" + ``` + + On RHEL 8, enable the `codeready-builder-for-rhel-8-*-rpms` repository to satisfy EPEL packages dependency: + + ```text + ARCH=$( /bin/arch ) + + subscription-manager repos --enable "codeready-builder-for-rhel-8-${ARCH}-rpms" + ``` + +5. For RHEL 8, disable the built-in PostgreSQL module: + + ```text + dnf -qy module disable postgresql + ``` + +6. Optionally, install the `pg_basebackup` utility program using the server client package. If you do not already have the `pg_basebackup` program installed on the BART host, you can install a limited number of files that include the `pg_basebackup` program by invoking the following command: + + On RHEL 7: + + ```text + yum install edb-as-server-client + ``` + + On RHEL 8: + + ```text + dnf install edb-as-server-client + ``` + + In the above command, replace `` with the required Advanced Server version. The `pg_basebackup` version must be the same or more recent than the database server to be backed up. For example, `pg_basebackup` version 10 can be used to back up database server version 10, but cannot be used to back up database server version 11. + +7. Use the following command to install the BART: + + On RHEL 7: + + ```text + yum -y install edb-bart-2.5.9 + ``` + + On RHEL 8: + + ```text + dnf -y install edb-bart-2.5.9 + ``` + + Repeat the installation process described in this section to install BART on each remote host on which an incremental backup is to be restored. + + To verify the BART installation, navigate to the `/usr/edb/bart/bin` directory and execute the following command: + + ```text + bart --version + ``` + + The `bart --version` command should return the current BART version. If the `bart --version` command returns an error stating the PATH is not available after switching from the root user to another BART user account, adjust the setting of the `PATH` environment variable to include the directory location of the BART `bin` subdirectory in the `~/.bashrc` or `~/.bash_profile` files of the following user accounts: + + - The BART user account on the BART host. See [Configuring BART](03_configuring_bart/#path) for details. + - The remote user account on the remote host to which incremental backups are to be restored. For details, see the *EDB Backup and Recovery User Guide* available at the [EDB website](/bart/latest/bart_user/). + + Upon successful installation, BART is installed in the `BART_HOME` directory: + + `/usr/edb/bart` + + The installation includes the following files: + +| File Name | Location | Description | +| ------------------- | ----------------- | ------------------------------------- | +| bart | ``/bin | BART command line, executable program | +| bart-scanner | ``/bin | BART WAL scanner program | +| bart.cfg.sample | ``/etc | Sample BART configuration file | +| xlogreader_ident.so | ``/lib | Libraries supporting WAL versions | +| bart_license.txt | `` | License agreement | + +After BART is installed successfully, you need to [configure the installation](03_configuring_bart/#configuration). + + + +## Installing BART on a RHEL/CentOS 7 PPCLE Host + +The following section demonstrates installing BART on a RHEL host using an RPM package.  This section assumes that the user has some knowledge of installation and system administration procedures, and has administrative privileges on the host. + +1. Install Advance Toolchain: + + ```text + rpm --import https://public.dhe.ibm.com/software/server/POWER/Linux/toolchain/at/redhat/RHEL7/gpg-pubkey-6976a827-5164221b + + cat > /etc/yum.repos.d/advance-toolchain.repo <:@USERNAME:PASSWORD@" /etc/yum.repos.d/edb.repo + ``` + + To request credentials for the repository, visit the [EDB website](https://www.enterprisedb.com/user). + +4. Before installing BART, execute the following command to install the Extra Packages for Enterprise Linux (EPEL) release package: + + ```text + yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm + ``` + +5. On RHEL 7, enable the `optional, extras`, and `HA` repositories to satisfy EPEL package dependencies: + + ```text + subscription-manager repos --enable "rhel-*-optional-rpms" --enable "rhel-*-extras-rpms" --enable "rhel-ha-for-rhel-*-server-rpms" + ``` + +6. Invoke the following command to install BART: + + ```text + yum -y install edb-bart-2.5.9 + ``` + + + +## Installing BART on a Debian or Ubuntu Host + +Perform the following steps to install a Debian package using the EnterpriseDB apt repository. + +To request credentials for the repository, visit the [EDB website](https://www.enterprisedb.com/repository-access-request). + +1. Assume the superuser privileges. + + ```text + sudo su - + ``` + +2. To configure the EnterpriseDB repository on Debian 9 and Ubuntu 18: + + ```text + sh -c 'echo "deb https://username:password@apt.enterprisedb.com/$(lsb_release -cs)-edb/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/edb-$(lsb_release -cs).list' + ``` + + On Debian 10: + + a. Set up the EnterpriseDB repository: + + ```text + sh -c 'echo "deb [arch=amd64] https://apt.enterprisedb.com/$(lsb_release -cs)-edb/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/edb-$(lsb_release -cs).list' + ``` + + b. Substitute your EnterpriseDB credentials for the `username` and `password` placeholders in the following command: + + ```text + sh -c 'echo "machine apt.enterprisedb.com login password " > /etc/apt/auth.conf.d/edb.conf' + ``` + +3. Add support to your system for secure APT repositories. + + ```text + apt-get install apt-transport-https + ``` + +4. Add the EDB signing key; When invoking the command, replace the `username` and `password` with the credentials provided by EnterpriseDB. + + ```text + wget -q -O - https://apt.enterprisedb.com/edb-deb.gpg.key | apt-key add – + ``` + +5. Update the repository metadata. + + ```text + apt-get update + ``` + +6. Install the Debian package: + + a. Contact [EDB Support](https://support.enterprisedb.com) for information about how to install the BART 2.5.9 package. + + b. Navigate to the download directory and execute the following command: + + ```text + apt-get install ./edb-bart_2.5.9-1-deb10_amd64.deb + ``` + + + +## Installing BART on an SLES 12 Host + +This section provides instructions for installing BART on an SLES 12 SP4 host using the zypper package manager. BART is supported on SLES SP4 and SP5 versions. + +1. Assume superuser privileges. + + ```text + sudo su - + ``` + +2. Use the following command to add the EDB repository to your SLES host: + + ```text + zypper addrepo https://zypp.enterprisedb.com/suse/edb-sles.repo + ``` + +3. Invoke the following command to refresh the metadata: + + ```text + zypper refresh + ``` + +4. Install `SUSEConnect` to register the host with SUSE to allow access to SUSE repositories: + + ```text + zypper install SUSEConnect + ``` + +5. Register the host with SUSE to allow access to SUSE repositories and replace `'REGISTRATION_CODE'` and `'EMAIL'` with your SUSE registration information: + + ```text + SUSEConnect -r 'REGISTRATION_CODE' -e 'EMAIL' + ``` + + ```text + SUSEConnect -p PackageHub/12.4/x86_64 + ``` + + ```text + SUSEConnect -p sle-sdk/12.4/x86_64 + ``` + +6. Install the following repository for PEM dependencies: + + ```text + zypper addrepo https://download.opensuse.org/repositories/Apache:/Modules/SLE_12_SP4/Apache:Modules.repo + ``` + +7. Refresh the metadata: + + ```text + zypper refresh + ``` + +8. Then, use the zypper utility to install BART: + + ```text + zypper install edb-bart-2.5.9 + ``` diff --git a/product_docs/docs/bart/2.5.9/bart_inst/03_configuring_bart.mdx b/product_docs/docs/bart/2.5.9/bart_inst/03_configuring_bart.mdx new file mode 100644 index 00000000000..0201f230692 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_inst/03_configuring_bart.mdx @@ -0,0 +1,643 @@ +--- +title: "Configuring BART" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/installation-getting-started/installation-upgrade-guide/2.6.1/configuring_bart.html" +--- + + + +To configure BART, you must establish the BART user account, [configure the BART host](#configuring-the-bart-host), and [configure the database server](#configuring_database_server) that will be backed up. + + + +## Establishing the BART User Account + +The BART user account is an operating system user that will run the BART command line program. The BART user account must: + +- own the BART backup catalog. +- be able to run the `bart` program and the `bart-scanner` program. +- be able to establish a SSH/SCP connection to and from each database server managed by BART. + +You can optionally use the `enterprisedb` database user as the BART user account for an Advanced Server database and `postgres` database user as the BART user account for a PostgreSQL server. If you do not wish to use an existing database user as the BART user account, you must create an operating system user to assume the role. + + + +## Configuring BART and Database Server + +As stated earlier, to configure BART, you must [configure the BART host](#configuring-the-bart-host) as well as the [database server](#configuring_database_server). The following table acts as a configuration parameter reference listing the mandatory and optional parameters with default values for `[SERVER]` as well as `[BART]` sections. + +- Parameters set in the `[BART]` section are applicable to all BART managed database servers. +- Parameters set in the `Server` section are applicable only to the specific server; the `Server` parameter setting overrides the `[BART]` section setting. + +For information about configuring BART host parameters, see the [BART Host Parameter Reference](#bart) and for information about configuring the database server parameters, see the [Database Server Parameter Reference](#server). + +| **Parameter** | **Type** | **Default** | **\[SERVER]** | **\[BART]** | +| -------------------------- | --------- | ------------------------------------------------------------ | ------------- | ----------- | +| `[BART]` | Mandatory | N/A | N/A | Yes | +| `` | Mandatory | N/A | N/A | Yes | +| `` | Mandatory | N/A | N/A | Yes | +| `` | Mandatory | N/A | N/A | Yes | +| `retention_policy` | Optional | `BACKUPS` | Yes | Yes | +| `wal_compression` | Optional | `Disabled` | Yes | Yes | +| `copy_wals_during_restore` | Optional | `Disabled` | Yes | Yes | +| `xlog_method` | Optional | `fetch` | Yes | Yes | +| `logfile` | Optional | `/tmp/bart.log` | N/A | Yes | +| `scanner_logfile` | Optional | `/tmp/bart_scanner.log` | N/A | Yes | +| `` | Optional | `/tmp` | N/A | Yes | +| `` | Optional | `` | N/A | Yes | +| `` | Optional | `1` | Yes | Yes | +| `` | Optional | `49152` | Yes | Yes | +| `` | Optional | `0` | Yes | Yes | +| `` | Optional | `20 seconds` | Yes | Yes | +| `` | Optional | `1` | Yes | Yes | +| `[Server Name]` | Mandatory | N/A | Yes | N/A | +| `` | Optional | N/A | Yes | N/A | +| `host` | Mandatory | N/A | Yes | N/A | +| `port` | Mandatory | `5444` for EPAS; `5432` for Postgres | Yes | N/A | +| `user` | Mandatory | N/A | Yes | N/A | +| `` | Optional | `BART backup catalog` | Yes | N/A | +| `` | Optional | N/A | Yes | N/A | +| `` | Mandatory | `enterprisedb` for EPAS

`postgres` for PostgreSQL | Yes | N/A | +| `` | Optional | N/A | Yes | N/A | +| `` | Optional | N/A | Yes | N/A | +| `allow_incremental_backup` | Optional | `Disabled` | Yes | N/A | +| `description` | Optional | N/A | Yes | N/A | + + + +### Configuring the BART Host + +To configure the BART host, perform the following steps on the BART host as a root user: + +**Step 1.** Navigate to the `usr/edb/bart/etc` directory and make a copy of the `bart.cfg.sample` file to create the `bart.cfg` file that will contain the parameter settings. + +**Step 2.** Confirm that the Postgres `pg_basebackup` utility program is installed on the BART host. The `pg_basebackup` utility resides in the `bin` directory under your Postgres installation. + + + +**Step 3.** Ensure the `LD_LIBRARY_PATH` environment variable includes the location of the `libpq` library. If your `libpq` library does not reside in the default location (`POSTGRES_INSTALL_HOME/lib`), you must add the library path to the `LD_LIBRARY_PATH` environment variable in the BART user account’s profile (`bash_profile`) located in `/home/`: + +```text +# .bash_profile +# Get the aliases and functions +if [ -f ~/.bashrc ]; then +. ~/.bashrc +fi +# User specific environment and startup programs +export LD_LIBRARY_PATH=/usr/edb/as11/lib:$LD_LIBRARY_PATH +``` + +**Step 4.** Create the BART backup catalog and ensure the BART user account holds privileges on the BART backup catalog. In the following example, the BART configuration file specifies `/opt/backup` as the parent directory for the BART backup catalog in the `` parameter: + +```text +[BART] + +bart_host = bartuser@192.168.2.22 +backup_path = /opt/backup +pg_basebackup_path = /usr/edb/as11/bin/pg_basebackup +logfile = /tmp/bart.log +scanner_logfile = /tmp/bart_scanner.log +``` + +In the following example, `bartuser` is the BART user account. The example creates and sets the ownership and permissions on the BART backup catalog: + +```text +su root +mkdir /opt/backup +chown bartuser /opt/backup +chgrp bartuser /opt/backup +chmod 700 /opt/backup +``` + +If the subdirectory does not exist, BART creates a subdirectory for each database server listed in the configuration file when you invoke the `bart` command line program. + +**Step 5.** Use your choice of editor to open the BART configuration file (located in the `usr/edb/bart/etc` directory) and edit the configuration as required. You must add the mandatory parameters to the `[BART]` section. Default values may be used for optional parameters. + +The following table describes the `[BART]` host parameters. + + + +| **Parameters/Placeholder** | **Type** | **Description** | +| -------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `[BART}` | Mandatory | Identifies the global section of the configuration file. It must be named BART. | +| `bart_host` | Mandatory | Specify the bart user name and the IP address of the bart host on which the BART utility resides. You must specify it in the form of <bart_user>@<bart_host_address>. | +| `backup_path` | Mandatory | Specify the path to the file system parent directory where all BART backups are stored. | +| `pg_basebackup_path` | Mandatory | Specify the path to the `pg_basebackup` program that you installed on the BART host. For information about `pg_basebackup` version-specific restrictions, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). | +| `wal_compression` | Optional | Set this parameter to `enabled` to compress the archived WAL files in gzip format in the BART backup catalog when the `MANAGE` subcommand is invoked. By default it is set to `disabled`. The gzip compression program must be in the BART user account’s `PATH` and the WAL compression setting must not be enabled for those database servers where you need to take incremental backups. | +| `copy_wals_during_restore` | Optional | Set this parameter to `enabled` to copy the archived WAL files from the BART backup catalog to the `restore_path/archived_wals` directory prior to the database server archive recovery. Enabling this option helps you save time during the restore operation. Set this parameter to `disabled` (default) to retrieve the archived WAL files directly from the BART backup catalog during the database server archive recovery. During the restore operation, recovery settings will be saved in the `postgresql.auto.conf` file. The `restore_command` in the `postgresql.auto.conf` file will be determined by the value specified in the `copy_wals_during_restore` parameter. If the `RESTORE` subcommand is invoked with the `-c` option, the archived WAL files are copied from the BART backup catalog to the `restore_path/archived_wals` directory, thus overriding any setting of the `copy_wals_during_restore` parameter. If the `RESTORE` subcommand is invoked without the `-c` option, the value specified by the `copy_wals_during_restore` parameter is used. | +| `xlog_method` | Optional | Specify how the transaction log is collected during the execution of `pg_basebackup` through the `BACKUP` subcommand. Set `xlog_method` to `fetch` (default) to collect the transaction log files after the backup is completed. Set to `stream` to stream the transaction log in parallel with the full backup creation. | +| `retention_policy` | Optional | Set this parameter to determine when an active backup should be marked as `obsolete` when the `MANAGE` subcommand is used. You can specify the retention policy either in terms of number of backups or duration (days, weeks, or months). ` BACKUPS` (default), ` DAYS`, ` WEEKS`, or ` MONTHS` where `` is a positive integer. For information about managing backups using a retention policy, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). | +| `logfile` | Optional | Use this parameter to specify the path to the BART log file. The default log file location is `/tmp/bart.log`. The log file will be created the first time you invoke the `bart` command line program using the sample configuration file value. To change the default setting, you must delete the `bart.log` file from the `/tmp` directory and create a new log file in another directory so that a new log file will be created and owned by the new BART user account. If no path to a log file is specified, BART does not create a log file. | +| `scanner_logfile` | Optional | Use this parameter to specify the path to the XLOG/WAL scanner log file. The default location is `/tmp/bart_scanner.log`. The scanner log file will be created the first time you invoke the `bart_scanner` program using the sample configuration file value. To change the default setting, you must delete the `bart_scanner.log` file from the `/tmp` directory and create a new log file in another directory so that a new log file will be created and owned by the new BART user account. If no path to a log file is specified, BART does not create a WAL scanner log file. | +| `` | Optional | Specify the socket directory path where all BART sockets will be stored. The default directory is `/tmp`. While specifying the `bart_socket_directory` path, you must ensure that the directory exists and the BART user has the required access permissions to the directory. | +| `` | Optional | Specify a user-friendly BART socket file name. Using this option overrides the default BART socket name generated using MD5 checksum. You must shut down the bart-scanner before setting this option. You can view the `` in the `sockPath` field after starting the bart-scanner in the debug mode. This option helps in preventing the use of MD5 during the bart-scanner startup, thus making BART more compliant in FIPS mode. | +| `` | Optional | Specify the number of worker threads for copying blocks (for incremental backups) or data files (for full backup) from the database server to the `archive_path` when the `BACKUP` subcommand is invoked. The default value is `1`. The same set of worker threads are used for the compression operation when taking full backups in order to provide parallel, compressed backups when the `BACKUP` subcommand is specified with the `-z` or `-c` options. The compression operation does not apply to incremental backups. See [thread count](#thread_count) for more information. | +| `` | Optional | Specify the number of blocks of memory used for copying modified blocks from the database server to the `archive_path` when the `BACKUP` subcommand is invoked for incremental backups. The default value is 49152 blocks; each block is 8192 bytes. The maximum permitted value is 131072 blocks and the minimum permitted value is 1 block. Reduce the `` setting if the server runs out of memory while executing the `pg_read_binary_file()`. | +| `` | Optional | Specify the number of seconds after which the WAL scanner should initiate force scanning of the new WAL files. The default value is 0, which means no brute-force scanning will be started. After upgrading to the latest version of BART, users who have set this parameter to a non-default value may see increased CPU consumption on the part of bart-scanner. If this is an issue, consider increasing the configured value of `scan_interval` parameter, or removing the setting if it is not required. | +| `` | Optional | Specify the number of seconds to wait for MBM files before timing out; this parameter is applicable only for incremental backup. You must set the `scan_interval` to a value significantly less than the MBM scan timeout. The default value is 20 seconds. The `mbm_scan_timeout` parameter value must be greater than 0. If the value is 0 or negative, then an error will be displayed during an incremental backup. | +| `` | Optional | Specify the number of parallel worker processes required to stream the modified blocks of an incremental backup to the restore host. The default value is 1. | + + + +**Thread Count** + +If the `BACKUP` subcommand is invoked with the `--thread-count` option, then the number of worker threads specified by this option overrides any setting of the `thread_count` parameter in the BART configuration file. If the `BACKUP` subcommand is invoked without the `--thread-count` option, then the following determines the number of worker threads used: + +- The setting of the `thread_count` parameter in the server section of the BART configuration file overrides the setting of `thread_count` in the global section for that particular database server. +- If omitted in the server section, the setting of `thread_count` in the global section is used. +- If the `thread_count` parameter is not specified in either section, the default is 1. +- When taking a full backup, if the `thread count` in effect is only 1, then the `pg_basebackup` utility is used to take the full backup unless the `--no-pg_basebackup` option is specified with the `BACKUP` subcommand. + +`` will not be effective if the backup is taken on a standby server. + +If parallel backup is run with `N` number of worker threads, then it will initiate `N + 1` concurrent connections with the server. + +**Step 6** Invoke the `CHECK-CONFIG` subcommand, omitting the `-s` option to check the parameter settings in the BART configuration file. It should return the current BART version. + +```text +bart CHECK-CONFIG +``` + +The `CHECK-CONFIG` subcommand displays an error message if the required configuration is not properly set. You need to check the logfile to fix this. + + + +### Configuring the Database Server + +To configure the database server, you must: + +1. [Authorize SSH/SCP access without a password prompt](#authorizing_ssh_scp_access). +2. [Create and configure a replication database user](#setting_up_a_replication_database_user). +3. [Adding the database server to the configuration file (server section)](#adding_a_database_server). +4. [Enable WAL archiving of the server](#enabling_wal_archiving). +5. [Verify the server configuration settings](#verifying_configuration_settings). + +The following section will walk you through the configuration process. + +!!! Note + You must authorize SSH/SCP access and set up a replication database user before restarting the database server with WAL archiving enabled. + + + +**Authorizing SSH/SCP Access** + +BART uses the Secure Shell (`ssh`) and Secure Copy (`scp`) Linux utility programs to copy the backup and WAL files from the BART managed database servers to the BART host as well as to restore backups. + +- The client/server `ssh` and `scp` commands must not prompt for a password when establishing a connection with the target server (the server to which a passwordless connection is being made). +- A passwordless connection uses *authorized public keys* (public key of a client user account) to authenticate with the target server. +- You must add the public key of each client user account to the target user account’s authorized public keys list on the target server. + +For BART usage, there are two scenarios that require a passwordless SSH/SCP connection: + +- When connecting from each BART managed database server (SSH/SCP client) to the BART host (target SSH/SCP server) to support WAL archiving as implemented by the `archive_command` parameter. + - In this case, the database server user account should generate the public key file (`id_rsa.pub`) with the `ssh-keygen –t rsa` command on the database server host. + - The public key file name should be appended to the `~/.ssh/authorized_keys` file on the BART host. The `authorized_keys` file is in the BART user account’s home directory. +- When connecting from the BART host (SSH/SCP client) to each BART managed database server (target SSH/SCP server) for taking incremental backups and for supporting restoration of the full backup, the archived WAL files, and the modified blocks, which occurs when the BART `RESTORE` subcommand is given. + - In this case, the BART user account should generate the public key file (`id_rsa.pub`) with the `ssh-keygen –t rsa` command on the BART host. + - The public key file name should be appended to the `~/.ssh/authorized_keys` file on the database server host. The `authorized_keys` file is in the home directory of the user account that owns the directory where the database backup is to be restored. +- If backups are to be taken from a given database server host, but restored to a different database server host, the passwordless SSH/SCP connections must be configured from the BART host to the database server host from which the backup is to be taken as well as from the BART host to the database server host to which the backup is to be restored. + +See the EDB Backup and Recovery Reference Guide available at the [EDB website](/bart/latest/bart_ref/) to view examples of creating a passwordless connection. + +**Enabling Public Key Authentication** + +The following example enables SSH/SCP access on a CentOS 7.x host; similar (platform-specific) steps will apply to other platforms/versions. + +1. In the SSH server daemon configuration file (`sshd_config`) located in the `/etc/ssh`, set the `PubkeyAuthentication` parameter to `yes`. +2. Reload the configuration file: + +```text +service sshd reload +``` + +If you get any SSH or SCP errors, examine the `/var/log/secure` log file. + +**Creating a Passwordless Connection** + +The following general instructions will walk you through generating a client’s public key file, creating the target server’s authorized public keys file, and creating a passwordless connection. + +**Step 1.** On the client system, log in as the user account that will be initiating the SSH or SCP connection. + +**Step 2.** Navigate to the user account’s home directory and check for an existing `.ssh` subdirectory. If the `.ssh` directory does not exist, create one and assign the required privileges to the user. + +**Step 3.** Generate the public key file with the following command. Accept all prompted defaults and do not specify a passphrase when prompted for one. + +```text +ssh-keygen –t rsa +``` + +The public key file named `id_rsa.pub` is created in the `.ssh` subdirectory. + +**Step 4.** While logged into the client where you just generated the public key file, use `SCP` to make a temporary copy of it on the target server: + +```text +scp ~/.ssh/id_rsa.pub @:tmp.pub +``` + +**Step 5.** Navigate into the target user account’s home directory and check for an existing `.ssh` subdirectory. If it does not exist, create one and assign the required privileges to the user. + +**Step 6.** Append the temporary, client’s public key file, `tmp.pub`, to the `authorized_keys` file. If an `authorized keys` file does not exist, create a new file, but do not completely replace any existing `authorized keys` file. + +```text +cat tmp.pub >> ~/.ssh/authorized_keys +``` + +Make sure the `authorized_keys` file is only accessible by the file owner and not by groups or other users. If the `authorized_keys` file does not have the required permission setting or it was newly created, change the file permissions as follows: + +```text +chmod 600 ~/.ssh/authorized_keys +``` + +**Step 7.** Delete the temporary public key file: + +```text +rm tmp.pub +``` + +Now, when logged into the client system as `user` there should be no prompt for a password when commands such as the following is given: + +```text +ssh target_user@host_address +``` + + + +**Setting up a Replication Database User** + +For each database server that is to be managed by BART, a database user must be chosen to serve as the *replication database user*. The replication database user sets the Postgres `archive_command` configuration parameter when the `INIT` subcommand in invoked and creates backups when the `BACKUP` subcommand is invoked. The replication database user must be a `superuser`. + +When executed with the PSQL client, the following PostgreSQL command creates a superuser to be the replication database user: + +`CREATE ROLE repuser WITH LOGIN SUPERUSER PASSWORD 'password';` + +The `pg_hba.conf` file must minimally permit the replication database user to have access to the database. + +In the following example, the `pg_hba.conf` file permits the `repuser` (replication database user) to have access to the `template1` database. The IP address from which `repuser` has access to `template1` database is the location of the BART host: + +**For pg_basebackup only:** If `pg_basebackup` is to be used for taking any backups (such as for standby servers), the replication database user must also be included in the `pg_hba.conf` file as a `replication` database connection as shown by the last entry in the following example. + +```text +# TYPE DATABASE USER ADDRESS METHOD +# "local" is for Unix domain socket connections only +local all all md5 +# IPv4 local connections: +host template1 repuser 192.168.2.22/32 md5 +host all enterprisedb 127.0.0.1/32 md5 +# IPv6 local connections: +host all all ::1/128 md5 +# Allow replication connections from localhost, by a user with the +# replication privilege. +host replication repuser 192.168.2.22/32 md5 +``` + +The replication database user must be specified for the `user` parameter in the BART configuration file for the database server as shown in the following example: + +```text +[ACCTG] +host = 192.168.2.24 +port = 5444 +user = repuser +cluster_owner = enterprisedb +remote_host = enterprisedb@192.168.2.24 +description = "Accounting" +``` + +There must be no password prompt when connecting to the database server with the replication database user. There are several ways to permit this; one recommended method is to use a `.pgpass` file located in the BART user account’s home directory. + +For example, if `bartuser` is the BART user account, then the `.pgpass` file located in the `/home/bartuser` directory must contain the following entry: + +`192.168.2.24:5444::repuser:password` + +When `bartuser` invokes a BART backup, the password for the replication database user, `repuser`, is obtained from the `.pgpass` file of `bartuser` to connect to the database server running at `192.168.2.24` on `port 5444`. + +The `.pgpass` file must contain an entry for each BART managed database server and its corresponding replication database user and password. + + + +**Adding a Database Server to the BART Configuration File** + +To manage the backup and recovery of a database server, you must add entries to the `[SERVER]` section of the BART configuration file, which is located in `/etc` directory. + + + +*Database Server Parameter Reference* + +Set the following parameters in the \[`SERVER`] section of the BART configuration file. The parameter setting in the \[`SERVER`] section overrides the setting in the global \[`BART`] section for that particular database server. If omitted, the default value will be used. + +For each cluster serviced by BART, the following parameters are mandatory: + +```text +[HR] + +host = 192.168.2.24 +port = 5432 +user = postgres +cluster_owner = postgres +``` + +!!! Note + The port parameter setting is required only if the database server listens on a port other than the default (for example if Postgres listens on a port other than 5432). + +The following table describes the database server parameters. + + + + + + + + + +| **Parameters/Placeholder** | Type | **Description** | +| --------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `[ServerName]` | Mandatory | Specify the server name that you want to backup using BART. It is not case-sensitive when referenced with BART subcommand options. A lowercase conversion of this name is used to create a subdirectory in the BART backup catalog for storing the backups and WAL files for this database server (for eg., epas12). | +| `` | Optional | Specify a [template](#backup_name_template) for user-defined, friendly names that will be assigned to the backups of the database server. The maximum permitted length of backup name is 49 characters. The `` parameter can be overridden by the `--backup-name` option of the `BACKUP` subcommand. If this parameter is omitted from the BART configuration file, and the `--backup-name` option with a user-defined name is not specified with the `BACKUP` subcommand, then the backup can only be referenced in BART subcommands by the BART assigned, integer backup identifier. | +| `host` | Mandatory | Specify the IP address of the database server to be configured for backup. | +| `port` | Mandatory | Specify the port number identifying the database server instance (that is, the relevant database cluster) to be backed up. The default port number for EPAS is `5444` and for Postgres it is `5432`. The port parameter setting is only required if the database server listens on a port other than the default value. | +| `User` | Mandatory | Specify the replication database user name used by BART to establish the connection to the database server for full backups. See [Setting up a Replication Database User](#setting_up_a_replication_database_user) for more information. | +| `` | Optional | Specify the path where archived WAL files will be stored. The default location is the BART backup catalog (`//archived_wals`). | +| `` | Optional | When the `INIT` subcommand is used, the content and variables specified in the BART `` result in the archive command string to be generated into the `Postgres archive_command` parameter in the `postgresql.auto.conf` file. To configure the BART `` parameter, enclose the command string within single quotes ('). If you do not specify the `` parameter in the configuration file, the default setting is taken as `'scp %p %h:%a/%f'`. See [Archive Command Auto Configuration](#archive_command_auto_configuration) for information about variables. The BART `` parameter in the BART configuration file, and the Postgres `` parameter in the `postgresql.conf` file (or the `postgresql.auto.conf` file) refer to two different parameters that are to be set in different manner. | +| `` | Mandatory | Specify the Linux operating system user account that owns the database cluster. This is typically `enterprisedb` for Advanced Server database clusters installed in the Oracle compatible mode, or `postgres` for Advanced Server database clusters installed in the PostgreSQL compatible mode and PostgreSQL database clusters. | +| `` | Optional | Specify the IP address of the remote server to which a backup is to be restored. Specify this parameter in the form of `@`. `` is the user account on the target database server host that accepts a passwordless SSH/SCP login connection and owns the directory where the backup is to be restored. `` is the IP address of the remote host. For restoring a backup to a remote host or for restoring any backup where `` and the BART user account are not the same users, either this parameter must be set or it may be specified with the `-r` option with the BART `RESTORE` subcommand. | +| `` | Optional | Specify path to which tablespaces are to be restored in the format `OID = `; If the backup is to be restored to a remote host specified by the `` parameter, then the tablespace paths must exist on the remote host. | +| `allow_incremental_backups` | Optional | Set this parameter to `enabled` to enable use of the WAL scanner and permit taking incremental backups when the `BACKUP` subcommand is invoked with the `--parent` option. Set it to `disabled` (default) to disallow incremental backups and thus permit only full backups. For information about using the `BACKUP` subcommand and running the WAL scanner, please see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). | +| `Description` | Optional | Specify the description that will be used to identify the database server. | + +For information regarding the following parameters, see [configuring the BART host](#configuring-the-bart-host). + +- `retention_policy` +- `xlog_method` +- `wal_compression` +- `copy_wals_during_restore`. +- `thread_count`. +- `batch_size`. +- `scan_interval`. +- `mbm_scan_timeout`. +- `workers` + + + +**Backup Name Template** + +- The template is an alphanumeric string that may include the following variables that will be replaced with the timestamp values when the backup is taken: + + - `%year` to be replaced by 4-digit year + - `%month` to be replaced by 2-digit month + - `%day` to be replaced by 2-digit day + - `%hour` to be replaced by 2-digit hour + - `%minute` to be replaced by 2-digit minute + - `%second` to be replaced by 2-digit second + +- To include a percent sign (`%`) as a character in the backup name, specify `%%` in the template. + +- Do not enclose the template string in quotes even if you want the template to include space characters, otherwise the enclosing quotes are stored as part of the backup name. However, when referenced with the `-i` option by BART subcommands use of space characters in the backup name requires enclosing the backup name in quotes. + +The following example shows the configuration settings of three database servers: + +```text +[ACCTG] + +host = 127.0.0.1 +port = 5444 +user = enterprisedb +cluster_owner = enterprisedb +backup_name = acctg_%year-%month-%dayT%hour:%minute:%second +archive_command = 'cp %p %a/%f' +allow_incremental_backups = enabled +retention_policy = 8 BACKUPS +description = "Accounting" + +[MKTG] + +host = 192.168.2.24 +port = 5444 +user = repuser +cluster_owner = enterprisedb +remote_host = enterprisedb@192.168.2.24 +allow_incremental_backups = enabled +description = "Marketing" + +[HR] + +host = 127.0.0.1 +port = 5432 +user = postgres +cluster_owner = postgres +retention_policy = 4 DAYS +description = "Human Resources" +``` + + + +**Enabling WAL Archiving** + +WAL archiving must be enabled for the database server for which BART is to perform backup and recovery management. + +- The WAL Archiving Configuration section describes the manual WAL archiving configuration process. +- The Archive Command Auto Configuration section describes an automated WAL archiving process. + +*WAL Archiving Configuration* + +Set the following configuration parameters in the `postgresql.conf` file to enable WAL archiving + +- Set `wal_level` to `replica` or higher. +- Set `archive_mode` to `on`. +- Set the PostgreSQL `archive_command` parameter to copy the WAL files to the `archive_path`. The `archive_command` configuration parameter mentioned here is located in the `postgresql.conf` file; the PostgreSQL `archive_command` parameter is used in a different manner than the BART [archive_command](#archive_command). +- Set `max_wal_senders` to a value high enough to leave at least one session available for the backup. If the `xlog_method=stream` parameter setting is to be used by this database server, the `max_wal_senders` setting must account for an additional session for the transaction log streaming (the setting must be a minimum of 2). See [Configuring the BART host](#configuring-the-bart-host) for information about the `xlog_method` parameter. + +For detailed information about WAL archiving, see the [PostgreSQL Core Documentation](https://www.postgresql.org/docs/current/static/continuous-archiving.html). + +The `ARCHIVE PATH` field displayed by the BART `SHOW-SERVERS` subcommand displays the full directory path where the WAL files should be copied as specified in the `archive_command` configuration parameter in the `postgresql.conf` file: + +```text +-bash-4.1$ bart SHOW-SERVERS -s acctg +SERVER NAME : acctg +HOST NAME : 192.168.2.24 +USER NAME : repuser +PORT : 5444 +REMOTE HOST : +RETENTION POLICY : none +DISK UTILIZATION : 0.00 bytes +NUMBER OF ARCHIVES : 0 +ARCHIVE PATH : /opt/backup/acctg/archived_wals +ARCHIVE COMMAND : (disabled) +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +INCREMENTAL BACKUP : DISABLED +DESCRIPTION : "Accounting" +``` + +The parameter settings in the following example will copy the WAL files to a directory named `/opt/backup/acctg/archived_wals` on the BART host located at `192.168.2.22` as the `bartuser` user account. Using the `bartuser` account ensures that the operation will have sufficient permissions to copy to the BART backup catalog owned by `bartuser`. + +```text +archive_mode = on # allows archiving to be done + # (change requires restart) +archive_command = 'scp %p bartuser@192.168.2.22:/opt/backup/acctg/archived_wals/%f' + # command to use to archive a logfile segment + # placeholders: %p = path of file to archive + # %f = file name only +... + +max_wal_senders = 1 # max number of walsender processes + # (change requires restart) +``` + +The database server must be restarted in order to initiate WAL archiving, but do not do so until you have verified that the full path of the BART backup catalog has been created by a prior BART subcommand or the archive operation will fail. + +Start the WAL scanner by executing the following command: + +```text +./bart-scanner +``` + + + +*Archive Command Auto Configuration* + +To enable WAL archiving: + +- In the `postgresql.conf` file, set the `wal_level` to `replica` or higher, `archive_mode` to `on`, and `max_wal_senders` to a value high enough to leave at least one session available for the backup. If the `xlog_method=stream` parameter setting is to be used by this database server as determined in the BART configuration file, the `max_wal_senders` setting must account for an additional session for the transaction log streaming (that is, the setting must be a minimum of `2`). See [Configuring the BART host](#configuring-the-bart-host) for information on the `xlog_method` parameter. + +- Configure the Postgres `archive_command` parameter automatically with the `INIT` subcommand and restart the database server when you are ready to initiate WAL archiving. The `INIT` subcommand invokes the Postgres `ALTER SYSTEM` command to set the Postgres `archive_command` configuration parameter in the `postgresql.auto.conf` file located in the managed database server’s `POSTGRES_INSTALL_HOME data directory`. For additional information about the `INIT` subcommand, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). + + The archive command string that the `INIT` subcommand generates into the `postgresql.auto.conf` file is determined by the parameter setting of the BART `archive_command` parameter in the server section of the BART configuration file. If the BART `archive_command` parameter is not set in the server section for a given database server, the command string that is configured uses the following default format: + + `'scp %p %h:%a/%f'` + + The following table describes these variables: + +| **Variable** | **Description** | +| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `%p` | The path of the file to archive used by the Postgres archiving process. | +| `%h` | Will be replaced by the `@` as specified in the <bart_host> parameter setting. | +| `%a` | Will be replaced by the BART `archived_wals` directory as specified in the [archive path](#archive_path) parameter setting. If the `` is not specified, then the default directory is `//archived_wals`. `` is the lowercase conversion of the database server name. | +| `%f` | The archived file name used by the Postgres archiving process. | + +The placeholders `%h` and `%a` are replaced by the `INIT` subcommand when creating the archive command string. The placeholders `%p` and `%f` are not replaced by the `INIT` subcommand, but are kept as given to be used by the Postgres archiving process. + +For example, to use the default archive command format, the BART configuration file contains the following settings where the BART `archive_command` parameter is omitted from the server section for `ACCTG`: + +```text +[BART] + +bart_host= bartuser@192.168.2.22 +backup_path = /opt/backup +pg_basebackup_path = /usr/edb/as11/bin/pg_basebackup +logfile = /tmp/bart.log +scanner_logfile = /tmp/bart_scanner.log + +[ACCTG] + +host = 127.0.0.1 +port = 5444 +user = repuser +cluster_owner = enterprisedb +description = "Accounting" +``` + +The `INIT` subcommand is invoked by BART user account `bartuser` as follows: + +```text +[bartuser@localhost ~]$ bart INIT -s acctg -o +INFO: setting archive_command for server 'acctg' +WARNING: archive_command is set. server restart is required +``` + +If the BART backup catalog directory is not already complete, it will be completed. + +The resulting archive command string in the `postgresql.auto.conf` file located in the managed database server’s `POSTGRES_INSTALL_HOME/data directory` appears as follows: + +```text +# Do not edit this file manually! +# It will be overwritten by ALTER SYSTEM command. +archive_command = 'scp %p +bartuser@192.168.2.22:/opt/backup/acctg/archived_wals/%f' +``` + +Run the `INIT` subcommand with the `-o` option to override any existing `archive_command` setting in the `postgresql.conf` or the `postgresql.auto.conf` file. In addition, the `-o` option must be used to generate the command string if the `archive_mode` is set to off even if there are no existing settings of the `archive_command` in the `postgresql.conf` or `postgresql.auto.conf` files. + +In this example, the following BART configuration file is used with an explicit setting of the BART `archive_command` parameter: + +```text +[BART] + +bart_host= enterprisedb@192.168.2.22 +backup_path = /opt/backup +pg_basebackup_path = /usr/edb/as11/bin/pg_basebackup +logfile = /tmp/bart.log +scanner_logfile = /tmp/bart_scanner.log + +[ACCTG] + +host = 127.0.0.1 +port = 5444 +user = repuser +cluster_owner = enterprisedb +archive_command = 'cp %p %a/%f' +description = "Accounting" +``` + +The `INIT` subcommand is invoked by BART user account `enterprisedb` as follows: + +```text +-bash-4.1$ bart INIT -s acctg -o +INFO: setting archive_command for server 'acctg' +WARNING: archive_command is set. server restart is required +``` + +The resulting Postgres `archive_command` parameter in the `postgresql.auto.conf` file appears as follows: + +```text +# Do not edit this file manually! +# It will be overwritten by ALTER SYSTEM command. +archive_command = 'cp %p /opt/backup/acctg/archived_wals/%f' +``` + +When the database server has been restarted, the `ARCHIVE COMMAND` field of the `SHOW-SERVERS` subcommand displays the active Postgres archive command as shown by the following example: + +```text +-bash-4.1$ bart SHOW-SERVERS -s acctg +SERVER NAME : acctg +HOST NAME : 127.0.0.1 +USER NAME : repuser +PORT : 5444 +REMOTE HOST : +RETENTION POLICY : none +DISK UTILIZATION : 48.00 MB +NUMBER OF ARCHIVES : 0 +ARCHIVE PATH : /opt/backup/acctg/archived_wals +ARCHIVE SCOMMAND : `cp %p /opt/backup/acctg/archived_wals/%f` +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +INCREMENTAL BACKUP : DISABLED +DESCRIPTION : "Accounting" +``` + + + +**Verifying Configuration Settings** + +To verify the parameter settings of the database server specified, execute tthe `CHECK-CONFIG` subcommand with the `–s` option: + +```text +bart CHECK-CONFIG [ –s server_name ] +``` + +The `CHECK-CONFIG` subcommand confirms the following: + +- The `cluster_owner` parameter is set to the user account owning the database cluster directory. +- A passwordless SSH/SCP connection is set between the BART user and the user account specified by the `cluster_owner` parameter. +- The BART `user` parameter specifies a database superuser. +- The BART `user` has access to the backup directory catalog. +- The `pg_hba.conf` file contains a replication entry for the database superuser specified by the BART `user` parameter. +- The `archive_mode` parameter in the `postgresql.conf` file is enabled. +- The `archive_command` parameter in the `postgresql.auto.conf` or the `postgresql.conf` file is set. +- The `allow_incremental_backups` parameter in the BART configuration file is enabled for database servers for which incremental backups are to be taken. +- Archiving of WAL files to the `archive_path` is in process. +- The WAL scanner program is running. + +After configuring the BART host and the database server(s), you can start using BART. For information about using BART, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). diff --git a/product_docs/docs/bart/2.5.9/bart_inst/04_upgrading_bart.mdx b/product_docs/docs/bart/2.5.9/bart_inst/04_upgrading_bart.mdx new file mode 100644 index 00000000000..4ea97b87ab6 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_inst/04_upgrading_bart.mdx @@ -0,0 +1,77 @@ +--- +title: "Upgrading BART" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/installation-getting-started/installation-upgrade-guide/2.6.1/upgrading_bart.html" +--- + + + +This section outlines the process of upgrading BART from an existing version to the latest version. + +**Upgrade Restrictions** + +The following restrictions apply with regard to previous BART versions. + +- You can take incremental backups using the latest version only when the parent backup (full or incremental backup) has also been taken with the latest version. +- Using the latest version, you can restore incremental backups that are taken only with the latest version of BART. However, using the latest version you can restore full backups that were taken with older versions. + + + +## Upgrading from Older Versions of BART + +Perform the following steps to upgrade from older versions of BART to the latest version: + +**Step 1:** Assume the identity of the BART user account and invoke the following command to stop the BART WAL scanner program (`bart-scanner`): + +```text +bart-scanner STOP +``` + +**Step 2:** As the `root` user, upgrade to the latest BART version with the `yum upgrade` command. + +- To upgrade the BART RPM package directly from the *EDB Yum Repository* website, specify only the package name: + + On CentOS 7: + + ```text + yum upgrade edb-bart + ``` + + You can also use a downloaded RPM package file to upgrade. To use a downloaded BART RPM package file to upgrade, use the `yum` command, specifying the complete RPM package file name: + + ```text + yum upgrade edb-bart-x.y.z rhel7.x86_64.rpm + ``` + + Where x denotes the major version of BART, and y and z denotes the minor version. + + On a Debian or Ubuntu Host: + On a Debian or Ubuntu Host: + + ```text + apt-get upgrade edb-bart + ``` + + On a SLES Host: + + ```text + zypper update edb-bart + ``` + +**Step 3:** Repeat the process described in this section to upgrade to the latest BART version on each remote hosts where an incremental backup will be restored. + +For additional information about restoration of incremental backups on remote hosts, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). + +**Step 4:** If the `bart --version` command returns an error stating the `PATH` is not available after switching from `root` user to another BART user account, adjust the setting of the `PATH` environment variable to include the location of the BART x.y.z executable (the `bin` subdirectory) in the `~/.bashrc` or `~/.bash_profile` files of the following user accounts: + +- The BART user account on the BART host. +- The remote user account on the remote host to which incremental backups are to be restored. For details, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). + +The `PATH` setting should be the same as set for BART x.y.z since all versions use `/usr/edb/bart/bin`. + +!!! Note + After upgrading to the latest BART version, you must take a new full backup of your system before performing an incremental backup. + + \ No newline at end of file diff --git a/product_docs/docs/bart/2.5.9/bart_inst/05_uninstalling_bart.mdx b/product_docs/docs/bart/2.5.9/bart_inst/05_uninstalling_bart.mdx new file mode 100644 index 00000000000..8374221ef88 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_inst/05_uninstalling_bart.mdx @@ -0,0 +1,50 @@ +--- +title: "Uninstalling BART" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/installation-getting-started/installation-upgrade-guide/2.6.1/uninstalling_bart.html" +--- + + + +This section walks you through uninstalling BART. + +## Uninstalling BART on a RHEL/CentOS Host + +To uninstall BART on a RHEL/CentOS host, assume the identity of the `root` user and invoke the following command: + +On RHEL/CentOS 7: + +```text +yum remove edb-bart +``` + +On RHEL/CentOS 8: + +```text +dnf remove edb-bart +``` + +Uninstalling BART does not delete the backup files and archived WAL files that reside in the BART backup catalog. To permanently delete the backup files and archived WAL files in the BART backup catalog (`/opt/backup`), use one of the following commands: + +- `rm –rf /opt/backup` +- BART `DELETE` subcommand + +For information about the BART `DELETE` subcommand, see the *EDB Backup and Recovery User Guide* available at the [EDB website](/bart/latest/bart_user/). + +## Uninstalling BART on an SLES 12 Host + +To uninstall BART on an SLES 12 host, assume the identity of the `root` user and invoke the following command: + +```text +zypper remove edb-bart +``` + +## Uninstalling BART on a Debian/Ubuntu Host + +To uninstall BART on a Debian or Ubuntu host, invoke the following command: + +```text +apt-get remove edb-bart +``` diff --git a/product_docs/docs/bart/2.5.9/bart_inst/images/EDB_logo.png b/product_docs/docs/bart/2.5.9/bart_inst/images/EDB_logo.png new file mode 100644 index 00000000000..39a54822d85 Binary files /dev/null and b/product_docs/docs/bart/2.5.9/bart_inst/images/EDB_logo.png differ diff --git a/product_docs/docs/bart/2.5.9/bart_inst/images/edb.png b/product_docs/docs/bart/2.5.9/bart_inst/images/edb.png new file mode 100644 index 00000000000..71e5bdde787 Binary files /dev/null and b/product_docs/docs/bart/2.5.9/bart_inst/images/edb.png differ diff --git a/product_docs/docs/bart/2.5.9/bart_inst/images/edb_logo.svg b/product_docs/docs/bart/2.5.9/bart_inst/images/edb_logo.svg new file mode 100644 index 00000000000..f24d1dfefee --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_inst/images/edb_logo.svg @@ -0,0 +1,19 @@ + + + edb-logo-disc-dark + + + + \ No newline at end of file diff --git a/product_docs/docs/bart/2.5.9/bart_inst/images/edblogo.png b/product_docs/docs/bart/2.5.9/bart_inst/images/edblogo.png new file mode 100644 index 00000000000..71e5bdde787 Binary files /dev/null and b/product_docs/docs/bart/2.5.9/bart_inst/images/edblogo.png differ diff --git a/product_docs/docs/bart/2.5.9/bart_inst/index.mdx b/product_docs/docs/bart/2.5.9/bart_inst/index.mdx new file mode 100644 index 00000000000..dd182be18aa --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_inst/index.mdx @@ -0,0 +1,45 @@ +--- +navTitle: Installation Guide +title: "EDB Postgres Backup and Recovery Installation Guide" +legacyRedirects: + - "/edb-docs/d/edb-backup-and-recovery-tool/installation-getting-started/installation-upgrade-guide/2.6.1/requirements_overview.html" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/installation-getting-started/installation-upgrade-guide/2.6.1/conclusion.html" + - "/edb-docs/d/edb-backup-and-recovery-tool/installation-getting-started/installation-upgrade-guide/2.6.1/genindex.html" + - "/edb-docs/d/edb-backup-and-recovery-tool/installation-getting-started/installation-upgrade-guide/2.6.1/index.html" +--- + +This guide provides information about how to install and configure the EDB Backup and Recovery Tool (BART) 2.5. + + + +## Requirements Overview + +### Supported Platforms and Database Versions + +- To view a complete list of platforms that EDB supports, visit the [EDB website.](https://www.enterprisedb.com/services-support/edb-supported-products-and-platforms) + +!!! Note + BART 2.5 does not support CentOS/RHEL/OEL 6.x platforms. EDB recommends migrating the EDB products running on these platforms to a supported platform. + +- BART supports the following database versions: + + - Advanced Server versions 9.6, 10, 11, and 12. + - PostgreSQL versions 9.6, 10, 11, and 12. + +### Software Requirements + +You require the following components to install BART. + +- BART Host Components - Use EDB packages to add BART host components; see [Installing BART](02_installing_bart/#installing-bart) for information about how to install these components. + +- Additional Components - In addition to the BART host components, the following components are required: + + - The [Secure Shell (SSH) server daemon and Secure Copy (SCP) client programs](03_configuring_bart/#authorizing_ssh_scp_access) must be enabled and activated on the BART host as well as on the remote database server hosts on which BART will be managing backup and recovery. + - BART uses the `pg_basebackup` utility program when taking full backups. + +### Limitation + +BART supports taking only a full backup of standby servers; it does not support taking incremental or parallel backups of standby servers. diff --git a/product_docs/docs/bart/2.5.9/bart_qs_7/images/EDB_logo.png b/product_docs/docs/bart/2.5.9/bart_qs_7/images/EDB_logo.png new file mode 100644 index 00000000000..39a54822d85 Binary files /dev/null and b/product_docs/docs/bart/2.5.9/bart_qs_7/images/EDB_logo.png differ diff --git a/product_docs/docs/bart/2.5.9/bart_qs_7/images/edb.png b/product_docs/docs/bart/2.5.9/bart_qs_7/images/edb.png new file mode 100644 index 00000000000..71e5bdde787 Binary files /dev/null and b/product_docs/docs/bart/2.5.9/bart_qs_7/images/edb.png differ diff --git a/product_docs/docs/bart/2.5.9/bart_qs_7/images/edb_logo.svg b/product_docs/docs/bart/2.5.9/bart_qs_7/images/edb_logo.svg new file mode 100644 index 00000000000..f24d1dfefee --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_qs_7/images/edb_logo.svg @@ -0,0 +1,19 @@ + + + edb-logo-disc-dark + + + + \ No newline at end of file diff --git a/product_docs/docs/bart/2.5.9/bart_qs_7/images/image2.png b/product_docs/docs/bart/2.5.9/bart_qs_7/images/image2.png new file mode 100644 index 00000000000..4eba2e7efa7 Binary files /dev/null and b/product_docs/docs/bart/2.5.9/bart_qs_7/images/image2.png differ diff --git a/product_docs/docs/bart/2.5.9/bart_qs_7/index.mdx b/product_docs/docs/bart/2.5.9/bart_qs_7/index.mdx new file mode 100644 index 00000000000..1d54bf90879 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_qs_7/index.mdx @@ -0,0 +1,321 @@ +--- +title: "Quick Start Guide for RHEL/CentOS 7" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/quick-start/quick-start-guide-for-rhelcentos-7/2.6.1/genindex.html" + - "/edb-docs/d/edb-backup-and-recovery-tool/quick-start/quick-start-guide-for-rhelcentos-7/2.6.1/index.html" +--- + +This tutorial demonstrates using `yum` to [install](#installing) and [configure](../bart_qs_8/#configuring) Backup and Recovery Tool (BART) 2.5 on a CentOS 7 host with minimal configuration settings.  The tutorial assumes that the user has some knowledge of installation and system administration procedures, and has administrative privileges on the host. + +For detailed information about BART installation and configuration, see the *BART Installation and Upgrade Guide*, available at the [EDB website](/bart/latest/bart_inst/). + +- BART is tested with the following database versions: + + - Advanced Server - 9.6, 10, 11, and 12. + - PostgreSQL - 9.6, 10, 11, and 12. + + + +**Installing BART** + +The following steps describe installing BART on CentOS 7.x OS using `yum`. + +1. Assume superuser privileges and use `yum` to create the repository configuration file: + + ```text + yum install -y https://yum.enterprisedb.com/edbrepos/edb-repo-latest.noarch.rpm + ``` + +2. Create an EDB user account to request credentials to the EDB repository; for a user account visit the [EnterpriseDB website](https://www.enterprisedb.com/repository-access-request). + +3. Use your choice of editor to open the repository configuration file (named `edb.repo`, located in `/etc/yum.repos.d`), and set the `enabled` parameter value to `1`, and replace the `username` and `password` placeholders in the `baseurl` specification with the username and password of a registered EnterpriseDB user. + +4. Update the cache: + + ```text + yum makecache + ``` + +5. Install an Advanced Server or PostgreSQL database server. + + To install Advanced Server, execute the following command: + + ```text + yum -y install edb-as12-server + ``` + + Use sudo to assume the identity of the `enterprisedb` database superuser + + ```text + sudo su - enterprisedb + ``` + + Create an Advanced Server cluster named `acctg` on listener port `5444`: + + ```text + /usr/edb/as12/bin/initdb -D /var/lib/edb/as12/acctg + ``` + + As the `enterprisedb` user, start the cluster: + + ```text + /usr/edb/as12/bin/pg_ctl start -D /var/lib/edb/as12/acctg + ``` + + You can check the status of the cluster with the following command: + + ```text + /usr/edb/as12/bin/pg_ctl status -D /var/lib/edb/as12/acctg + ``` + + !!! Note + The BART host server is not required to have an Advanced Server or PostgreSQL installation, but must include a copy of the Postgres `libpq` library, the `pg_basebackup` utility program, and Boost Libraries 1.53 version for CentOS 7. + +6. If you do not already have the `pg_basebackup` program installed on the BART host, you can use the following command to install a limited number of files that include the `pg_basebackup` program: + + ```text + yum install edb-as-server-client + ``` + + Where <xx> is the Advanced Server version. + +7. As a root user, execute the following command to install BART: + + ```text + yum install edb-bart + ``` + +BART (the bart program and bart-scanner) is installed in the `/usr/edb/bart/bin` directory, referred to as ``. Repeat the installation process described in this section to install BART on all remote hosts where incremental backups are to be restored. + + + +**Configuring BART** + +Before configuring BART, establish the BART user account (the operating system user) that will run the BART command line program. Then, to configure the BART host and each database server that is to be managed by BART, perform the following steps: + +1. Assume superuser privileges, create the directory that will hold the BART backup catalog, and assign its ownership (with restrictive privileges) to the BART user account: + + In this example, `bartuser` is the BART user account and `/opt/backup` is the BART backup catalog. + + ```text + su root + mkdir /opt/backup + chown bartuser /opt/backup + chgrp bartuser /opt/backup + chmod 700 /opt/backup + ``` + +2. Navigate to the `/usr/edb/bart/etc` directory and copy the `bart.cfg.sample` file to create the BART configuration file (`bart.cfg`): + + ```text + cp bart.cfg.sample bart.cfg + ``` + +3. Open the BART configuration file (`bart.cfg`) using an editor of your choice and scroll through the BART configuration file to edit the file as required; sample settings are included for your reference. You must add the mandatory parameters to the `[BART]` and `[ServerName]` sections. Default values may be used for optional parameters. For detailed information about parameter settings, see the *BART Installation and Upgrade Guide*, available at the [EDB website](/bart/latest/bart_inst/). + + Parameters set in the `[BART]` section are applicable to all BART managed database servers, while parameters set in the `[ServerName]` section are applicable only to the specific server; `[ServerName]` settings override `[BART]` section settings. + + In the following example, only mandatory parameters are set: + + ```text + [BART] + bart_host= bartuser@192.168.169.199 + backup_path = /opt/backup + pg_basebackup_path = /usr/edb/as12/bin/pg_basebackup + + [EPAS12] + host = 127.0.0.1 + user = repuser + cluster_owner = enterprisedb + ``` + +The following table describes only mandatory parameters: + +| **Parameters/Placeholder** | **Section** | **Description** | +| -------------------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `bart_host` | `[BART]` | Use this field to specify the BART user and the IP address of the host on which the BART utility is installed. Specify the value in the form of `@`. | +| `backup_path` | `[BART]` | Use this field to specify the path where all BART backups and archived WAL files will be stored. Ensure the BART user account holds privileges to create subdirectories and files within the location specified in the `backup_path` parameter. The default `backup_path` is BART backup catalog (`/opt/backup`). | +| `pg_basebackup_path` | `[BART]` | Use this field to specify the path to the pg_basebackup utility (`/usr/edb/as/bin/pg_basebackup`). | +| `[ServerName]` | `[ServerName]` | Specify the name of the database server to be backed up (for example, \[EPAS12]). | +| `host` | `[ServerName]` | Specify the IP address of the database server to be configured for backup. | +| `user` | `[ServerName]` | Specify the replication database user name used by BART to establish the connection to the database server for full backups. | +| `cluster_owner` | `[ServerName]` | Specify the Linux operating system user account that owns the database cluster. | + +4. As a BART user, navigate to `/usr/edb/bart/bin` and invoke the following subcommand (omitting the `-s` option) to verify the \[BART] section parameter settings: + + ```text + bart CHECK-CONFIG + ``` + +5. Authorize [SSH/SCP access](../bart_qs_8/#passwordless) between the server and the BART host without a password prompt. + +6. Create a [replication database user](../bart_qs_8/#replication) for each database server that BART manages. + +7. To enable continuous WAL archiving for any database server for which BART is to perform a backup, modify the `postgresql.conf` file, setting: + + - `wal_level` to `replica` or higher (for Postgres 9.6 or later) + - `archive_mode` to `on` + - `archive_command` (if it is not set in the `bart.cfg` file) + - `max_wal_senders` to a value high enough to leave at least one session available for the backup. + + After setting the parameters, restart the database server. + +8. To start the WAL scanner, navigate to `/usr/edb/bart/bin` as a BART user and execute the following command: + + ```text + ./bart-scanner + ``` + +9. If you are using the default `archive_command`, then navigate to `/usr/edb/bart/bin` as a BART user, run the `INIT` subcommand without the `-o` option, and restart the database server: + + ```text + bart INIT [ -s { | all } ] + ``` + + Where `` is the name of the database server to be backed up. + + If you have customized the `archive_command` setting in the `bart.cfg` file, run the `INIT` subcommand with the `-o` option to override any existing Postgresql `archive_command` setting in the `postgresql.conf` or the `postgresql.auto.conf` file, and restart the database server. + + ```text + bart INIT [ -s { | all } ] [ -o ] + ``` + +10. To verify the database server parameter settings, as a BART user navigate to `/usr/edb/bart/bin` and invoke the `CHECK-CONFIG` subcommand with the -s option: + + ```text + bart CHECK-CONFIG [ -s ] + ``` + + BART is now configured successfully. For detailed information about using BART, see the *EDB Backup and Recovery Tool User Guide*, available at the [EDB website](/bart/latest/bart_user/). + + + +**Creating a Passwordless Connection** + +The following example enables SSH/SCP access on a CentOS 7.x host; similar (platform-specific) steps will apply to other platforms/versions. You must create a passwordless connection between the BART host (SSH/SCP client) and the database server (target SSH/SCP server), as well as a passwordless connection between the database server (SSH/SCP client) and the BART host (target SSH/SCP server). + +1. Log in as the user account on the BART host that will be initiating the SSH or SCP connection and navigate to the user account’s home directory and check for an existing `.ssh` subdirectory. If the `.ssh` directory does not exist, create one with the required privileges. + +2. As a root user navigate to `/usr/edb/bart`, open the `/etc/ssh/sshd_config` file and set the `PubkeyAuthentication` parameter to `yes`. + +3. Reload the configuration file: + + ```text + service sshd reload + ``` + + If you get any SSH or SCP errors, examine the log file (`/var/log/secure`). + +4. As a BART user, use the following command to generate the public key file; you can accept the default responses: + + ```text + ssh-keygen -t rsa + ``` + + The public key file named `id_rsa.pub` is created in the `.ssh` subdirectory. + +5. Use `SCP` to make a temporary copy of the public key file on the target server: + + ```text + scp ~/.ssh/id_rsa.pub target_user@host_address:tmp.pub + ``` + +6. As a `target_user`, log into the target server using `ssh target_user@host_address` command and navigate to the user account’s home directory to check if there is an existing `.ssh` subdirectory. If it does not exist, create one with the required privileges. + +7. Append the client’s temporary public key file, `tmp.pub`, to the `authorized_keys` file: + + ```text + cat tmp.pub >> ~/.ssh/authorized_keys + ``` + + If an `authorized_keys` file does not exist, create a new file, but be careful not to completely replace any existing `authorized_keys` file. + +8. Ensure only the file owner (and not other groups or users) has access to `authorized_keys` file: + + ```text + chmod 600 ~/.ssh/authorized_keys + ``` + +9. Delete the temporary public key file: + + ```text + rm tmp.pub + ``` + + Now, when logged into the BART host as a user, there should be no prompt for a password when you are connecting to the target database server: + + ```text + ssh target_user@database_server_address + ``` + +**Creating a Passwordless Connection Between the Database Server and the BART Host** + +If backups are to be taken from a given database server host, but restored to a different database server host, the passwordless SSH/SCP connections must be configured from the BART host to the database server host from which the backup is to be taken as well as from the BART host to the database server host to which the backup is to be restored. + +An example of how to create a passwordless connection is documented in the *EDB Backup and Recovery Reference Guide*, available at the [EDB website](/bart/latest/bart_ref/). + +Even when the Advanced Server database is on the same host as BART, and the Advanced Server database cluster owner is also the BART user account, a passwordless SSH/SCP connection must be established from the same user account to itself. + +1. On the database server, navigate into the target user account’s home directory to check for an existing `.ssh` subdirectory. If it does does not exist, create one in the user account’s home directory with the required privileges. + +2. As a database server user, generate the public key file: + + ```text + ssh-keygen -t rsa + ``` + +3. Create a temporary copy of the public key file: + + ```text + scp ~/.ssh/id_rsa.pub target_user@host_address:tmp.pub + ``` + +4. As a target user, log into the BART host and navigate to the user account’s home directory to check if there is an existing `.ssh` subdirectory. If it does not exist, create one with the required privileges: + + ```text + ssh target_user@host_address + ``` + +5. Append the temporary, client’s public key file to the `authorized_keys` file: + + ```text + cat tmp.pub >> ~/.ssh/authorized_keys + ``` + +If an `authorized_keys` file does not exist, create a new file, but do not completely replace any existing `authorized_keys` file. + +6. Ensure only the file owner (and not other groups or users) has access to `authorized_keys` file: + + ```text + chmod 600 ~/.ssh/authorized_keys + ``` + +7. Delete the temporary public key file: + + ```text + rm tmp.pub + ``` + + Now, when logged into the database server as a user, there should be no prompt for a password when you are connecting to the BART host: + + ```text + ssh bart_user@bartip_address + ``` + + + +**Creating a Replication Database User** + +1. To create a replication database user (a superuser), connect to the database server with the psql client, and invoke the following PostgreSQL command: + + ```text + CREATE ROLE WITH LOGIN SUPERUSER PASSWORD ''; + ``` + +2. Specify this replication database user in the `user` parameter of the `bart.cfg` file. + +3. The [pg_hba.conf](https://www.postgresql.org/docs/current/auth-pg-hba-conf.html) file must minimally permit the replication database user to have access to the database. The IP address from which the replication database user has access to the database is the BART host location. The replication database user must also be included in the `pg_hba.conf` file as a replication database connection if `pg_basebackup` is to be used for taking any backups. + +4. To ensure there is no password prompt when connecting to the database server with the replication database user, a recommended method is to use the `.pgpass` file located in the BART user account’s home directory (if it does not exist, you need to create the `.pgpass` file with the required privileges). The `.pgpass` file must contain an entry for each BART managed database server, and its corresponding replication database user and password. diff --git a/product_docs/docs/bart/2.5.9/bart_qs_8/images/EDB_logo.png b/product_docs/docs/bart/2.5.9/bart_qs_8/images/EDB_logo.png new file mode 100644 index 00000000000..39a54822d85 Binary files /dev/null and b/product_docs/docs/bart/2.5.9/bart_qs_8/images/EDB_logo.png differ diff --git a/product_docs/docs/bart/2.5.9/bart_qs_8/images/edb.png b/product_docs/docs/bart/2.5.9/bart_qs_8/images/edb.png new file mode 100644 index 00000000000..71e5bdde787 Binary files /dev/null and b/product_docs/docs/bart/2.5.9/bart_qs_8/images/edb.png differ diff --git a/product_docs/docs/bart/2.5.9/bart_qs_8/images/edb_logo.svg b/product_docs/docs/bart/2.5.9/bart_qs_8/images/edb_logo.svg new file mode 100644 index 00000000000..f24d1dfefee --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_qs_8/images/edb_logo.svg @@ -0,0 +1,19 @@ + + + edb-logo-disc-dark + + + + \ No newline at end of file diff --git a/product_docs/docs/bart/2.5.9/bart_qs_8/images/image2.png b/product_docs/docs/bart/2.5.9/bart_qs_8/images/image2.png new file mode 100644 index 00000000000..4eba2e7efa7 Binary files /dev/null and b/product_docs/docs/bart/2.5.9/bart_qs_8/images/image2.png differ diff --git a/product_docs/docs/bart/2.5.9/bart_qs_8/index.mdx b/product_docs/docs/bart/2.5.9/bart_qs_8/index.mdx new file mode 100644 index 00000000000..7dc447abfb2 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_qs_8/index.mdx @@ -0,0 +1,317 @@ +--- +title: "Quick Start Guide for RHEL/CentOS 8" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/quick-start/quick-start-guide-for-rhelcentos-8/2.6.1/genindex.html" + - "/edb-docs/d/edb-backup-and-recovery-tool/quick-start/quick-start-guide-for-rhelcentos-8/2.6.1/index.html" +--- + +This tutorial demonstrates using the `dnf` command to install and configure the EDB Backup and Recovery Tool (BART) 2.5 on a CentOS 8 host with minimal configuration settings.  The tutorial assumes that the user has some knowledge of installation and system administration procedures and has administrative privileges on the host. + +For detailed information about BART installation and configuration, see the *BART Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/). + +- BART is tested with the following database versions: + + - Advanced Server - 9.6, 10, 11, and 12. + - PostgreSQL - 9.6, 10, 11, and 12. + +**Installing BART** + +The following steps describe installing BART on CentOS 8.x OS. + +1. Assume superuser privileges and use `dnf` to create the repository configuration file: + + ```text + dnf install -y https://yum.enterprisedb.com/edbrepos/edb-repo-latest.noarch.rpm + ``` + +2. Create an EDB user account to request credentials to the EDB repository; for a user account visit the [EnterpriseDB website](https://www.enterprisedb.com/repository-access-request). + +3. Use your choice of editor to open the repository configuration file (named `edb.repo`, located in `/etc/yum.repos.d`), set the `enabled` parameter value to `1`, and replace the `username` and `password` placeholders in the `baseurl` specification with the username and password of a registered EnterpriseDB user. + +4. Update the cache: + + ```text + dnf makecache + ``` + +5. Install an Advanced Server or PostgreSQL database server. + + To install Advanced Server, execute the following command: + + ```text + dnf -y install edb-as12-server + ``` + + Use sudo to assume the identity of the `enterprisedb` database superuser: + + ```text + sudo su - enterprisedb + ``` + + Create an Advanced Server cluster named `acctg` on listener port `5444`: + + ```text + /usr/edb/as12/bin/initdb -D /var/lib/edb/as12/acctg + ``` + + As the `enterprisedb` user, start the cluster: + + ```text + /usr/edb/as12/bin/pg_ctl start -D /var/lib/edb/as12/acctg + ``` + + You can check the status of the cluster with the following command: + + ```text + /usr/edb/as12/bin/pg_ctl status -D /var/lib/edb/as12/acctg + ``` + + !!! Note + The BART host server is not required to have an Advanced Server or PostgreSQL installation, but must include a copy of the Postgres `libpq` library, the `pg_basebackup` utility program, and Boost Libraries 1.66 version for CentOS 8. + +6. If you do not already have the `pg_basebackup` program installed on the BART host, you can use the following command to install a limited number of files that include the `pg_basebackup` program: + + ```text + dnf install edb-asxx-server-client + ``` + +7. As a root user, use the following command to install the BART RPM package: + + ```text + dnf install edb-bart + ``` + +BART (the `bart` program and `bart-scanner`) is installed in the `/usr/edb/bart/bin` directory, referred to as ``. Repeat the installation process described in this section to install BART on all remote hosts where incremental backups are to be restored. + + + +**Configuring BART** + +Before configuring BART, establish the BART user account (the operating system user) to run the BART command line program. Then, to configure the BART host and each database server that is to be managed by BART, perform the following steps: + +1. Assume superuser privileges, create the directory that will hold the BART backup catalog, and assign its ownership (with restrictive privileges) to the BART user account: + + In this example, `bartuser` is the BART user account and `/opt/backup` is the BART backup catalog. + + ```text + su root + mkdir /opt/backup + chown bartuser /opt/backup + chgrp bartuser /opt/backup + chmod 700 /opt/backup + ``` + +2. Navigate to the `/usr/edb/bart/etc` directory and copy the `bart.cfg.sample` file to create the BART configuration file (`bart.cfg`): + + ```text + cp bart.cfg.sample bart.cfg + ``` + +3. Open the BART configuration file (`bart.cfg`) using an editor of your choice and scroll through the BART configuration file to edit the file as required; sample settings are included for your reference. You must add the mandatory parameters to the `[BART]` and `[ServerName]` sections. Default values may be used for optional parameters. For detailed information about parameter settings, see the *BART Installation and Upgrade Guide*, available at the [EDB website](/bart/latest/bart_inst/). + + Parameters set in the `[BART]` section are applicable to all BART managed database servers, while parameters set in the `[ServerName]` section are applicable only to the specific server; `[ServerName]` settings override `[BART]` section settings. + + In the following example, only mandatory parameters are set: + + ```text + [BART] + bart_host= bartuser@192.168.169.199 + backup_path = /opt/backup + pg_basebackup_path = /usr/edb/as12/bin/pg_basebackup + + [EPAS12] + host = 127.0.0.1 + user = repuser + cluster_owner = enterprisedb + ``` + +The following table describes only mandatory parameters: + +| **Parameters/Placeholder** | **Section** | **Description** | +| -------------------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `bart_host` | `[BART]` | Use this field to specify the BART user and the IP address of the host on which the BART utility is installed. Specify the value in the form of `@`. | +| `backup_path` | `[BART]` | Use this field to specify the path where all BART backups and archived WAL files will be stored. Ensure the BART user account holds privileges to create subdirectories and files within the location specified in the `backup_path` parameter. The default `backup_path` is BART backup catalog (`/opt/backup`). | +| `pg_basebackup_path` | `[BART]` | Use this field to specify the path to the pg_basebackup utility (`/usr/edb/as/bin/pg_basebackup`). | +| `[ServerName]` | `[ServerName]` | Specify the name of the database server to be backed up (for example, \[EPAS12]). | +| `host` | `[ServerName]` | Specify the IP address of the database server to be configured for backup. | +| `user` | `[ServerName]` | Specify the replication database user name used by BART to establish the connection to the database server for full backups. | +| `cluster_owner` | `[ServerName]` | Specify the Linux operating system user account that owns the database cluster. | + +4. As a BART user, navigate to `/usr/edb/bart/bin` and invoke the following subcommand (omitting the `-s` option) to verify the \[BART] section parameter settings: + + ```text + bart CHECK-CONFIG + ``` + +5. Authorize [SSH/SCP access](#passwordless) between the server and the BART host without a password prompt. + +6. Create a [replication database user](#replication) for each database server that BART manages. + +7. To enable continuous WAL archiving for any database server for which BART is to perform a backup, modify the `postgresql.conf` fil and set it to: + + - `wal_level` to `replica` or higher (for Postgres 9.6 or later) + - `archive_mode` to `on` + - `archive_command` (if it is not set in the `bart.cfg` file) + - `max_wal_senders` to a value high enough to leave at least one session available for the backup. + + After setting the parameters, restart the database server. + +8. To start the WAL scanner, navigate to `/usr/edb/bart/bin` as a BART user and execute the following command: + + ```text + ./bart-scanner + ``` + +9. If you are using the default `archive_command`, then navigate to `/usr/edb/bart/bin` as a BART user, run the `INIT` subcommand without the `-o` option, and restart the database server: + + ```text + bart INIT [ -s { | all } ] + ``` + + Where `` is the name of the database server to be backed up. + + If you have customized the `archive_command` setting in the `bart.cfg` file, run the `INIT` subcommand with the `-o` option to override any existing Postgresql `archive_command` setting in the `postgresql.conf` or the `postgresql.auto.conf` file, and restart the database server. + + ```text + bart INIT [ -s { | all } ] [ -o ] + ``` + +10. To verify the database server parameter settings, as a BART user navigate to `/usr/edb/bart/bin` and invoke the `CHECK-CONFIG` subcommand with the -s option: + + ```text + bart CHECK-CONFIG [ -s ] + ``` + + BART is now configured successfully. For detailed information about using BART, see the *EDB Backup and Recovery Tool User Guide* available at the [EDB website](/bart/latest/bart_user/). + + + +**Creating a Passwordless Connection** + +The following example enables SSH/SCP access on a CentOS 8.x host; similar (platform-specific) steps will apply to other platforms/versions. You must create a passwordless connection between the BART host (SSH/SCP client) and the database server (target SSH/SCP server), as well as a passwordless connection between the database server (SSH/SCP client) and the BART host (target SSH/SCP server). + +1. Log in as the user account on the BART host that will be initiating the SSH or SCP connection and navigate to the user account’s home directory and check for an existing `.ssh` subdirectory. If the `.ssh` directory does not exist, create one with the required privileges. + +2. As a root user navigate to `/usr/edb/bart`, open the `/etc/ssh/sshd_config` file and set the `PubkeyAuthentication` parameter to `yes`. + +3. Reload the configuration file: + + ```text + service sshd reload + ``` + + If you get any SSH or SCP errors, examine the log file (`/var/log/secure`). + +4. As a BART user, use the following command to generate the public key file; you can accept the default responses: + + ```text + ssh-keygen -t rsa + ``` + + The public key file named `id_rsa.pub` is created in the `.ssh` subdirectory. + +5. Use `SCP` to make a temporary copy of the public key file on the target server: + + ```text + scp ~/.ssh/id_rsa.pub target_user@host_address:tmp.pub + ``` + +6. As a `target_user`, log into the target server using `ssh target_user@host_address` command and navigate to the user account’s home directory to check if there is an existing `.ssh` subdirectory. If it does not exist, create one with the required privileges. + +7. Append the temporary client’s public key file, `tmp.pub`, to the `authorized_keys` file: + + ```text + cat tmp.pub >> ~/.ssh/authorized_keys + ``` + + If an `authorized_keys` file does not exist, create a new file, but be careful not to completely replace any existing `authorized_keys` file. + +8. Ensure only the file owner (and not other groups or users) has access to `authorized_keys` file: + + ```text + chmod 600 ~/.ssh/authorized_keys + ``` + +9. Delete the temporary public key file: + + ```text + rm tmp.pub + ``` + + Now, when logged into the BART host as a user, there should be no prompt for a password when you are connecting to the target database server: + + ```text + ssh target_user@database_server_address + ``` + +**Creating a Passwordless Connection Between the Database Server and the BART Host** + +If backups are to be taken from a given database server host, but restored to a different database server host, the passwordless SSH/SCP connections must be configured from the BART host to the database server host from which the backup is to be taken as well as from the BART host to the database server host to which the backup is to be restored. + +An example of how to create a passwordless connection is documented in the *EDB Backup and Recovery Reference Guide*, available at the [EDB website](/bart/latest/bart_ref/). + +Even when the Advanced Server database is on the same host as BART, and the Advanced Server database cluster owner is also the BART user account, a passwordless SSH/SCP connection must be established from the same user account to itself. + +1. On the database server, navigate into the target user account’s home directory to check for an existing `.ssh` subdirectory. If it does does not exist, create one in the user account’s home directory with the required privileges. + +2. As a database server user, generate the public key file: + + ```text + ssh-keygen -t rsa + ``` + +3. Create a temporary copy of the public key file: + + ```text + scp ~/.ssh/id_rsa.pub target_user@host_address:tmp.pub + ``` + +4. As a target user, log into the BART host and navigate to the user account’s home directory to check if there is an existing `.ssh` subdirectory. If it does not exist, create one with the required privileges: + + ```text + ssh target_user@host_address + ``` + +5. Append the client’s temporary public key file to the `authorized_keys` file: + + ```text + cat tmp.pub >> ~/.ssh/authorized_keys + ``` + +If the `authorized_keys file` does not exist, create a new file, but do not completely replace any existing `authorized_keys` file. + +6. Ensure that only the file owner (and not other groups or users) has access to `authorized_keys` file: + + ```text + chmod 600 ~/.ssh/authorized_keys + ``` + +7. Delete the temporary public key file: + + ```text + rm tmp.pub + ``` + + Now, when logged into the database server as a user, there should be no prompt for a password when you are connecting to the BART host: + + ```text + ssh bart_user@bartip_address + ``` + + + +**Creating a Replication Database User** + +1. To create a replication database user (a superuser), connect to the database server with the psql client, and invoke the following PostgreSQL command: + + ```text + CREATE ROLE WITH LOGIN SUPERUSER PASSWORD ''; + ``` + +2. Specify this replication database user in the `user` parameter of the `bart.cfg` file. + +3. The [pg_hba.conf](https://www.postgresql.org/docs/current/auth-pg-hba-conf.html) file must minimally permit the replication database user to have access to the database. The IP address from which the replication database user has access to the database is the BART host location. The replication database user must also be included in the `pg_hba.conf` file as a replication database connection if `pg_basebackup` is to be used for taking any backups. + +4. To ensure there is no password prompt when connecting to the database server with the replication database user, a recommended method is to use the `.pgpass` file located in the BART user account’s home directory (if it does not exist, you need to create the `.pgpass` file with the required privileges). The `.pgpass` file must contain an entry for each BART managed database server, and its corresponding replication database user and password. diff --git a/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/01_backup.mdx b/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/01_backup.mdx new file mode 100644 index 00000000000..2649c676929 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/01_backup.mdx @@ -0,0 +1,218 @@ +--- +title: "BACKUP" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/backup.html" +--- + +Use the `BACKUP` subcommand to create a full or incremental backup. + +**Syntax for a Full Backup:** + +```text +bart BACKUP –s { | all } [ -F { p | t } ] + +[ -z ] [ –c ] + +[ --backup-name ] + +[ --thread-count ] + +[ { --with-pg_basebackup | --no-pg_basebackup } ] +``` + +**Syntax for an Incremental Backup:** + +```text +bart BACKUP –s [-Fp] + +[ --parent { | } ] + +[ --backup-name ] + +[ --thread-count ] + +``` + +Before performing an incremental backup, you must take a full backup. For more details about incremental backup, refer to *Block-Level Incremental Backup* in the *EDB Backup and Recovery User Guide* available at the [EDB website](/bart/latest/bart_user/). + +The following table describes the `BACKUP` options: + +| Options | Description | +| ---------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s { \| all }`
`--server { \| all }` | Use this option to specify the database server to be backed up.
Specify `` to take a backup of the database server (as specified in the BART configuration file).
Specify `all` to take a backup of all servers. | +| `-F { p \| t }`
`--format { p \| t }` | Use this option to specify the backup file format.
Specify `p` option to take backup in plain text format and specify `t` option to take backup in tar format. If the `p` or `t` option is omitted, the default is tar format.
Use `p` option with the `BACKUP` subcommand when streaming is used as a backup method.
An incremental backup can only be taken in plain text format (`p`). | +| `-z`
`(--gzip)` | This option is applicable only for full backup and `tar` format. Use this option to enable gzip compression of tar files using the default compression level (typically 6). | +| `-c `
`--compress-level ` | This is applicable only for full backup and tar format. Use this option to specify the gzip compression level on the tar file output. `` is a digit from 1 through 9, with 9 being the best compression. | +| `--backup-name ` | Use this option to assign a user-defined, alphanumeric friendly name to the backup. The maximum permitted length of backup name is 49 characters.
For detailed information about this parameter, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/).
If the option `--backup-name` is not specified and the `backup_name` parameter is not set for this database server in the BART configuration file, then the backup can only be referenced in other BART subcommands by the BART assigned backup identifier. | +| `--thread-count ` | Use this option to specify the number of worker threads to run in parallel to copy blocks for a backup.
For detailed information about the `--thread-count` parameter, see the EDB Backup and Recovery Installation and Upgrade Guide available at the [EDB website](/bart/latest/bart_inst/). | +| `--with-pg_basebackup` | This is applicable only for full backup. Use this option to specify the use of `pg_basebackup` to take a full backup. The number of thread counts in effect is ignored as given by the `thread_count` parameter in the BART configuration file.
When taking a full backup, if the thread count in effect is greater than `1`, then the `pg_basebackup` utility is not used to take the full backup (parallel worker threads are used) unless the `--with-pg_basebackup` option is specified with the `BACKUP` subcommand. | +| `--no-pg_basebackup` | This is applicable only for full backup. Use this option to specify that `pg_basebackup` is not to be used to take a full backup.
When taking a full backup, if the thread count in effect is only `1`, then the `pg_basebackup` utility is used to take the full backup unless the `--no-pg_basebackup` option is specified with the `BACKUP` subcommand. | +| `--parent { \| }` | Use this option to take an incremental backup. The parent backup is a backup taken prior to the incremental backup; it can be either a full backup or an incremental backup. `` is the backup identifier of a parent backup and `` is the user-defined alphanumeric name of a parent backup. | +| `--check` | This is applicable only for incremental backup. Use this option to verify if the required MBM files are present in the BART backup catalog before taking an incremental backup. However, an actual incremental backup is not taken when the `--check` option is specified.
The `--parent` option must be used along with the `--check` option. | + +**Examples** + +The following code sample demonstrates using variables with the `BACKUP` subcommand: + +```text +./bart backup -s ppas12 -Ft --backup-name "YEAR = %year MONTH = +%month DAY = %day" +``` + +```text +./bart backup -s ppas12 -Ft --backup-name "YEAR = %year MONTH = +%month DAY = %day %%" +``` + +```text +./bart show-backups -s ppas12 -i "test backup" +``` + +The following code sample displays the result of creating a full backup in the default tar format with gzip compression when the `BACKUP` subcommand was invoked. Note that checksums are generated for the full backup and user-defined tablespaces for the tar format backup: + +```text +[edb@localhost bin]$ ./bart BACKUP -s hr -z +INFO: DebugTarget - getVar(checkDiskSpace.bytesAvailable) +INFO: new backup identifier generated 1567591909098 +INFO: creating 5 harvester threads +NOTICE: all required WAL segments have been archived +INFO: backup completed successfully +INFO: +BART VERSION: 2.5 +BACKUP DETAILS: +BACKUP STATUS: active +BACKUP IDENTIFIER: 1567591909098 +BACKUP NAME: none +BACKUP PARENT: none +BACKUP LOCATION: /home/edb/bkup_new/hr/1567591909098 +BACKUP SIZE: 13.91 MB +BACKUP FORMAT: tar.gz +BACKUP TIMEZONE: America/New_York +XLOG METHOD: fetch +BACKUP CHECKSUM(s): 0 +TABLESPACE(s): 3 +Oid Name Location +16387 test1 /home/edb/tbl1 +16388 test2 /home/edb/tbl2 +16389 test3 /home/edb/tbl3 + +START WAL LOCATION: 000000010000000000000025 +STOP WAL LOCATION: 000000010000000000000026 +BACKUP METHOD: streamed +BACKUP FROM: master +START TIME: 2019-09-04 06:11:49 EDT +STOP TIME: 2019-09-04 06:11:53 EDT +TOTAL DURATION: 4 sec(s) +``` + +The following code sample displays information about the directory containing the full backup: + +```text +[edb@localhost bin]$number_of_threads> +[edb@localhost bin]$ ls -l /home/edb/bkup_new/hr/ +total 8 +drwxrwxr-x. 3 edb edb 34 Aug 27 05:57 1566899819709 +drwxrwxr-x. 3 edb edb 58 Aug 27 05:57 1566899827751 +drwxrwxr-x. 3 edb edb 4096 Sep 4 06:11 1567591909098 +drwxrwxr-x. 2 edb edb 4096 Sep 4 06:11 archived_wals +[edb@localhost bin]$ +``` + +The following code sample displays information about the creation of a full backup while streaming the transaction log. Note that the `-Fp` option must be specified with the `BACKUP` subcommand when streaming is used as a backup method. + +```text +[edb@localhost bin]$ ./bart BACKUP -s ACCTG -Fp +INFO: DebugTarget - getVar(checkDiskSpace.bytesAvailable) +INFO: new backup identifier generated 1566898964200 +INFO: creating 5 harvester threads +NOTICE: pg_stop_backup complete, all required WAL segments have been archived +INFO: backup completed successfully +INFO: +BART VERSION: 2.5 +BACKUP DETAILS: +BACKUP STATUS: active +BACKUP IDENTIFIER: 1566898964200 +BACKUP NAME: none +BACKUP PARENT: none +BACKUP LOCATION: /home/edb/bkup_new/acctg/1566898964200 +BACKUP SIZE: 46.03 MB +BACKUP FORMAT: plain +BACKUP TIMEZONE: US/Eastern +XLOG METHOD: fetch +BACKUP CHECKSUM(s): 0 +TABLESPACE(s): 0 +START WAL LOCATION: 000000010000000000000017 +BACKUP METHOD: streamed +BACKUP FROM: master +START TIME: 2019-08-27 05:42:44 EDT +STOP TIME: 2019-08-27 05:42:46 EDT +TOTAL DURATION: 2 sec(s) +``` + +The following code sample displays the assignment of a user-defined backup name with the `--backup-name` option: + +```text +[edb@localhost bin]$ ./bart BACKUP -s acctg --backup-name acctg_%year-%month-%day +INFO: DebugTarget - getVar(checkDiskSpace.bytesAvailable) +INFO: new backup identifier generated 1566899004804 +INFO: creating 5 harvester threads +NOTICE: pg_stop_backup complete, all required WAL segments have been archived +INFO: backup completed successfully +INFO: +BART VERSION: 2.5 +BACKUP DETAILS: +BACKUP STATUS: active +BACKUP IDENTIFIER: 1566899004804 +BACKUP NAME: acctg_2019-08-27 +BACKUP PARENT: none +BACKUP LOCATION: /home/edb/bkup_new/acctg/1566899004804 +BACKUP SIZE: 46.86 MB +BACKUP FORMAT: tar +BACKUP TIMEZONE: US/Eastern +XLOG METHOD: fetch +BACKUP CHECKSUM(s): 0 +TABLESPACE(s): 0 +START WAL LOCATION: 00000001000000000000001A +BACKUP METHOD: streamed +BACKUP FROM: master +START TIME: 2019-08-27 05:43:24 EDT +STOP TIME: 2019-08-27 05:43:24 EDT +TOTAL DURATION: 0 sec(s) +``` + +The following code sample displays an incremental backup taken by specifying the `--parent` option. The option `-Fp` must be specified while taking an incremental backup as incremental backup can be taken only in plain text format. + +```text +[edb@localhost bin]$ ./bart BACKUP -s hr -Fp --parent hr_full_1 --backup-name +hr_incr_1 +INFO: DebugTarget - getVar(checkDiskSpace.bytesAvailable) +INFO: checking /home/edb/bkup_new/hr/archived_wals for MBM files from 0/20000028 to +0/22000000 +INFO: new backup identifier generated 1566899827751 +INFO: creating 5 harvester threads +NOTICE: all required WAL segments have been archived +INFO: backup completed successfully +INFO: +BART VERSION: 2.5 +BACKUP DETAILS: +BACKUP STATUS: active +BACKUP IDENTIFIER: 1566899827751 +BACKUP NAME: hr_incr_1 +BACKUP PARENT: 1566899819709 +BACKUP LOCATION: /home/edb/bkup_new/hr/1566899827751 +BACKUP SIZE: 7.19 MB +BACKUP FORMAT: plain +BACKUP TIMEZONE: America/New_York +XLOG METHOD: fetch +BACKUP CHECKSUM(s): 0 +TABLESPACE(s): 0 +START WAL LOCATION: 000000010000000000000022 +STOP WAL LOCATION: 000000010000000000000023 +BACKUP METHOD: streamed +BACKUP FROM: master +START TIME: 2019-08-27 05:57:07 EDT +STOP TIME: 2019-08-27 05:57:08 EDT +TOTAL DURATION: 1 sec(s) +``` \ No newline at end of file diff --git a/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/02_check_config.mdx b/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/02_check_config.mdx new file mode 100644 index 00000000000..69c51d5249e --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/02_check_config.mdx @@ -0,0 +1,65 @@ +--- +title: "CHECK-CONFIG" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/check_config.html" +--- + +The `CHECK-CONFIG` subcommand checks the global parameter settings as well as the database server configuration in the BART configuration file. + +The following syntax is used to check the BART configuration file global section settings. + +```text +bart CHECK-CONFIG +``` + +The following syntax is used to check the database server configuration settings. + +```text +bart CHECK-CONFIG [ –s ] +``` + +The following table describes the `CHECK-CONFIG` option: + +| Option | Description | +| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | +| `-s ` `--server ` | `` is the name of the database server whose configuration parameter settings are to be checked. | + +**Example** + +The following code sample demonstrates successfully checking the BART configuration file global parameters with the `bart CHECK-CONFIG` command: + +```text +bash-4.1$ bart CHECK-CONFIG +INFO: Verifying that pg_basebackup is executable +INFO: success - +INFO: success - pg_basebackup(/usr/edb/as11/bin/pg_basebackup) returns +version 11.400000 +``` + +The following code sample demonstrates successfully checking the BART configuration file database server parameters with the `bart CHECK-CONFIG` command with the `–s` option: + +```text +[edb@localhost bin]$ ./bart check-config -s hr +INFO: Checking server hr +INFO: Verifying cluster_owner and ssh/scp connectivity +INFO: success +INFO: Verifying user, host, and replication connectivity +INFO: success +INFO: Verifying that user is a database superuser +INFO: success +INFO: Verifying that cluster_owner can read cluster data files +INFO: success +INFO: Verifying that you have permission to write to vault +INFO: success +INFO: /home/edb/bkup_new/hr +INFO: Verifying database server configuration +INFO: success +INFO: Verifying that WAL archiving is working +INFO: waiting 30 seconds for +/home/edb/bkup_new/hr/archived_wals/00000001000000000000001E +INFO: success +INFO: Verifying that bart-scanner is configured and running +INFO: success +``` diff --git a/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/03_delete.mdx b/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/03_delete.mdx new file mode 100644 index 00000000000..a148c571880 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/03_delete.mdx @@ -0,0 +1,141 @@ +--- +title: "DELETE" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/delete.html" +--- + +The `DELETE` subcommand removes the subdirectory and data files from the BART backup catalog for the specified backups along with archived WAL files. + +**Syntax:** + +```text +bart DELETE –s +-i { all | [']{ | },... }['] } +[ -n ] +``` + +Note that when invoking the `DELETE` subcommand, you must specify a database server. + +For database servers under a retention policy, there are conditions where certain backups may not be deleted. For more information, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). + +The following table describes the `DELETE` options: + +| Options | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s `
`--server ` | `` is the name of the database server whose backups are to be deleted. | +| ``-i { all \| [']{ \| }',... }[`] }``

``--backupid { all \| [']{ \| }',... }[`] }`` | `` is the backup identifier of the backup to be deleted. `` is the user-defined alphanumeric name for the backup.
Multiple backup identifiers and backup names may be specified in a comma-separated list. The list must be enclosed within single quotes if there is any white space appearing before or after each comma (see [Example](#deleting_multiple_backups_with_space_characters)).
If `all` is specified, all backups and their archived WAL files for the specified database server are deleted. | +| `-n`
`--dry-run` | Performs the test run and displays the results prior to physically removing files; no files are actually deleted. | + +**Example** + +The following code sample demonstrates deleting a backup from the specified database server: + +```text +[edb@localhost bin]$ ./bart DELETE -s acctg -i acctg_2019-08-27 +INFO: deleting backup 'acctg_2019-08-27' of server 'acctg' +INFO: deleting backup '1566900093665' +INFO: WALs of deleted backup(s) will belong to prior backup(if any), or will +be marked unused +WARNING: not marking any WALs as unused WALs, the WAL file +'/home/edb/bkup_new/acctg/archived_wals/000000010000000000000025' +is required, yet not available in archived_wals directory +INFO: backup(s) deleted +[edb@localhost bin]$ +``` + +After the deletion, the BART backup catalog for the database server no longer contains the corresponding directory for the deleted `backup ID`. The following code sample displays information about `archived_wals` subdirectory that no longer contains the backup WAL files: + +```text +[edb@localhost acctg]$ ls -l +total 16 +drwxrwxr-x. 3 edb edb 4096 Aug 27 06:03 1566900199604 +drwxrwxr-x. 3 edb edb 4096 Aug 27 06:03 1566900204377 +drwxrwxr-x. 3 edb edb 4096 Aug 27 06:03 1566900209087 +drwxrwxr-x. 3 edb edb 4096 Aug 27 06:05 1566900321228 +drwxrwxr-x. 2 edb edb 6 Aug 27 06:01 archived_wals +``` + +The following code sample demonstrates deleting multiple backups from the database server. + +```text +[edb@localhost bin]$ ./bart DELETE -s acctg -i `1566988095633,1566988100760, +acctg_2019-08-28` +INFO: deleting backup `1566988095633` of server `acctg` +INFO: deleting backup `1566988095633` +INFO: WALs of deleted backup(s) will belong to prior backup(if any), or will +be marked unused +WARNING: not marking any WALs as unused WALs, the WAL file +`/home/edb/bkup_new/acctg/archived_wals/000000010000000000000037` is required, +yet not available in archived_wals directory +INFO: backup(s) deleted +INFO: deleting backup `1566988100760` of server `acctg` +INFO: deleting backup `1566988100760` +INFO: WALs of deleted backup(s) will belong to prior backup(if any), or will +be marked unused +WARNING: not marking any WALs as unused WALs, the WAL file +`/home/edb/bkup_new/acctg/archived_wals/000000010000000000000039` is +required, yet not available in archived_wals directory +INFO: backup(s) deleted +INFO: deleting backup `acctg_2019-08-28` of server `acctg` +INFO: deleting backup `1566988115512` +INFO: WALs of deleted backup(s) will belong to prior backup(if any), or will +be marked unused +WARNING: not marking any WALs as unused WALs, the WAL file +`/home/edb/bkup_new/acctg/archived_wals/00000001000000000000003C` is required, +yet not available in archived_wals directory +INFO: backup(s) deleted +[edb@localhost bin]$ +[edb@localhost bin]$ +[edb@localhost bin]$ +[edb@localhost acctg]$ +[edb@localhost acctg]$ ls -l +total 8 +drwxrwxr-x. 3 edb edb 4096 Aug 28 06:28 1566988105086 +drwxrwxr-x. 3 edb edb 4096 Aug 28 06:28 1566988109477 +drwxrwxr-x. 2 edb edb 6 Aug 28 06:09 archived_wals +[edb@localhost acctg]$ +``` + + + +**Deleting Multiple Backups with Space Characters** + +The following code sample demonstrates deleting multiple backups; since there are space characters in the comma-separated list, the entire list must be enclosed within single quotes: + +```text +[edb@localhost bin]$ ./bart DELETE -s acctg -i +`1566900199604,1566900204377,1566900209087`; +INFO: deleting backup `1566900199604` of server `acctg` +INFO: deleting backup `1566900199604` +INFO: WALs of deleted backup(s) will belong to prior backup(if any), or will +be marked unused +WARNING: not marking any WALs as unused WALs, the WAL file +`/home/edb/bkup_new/acctg/archived_wals/000000010000000000000028` is required, +yet not available in archived_wals directory +INFO: backup(s) deleted +INFO: deleting backup `1566900204377` of server `acctg` +INFO: deleting backup `1566900204377` +INFO: WALs of deleted backup(s) will belong to prior backup(if any), or will +be marked unused +WARNING: not marking any WALs as unused WALs, the WAL file +`/home/edb/bkup_new/acctg/archived_wals/00000001000000000000002A` is required, +yet not available in archived_wals directory +INFO: backup(s) deleted +INFO: deleting backup `1566900209087` of server `acctg` +INFO: deleting backup `1566900209087` +INFO: WALs of deleted backup(s) will belong to prior backup(if any), or will +be marked unused +WARNING: not marking any WALs as unused WALs, the WAL file +`/home/edb/bkup_new/acctg/archived_wals/00000001000000000000002C` is required, +yet not available in archived_wals directory +INFO: backup(s) deleted +[edb@localhost bin]$ +[edb@localhost bin]$ +[edb@localhost acctg]$ ls -l +total 4 +drwxrwxr-x. 3 edb edb 4096 Aug 27 06:05 1566900321228 +drwxrwxr-x. 2 edb edb 6 Aug 27 06:01 archived_wals +[edb@localhost acctg]$ +``` diff --git a/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/04_init.mdx b/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/04_init.mdx new file mode 100644 index 00000000000..9f8b020ac03 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/04_init.mdx @@ -0,0 +1,276 @@ +--- +title: "INIT" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/init.html" +--- + + + +The `INIT` subcommand is used to create the BART backup catalog directory, rebuild the BART `backupinfo` file, and set the `archive_command` in the server based on the `archive_command` setting in the `bart.cfg` file. + +**Syntax:** + +```text +bart INIT [ –s { | all } ] [ -o ] + +[ -r [ -i { | | all } ] ] + +[--no-configure] +``` + +The following table describes the `INIT` options: + +| Options | Description | +| ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s { \| all }`
`--server { \| all }` | `` is the name of the database server to which the `INIT` actions are to be applied. If `all` is specified or if the option is omitted, actions are applied to all servers. | +| `-o`
`--override` | Overrides the existing Postgres `archive_command` configuration parameter setting in the `postgresql.conf` file or the `postgresql.auto.conf` file using the BART `archive_command` parameter in the BART configuration file. The `INIT` generated `archive command` string is written to the `postgresql.auto.conf` file. | +| `-r`
`--rebuild` | Rebuilds the `backupinfo` file located in each backup subdirectory. If `all` is specified or if the option is omitted, the `backupinfo` files of all backups for the database servers specified by the `-s` option are recreated. This option is only intended for recovering from a situation where the backupinfo file has become corrupt.
If the backup was initially created with a user-defined backup name, and then the `INIT -r` option is invoked to rebuild that `backupinfo` file, the user-defined backup name is no longer available. Thus, future references to the backup must use the backup identifier. | +| `-i { \| \| all }`
`--backupid { \| \| all }` | `` is an integer, backup identifier and `` is the user-defined alphanumeric name for the backup. The `-i` option can only be used with the `-r` option. | +| `--no-configure` | Prevents the `archive_command` from being set in the PostgreSQL server. | + +**Examples** + +In the following code sample, you can see that `archive_mode = off` and `archive_command` is not set. After invoking the BART `INIT` subcommand, `archive_mode` is set to `on` and `archive_command` is set: + +```text +archive_mode = off # enables archiving; off, on, or always +# (change requires restart) +archive_command = '' +# command to use to archive a logfile segment +[edb@localhost bin]$ ./bart init -s ppas11 +INFO: setting archive_mode/archive_command for server 'ppas11' +WARNING: archive_mode/archive_command is set. Restart the PostgreSQL +server using 'pg_ctl restart' +[edb@localhost bin]$ +# Do not edit this file manually! +# It will be overwritten by the ALTER SYSTEM command. +archive_mode = 'on' +archive_command = 'scp %p +edb@127.0.0.1:/home/edb/bkup/ppas11/archived_wals/%f' +``` + +In the following code sample, you can see that `archive_mode = on`, and `archive_command` is not set. After invoking the `INIT` subcommand, `archive_command` is set: + +```text +archive_mode = on # enables archiving; off, on, or always +# (change requires restart) +archive_command = '' # command to use to archive a logfile segment +[edb@localhost bin]$ ./bart init -s ppas11 +INFO: setting archive_mode/archive_command for server 'ppas11' +WARNING: archive_command is set. Reload the configuration in the +PostgreSQL server using pg_reload_conf() or 'pg_ctl reload' +[edb@localhost bin]$ +# Do not edit this file manually! +# It will be overwritten by the ALTER SYSTEM command. +archive_command = 'scp %p +edb@127.0.0.1:/home/edb/bkup/ppas11/archived_wals/%f' +``` + +In the following code sample, you can see that `archive_mode = on` and `archive_command` are already set. After invoking the `INIT` subcommand, there is no change in their settings. Note that to override the existing `archive_command`, you must include the `-o` option. + +```text +archive_mode = on # enables archiving; off, on, or always +# (change requires restart) +archive_command = 'scp %p +edb@127.0.0.1:/home/edb/bkup/ppas11/archived_wals/%f' # command to use +to archive a logfile segment +# placeholders: %p = path of file to archive +[edb@localhost bin]$ ./bart init -s ppas11 +INFO: setting archive_mode/archive_command for server 'ppas11' +WARNING: archive_command is not set for server 'ppas11' +[edb@localhost bin]$ +# Do not edit this file manually! +# It will be overwritten by the ALTER SYSTEM command. +``` + +In the following code sample, you can see that `archive_mode = off` and `archive_command` is already set. After invoking the `INIT` subcommand `archive_mode` is set to `on`: + +```text +archive_mode = off # enables archiving; off, on, or always +# (change requires restart) +archive_command = 'scp %p +edb@127.0.0.1:/home/edb/bkup/ppas11/archived_wals/%f' # command to use +to archive a log file segment +[edb@localhost bin]$ ./bart init -s ppas11 +INFO: setting archive_mode/archive_command for server 'ppas11' +WARNING: archive_mode/archive_command is set. Restart the PostgreSQL +server using 'pg_ctl restart' +# Do not edit this file manually! +# It will be overwritten by the ALTER SYSTEM command. +archive_mode = 'on' +archive_command = 'scp %p +edb@127.0.0.1:/home/edb/bkup/ppas11/archived_wals/%f' +``` + +In the following code sample an existing `archive command` setting is overridden by resetting the `archive_command` in the PostgreSQL server with the `archive_command = 'cp %p %a/%f'` parameter from the `bart.cfg` file: + +```text +[BART] + +bart_host= enterprisedb@192.168.2.22 +backup_path = /opt/backup_edb +pg_basebackup_path = /usr/edb/as11/bin/pg_basebackup +logfile = /tmp/bart.log +scanner_logfile = /tmp/bart_scanner.log + +[ACCTG] + +host = 127.0.0.1 +port = 5444 +user = repuser +cluster_owner = enterprisedb +archive_command = 'cp %p %a/%f' +description = "Accounting" +``` + +The `archive_mode` and `archive_command` parameters in the database server are set as follows: + +```text +edb=# SHOW archive_mode; +archive_mode +-------------- +on +(1 row) +edb=# SHOW archive_command; +archive_command +------------------------------------------------------------------ +scp %p bartuser@192.168.2.22:/opt/backup/acctg/archived_wals/%f + +(1 row) +``` + +Invoke the `INIT` subcommand with the `-o` option to override the current `archive_command` setting in the PostgreSQL server: + +```text +-bash-4.1$ bart INIT -s acctg -o +INFO: setting archive_mode/archive_command for server 'acctg' +WARNING: archive_command is set. Reload the configuration in the +PostgreSQL server using pg_reload_conf() or 'pg_ctl reload' +``` + +Reload the database server configuration; a restart of the database server is not necessary to reset only the `archive_command` parameter: + +```text +[root@localhost tmp]# service ppas11 reload +``` + +The `archive_command` in the PostgreSQL server is now set as follows: + +```text +edb=# SHOW archive_command; + archive_command +----------------------------------------------- +cp %p /opt/backup_edb/acctg/archived_wals/%f +(1 row) +``` + +The new command string is written to the `postgresql.auto.conf` file: + +```text +# Do not edit this file manually! +# It will be overwritten by ALTER SYSTEM command. +archive_command = 'cp %p /opt/backup_edb/acctg/archived_wals/%f' +``` + +When you invoke the BART `INIT` command with the `-r` option, BART rebuilds the `backupinfo` file using the content of the backup directory for the server specified or for all servers. The BART `backupinfo` file is initially created by the `BACKUP` subcommand and contains the backup information used by BART. + +!!! Note + If the backup was initially created with a user-defined backup name, and then the `INIT -r` option is invoked to rebuild the `backupinfo` file, the user-defined backup name is no longer available. Thus, future references to the backup must use the backup identifier. + +The following code sample shows the `backupinfo` file location in a backup subdirectory: + +```text +[root@localhost acctg]# pwd +/opt/backup/acctg +[root@localhost acctg]# ls -l +total 4 +drwx------ 2 enterprisedb enterprisedb 38 Oct 26 10:21 1477491569966 +drwxrwxr-x 2 enterprisedb enterprisedb 4096 Oct 26 10:19 archived_wals +[root@localhost acctg]# ls -l 1477491569966 +total 61144 +-rw-rw-r-- 1 enterprisedb enterprisedb 703 Oct 26 10:19 backupinfo +-rw-rw-r-- 1 enterprisedb enterprisedb 62603776 Oct 26 10:19 base.tar +``` + +The following code sample displays the `backupinfo` file content: + +```text +BACKUP DETAILS: +BACKUP STATUS: active +BACKUP IDENTIFIER: 1477491569966 +BACKUP NAME: none +BACKUP PARENT: none +BACKUP LOCATION: /opt/backup/acctg/1477491569966 +BACKUP SIZE: 59.70 MB +BACKUP FORMAT: tar +BACKUP TIMEZONE: +XLOG METHOD: fetch +BACKUP CHECKSUM(s): 1 +ChkSum File +84b3eeb1e3f7b3e75c2f689570d04f10 base.tar +TABLESPACE(s): 0 +START WAL LOCATION: 2/A5000028 (file 0000000100000002000000A5) +STOP WAL LOCATION: 2/A50000C0 (file 0000000100000002000000A5) +CHECKPOINT LOCATION: 2/A5000028 +BACKUP METHOD: streamed +BACKUP FROM: master +START TIME: 2016-10-26 10:19:30 EDT +LABEL: pg_basebackup base backup +STOP TIME: 2016-10-26 10:19:30 EDT +TOTAL DURATION: 0 sec(s) +``` + +The following code sample displays an error message if the `backupinfo` file is missing when invoking a BART subcommand: + +```text +-bash-4.2$ bart SHOW-BACKUPS +ERROR: 'backupinfo' file does not exist for backup '1477491569966' +please use 'INIT -r' to generate the file +``` + +The `backupinfo` file may be missing if the `BACKUP` subcommand did not complete successfully. + +The following code sample displays information about rebuilding the `backupinfo` file of the specified backup for database server `acctg`: + +```text +-bash-4.1$ bart INIT -s acctg -r -i 1428346620427 +INFO: rebuilding BACKUPINFO for backup '1428346620427' of server 'acctg' +INFO: backup checksum: ced59b72a7846ff8fb8afb6922c70649 of base.tar +``` + +The following code sample displays information about how the `backupinfo` files of all backups are rebuilt for all database servers: + +```text +-bash-4.1$ bart INIT -r + +INFO: rebuilding BACKUPINFO for backup '1428347191544' of server 'acctg' +INFO: backup checksum: 1ac5c61f055c910db314783212f2544f of base.tar +INFO: rebuilding BACKUPINFO for backup '1428346620427' of server 'acctg' +INFO: backup checksum: ced59b72a7846ff8fb8afb6922c70649 of base.tar +INFO: rebuilding BACKUPINFO for backup '1428347198335' of server 'dev' +INFO: backup checksum: a8890dd8ab7e6be5d5bc0f38028a237b of base.tar +INFO: rebuilding BACKUPINFO for backup '1428346957515' of server 'dev' +INFO: backup checksum: ea62549cf090573625d4adeb7d919700 of base.tar +``` + +The following code sample displays information about invoking `BART INIT` with the `-r - i` option: + +```text +edb@localhost bin]$ ./bart init -s ppas11 -i 1551778898392 -r +INFO: rebuilding BACKUPINFO for backup '1551778898392' of server +'ppas11' +[edb@localhost bin]$ ls /home/edb/bkup/ppas11/1551778898392/ +backupinfo backup_label base base-1.tar base-2.tar base-3.tar +base-4.tar base-5.tar base.tar +``` + +The following code sample displays information about invoking the `BART INIT` command with the `--no-configure` option. You can use the `--no-configure` option with the `INIT` subcommand to prevent the `archive_command` option from being set in the PostgreSQL server. + +```text +[edb@localhost bin]$ ./bart init -s ppas11 -o --no-configure +[edb@localhost bin]$ +# Do not edit this file manually! +# It will be overwritten by the ALTER SYSTEM command. +``` diff --git a/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/05_manage.mdx b/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/05_manage.mdx new file mode 100644 index 00000000000..75e63130a8e --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/05_manage.mdx @@ -0,0 +1,228 @@ +--- +title: "MANAGE" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/manage.html" +--- + +The `MANAGE` subcommand can be invoked to: + +- Evaluate backups, mark their status, and delete obsolete backups based on the `retention_policy` parameter in the BART configuration file. +- Compress the archived WAL files based on the `wal_compression` parameter in the BART configuration file. + +**Syntax:** + +```text +bart MANAGE [ –s { | all} ] +[ -l ] [ -d ] +[ -c { keep | nokeep } +-i { | | all } ] +[ -n ] +``` + +To view detailed information about the `MANAGE` subcommand and retention policy management, see *the EDB Backup and Recovery User Guide*. For information about setting the `wal_compression` parameter, see the *EDB Backup and Recovery Installation and Upgrade Guide*. These guides are available at the [EDB website](/bart/latest/bart_user/). + +The following table describes the `MANAGE` options: + +| Options | Description | +| ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `-s [ \| all ]`
`--server [ \| all ]` | `` is the name of the database server to which the `MANAGE` actions are to be applied.
If `all` is specified or if the `-s` option is omitted, actions are applied to all database servers. | +| `-l`
`--list-obsolete` | Lists the backups marked as obsolete. | +| `-d`
`--delete-obsolete` | Deletes the backups marked as obsolete. This action physically deletes the backup along with its archived WAL files and any MBM files for incremental backups. | +| `-c { keep \| nokeep }`
`--change-status { keep \| nokeep }` | Specify `keep` to change the backup status to `keep` to retain the backup indefinitely.

Specify `nokeep` to change the backup status back to `active`. You can then re-evaluate and possibly mark the backup as `obsolete` (according to the retention policy) using the `MANAGE` subcommand.

The `-c` option can only be used with the `-i` option. | +| `-i { \| \| all` }

`--backupid { \| \| all` } | `` is a backup identifier and `` is the user-defined alphanumeric name for the backup.
If `all` is specified, actions are applied to all backups.
The `-i` option can only be used with the `-c` option. | +| `-n`
`--dry-run` | Performs the test run and displays the results prior to actually implementing the actions as if the operation was performed, however, no changes are actually made.
If you specify `-n` with the `-d` option, it displays which backups would be deleted, but does not actually delete the backups.
If you specify `-n` with the `-c` option, it displays the keep or nokeep action, but does not actually change the backup status.
If you specify `-n` alone with no other options or if you specify `-n` with only the `-s` option, it displays which active backups would be marked as obsolete, but does not actually change the backup status. In addition, no compression is performed on uncompressed, archived WAL files even if WAL compression is enabled for the database server. | + +**Example** + +The following code sample performs a dry run for the specified database server displaying which active backups are evaluated as obsolete according to the retention policy, but does not actually change the backup status: + +```text +-bash-4.2$ bart MANAGE -s acctg -n +INFO: processing server 'acctg', backup '1482770807519' +INFO: processing server 'acctg', backup '1482770803000' +INFO: marking backup '1482770803000' as obsolete +INFO: 1 WAL file(s) marked obsolete +INFO: processing server 'acctg', backup '1482770735155' +INFO: marking backup '1482770735155' as obsolete +INFO: 2 incremental(s) of backup '1482770735155' will be marked obsolete +INFO: marking incremental backup '1482770780423' as obsolete +INFO: marking incremental backup '1482770763227' as obsolete +INFO: 3 WAL file(s) marked obsolete +INFO: 1 Unused WAL file(s) present +INFO: 2 Unused file(s) (WALs included) present, use 'MANAGE -l' for the +list +``` + +The following code sample marks active backups as obsolete according to the retention policy for the specified database server: + +```text +-bash-4.2$ bart MANAGE -s acctg +INFO: processing server 'acctg', backup '1482770807519' +INFO: processing server 'acctg', backup '1482770803000' +INFO: marking backup '1482770803000' as obsolete +INFO: 1 WAL file(s) marked obsolete +INFO: processing server 'acctg', backup '1482770735155' +INFO: marking backup '1482770735155' as obsolete +INFO: 2 incremental(s) of backup '1482770735155' will be marked obsolete +INFO: marking incremental backup '1482770780423' as obsolete +INFO: marking incremental backup '1482770763227' as obsolete +INFO: 3 WAL file(s) marked obsolete +INFO: 1 Unused WAL file(s) present +INFO: 2 Unused file(s) (WALs included) present, use 'MANAGE -l' for the +list +``` + +The following code sample lists backups marked as obsolete for the specified database server: + +```text +-bash-4.2$ bart MANAGE -s acctg -l +SERVER NAME: acctg +BACKUP ID: 1482770803000 +BACKUP STATUS: obsolete +BACKUP TIME: 2016-12-26 11:46:43 EST +BACKUP SIZE: 59.52 MB +WAL FILE(s): 1 +WAL FILE: 000000010000000100000055 +SERVER NAME: acctg +BACKUP ID: 1482770735155 +BACKUP STATUS: obsolete +BACKUP TIME: 2016-12-26 11:45:35 EST +BACKUP SIZE: 59.52 MB +INCREMENTAL BACKUP(s): 2 +BACKUP ID: 1482770780423 +BACKUP PARENT: 1482770735155 +BACKUP STATUS: obsolete +BACKUP TIME: 2016-12-26 11:45:35 EST +BACKUP SIZE: 59.52 MB +BACKUP ID: 1482770763227 +BACKUP PARENT: 1482770735155 +BACKUP STATUS: obsolete +BACKUP TIME: 2016-12-26 11:45:35 EST +BACKUP SIZE: 59.52 MB +WAL FILE(s): 3 +WAL FILE: 000000010000000100000054 +WAL FILE: 000000010000000100000053 +WAL FILE: 000000010000000100000052 +UNUSED FILE(s): 2 +UNUSED FILE: 000000010000000100000051 +UNUSED FILE: 0000000100000001510000280000000152000000.mbm +``` + +The following code sample deletes the obsolete backups for the specified database server: + +```text +-bash-4.2$ bart MANAGE -s acctg -d +INFO: removing all obsolete backups of server 'acctg' +INFO: removing obsolete backup '1482770803000' +INFO: 1 WAL file(s) will be removed +INFO: removing WAL file '000000010000000100000055' +INFO: removing obsolete backup '1482770735155' +INFO: 3 WAL file(s) will be removed +INFO: 2 incremental(s) of backup '1482770735155' will be removed +INFO: removing obsolete incremental backup '1482770780423' +INFO: removing obsolete incremental backup '1482770763227' +INFO: removing WAL file '000000010000000100000054' +INFO: removing WAL file '000000010000000100000053' +INFO: removing WAL file '000000010000000100000052' +INFO: 8 Unused file(s) will be removed +INFO: removing (unused) file '000000010000000100000056.00000028.backup' +INFO: removing (unused) file '000000010000000100000056' +INFO: removing (unused) file '000000010000000100000055.00000028.backup' +INFO: removing (unused) file '000000010000000100000054.00000028.backup' +INFO: removing (unused) file '000000010000000100000053.00000028.backup' +INFO: removing (unused) file '000000010000000100000052.00000028.backup' +INFO: removing (unused) file '000000010000000100000051' +INFO: removing (unused) file +'0000000100000001510000280000000152000000.mbm' +``` + +The following code sample changes the specified backup to keep status to retain it indefinitely: + +```text +-bash-4.2$ bart MANAGE -s acctg -c keep -i 1482770807519 +INFO: changing status of backup '1482770807519' of server 'acctg' from +'active' to 'keep' +INFO: 1 WAL file(s) changed +-bash-4.2$ bart SHOW-BACKUPS -s acctg -i 1482770807519 -t +SERVER NAME : acctg +BACKUP ID : 1482770807519 +BACKUP NAME : none +BACKUP PARENT : none +BACKUP STATUS : keep +BACKUP TIME : 2016-12-26 11:46:47 EST +BACKUP SIZE : 59.52 MB +WAL(S) SIZE : 16.00 MB +NO. OF WALS : 1 +FIRST WAL FILE : 000000010000000100000057 +CREATION TIME : 2016-12-26 11:52:47 EST +LAST WAL FILE : 000000010000000100000057 +CREATION TIME : 2016-12-26 11:52:47 EST +``` + +The following code sample resets the specified backup to active status: + +```text +-bash-4.2$ bart MANAGE -s acctg -c nokeep -i 1482770807519 +INFO: changing status of backup '1482770807519' of server 'acctg' from +'keep' to 'active' +INFO: 1 WAL file(s) changed +-bash-4.2$ bart SHOW-BACKUPS -s acctg -i 1482770807519 -t +SERVER NAME : acctg +BACKUP ID : 1482770807519 +BACKUP NAME : none +BACKUP PARENT : none +BACKUP STATUS : active +BACKUP TIME : 2016-12-26 11:46:47 EST +BACKUP SIZE : 59.52 MB +WAL(S) SIZE : 16.00 MB +NO. OF WALS : 1 +FIRST WAL FILE : 000000010000000100000057 +CREATION TIME : 2016-12-26 11:52:47 EST +LAST WAL FILE : 000000010000000100000057 +CREATION TIME : 2016-12-26 11:52:47 EST +``` + +The following code sample uses the enabled `wal_compression` parameter in the BART configuration file as shown by the following: + +```text +[ACCTG] + +host = 127.0.0.1 +port = 5445 +user = enterprisedb +cluster_owner = enterprisedb +allow_incremental_backups = disabled +wal_compression = enabled +description = "Accounting" +``` + +When the `MANAGE` subcommand is invoked, the following message is displayed indicating that WAL file compression is performed: + +```text +-bash-4.2$ bart MANAGE -s acctg +INFO: 4 WAL file(s) compressed +WARNING: 'retention_policy' is not set for server 'acctg' +``` + +The following code sample shows the archived WAL files in compressed format: + +```text +-bash-4.2$ pwd +/opt/backup/acctg +-bash-4.2$ ls -l archived_wals +total 160 +-rw------- 1 enterprisedb enterprisedb 27089 Dec 26 12:16 +00000001000000010000005B.gz +-rw------- 1 enterprisedb enterprisedb 305 Dec 26 12:17 +00000001000000010000005C.00000028.backup +-rw------- 1 enterprisedb enterprisedb 27112 Dec 26 12:17 +00000001000000010000005C.gz +-rw------- 1 enterprisedb enterprisedb 65995 Dec 26 12:18 +00000001000000010000005D.gz +-rw------- 1 enterprisedb enterprisedb 305 Dec 26 12:18 +00000001000000010000005E.00000028.backup +-rw------- 1 enterprisedb enterprisedb 27117 Dec 26 12:18 +00000001000000010000005E.gz +``` diff --git a/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/06_restore.mdx b/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/06_restore.mdx new file mode 100644 index 00000000000..b0399e9d3e4 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/06_restore.mdx @@ -0,0 +1,158 @@ +--- +title: "RESTORE" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/restore.html" +--- + +The `RESTORE` subcommand restores a backup and its archived WAL files for the designated database server to the specified directory location. + +**Syntax for Restore**: + +```text +bart RESTORE –s -p +[ –i { | } ] +[ -r @ ] +[ -w ] +[ -t ] +[ { -x | -g } ] +[ -c ] +``` + +To view detailed information about the `RESTORE` subcommand, see the *EDB Backup and Recovery User Guide* available at the [EDB website](/bart/latest/bart_user/). + +If the backup is restored to a different database cluster directory than where the original database cluster resided, then some operations dependent upon the database cluster location may fail. This happens if the supporting service scripts are not updated to reflect the new directory location of restored backup. + +For information about the use and modification of service scripts, see the EDB Advanced Server Installation Guide available at the [EDB website](/epas/latest/). + +The following table describes the `RESTORE` options: + +| Options | Description | +| --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s `
`--server ` | `` is the name of the database server to be restored. | +| `-p --restore-path `
`--restore-path ` | `` is the directory path where the backup of the database server is to be restored. The directory must be empty and have the proper ownership and privileges assigned to it. | +| `-i { \| }`

`--backupid { \| }` | `backup_id` is the backup identifier of the backup to be used for the restoration and `` is the user-defined alphanumeric name for the backup.
If the option is omitted, the latest backup is restored by default. | +| `-r `

`--remote-host ` | `` is the user account on the remote database server host that accepts a passwordless SSH/SCP login connection and is the owner of the directory where the backup is to be restored.
`` is the IP address of the remote host to which the backup is to be restored. This option must be specified if the `remote_host` parameter for this database server is not set in the BART configuration file.
For information about the `remote_host` parameter, see the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/). | +| `-w `
`--workers ` | `` is the number of worker processes to run in parallel to stream the modified blocks of an incremental backup to the restore location. If the `-w` option is omitted, the default is `1` worker process.
For example, if four worker processes are specified, four receiver processes on the restore host and four streamer processes on the BART host are used. The output of each streamer process is connected to the input of a receiver process.
When the receiver gets to the point where it needs a modified block file, it obtains those modified blocks from its input. With this method, the modified block files are never written to the restore host disk. | +| `-t `
`--target-tli ` | `` is the integer identifier of the timeline to be used for replaying the archived WAL files for point-in-time recovery. | +| `-x `
`--target-xid ` | `` is the integer identifier of the transaction ID that determines the transaction up to and including, which point-in-time recovery encompasses. | +| `-g `

`--target-timestamp ` | `` is the timestamp that determines the point in time up to and including, which point-in-time recovery encompasses. | +| `-c`

`--copy-wals` | Specify this option to copy archived WAL files from the BART backup catalog to `/archived_wals` directory.
The `restore_command` retrieves the WAL files from `/archived_wals` for the database server archive recovery.
If the `-c` option is omitted and the `copy_wals_during_restore` parameter in the BART configuration file is not enabled in a manner applicable to this database server, then the `restore_command` in the `postgresql.conf` retrieves the archived WAL files directly from the BART backup catalog.
For information about the `copy_wals_during_restore` parameter, see the EDB Backup and Recovery Installation and Upgrade Guide available at the [EDB website](/bart/latest/bart_inst/). | + +**Examples** + +The following code sample restores a database server(named `mktg`) to the `/opt/restore` directory up to timestamp `2015-12-15 10:47:00`: + +```text +-bash-4.1$ bart RESTORE -s mktg -i 1450194208824 -p /opt/restore -t 1 -g +'2015-12-15 10:47:00' +INFO: restoring backup '1450194208824' of server 'mktg' +INFO: restoring backup to enterprisedb@192.168.2.24:/opt/restore +INFO: base backup restored +INFO: WAL file(s) will be streamed from the BART host +INFO: writing recovery settings to postgresql.auto.conf file +INFO: archiving is disabled +INFO: tablespace(s) restored +``` + +The following parameters are set in the `postgresql.auto.conf` file: + +```text +restore_command = 'scp -o BatchMode=yes -o PasswordAuthentication=no +enterprisedb@192.168.2.22:/opt/backup/mktg/archived_wals/%f %p' +recovery_target_time = '2015-12-15 10:47:00' +recovery_target_timeline = 1 +``` + +The following is a list of the restored files and subdirectories: + +```text +[root@localhost restore]# pwd +/opt/restore +[root@localhost restore]# ls -l +total 108 +-rw------- 1 enterprisedb enterprisedb 208 Dec 15 10:43 backup_label +drwx------ 6 enterprisedb enterprisedb 4096 Dec 2 10:38 base +drwx------ 2 enterprisedb enterprisedb 4096 Dec 15 10:42 dbms_pipe +drwx------ 2 enterprisedb enterprisedb 4096 Dec 15 11:00 global +drwx------ 2 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_clog\ +-rw------- 1 enterprisedb enterprisedb 4438 Dec 2 10:38 pg_hba.conf +-rw------- 1 enterprisedb enterprisedb 1636 Nov 10 15:38 pg_ident.conf +drwxr-xr-x 2 enterprisedb enterprisedb 4096 Dec 15 10:42 pg_log +drwx------ 4 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_multixact +drwx------ 2 enterprisedb enterprisedb 4096 Dec 15 10:42 pg_notify +drwx------ 2 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_serial +drwx------ 2 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_snapshots +drwx------ 2 enterprisedb enterprisedb 4096 Dec 15 10:42 pg_stat +drwx------ 2 enterprisedb enterprisedb 4096 Dec 15 10:43 pg_stat_tmp +drwx------ 2 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_subtrans +drwx------ 2 enterprisedb enterprisedb 4096 Dec 15 11:00 pg_tblspc +drwx------ 2 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_twophase +-rw------- 1 enterprisedb enterprisedb 4 Nov 10 15:38 PG_VERSION +drwx------ 2 enterprisedb enterprisedb 4096 Dec 15 11:00 pg_xlog +-rw------- 1 enterprisedb enterprisedb 23906 Dec 15 11:00 +postgresql.conf +-rw-r--r-- 1 enterprisedb enterprisedb 217 Dec 15 11:00 +postgresql.auto.conf +``` + +**Example** + +The following code sample performs a `RESTORE` operation with the `copy_wals_during_restore` parameter enabled to copy the archived WAL files to the local `/archived_wals` directory: + +```text +-bash-4.1$ bart RESTORE -s hr -i hr_2017-03-29T13:50 -p +/opt/restore_pg96 -t 1 -g '2017-03-29 14:01:00' +INFO: restoring backup 'hr_2017-03-29T13:50' of server 'hr' +INFO: base backup restored +INFO: copying WAL file(s) to +postgres@192.168.2.24:/opt/restore_pg96/archived_wals +INFO: writing recovery settings to postgresql.auto.conf file +INFO: archiving is disabled +INFO: permissions set on $PGDATA +INFO: restore completed successfully +``` + +The following parameters are set in the `postgresql.auto.conf` file: + +```text +restore_command = 'cp archived_wals/%f %p' +recovery_target_time = '2017-03-29 14:01:00' +recovery_target_timeline = 1 +``` + +The following is a list of the restored files and subdirectories: + +```text +-bash-4.1$ pwd +/opt/restore_pg96 +-bash-4.1$ ls -l +total 128 +drwxr-xr-x 2 postgres postgres 4096 Mar 29 14:27 archived_wals +-rw------- 1 postgres postgres 206 Mar 29 13:50 backup_label +drwx------ 5 postgres postgres 4096 Mar 29 12:25 base +drwx------ 2 postgres postgres 4096 Mar 29 14:27 global +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_clog +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_commit_ts +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_dynshmem +-rw------- 1 postgres postgres 4212 Mar 29 13:18 pg_hba.conf +-rw------- 1 postgres postgres 1636 Mar 29 12:25 pg_ident.conf +drwxr-xr-x 2 postgres postgres 4096 Mar 29 13:45 pg_log +drwx------ 4 postgres postgres 4096 Mar 29 12:25 pg_logical +drwx------ 4 postgres postgres 4096 Mar 29 12:25 pg_multixact +drwx------ 2 postgres postgres 4096 Mar 29 13:43 pg_notify +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_replslot +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_serial +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_snapshots +drwx------ 2 postgres postgres 4096 Mar 29 13:43 pg_stat +drwx------ 2 postgres postgres 4096 Mar 29 13:50 pg_stat_tmp +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_subtrans +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_tblspc +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_twophase +-rw------- 1 postgres postgres 4 Mar 29 12:25 PG_VERSION +drwx------ 3 postgres postgres 4096 Mar 29 14:27 pg_xlog +-rw------- 1 postgres postgres 169 Mar 29 13:24 postgresql.auto.conf +-rw-r--r-- 1 postgres postgres 21458 Mar 29 14:27 postgresql.conf +-rw-r--r-- 1 postgres postgres 118 Mar 29 14:27 postgresql.auto.conf +``` \ No newline at end of file diff --git a/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/07_show_servers.mdx b/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/07_show_servers.mdx new file mode 100644 index 00000000000..8ada69b5622 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/07_show_servers.mdx @@ -0,0 +1,77 @@ +--- +title: "SHOW-SERVERS" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/show_servers.html" +--- + +The `SHOW-SERVERS` subcommand displays information for the managed database servers listed in the BART configuration file. + +**Syntax:** + +```text +bart SHOW-SERVERS [ –s { | all } ] +``` + +The following table describes the `SHOW-SERVERS` option: + +| Option | Description | +| ---------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s { \| all` }
`--server { \| all` } | `` is the name of the database server to which the `SHOW-SERVERS` actions are to be applied.
If `all` is specified or if the `-s` option is omitted, the actions are applied to all database servers. | + +**Example** + +The following code sample shows all the database servers managed by BART as returned by the `SHOW-SERVERS` subcommand: + +```text +-bash-4.2$ bart SHOW-SERVERS +SERVER NAME : acctg +BACKUP FRIENDLY NAME: acctg_%year-%month-%dayT%hour:%minute +HOST NAME : 127.0.0.1 +USER NAME : enterprisedb +PORT : 5444 +REMOTE HOST : +RETENTION POLICY : 6 Backups +DISK UTILIZATION : 0.00 bytes +NUMBER OF ARCHIVES : 0 +ARCHIVE PATH : /opt/backup/acctg/archived_wals +ARCHIVE COMMAND : (disabled) +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +INCREMENTAL BACKUP : DISABLED +DESCRIPTION : "Accounting" +SERVER NAME : hr +BACKUP FRIENDLY NAME: hr_%year-%month-%dayT%hour:%minute +HOST NAME : 192.168.2.24 +USER NAME : postgres +PORT : 5432 +REMOTE HOST : postgres@192.168.2.24 +RETENTION POLICY : 6 Backups +DISK UTILIZATION : 0.00 bytes +NUMBER OF ARCHIVES : 0 +ARCHIVE PATH : /opt/backup/hr/archived_wals +ARCHIVE COMMAND : (disabled) +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +INCREMENTAL BACKUP : DISABLED +DESCRIPTION : "Human Resources" +SERVER NAME : mktg +BACKUP FRIENDLY NAME: mktg_%year-%month-%dayT%hour:%minute +HOST NAME : 192.168.2.24 +USER NAME : repuser +PORT : 5444 +REMOTE HOST : enterprisedb@192.168.2.24 +RETENTION POLICY : 6 Backups +DISK UTILIZATION : 0.00 bytes +NUMBER OF ARCHIVES : 0 +ARCHIVE PATH : /opt/backup/mktg/archived_wals +ARCHIVE COMMAND : (disabled) +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +INCREMENTAL BACKUP : DISABLED\ +DESCRIPTION : "Marketing" +``` diff --git a/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/08_show_backups.mdx b/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/08_show_backups.mdx new file mode 100644 index 00000000000..03b7727add3 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/08_show_backups.mdx @@ -0,0 +1,100 @@ +--- +title: "SHOW-BACKUPS" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/show_backups.html" +--- + +The `SHOW-BACKUPS` subcommand displays the backup information for the managed database servers. + +**Syntax:** + +```text +bart SHOW-BACKUPS [ –s { | all } ] +[ -i { | | all } ] +[ -t ] +``` + +The following table describes the `SHOW-BACKUPS` options: + +| Options | Description | +| ------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s { \| all` }

`--server { \| all` } | `` is the name of the database server whose backup information is to be displayed.
If `all` is specified or if the option is omitted, the backup information for all database servers is displayed. | +| `-i { \| \| all }`

`--backupid { \| \| all }` | `` is a backup identifier and `` is the user-defined alphanumeric name for the backup.
If `all` is specified or if the option is omitted, all backup information for the relevant database server is displayed. | +| `-t`
`--toggle` | Displays detailed backup information in list format. If the option is omitted, the default is a tabular format. | + +**Example** + +The following code sample shows the backup from database server `dev`: + +```text +-bash-4.2$ bart SHOW-BACKUPS -s dev +SERVER NAME BACKUP ID BACKUP NAME BACKUP PARENT +BACKUP TIME BACKUP SIZE WAL(s) SIZE WAL FILES STATUS +dev 1477579596637 dev_2016-10-27T10:46:36 none +2016-10-27 10:46:37 EDT 54.50 MB 96.00 MB 6 active +``` + +The following code sample shows detailed information using the `-t` option: + +```text +-bash-4.2$ bart SHOW-BACKUPS -s dev -i 1477579596637 -t +SERVER NAME : dev +BACKUP ID : 1477579596637 +BACKUP NAME : dev_2016-10-27T10:46:36 +BACKUP PARENT : none +BACKUP STATUS : active +BACKUP TIME : 2016-10-27 10:46:37 EDT +BACKUP SIZE : 54.50 MB +WAL(S) SIZE : 80.00 MB +NO. OF WALS : 5 +FIRST WAL FILE : 0000000100000001000000EC +CREATION TIME : 2016-10-27 10:46:37 EDT +LAST WAL FILE : 0000000100000001000000F0 +CREATION TIME : 2016-10-27 11:22:01 EDT +``` + +The following code sample shows a listing of an incremental backup along with its parent backup: + +```text +-bash-4.2$ bart SHOW-BACKUPS +SERVER NAME BACKUP ID BACKUP NAME BACKUP PARENT +BACKUP TIME BACKUP SIZE WAL(s) SIZE WAL FILES STATUS +acctg 1477580293193 acctg_2016-10-27 none +2016-10-27 10:58:13 EDT 16.45 MB 16.00 MB 1 active +acctg 1477580111358 acctg_2016-10-27 none 2016-10-27 10:55:11 EDT 59.71 +MB 16.00 MB 1 active +``` + +The following code sample shows the complete, detailed information of the incremental backup and the parent backup: + +```text +-bash-4.2$ bart SHOW-BACKUPS -t +SERVER NAME : acctg +BACKUP ID : 1477580293193 +BACKUP NAME : none +BACKUP PARENT : acctg_2016-10-27 +BACKUP STATUS : active +BACKUP TIME : 2016-10-27 10:58:13 EDT +BACKUP SIZE : 16.45 MB +WAL(S) SIZE : 16.00 MB +NO. OF WALS : 1 +FIRST WAL FILE : 0000000100000002000000D9 +CREATION TIME : 2016-10-27 10:58:13 EDT +LAST WAL FILE : 0000000100000002000000D9 +CREATION TIME : 2016-10-27 10:58:13 EDT +SERVER NAME : acctg +BACKUP ID : 1477580111358 +BACKUP NAME : acctg_2016-10-27 +BACKUP PARENT : none +BACKUP STATUS : active +BACKUP TIME : 2016-10-27 10:55:11 EDT +BACKUP SIZE : 59.71 MB +WAL(S) SIZE : 16.00 MB +NO. OF WALS : 1 +FIRST WAL FILE : 0000000100000002000000D8 +CREATION TIME : 2016-10-27 10:55:12 EDT +LAST WAL FILE : 0000000100000002000000D8 +CREATION TIME : 2016-10-27 10:55:12 EDT +``` diff --git a/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/09_verify_chksum.mdx b/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/09_verify_chksum.mdx new file mode 100644 index 00000000000..973ae05dc7d --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/09_verify_chksum.mdx @@ -0,0 +1,41 @@ +--- +title: "VERIFY-CHKSUM" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/verify_chksum.html" +--- + +The `VERIFY-CHKSUM` subcommand verifies the MD5 checksums of the full backups and any user-defined tablespaces for the specified database server or for all database servers. The checksum is verified by comparing the current checksum of the backup against the checksum when the backup was taken. + +!!! Note + The `VERIFY-CHKSUM` subcommand is only used for tar format backups. + +**Syntax:** + +```text +bart VERIFY-CHKSUM +[ –s { | all } ] +[ -i { | | all } ] +``` + +The following table describes the `VERIFY-CHKSUM` options: + +| Options | Description | +| ---------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s { \| all }`
`--server { \| all` } | `` is the name of the database server whose tar backup checksums are to be verified.
If `all` is specified or if the `-s` option is omitted, the checksums of all tar backups are verified for all database servers. | +| `-i { \| \| all` }

`--backupid { \| \| all` } | `` is the backup identifier of a tar format full backup whose checksum is to be verified along with any user-defined tablespaces. `` is the user-defined alphanumeric name for the full backup.
If `all` is specified or if the `-i` option is omitted, the checksums of all tar backups for the relevant database server are verified. | + +**Example** + +The following code sample verifies the checksum of all tar format backups of the specified database server: + +```text +-bash-4.1$ bart VERIFY-CHKSUM -s acctg -i all +SERVER NAME BACKUP ID VERIFY +acctg 1430239348243 OK +acctg 1430232284202 OK +acctg 1430232016284 OK +acctg 1430231949065 OK +acctg 1429821844271 OK +``` diff --git a/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/10_running_the_bart_wal_scanner.mdx b/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/10_running_the_bart_wal_scanner.mdx new file mode 100644 index 00000000000..e28e5954347 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/10_running_the_bart_wal_scanner.mdx @@ -0,0 +1,166 @@ +--- +title: "Running the BART WAL Scanner" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/running_the_bart_wal_scanner.html" +--- + +The BART WAL scanner is used to process each WAL file to find and record modified blocks in a corresponding MBM file. As a BART account user, use the BART WAL scanner to invoke the `bart-scanner` program located in the `/bin` directory. + +For detailed information about the WAL scanner and its usage, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). + +**Syntax:** + +```text +bart-scanner +[ -d ] +[ -c ] +{ –h | +-v | +--daemon | +-p | + | +RELOAD | +STOP +``` + +When the `bart-scanner` program is invoked, it forks a separate process for each database server enabled with the `allow_incremental_backups` parameter. + +The WAL scanner processes can run in either the foreground or background depending upon usage of the `--daemon` option: + +- If the `--daemon` option is specified, the WAL scanner process runs in the background. All output messages can be viewed in the BART log file. +- If the `--daemon` option is omitted, the WAL scanner process runs in the foreground. All output messages can be viewed from the terminal running the program as well as in the BART log file. + +The following table describes the `VERIFY-CHKSUM` options. + +| Options | Description | +| ---------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-h` `--help` | Displays general syntax and information on WAL scanner usage. | +| `-v` `--version` | Displays the WAL scanner version information. | +| `-d` `--debug` | Displays debugging output while executing the WAL scanner with any of its options. | +| `-c ` `--config-path ` | Specifies `` as the full directory path to a BART configuration file. Use this option if you do not want to use the default BART configuration file `/etc/bart.cfg` | +| `--daemon` | Runs the WAL scanner as a background process. | +| `-p ` `--print ` | Specifies the full directory path to an MBM file whose content is to be printed. The `archived_wals` directory as specified in the the `archive_path` parameter in the `bart.cfg` file contains the MBM files. | +| `` | Specifies the full directory path to a WAL file to be scanned. The archive path directory contains the WAL files. Use it if a WAL file in the archive path is missing its MBM file. This option is to be used for assisting the EnterpriseDB support team for debugging problems that may have been encountered. | +| `RELOAD` | Reloads the BART configuration file. The keyword `RELOAD` is case-insensitive. The `RELOAD` option is useful if you make changes to the configuration file after the WAL scanner has been started. It will reload the configuration file and adjust the WAL scanners accordingly. For example, if a server section allowing incremental backups is removed from the BART configuration file, then the process attached to that server will stop. Similarly, if a server allowing incremental backups is added, a new WAL scanner process will be launched to scan the WAL files of that server. | +| `STOP` | Stops the WAL scanner. The keyword `STOP` is not case-sensitive. | + +**Example** + +The following code sample demonstrates starting the WAL scanner to run interactively. The WAL scanner begins scanning existing WAL files in the archive path that have not yet been scanned (that is, there is no corresponding MBM file for the WAL file): + +```text +-bash-4.2$ bart-scanner +INFO: process created for server 'acctg', pid = 5287 +INFO: going to parse backlog of WALs, if any. +INFO: WAL file to be processed: 0000000100000000000000ED +INFO: WAL file to be processed: 0000000100000000000000EE +INFO: WAL file to be processed: 0000000100000000000000EF +INFO: WAL file to be processed: 0000000100000000000000F0 +INFO: WAL file to be processed: 0000000100000000000000F1 +``` + +The following code sample is the content of the archive path showing the MBM files created for the WAL files. (The user name and group name of the files have been removed from the example to list the WAL files and MBM files in a more readable manner): + +```text +[root@localhost archived_wals]# pwd +/opt/backup/acctg/archived_wals +[root@localhost archived_wals]# ls -l +total 81944 +-rw------- 1 ... ... 16777216 Dec 20 09:10 0000000100000000000000ED +-rw------- 1 ... ... 16777216 Dec 20 09:06 0000000100000000000000EE +-rw------- 1 ... ... 16777216 Dec 20 09:11 0000000100000000000000EF +-rw------- 1 ... ... 16777216 Dec 20 09:15 0000000100000000000000F0 +-rw------- 1 ... ... 16777216 Dec 20 09:16 0000000100000000000000F1 +-rw------- 1 ... ... 305 Dec 20 09:16 0000000100000000000000F1.00000028.backup +-rw-rw-r-- 1 ... ... 161 Dec 20 09:18 +0000000100000000ED00002800000000EE000000.mbm +-rw-rw-r-- 1 ... ... 161 Dec 20 09:18 +0000000100000000EE00002800000000EF000000.mbm +-rw-rw-r-- 1 ... ... 161 Dec 20 09:18 +0000000100000000EF00002800000000F0000000.mbm +-rw-rw-r-- 1 ... ... 161 Dec 20 09:18 +0000000100000000F000002800000000F1000000.mbm +-rw-rw-r-- 1 ... ... 161 Dec 20 09:18 +0000000100000000F100002800000000F2000000.mbm +``` + +To stop the interactively running WAL scanner, either enter `ctrl-C` at the terminal running the WAL scanner or invoke the `bart-scanner` program from another terminal with the `STOP` option: + +```text +-bash-4.2$ bart-scanner STOP +-bash-4.2$ +``` + +The terminal on which the WAL scanner was running interactively appears as follows after it has been stopped: + +```text +-bash-4.2$ bart-scanner +INFO: process created for server 'acctg', pid = 5287 +INFO: going to parse backlog of WALs, if any. +INFO: WAL file to be processed: 0000000100000000000000ED +INFO: WAL file to be processed: 0000000100000000000000EE +INFO: WAL file to be processed: 0000000100000000000000EF +INFO: WAL file to be processed: 0000000100000000000000F0 +INFO: WAL file to be processed: 0000000100000000000000F1 +INFO: bart-scanner stopped +-bash-4.2$ +``` + +The following code sample demonstrates invoking the WAL scanner to run as a background process with the `--daemon` option: + +```text +-bash-4.2$ bart-scanner --daemon +-bash-4.2$ +``` + +The WAL scanner runs as a background process. There is also a separate background process for each database server that has been enabled for WAL scanning with the `allow_incremental_backups` parameter in the BART configuration file: + +```text +-bash-4.2$ ps -ef | grep bart + enterpr+ 4340 1 0 09:48 ? 00:00:00 bart-scanner --daemon + enterpr+ 4341 4340 0 09:48 ? 00:00:00 bart-scanner --daemon + enterpr+ 4415 3673 0 09:50 pts/0 00:00:00 grep --color=auto bart +``` + +To stop the WAL scanner processes, invoke the WAL scanner with the `STOP` option: + +```text +-bash-4.2$ bart-scanner STOP +-bash-4.2$ +``` + +The following command demonstrates scanning an individual WAL file: + +```text +-bash-4.2$ bart-scanner /opt/backup/acctg/archived_wals/0000000100000000000000FF +-bash-4.2$ +``` + +To print the content of an MBM file for assisting the EnterpriseDB support team for debugging problems that may have been encountered, use the `-p` option to specify the file as shown in the following code sample: + +```text +-bash-4.2$ bart-scanner -p +/opt/backup/acctg/archived_wals/0000000100000000FF0000280000000100000000.mbm + +Header: +Version: 1.0:90500:1.2.0 +Scan Start: 2016-12-20 10:02:11 EST, Scan End: 2016-12-20 10:02:11 EST, Diff: 0 sec(s) +Start LSN: ff000028, End LSN: 100000000, TLI: 1 +flags: 0, Check Sum: f9cfe66ae2569894d6746b61503a767d + +Path: base/14845/16384 +NodeTag: BLOCK_CHANGE +Relation: relPath base/14845/16384, isTSNode 0, Blocks +*............................................................................. +First modified block: 0 +Total modified blocks: 1 + +Path: base/14845/16391 +NodeTag: BLOCK_CHANGE +Relation: relPath base/14845/16391, isTSNode 0, Blocks +*.............................................................................. +First modified block: 0 +Total modified blocks: 1 +``` diff --git a/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/index.mdx b/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/index.mdx new file mode 100644 index 00000000000..20c71192ef2 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_ref/01_bart_subcommands_examples/index.mdx @@ -0,0 +1,115 @@ +--- +title: "BART Subcommand Syntax and Examples" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/bart_subcommands_examples.html" +--- + + + +This section briefly describes each BART subcommand and provides an example. + +**Invoking BART** + +BART subcommands are invoked at the Linux command line as a BART user. You can invoke the `bart` program (located in the `/bin` directory) with the desired options to manage your BART installation. + +The following examples demonstrate ways of invoking BART. In these examples, the BART user account is named `bartuser`. + +```text +$ su bartuser +Password: +$ export +LD_LIBRARY_PATH=/opt/PostgresPlus/9.6AS/lib/:$LD_LIBRARY_PATH +$ ./bart SHOW-SERVERS +``` + +To run BART from any current working directory: + +```text +$ su bartuser +Password: +$ export +LD_LIBRARY_PATH=/opt/PostgresPlus/9.6AS/lib/:$LD_LIBRARY_PATH +$ bart SHOW-SERVERS +``` + +**Syntax for invoking BART** + +```text +bart [ ]... [ ] []... +``` + +You can use either abbreviated or long option forms on the command line (for example `-h` or `--help`). + +**General Options** + +You can specify the following general options with `bart`. + +`-h` or (`--help`) + +- Displays general syntax and information about BART usage. +- All subcommands support a help option (`-h, --help`). If the help option is specified, information is displayed regarding that particular subcommand. The subcommand, itself, is not executed. + +The following code sample displays the result of invoking the `--help` option for the `BACKUP` subcommand: + +```text +-bash-4.2$ bart BACKUP --help +bart: backup and recovery tool + +Usage: +bart BACKUP [OPTION]... + +Options: +-h, --help Show this help message and exit +-s, --server Name of the server or 'all' (full backups only) to specify all servers +-F, --format=p|t Backup output format (tar (default) or plain) +-z, --gzip Enables gzip compression of tar files +-c, --compress-level Specifies the compression level (1 through 9, 9 being + best compression) +--backup-name Specify a friendly name for the current backup +--parent Specify parent backup for incremental backup +--check Verify checksum of required mbm files +``` + +`-v` (or `--version`) + +The following code sample displays information returned by the `bart --version` subcommand: + +```text +[edb@localhost bin]$ bart --version +bart (EnterpriseDB) 2.5.2 +[edb@localhost bin]$ +``` + +`-d` (or `--debug`) + +The following code sample displays debugging output returned by the `bart MANAGE` subcommand: + +```text +-bash-4.1$ bart -d MANAGE -n +DEBUG: Server: acctg, Now: 2015-04-17 16:34:03 EDT, RetentionWindow: +259200 (secs) ==> 72 hour(s) +DEBUG: Server: dev, Now: 2015-04-17 16:34:03 EDT, RetentionWindow: +1814400 (secs) ==> 504 hour(s) +DEBUG: Server: hr, Now: 2015-04-17 16:34:03 EDT, RetentionWindow: +7776000 (secs) ==> 2160 hour(s) +``` + +`-c` (or `--config-path) ` + +The following code sample demonstrates using the `-c` option to specify a non-default configuration file name and installation location: + +```text +$ su bartuser +Password: +$ export +LD_LIBRARY_PATH=/opt/PostgresPlus/9.6AS/lib/:$LD_LIBRARY_PATH +$ bart -c /home/bartuser/bart.cfg SHOW-SERVERS +``` + +
+ +backup check_config delete init manage restore show_servers show_backups verify_chksum running_the_bart_wal_scanner + +
diff --git a/product_docs/docs/bart/2.5.9/bart_ref/02_additional_examples.mdx b/product_docs/docs/bart/2.5.9/bart_ref/02_additional_examples.mdx new file mode 100644 index 00000000000..38a519f727d --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_ref/02_additional_examples.mdx @@ -0,0 +1,1473 @@ +--- +title: "Additional Examples" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/additional_examples.html" +--- + + + +This section lists examples of the following BART operations. + +- Restoring a database cluster with tablespaces. +- Restoring an incremental backup. +- Managing backups. +- Managing incremental backups. + +## Restoring a Database Cluster with Tablespaces + +The following code sample illustrates taking a backup and restoring a database cluster on a remote host containing tablespaces. For detailed information regarding using tablespaces, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). + +On an Advanced Server database running on a remote host, the following tablespaces are created for use by two tables: + +```text +edb=# CREATE TABLESPACE tblspc_1 LOCATION '/mnt/tablespace_1'; +CREATE TABLESPACE +edb=# CREATE TABLESPACE tblspc_2 LOCATION '/mnt/tablespace_2'; +CREATE TABLESPACE +edb=# \db + List of tablespaces +Name | Owner | Location +------------+-----------------+------------------- +pg_default | enterprisedb | +pg_global | enterprisedb | +tblspc_1 | enterprisedb | /mnt/tablespace_1 +tblspc_2 | enterprisedb | /mnt/tablespace_2 +(4 rows) + +edb=# CREATE TABLE tbl_tblspc_1 (c1 TEXT) TABLESPACE tblspc_1; +CREATE TABLE +edb=# CREATE TABLE tbl_tblspc_2 (c1 TEXT) TABLESPACE tblspc_2; +CREATE TABLE +edb=# \d tbl_tblspc_1 +Table "enterprisedb.tbl_tblspc_1" +Column | Type | Modifiers +-------+------+----------- +c1 | text | +Tablespace: "tblspc_1" + +edb=# \d tbl_tblspc_2 +Table "enterprisedb.tbl_tblspc_2" +Column | Type | Modifiers +-------+------+----------- +c1 | text | +Tablespace: "tblspc_2" +``` + +The following code sample shows the OIDs assigned to the tablespaces and the symbolic links to the tablespace directories: + +```text +-bash-4.1$ pwd +/opt/PostgresPlus/9.6AS/data/pg_tblspc +-bash-4.1$ ls -l +total 0 +lrwxrwxrwx 1 enterprisedb enterprisedb 17 Nov 16 16:17 16587 ->/mnt/tablespace_1 +lrwxrwxrwx 1 enterprisedb enterprisedb 17 Nov 16 16:17 16588 ->/mnt/tablespace_2 +``` + +The BART configuration file contains the following settings. Note that the `tablespace_path` parameter does not have to be set at this point. + +```text +[BART] +bart_host= enterprisedb@192.168.2.22 +backup_path = /opt/backup +pg_basebackup_path = /usr/edb/as11/bin/pg_basebackup +logfile = /tmp/bart.log +scanner_logfile = /tmp/bart_scanner.log + +[ACCTG] +host = 192.168.2.24 +port = 5444 +user = repuser +cluster_owner = enterprisedb +remote_host = enterprisedb@192.168.2.24 +tablespace_path = +description = "Accounting" +``` + +After the necessary configuration steps are performed to ensure BART manages the remote database server, a full backup is taken as shown in the following code sample: + +```text +-bash-4.1$ bart BACKUP -s acctg + +INFO: creating backup for server 'acctg' +INFO: backup identifier: '1447709811516' +54521/54521 kB (100%), 3/3 tablespaces + +INFO: backup completed successfully +INFO: backup checksum: 594f69fe7d26af991d4173d3823e174f of 16587.tar +INFO: backup checksum: 7a5507567729a21c98a15c948ff6c015 of base.tar +INFO: backup checksum: ae8c62604c409635c9d9e82b29cc0399 of 16588.tar +INFO: +BACKUP DETAILS: +BACKUP STATUS: active +BACKUP IDENTIFIER: 1447709811516 +BACKUP NAME: none +BACKUP LOCATION: /opt/backup/acctg/1447709811516 +BACKUP SIZE: 53.25 MB +BACKUP FORMAT: tar +XLOG METHOD: fetch +BACKUP CHECKSUM(s): 3 +ChkSum File +594f69fe7d26af991d4173d3823e174f 16587.tar +7a5507567729a21c98a15c948ff6c015 base.tar +ae8c62604c409635c9d9e82b29cc0399 16588.tar + +TABLESPACE(s): 2 +Oid Name Location +16587 tblspc_1 /mnt/tablespace_1 +16588 tblspc_2 /mnt/tablespace_2 +START WAL LOCATION: 00000001000000000000000F +BACKUP METHOD: streamed +BACKUP FROM: master +START TIME: 2015-11-16 16:36:51 EST +STOP TIME: 2015-11-16 16:36:52 EST +TOTAL DURATION: 1 sec(s) +``` + +Note that in the output from the preceding example, checksums are generated for the tablespaces as well as the full backup. + +Within the backup subdirectory `1447709811516` of the BART backup catalog, the tablespace data is stored with file names `16587.tar.gz` and `16588.tar.gz` as shown below: + +```text +-bash-4.1$ pwd +/opt/backup/acctg +-bash-4.1$ ls -l +total 8 +drwx------ 2 enterprisedb enterprisedb 4096 Nov 16 16:36 1447709811516 +drwx------ 2 enterprisedb enterprisedb 4096 Nov 16 16:43 archived_wals +-bash-4.1$ ls -l 1447709811516 +total 54536 +-rw-rw-r-- 1 enterprisedb enterprisedb 19968 Nov 16 16:36 16587.tar +-rw-rw-r-- 1 enterprisedb enterprisedb 19968 Nov 16 16:36 16588.tar +-rw-rw-r-- 1 enterprisedb enterprisedb 949 Nov 16 17:05 backupinfo +-rw-rw-r-- 1 enterprisedb enterprisedb 55792640 Nov 16 16:36 base.tar +``` + +When you are ready to restore the backup, in addition to creating the directory to which the main database cluster is to be restored, you must prepare the directories to which the tablespaces are to be restored. + +On the remote host, directories `/opt/restore_tblspc_1` and `/opt/restore_tblspc_2` are created and assigned the proper ownership and permissions as shown by the following example. The main database cluster is to be restored to `/opt/restore`. + +```text +[root@localhost opt]# mkdir restore_tblspc_1 +[root@localhost opt]# chown enterprisedb restore_tblspc_1 +[root@localhost opt]# chgrp enterprisedb restore_tblspc_1 +[root@localhost opt]# chmod 700 restore_tblspc_1 + +[root@localhost opt]# mkdir restore_tblspc_2 +[root@localhost opt]# chown enterprisedb restore_tblspc_2 +[root@localhost opt]# chgrp enterprisedb restore_tblspc_2 +[root@localhost opt]# chmod 700 restore_tblspc_2 +[root@localhost opt]# ls -l +total 20 +drwxr-xr-x 3 root daemon 4096 Nov 10 15:38 PostgresPlus +drwx------ 2 enterprisedb enterprisedb 4096 Nov 16 17:40 restore +drwx------ 2 enterprisedb enterprisedb 4096 Nov 16 17:40 +restore_tblspc_1 +drwx------ 2 enterprisedb enterprisedb 4096 Nov 16 17:41 +restore_tblspc_2 +drwxr-xr-x. 2 root root 4096 Nov 22 2013 rh +``` + +Set the `tablespace_path` parameter in the BART configuration file to specify the tablespace directories. The remote host user and IP address are specified by the `remote_host` configuration parameter. + +```text +[ACCTG] + +host = 192.168.2.24 +port = 5444 +user = repuser +cluster_owner = enterprisedb +remote_host = enterprisedb@192.168.2.24 +tablespace_path = +16587=/opt/restore_tblspc_1;16588=/opt/restore_tblspc_2 + +description = "Accounting" +``` + +The following code sample demonstrates invoking the `RESTORE` subcommand: + +```text +-bash-4.1$ bart RESTORE -s acctg -i 1447709811516 -p /opt/restore +INFO: restoring backup '1447709811516' of server 'acctg' +INFO: restoring backup to enterprisedb@192.168.2.24:/opt/restore +INFO: base backup restored +INFO: archiving is disabled +INFO: tablespace(s) restored +``` + +The following code sample shows the restored full backup (including the restored tablespaces): + +```text +bash-4.1$ pwd +/opt +-bash-4.1$ ls -l restore +total 104 +-rw------- 1 enterprisedb enterprisedb 206 Nov 16 16:36 backup_label.old +drwx------ 6 enterprisedb enterprisedb 4096 Nov 10 15:38 base +drwx------ 2 enterprisedb enterprisedb 4096 Nov 16 17:46 global +drwx------ 2 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_clog +-rw------- 1 enterprisedb enterprisedb 4438 Nov 10 16:23 pg_hba.conf +-rw------- 1 enterprisedb enterprisedb 1636 Nov 10 15:38 pg_ident.conf +drwxr-xr-x 2 enterprisedb enterprisedb 4096 Nov 16 17:45 pg_log +drwx------ 4 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_multixact +drwx------ 2 enterprisedb enterprisedb 4096 Nov 16 17:45 pg_notify +drwx------ 2 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_serial +drwx------ 2 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_snapshots +drwx------ 2 enterprisedb enterprisedb 4096 Nov 16 17:47 pg_stat +drwx------ 2 enterprisedb enterprisedb 4096 Nov 16 17:47 pg_stat_tmp +drwx------ 2 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_subtrans +drwx------ 2 enterprisedb enterprisedb 4096 Nov 16 17:42 pg_tblspc +drwx------ 2 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_twophase +-rw------- 1 enterprisedb enterprisedb 4 Nov 10 15:38 PG_VERSION +drwx------ 3 enterprisedb enterprisedb 4096 Nov 16 17:47 pg_xlog +-rw------- 1 enterprisedb enterprisedb 23906 Nov 16 17:42 postgresql.conf +-rw------- 1 enterprisedb enterprisedb 61 Nov 16 17:45 postmaster.opts +-bash-4.1$ +-bash-4.1$ ls -l restore_tblspc_1 +total 4 +drwx------ 3 enterprisedb enterprisedb 4096 Nov 16 16:18 +PG_9.6_201306121 +-bash-4.1$ ls -l restore_tblspc_2 +total 4 +drwx------ 3 enterprisedb enterprisedb 4096 Nov 16 16:18 +PG_9.6_201306121 +``` + +The symbolic links in the `pg_tblspc` subdirectory point to the restored directory location: + +```text +bash-4.1$ pwd +/opt/restore/pg_tblspc +-bash-4.1$ ls -l +total 0 +lrwxrwxrwx 1 enterprisedb enterprisedb 21 Nov 16 17:42 16587 -> +/opt/restore_tblspc_1 +lrwxrwxrwx 1 enterprisedb enterprisedb 21 Nov 16 17:42 16588 -> +/opt/restore_tblspc_2 +``` + +`psql` queries also show the restored tablespaces: + +```text +edb=# \db + + List of tablespaces +Name | Owner | Location +------------+--------------+----------------------- +pg_default | enterprisedb | +pg_global | enterprisedb | +tblspc_1 | enterprisedb | /opt/restore_tblspc_1 +tblspc_2 | enterprisedb | /opt/restore_tblspc_2 +``` + +## Restoring an Incremental Backup + +Restoring an incremental backup may require additional setup steps depending upon the host on which the incremental backup is to be restored. For more information, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). + +This section provides an example of creating backup chains and then restoring an incremental backup. + +**Creating a Backup Chain** + +A *backup chain* is the set of backups consisting of a full backup and all of its successive incremental backups. Tracing back on the parent backups of all incremental backups in the chain eventually leads back to that single, full backup. + +In the following example, the `allow_incremental_backups` parameter is set to `enabled` in the BART configuration file to permit incremental backups on the listed database server: + +```text +[BART] + +bart_host= enterprisedb@192.168.2.27 +backup_path = /opt/backup +pg_basebackup_path = /usr/edb/as11/bin/pg_basebackup +logfile = /tmp/bart.log +scanner_logfile = /tmp/bart_scanner.log + +[ACCTG] + +host = 127.0.0.1 +port = 5445 +user = enterprisedb +cluster_owner = enterprisedb +allow_incremental_backups = enabled +description = "Accounting" +``` + +After the database server has been started with WAL archiving enabled to the BART backup catalog, the WAL scanner is started: + +```text +-bash-4.2$ bart-scanner --daemon +``` + +First, a full backup is taken. + +```text +-bash-4.2$ bart BACKUP -s acctg --backup-name full_1 +INFO: creating backup for server 'acctg' +INFO: backup identifier: '1490649204327'\ +63364/63364 kB (100%), 1/1 tablespace +INFO: backup completed successfully +INFO: backup checksum: aae27d4a7c09dffc82f423221154db7e of base.tar +INFO: +BACKUP DETAILS: +BACKUP STATUS: active +BACKUP IDENTIFIER: 1490649204327 +BACKUP NAME: full_1 +BACKUP PARENT: none +BACKUP LOCATION: /opt/backup/acctg/1490649204327 +BACKUP SIZE: 61.88 MB +BACKUP FORMAT: tar +BACKUP TIMEZONE: US/Eastern +XLOG METHOD: fetch +BACKUP CHECKSUM(s): 1 +ChkSum File +aae27d4a7c09dffc82f423221154db7e base.tar +TABLESPACE(s): 0 +START WAL LOCATION: 00000001000000000000000E +BACKUP METHOD: streamed +BACKUP FROM: master +START TIME: 2017-03-27 17:13:24 EDT +STOP TIME: 2017-03-27 17:13:25 EDT +TOTAL DURATION: 1 sec(s) +``` + +A series of incremental backups are taken. The first incremental backup specifies the full backup as the parent. Each successive incremental backup then uses the preceding incremental backup as its parent. + +```text +-bash-4.2$ bart BACKUP -s acctg -F p --parent full_1 --backup-name +incr_1-a +INFO: creating incremental backup for server 'acctg' +INFO: checking mbm files /opt/backup/acctg/archived_wals +INFO: new backup identifier generated 1490649255649 +INFO: reading directory /opt/backup/acctg/archived_wals +INFO: all files processed +NOTICE: pg_stop_backup complete, all required WAL segments have been +archived +INFO: incremental backup completed successfully +INFO: +BACKUP DETAILS: +BACKUP STATUS: active +BACKUP IDENTIFIER: 1490649255649 +BACKUP NAME: incr_1-a +BACKUP PARENT: 1490649204327 +BACKUP LOCATION: /opt/backup/acctg/1490649255649 +BACKUP SIZE: 16.56 MB +BACKUP FORMAT: plain +BACKUP TIMEZONE: US/Eastern +XLOG METHOD: fetch +BACKUP CHECKSUM(s): 0 +TABLESPACE(s): 0 +START WAL LOCATION: 000000010000000000000010 +STOP WAL LOCATION: 000000010000000000000010 +BACKUP METHOD: pg_start_backup +BACKUP FROM: master +START TIME: 2017-03-27 17:14:15 EDT +STOP TIME: 2017-03-27 17:14:16 EDT +TOTAL DURATION: 1 sec(s) +-bash-4.2$ bart BACKUP -s acctg -F p --parent incr_1-a --backup-name +incr_1-b +INFO: creating incremental backup for server 'acctg' +INFO: checking mbm files /opt/backup/acctg/archived_wals +INFO: new backup identifier generated 1490649336845 +INFO: reading directory /opt/backup/acctg/archived_wals +INFO: all files processed +NOTICE: pg_stop_backup complete, all required WAL segments have been +archived +INFO: incremental backup completed successfully +. +. +. +-bash-4.2$ bart BACKUP -s acctg -F p --parent incr_1-b --backup-name +incr_1-c +INFO: creating incremental backup for server 'acctg' +INFO: checking mbm files /opt/backup/acctg/archived_wals +INFO: new backup identifier generated 1490649414316 +INFO: reading directory /opt/backup/acctg/archived_wals +INFO: all files processed +NOTICE: pg_stop_backup complete, all required WAL segments have been +archived +INFO: incremental backup completed successfully +. +. +. +``` + +The following output of the `SHOW-BACKUPS` subcommand lists the backup chain, which are backups `full_1, incr_1-a, incr_1-b, and incr_1-c`. + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID BACKUP NAME BACKUP PARENT BACKUP TIME ... +acctg 1490649414316 incr_1-c incr_1-b 2017-03-27 17:16:55 ... +acctg 1490649336845 incr_1-b incr_1-a 2017-03-27 17:15:37 ... +acctg 1490649255649 incr_1-a full_1 2017-03-27 17:14:16 ... +acctg 1490649204327 full_1 none 2017-03-27 17:13:25 ... +``` + +For the `full backup full_1`, the `BACKUP PARENT` field contains `none`. For each incremental backup, the `BACKUP PARENT` field contains the backup identifier or name of its parent backup. + +A second backup chain is created in the same manner with the `BACKUP` subcommand. The following example shows the addition of the resulting, second backup chain consisting of full backup `full_2` and incremental backups `incr_2-a` and `incr_2-b`. + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID BACKUP NAME BACKUP PARENT BACKUP TIME ... +acctg 1490649605607 incr_2-b incr_2-a 2017-03-27 17:20:06 ... +acctg 1490649587702 incr_2-a full_2 2017-03-27 17:19:48 ... +acctg 1490649528633 full_2 none 2017-03-27 17:18:49 ... +acctg 1490649414316 incr_1-c incr_1-b 2017-03-27 17:16:55 ... +acctg 1490649336845 incr_1-b incr_1-a 2017-03-27 17:15:37 ... +acctg 1490649255649 incr_1-a full_1 2017-03-27 17:14:16 ... +acctg 1490649204327 full_1 none 2017-03-27 17:13:25 ... +``` + +The following additional incremental backups starting with `incr_1-b-1`, which designates `incr_1-b` as the parent, results in the forking from that backup into a second line of backups in the chain consisting of `full_1, incr_1-a, incr_1-b, incr_1-b-1, incr_1-b-2`, and `incr_1-b-3` as shown in the following list: + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID BACKUP NAME BACKUP PARENT BACKUP TIME ... +acctg 1490649791430 incr_1-b-3 incr_1-b-2 2017-03-27 17:23:12 ... +acctg 1490649763929 incr_1-b-2 incr_1-b-1 2017-03-27 17:22:44 ... +acctg 1490649731672 incr_1-b-1 incr_1-b 2017-03-27 17:22:12 ... +acctg 1490649605607 incr_2-b incr_2-a 2017-03-27 17:20:06 ... +acctg 1490649587702 incr_2-a full_2 2017-03-27 17:19:48 ... +acctg 1490649528633 full_2 none 2017-03-27 17:18:49 ... +acctg 1490649414316 incr_1-c incr_1-b 2017-03-27 17:16:55 ... +acctg 1490649336845 incr_1-b incr_1-a 2017-03-27 17:15:37 ... +acctg 1490649255649 incr_1-a full_1 2017-03-27 17:14:16 ... +acctg 1490649204327 full_1 none 2017-03-27 17:13:25 ... +``` + +**Restoring an Incremental Backup** + +Restoring an incremental backup is done with the `RESTORE` subcommand in the same manner as for restoring a full backup. Specify the backup identifier or backup name of the incremental backup to be restored as shown in the following example. + +```text +-bash-4.2$ bart RESTORE -s acctg -p /opt/restore -i incr_1-b +INFO: restoring incremental backup 'incr_1-b' of server 'acctg' +INFO: base backup restored +INFO: archiving is disabled +INFO: permissions set on $PGDATA +INFO: incremental restore completed successfully +``` + +Restoring incremental backup `incr_1-b` as shown by the preceding example results in the restoration of full backup `full_1`, then incremental backups `incr_1-a` and finally, `incr_1-b`. + +## Managing Backups + +This section illustrates evaluating, marking, and deleting backups using the `MANAGE` subcommand using a redundancy retention policy and a recovery window retention policy. For detailed information about the `MANAGE` subcommand, see the *EDB Backup and Recovery User Guide* available at the [EDB website](/bart/latest/bart_user/). + + + +### Using a Redundancy Retention Policy + +The following code sample uses a redundancy retention policy to evaluate, mark, and delete backups as shown by the following server configuration: + +```text +[ACCTG] +host = 127.0.0.1 +port = 5444 +user = enterprisedb +archive_command = 'cp %p %a/%f' +retention_policy = 3 BACKUPS +description = "Accounting" +``` + +The following list is the set of backups. Note that the last backup in the list has been marked as `keep`. + +```text +-bash-4.1$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID BACKUP TIME BACKUP SIZE WAL(s) SIZE +WAL FILES STATUS +acctg 1428768344061 2015-04-11 12:05:46 EDT 5.72 MB 48.00 MB +3 active +acctg 1428684537299 2015-04-10 12:49:00 EDT 5.72 MB 272.00 MB +17 active +acctg 1428589759899 2015-04-09 10:29:27 EDT 5.65 MB 96.00 MB +6 active +acctg 1428502049836 2015-04-08 10:07:30 EDT 55.25 MB 96.00 MB +6 active +acctg 1428422324880 2015-04-07 11:58:45 EDT 54.53 MB 32.00 MB +2 active +acctg 1428355371389 2015-04-06 17:22:53 EDT 5.71 MB 16.00 MB +1 keep +``` + +Invoke the `MANAGE` subcommand with the `-n` option to perform a dry run to observe which active backups would be changed to obsolete according to the retention policy as shown in the following code sample: + +```text +-bash-4.1$ bart MANAGE -s acctg -n +INFO: processing server 'acctg', backup '1428768344061' +INFO: processing server 'acctg', backup '1428684537299' +INFO: processing server 'acctg', backup '1428589759899' +INFO: processing server 'acctg', backup '1428502049836' +INFO: marking backup '1428502049836' as obsolete +INFO: 6 WAL file(s) marked obsolete +INFO: processing server 'acctg', backup '1428422324880' +INFO: marking backup '1428422324880' as obsolete +INFO: 2 WAL file(s) marked obsolete +INFO: processing server 'acctg', backup '1428355371389' +``` + +The dry run shows that backups `1428502049836` and `1428422324880` would be marked as `obsolete`. + +!!! Note + A dry run does not change the backup status. The two backups that would be considered obsolete are still marked as `active`: + +```text +-bash-4.1$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID BACKUP TIME BACKUP SIZE WAL(s) SIZE +WAL FILES STATUS +acctg 1428768344061 2015-04-11 12:05:46 EDT 5.72 MB 48.00 MB +3 active +acctg 1428684537299 2015-04-10 12:49:00 EDT 5.72 MB 272.00 MB +17 active +acctg 1428589759899 2015-04-09 10:29:27 EDT 5.65 MB 96.00 MB +6 active +acctg 1428502049836 2015-04-08 10:07:30 EDT 55.25 MB 96.00 MB +6 active +acctg 1428422324880 2015-04-07 11:58:45 EDT 54.53 MB 32.00 MB +2 active +acctg 1428355371389 2015-04-06 17:22:53 EDT 5.71 MB 16.00 MB +1 keep +``` + +Invoke the `MANAGE` subcommand omitting the `-n` option to change and mark the status of the backups as `obsolete`: + +```text +-bash-4.1$ bart MANAGE -s acctg +INFO: processing server 'acctg', backup '1428768344061' +INFO: processing server 'acctg', backup '1428684537299' +INFO: processing server 'acctg', backup '1428589759899' +INFO: processing server 'acctg', backup '1428502049836' +INFO: marking backup '1428502049836' as obsolete +INFO: 6 WAL file(s) marked obsolete +INFO: processing server 'acctg', backup '1428422324880' +INFO: marking backup '1428422324880' as obsolete +INFO: 2 WAL file(s) marked obsolete +INFO: processing server 'acctg', backup '1428355371389' +``` + +The obsolete backups can be observed in a number of ways. Use the `MANAGE` subcommand with the `-l` option to list the `obsolete` backups: + +```text +-bash-4.1$ bart MANAGE -s acctg -l +INFO: 6 WAL file(s) will be removed +SERVER NAME: acctg +BACKUP ID: 1428502049836 +BACKUP STATUS: obsolete +BACKUP TIME: 2015-04-08 10:07:30 EDT +BACKUP SIZE: 55.25 MB +WAL FILE(s): 6 +WAL FILE: 000000010000000100000003 +WAL FILE: 000000010000000100000002 +WAL FILE: 000000010000000100000001 +WAL FILE: 000000010000000100000000 +WAL FILE: 0000000100000000000000E3 +WAL FILE: 0000000100000000000000E2 +INFO: 2 WAL file(s) will be removed +SERVER NAME: acctg +BACKUP ID: 1428422324880 +BACKUP STATUS: obsolete +BACKUP TIME: 2015-04-07 11:58:45 EDT +BACKUP SIZE: 54.53 MB +WAL FILE(s): 2 +WAL FILE: 0000000100000000000000E1 +WAL FILE: 0000000100000000000000E0 +``` + +The `STATUS` field of the `SHOW-BACKUPS` subcommand displays the current status: + +```text +-bash-4.1$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID BACKUP TIME BACKUP SIZE WAL(s) SIZE +WAL FILES STATUS +acctg 1428768344061 2015-04-11 12:05:46 EDT 5.72 MB 48.00 MB +3 active +acctg 1428684537299 2015-04-10 12:49:00 EDT 5.72 MB 272.00 MB +17 active +acctg 1428589759899 2015-04-09 10:29:27 EDT 5.65 MB 96.00 MB +6 active +acctg 1428502049836 2015-04-08 10:07:30 EDT 55.25 MB 96.00 MB +6 obsolete +acctg 1428422324880 2015-04-07 11:58:45 EDT 54.53 MB 32.00 MB +2 obsolete +acctg 1428355371389 2015-04-06 17:22:53 EDT 5.71 MB 16.00 MB +1 keep +``` + +The details of an individual backup can be displayed using the `SHOW-BACKUPS` subcommand with the `-t` option. Note the status in the `BACKUP STATUS` field. + +```text +-bash-4.1$ bart SHOW-BACKUPS -s acctg -i 1428502049836 -t +SERVER NAME : acctg +BACKUP ID : 1428502049836 +BACKUP NAME : none +BACKUP STATUS : obsolete +BACKUP TIME : 2015-04-08 10:07:30 EDT +BACKUP SIZE : 55.25 MB +WAL(S) SIZE : 96.00 MB +NO. OF WALS : 6 +FIRST WAL FILE : 0000000100000000000000E2 +CREATION TIME : 2015-04-08 10:07:30 EDT +LAST WAL FILE : 000000010000000100000003 +CREATION TIME : 2015-04-09 10:25:46 EDT +``` + +Use the `MANAGE` subcommand with the `-d` option to physically delete the `obsolete` backups including the unneeded WAL files. + +```text +-bash-4.1$ bart MANAGE -s acctg -d +INFO: removing all obsolete backups of server 'acctg' +INFO: removing obsolete backup '1428502049836' +INFO: 6 WAL file(s) will be removed +INFO: removing WAL file '000000010000000100000003' +INFO: removing WAL file '000000010000000100000002' +INFO: removing WAL file '000000010000000100000001' +INFO: removing WAL file '000000010000000100000000' +INFO: removing WAL file '0000000100000000000000E3' +INFO: removing WAL file '0000000100000000000000E2' +INFO: removing obsolete backup '1428422324880' +INFO: 2 WAL file(s) will be removed +INFO: removing WAL file '0000000100000000000000E1' +INFO: removing WAL file '0000000100000000000000E0' +``` + +The `SHOW-BACKUPS` subcommand now displays the remaining backups marked as `active` or `keep`: + +```text +-bash-4.1$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID BACKUP TIME BACKUP SIZE WAL(s) SIZE +WAL FILES STATUS +acctg 1428768344061 2015-04-11 12:05:46 EDT 5.72 MB 48.00 MB +3 active +acctg 1428684537299 2015-04-10 12:49:00 EDT 5.72 MB 272.00 MB +17 active +acctg 1428589759899 2015-04-09 10:29:27 EDT 5.65 MB 96.00 MB +6 active +acctg 1428355371389 2015-04-06 17:22:53 EDT 5.71 MB 16.00 MB +1 keep +``` + + + +### Using a Recovery Window Retention Policy + +This section illustrates the evaluation, marking, and deletion of backup using a recovery window retention policy. To use the recovery window retention policy, set the `retention_policy` parameter to the desired length of time for the recovery window. + +This section provides examples of the following: + +- How to view the calculated recovery window. +- How to evaluate, mark, and delete backup using a recovery window retention policy. + +#### Viewing the Recovery Window + +You can view the actual, calculated recovery window by invoking any of the following subcommands: + +- `MANAGE` subcommand in debug mode (along with the `-n` option). +- `SHOW-SERVERS` subcommand. + +##### Viewing the Recovery Window Using the Manage Subcommand + +When invoking BART in debug mode with the `MANAGE` subcommand and the `-n` option, the length of the recovery window is calculated based on the `retention_policy` setting and the current date/time. + +For example, using the following `retention_policy` settings: + +```text +[ACCTG] + +host = 127.0.0.1 +port = 5444 +user = enterprisedb +archive_command = 'cp %p %a/%f' +retention_policy = 3 DAYS +backup-name = acctg_%year-%month-%dayT%hour:%minute:%second +description = "Accounting" + +[DEV] + +host = 127.0.0.1 +port = 5445 +user = enterprisedb +archive_command = 'cp %p %a/%f' +retention_policy = 3 WEEKS +description = "Development" + +[HR] + +host = 127.0.0.1 +port = 5432 +user = postgres +retention_policy = 3 MONTHS +description = "Human Resources" +``` + +If the `MANAGE` subcommand is invoked in debug mode along with the `-n` option on 2015-04-17, the following results are displayed: + +```text +-bash-4.1$ bart -d MANAGE -n +DEBUG: Server: acctg, Now: 2015-04-17 16:34:03 EDT, RetentionWindow: +259200 (secs) ==> 72 hour(s) +DEBUG: Server: dev, Now: 2015-04-17 16:34:03 EDT, RetentionWindow: +1814400 (secs) ==> 504 hour(s) +DEBUG: Server: hr, Now: 2015-04-17 16:34:03 EDT, RetentionWindow: +7776000 (secs) ==> 2160 hour(s) +``` + +For server `acctg`, 72 hours translates to a recovery window of 3 days. + +For server `dev`, 504 hours translates to a recovery window of 21 days (3 weeks). + +For server `hr`, 2160 hours translates to a recovery window of 90 days (3 months). + +For a setting of ` MONTHS`, the calculated total number of days for the recovery window is dependent upon the actual number of days in the preceding months from the current date/time. Thus, ` MONTHS` is not always exactly equivalent to ` x 30 DAYS`. For example, if the current date/time is in the month of March, a 1-month recovery window would be equivalent to only 28 days because the preceding month is February. Thus, for a current date of March 31, a 1-month recovery window would start on March 3. However, the typical result is that the day of the month of the starting recovery window boundary will be the same day of the month of when the `MANAGE` subcommand is invoked. + +##### Viewing the Recovery Window Using the Show-Servers Subcommand + +This section provides an example of viewing the recovery window using the `SHOW-SERVERS` subcommand; the `RETENTION POLICY` field displays the start of the recovery window. + +In the following code sample, the recovery window retention policy setting considers the backups taken within a 3-day recovery window as the active backups. + +```text +[ACCTG] +host = 127.0.0.1 +port = 5444 +user = enterprisedb +archive_command = 'cp %p %a/%f' +retention_policy = 3 DAYS +description = "Accounting" +``` + +The start of the 3-day recovery window displayed in the `RETENTION POLICY` field is `2015-04-07 14:57:36 EDT` when the `SHOW-SERVERS` subcommand is invoked on `2015-04-10`. + +At this current point in time, backups taken on or after `2015-04-07 14:57:36 EDT` would be considered active. Backups taken prior to `2015-04-07 14:57:36 EDT` would be considered obsolete except for backups marked as `keep`. + +```text +-bash-4.1$ date +Fri Apr 10 14:57:33 EDT 2015 +-bash-4.1$ +-bash-4.1$ bart SHOW-SERVERS -s acctg +SERVER NAME : acctg +HOST NAME : 127.0.0.1 +USER NAME : enterprisedb +PORT : 5444 +REMOTE HOST : +RETENTION POLICY : 2015-04-07 14:57:36 EDT +DISK UTILIZATION : 824.77 MB +NUMBER OF ARCHIVES : 37 +ARCHIVE PATH : /opt/backup/acctg/archived_wals +ARCHIVE COMMAND : cp %p /opt/backup/acctg/archived_wals/%f +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +DESCRIPTION : "Accounting" +``` + +In the following code sample, the recovery window retention policy setting considers the backups taken within a 3-week recovery window as the `active` backups. + +```text +[DEV] +host = 127.0.0.1 +port = 5445 +user = enterprisedb +archive_command = 'cp %p %a/%f' +retention_policy = 3 WEEKS +description = "Development" +``` + +The start of the 3-week recovery window displayed in the `RETENTION POLICY` field is `2015-03-20 14:59:42 EDT` when the `SHOW-SERVERS` subcommand is invoked on `2015-04-10`. + +At this current point in time, backups taken on or after `2015-03-20 14:59:42 EDT` would be considered `active`. Backups taken prior to `2015-03-20 14:59:42 EDT` would be considered `obsolete` except for backups marked as `keep`. + +```text +-bash-4.1$ date +Fri Apr 10 14:59:39 EDT 2015 +-bash-4.1$ +-bash-4.1$ bart SHOW-SERVERS -s dev +SERVER NAME : dev +HOST NAME : 127.0.0.1 +USER NAME : enterprisedb +PORT : 5445 +REMOTE HOST : +RETENTION POLICY : 2015-03-20 14:59:42 EDT +DISK UTILIZATION : 434.53 MB +NUMBER OF ARCHIVES : 22 +ARCHIVE PATH : /opt/backup/dev/archived_wals +ARCHIVE COMMAND : cp %p /opt/backup/dev/archived_wals/%f +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +DESCRIPTION : "Development" +``` + +In the following code sample, the recovery window retention policy setting considers the backups taken within a 3-month recovery window as the `active` backups. + +```text +[HR] +host = 127.0.0.1 +port = 5432 +user = postgres +retention_policy = 3 MONTHS +description = "Human Resources" +``` + +The start of the 3-month recovery window displayed in the `RETENTION POLICY` field is `2015-01-10 14:04:23 EST` when the `SHOW-SERVERS` subcommand is invoked on `2015-04-10`. + +At this current point in time, backups taken on or after `2015-01-10 14:04:23 EST` would be considered `active`. Backups taken prior to `2015-01-10 14:04:23 EST` would be considered `obsolete`, except for backups marked as `keep`. + +```text +-bash-4.1$ date +Fri Apr 10 15:04:19 EDT 2015 +-bash-4.1$ +-bash-4.1$ bart SHOW-SERVERS -s hr +SERVER NAME : hr +HOST NAME : 127.0.0.1 +USER NAME : postgres +PORT : 5432 +REMOTE HOST : +RETENTION POLICY : 2015-01-10 14:04:23 EST +DISK UTILIZATION : 480.76 MB +NUMBER OF ARCHIVES : 26 +ARCHIVE PATH : /opt/backup/hr/archived_wals +ARCHIVE COMMAND : scp %p +enterprisedb@192.168.2.22:/opt/backup/hr/archived_wals/%f +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +DESCRIPTION : "Human Resources" +``` + +#### Evaluating, Marking, and Deleting Backup Using a Recovery Window Retention Policy + +The following code sample uses a recovery window retention policy to evaluate, mark, and delete backups as shown by the following server configuration: + +```text +[DEV] +host = 127.0.0.1 +port = 5445 +user = enterprisedb +archive_command = 'cp %p %a/%f' +retention_policy = 3 DAYS +description = "Development" +``` + +The following is the current set of backups. Note that the last backup in the list has been marked as `keep`. + +```text +-bash-4.1$ bart SHOW-BACKUPS -s dev +SERVER NAME BACKUP ID BACKUP TIME BACKUP SIZE WAL(s) SIZE +WAL FILES STATUS +dev 1428933278236 2015-04-13 09:54:40 EDT 5.65 MB 16.00 MB +1 active +dev 1428862187757 2015-04-12 14:09:50 EDT 5.65 MB 32.00 MB +2 active +dev 1428768351638 2015-04-11 12:05:54 EDT 5.65 MB 32.00 MB +2 active +dev 1428684544008 2015-04-10 12:49:06 EDT 5.65 MB 224.00 MB +14 active +dev 1428590536488 2015-04-09 10:42:18 EDT 5.65 MB 48.00 MB +3 active +dev 1428502171990 2015-04-08 10:09:34 EDT 5.65 MB 80.00 MB +5 keep +``` + +The current date and time is `2015-04-13 16:46:35 EDT` as shown below: + +```text +-bash-4.1$ date +Mon Apr 13 16:46:35 EDT 2015 +``` + +Thus, a 3-day recovery window would evaluate backups prior to `2015-04-10 16:46:35 EDT` as `obsolete` except for those marked as `keep`. + +Invoke the `MANAGE` subcommand with the `-n` option to perform a dry run to observe which active backups would be changed to `obsolete` according to the retention policy. + +```text +-bash-4.1$ bart MANAGE -s dev -n +INFO: processing server 'dev', backup '1428933278236' +INFO: processing server 'dev', backup '1428862187757' +INFO: processing server 'dev', backup '1428768351638' +INFO: processing server 'dev', backup '1428684544008' +INFO: marking backup '1428684544008' as obsolete +INFO: 14 WAL file(s) marked obsolete +INFO: 1 Unused WAL file(s) present +INFO: processing server 'dev', backup '1428590536488' +INFO: marking backup '1428590536488' as obsolete +INFO: 3 WAL file(s) marked obsolete +INFO: 1 Unused WAL file(s) present +INFO: processing server 'dev', backup '1428502171990' +``` + +The dry run shows that backups `1428684544008` and `1428590536488` would be marked as `obsolete`. + +Also note that a dry run does not change the backup status. The two backups that would be considered obsolete are still marked as `active`: + +```text +-bash-4.1$ bart SHOW-BACKUPS -s dev\ + SERVER NAME BACKUP ID BACKUP TIME BACKUP SIZE WAL(s) SIZE + WAL FILES STATUS + dev 1428933278236 2015-04-13 09:54:40 EDT 5.65 MB 16.00 MB + 1 active + dev 1428862187757 2015-04-12 14:09:50 EDT 5.65 MB 32.00 MB + 2 active + dev 1428768351638 2015-04-11 12:05:54 EDT 5.65 MB 32.00 MB + 2 active + dev 1428684544008 2015-04-10 12:49:06 EDT 5.65 MB 224.00 MB + 14 active + dev 1428590536488 2015-04-09 10:42:18 EDT 5.65 MB 48.00 MB + 3 active + dev 1428502171990 2015-04-08 10:09:34 EDT 5.65 MB 80.00 MB + 5 keep +``` + +Invoke the `MANAGE` subcommand omitting the `-n` option to change and mark the status of the backups as `obsolete`: + +```text +-bash-4.1$ bart MANAGE -s dev +INFO: processing server 'dev', backup '1428933278236' +INFO: processing server 'dev', backup '1428862187757' +INFO: processing server 'dev', backup '1428768351638' +INFO: processing server 'dev', backup '1428684544008' +INFO: marking backup '1428684544008' as obsolete +INFO: 14 WAL file(s) marked obsolete +INFO: 1 Unused WAL file(s) present +INFO: processing server 'dev', backup '1428590536488' +INFO: marking backup '1428590536488' as obsolete +INFO: 3 WAL file(s) marked obsolete +INFO: 1 Unused WAL file(s) present +INFO: processing server 'dev', backup '1428502171990' +``` + +The obsolete backups can be observed in a number of ways. Use the `MANAGE` subcommand with the `-l` option to list the `obsolete` backups: + +```text +-bash-4.1$ bart MANAGE -s dev -l +INFO: 14 WAL file(s) will be removed +INFO: 1 Unused WAL file(s) will be removed +SERVER NAME: dev +BACKUP ID: 1428684544008 +BACKUP STATUS: obsolete +BACKUP TIME: 2015-04-10 12:49:06 EDT +BACKUP SIZE: 5.65 MB +WAL FILE(s): 14 +UNUSED WAL FILE(s): 1 +WAL FILE: 00000001000000000000002E +WAL FILE: 00000001000000000000002D +WAL FILE: 00000001000000000000002C +WAL FILE: 00000001000000000000002B +WAL FILE: 00000001000000000000002A +WAL FILE: 000000010000000000000029 +WAL FILE: 000000010000000000000028 +WAL FILE: 000000010000000000000027 +WAL FILE: 000000010000000000000026 +WAL FILE: 000000010000000000000025 +WAL FILE: 000000010000000000000024 +WAL FILE: 000000010000000000000023 +WAL FILE: 000000010000000000000022 +WAL FILE: 000000010000000000000021 +UNUSED WAL FILE: 00000001000000000000000F.00000028 +INFO: 3 WAL file(s) will be removed +INFO: 1 Unused WAL file(s) will be removed +SERVER NAME: dev +BACKUP ID: 1428590536488 +BACKUP STATUS: obsolete +BACKUP TIME: 2015-04-09 10:42:18 EDT\ +BACKUP SIZE: 5.65 MB +WAL FILE(s): 3 +UNUSED WAL FILE(s): 1 +WAL FILE: 000000010000000000000020 +WAL FILE: 00000001000000000000001F +WAL FILE: 00000001000000000000001E +UNUSED WAL FILE: 00000001000000000000000F.00000028 +``` + +The `STATUS` field of the `SHOW-BACKUPS` subcommand displays the current status: + +```text +-bash-4.1$ bart SHOW-BACKUPS -s dev +SERVER NAME BACKUP ID BACKUP TIME BACKUP SIZE WAL(s) SIZE +WAL FILES STATUS +dev 1428933278236 2015-04-13 09:54:40 EDT 5.65 MB 16.00 MB +1 active +dev 1428862187757 2015-04-12 14:09:50 EDT 5.65 MB 32.00 MB +2 active +dev 1428768351638 2015-04-11 12:05:54 EDT 5.65 MB 32.00 MB +2 active +dev 1428684544008 2015-04-10 12:49:06 EDT 5.65 MB 224.00 MB +14 obsolete +dev 1428590536488 2015-04-09 10:42:18 EDT 5.65 MB 48.00 MB +3 obsolete +dev 1428502171990 2015-04-08 10:09:34 EDT 5.65 MB 80.00 MB +5 keep +``` + +The details of an individual backup can be displayed using the `SHOW-BACKUPS` subcommand with the `-t` option. Note the status in the `BACKUP STATUS` field. + +```text +-bash-4.1$ bart SHOW-BACKUPS -s dev -i 1428684544008 -t +SERVER NAME : dev +BACKUP ID : 1428684544008 +BACKUP NAME : none +BACKUP STATUS : obsolete +BACKUP TIME : 2015-04-10 12:49:06 EDT +BACKUP SIZE : 5.65 MB +WAL(S) SIZE : 224.00 MB +NO. OF WALS : 14 +FIRST WAL FILE : 000000010000000000000021 +CREATION TIME : 2015-04-10 12:49:06 EDT +LAST WAL FILE : 00000001000000000000002E +CREATION TIME : 2015-04-11 12:02:15 EDT +``` + +Use the `MANAGE` subcommand with the `-d` option to physically delete the obsolete backups including the unneeded WAL files. + +```text +-bash-4.1$ bart MANAGE -s dev -d +INFO: removing all obsolete backups of server 'dev' +INFO: removing obsolete backup '1428684544008' +INFO: 14 WAL file(s) will be removed +INFO: 1 Unused WAL file(s) will be removed +INFO: removing WAL file '00000001000000000000002E' +INFO: removing WAL file '00000001000000000000002D' +INFO: removing WAL file '00000001000000000000002C' +INFO: removing WAL file '00000001000000000000002B' +INFO: removing WAL file '00000001000000000000002A' +INFO: removing WAL file '000000010000000000000029' +INFO: removing WAL file '000000010000000000000028' +INFO: removing WAL file '000000010000000000000027' +INFO: removing WAL file '000000010000000000000026' +INFO: removing WAL file '000000010000000000000025' +INFO: removing WAL file '000000010000000000000024' +INFO: removing WAL file '000000010000000000000023' +INFO: removing WAL file '000000010000000000000022' +INFO: removing WAL file '000000010000000000000021' +INFO: removing (unused) WAL file '00000001000000000000000F.00000028' +INFO: removing obsolete backup '1428590536488' +INFO: 3 WAL file(s) will be removed +INFO: removing WAL file '000000010000000000000020' +INFO: removing WAL file '00000001000000000000001F' +INFO: removing WAL file '00000001000000000000001E' +``` + +The `SHOW-BACKUPS` subcommand now displays the remaining backups marked as `active` or `keep`: + +```text +-bash-4.1$ bart SHOW-BACKUPS -s dev +SERVER NAME BACKUP ID BACKUP TIME BACKUP SIZE WAL(s) SIZE +WAL FILES STATUS +dev 1428933278236 2015-04-13 09:54:40 EDT 5.65 MB 16.00 MB +1 active +dev 1428862187757 2015-04-12 14:09:50 EDT 5.65 MB 32.00 MB +2 active +dev 1428768351638 2015-04-11 12:05:54 EDT 5.65 MB 32.00 MB +2 active +dev 1428502171990 2015-04-08 10:09:34 EDT 5.65 MB 80.00 MB +5 keep +``` + +## Managing Incremental Backups + +This section illustrates evaluating, marking, and deleting incremental backups using the `MANAGE` and `DELETE` subcommands utilizing redundancy retention policy and recovery window retention policy. For detailed information about the `MANAGE` and `DELETE` subcommands, as well as the redundancy retention and recovery window retention policy, see the *EDB Backup and Recovery User Guide* available at the [EDB website](/bart/latest/bart_user/). + +- [Using a Redundancy Retention Policy](#redundancy_retention_policy) provides an example of using the `MANAGE` and `DELETE` subcommands when a 3 backup redundancy retention policy is in effect. +- [Using a Recovery Window Retention Policy](#recovery_window_retention_policy) provides an example of using the `MANAGE` and `DELETE` subcommands when a 1-day recovery window retention policy is in effect. + + + +### Using a Redundancy Retention Policy + +The following code sample uses the `MANAGE` and `DELETE` subcommands to evaluate, mark, and delete incremental backups when a 3 backup redundancy retention policy is in effect. The example uses the following server configuration: + +```text +[ACCTG] + +host = 192.168.2.24 +port = 5445 +user = enterprisedb +cluster_owner = enterprisedb +remote_host = enterprisedb@192.168.2.24 +allow_incremental_backups = enabled +retention_policy = 3 BACKUPS +description = "Accounting" +``` + +The example uses the following set of backups. In these code samples, some columns have been omitted from the `SHOW-BACKUPS` output to display the relevant information in a more observable manner. + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME ... STATUS +acctg 1481749696905 ... 1481749673603 2016-12-14 16:08:17 EST ... active +acctg 1481749673603 ... 1481749651927 2016-12-14 16:07:53 EST ... active +acctg 1481749651927 ... 1481749619582 2016-12-14 16:07:32 EST ... active +acctg 1481749619582 ... none 2016-12-14 16:07:00 EST ... active +``` + +There is one backup chain. The first backup is the initial full backup. + +Backup chain: `1481749619582 => 1481749651927 => 1481749673603 => 1481749696905` + +The `MANAGE` subcommand is invoked as shown by the following: + +```text +-bash-4.2$ bart MANAGE -s acctg +INFO: processing server 'acctg', backup '1481749619582' +INFO: 2 Unused WAL file(s) present +INFO: 4 Unused file(s) (WALs included) present, use 'MANAGE -l' for the +list +``` + +The following code sample shows the resulting status of the backups: + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME ... STATUS +acctg 1481749696905 ... 1481749673603 2016-12-14 16:08:17 EST ... active +acctg 1481749673603 ... 1481749651927 2016-12-14 16:07:53 EST ... active +acctg 1481749651927 ... 1481749619582 2016-12-14 16:07:32 EST ... active +acctg 1481749619582 ... none 2016-12-14 16:07:00 EST ... active +``` + +The status remains active for all backups. Even though the total number of backups exceeds the 3 backup redundancy retention policy, it is only the total number of full backups that is used to determine if the redundancy retention policy has been exceeded. Additional full backups are added including a second backup chain. The following example shows the resulting list of backups: + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME ... STATUS +acctg 1481750365397 ... none 2016-12-14 16:19:26 EST ... active +acctg 1481750098924 ... 1481749997807 2016-12-14 16:14:59 EST ... active +acctg 1481749997807 ... none 2016-12-14 16:13:18 EST ... active +acctg 1481749992003 ... none 2016-12-14 16:13:12 EST ... active +acctg 1481749696905 ... 1481749673603 2016-12-14 16:08:17 EST ... active +acctg 1481749673603 ... 1481749651927 2016-12-14 16:07:53 EST ... active +acctg 1481749651927 ... 1481749619582 2016-12-14 16:07:32 EST ... active +acctg 1481749619582 ... none 2016-12-14 16:07:00 EST ... active +``` + +Second backup chain: `1481749997807 => 1481750098924` + +The `MANAGE` subcommand is invoked, but now with a total of four active full backups. + +```text +-bash-4.2$ bart MANAGE -s acctg +INFO: processing server 'acctg', backup '1481750365397' +INFO: processing server 'acctg', backup '1481749997807' +INFO: processing server 'acctg', backup '1481749992003' +INFO: processing server 'acctg', backup '1481749619582' +INFO: marking backup '1481749619582' as obsolete +INFO: 3 incremental(s) of backup '1481749619582' will be marked obsolete +INFO: marking incremental backup '1481749696905' as obsolete +INFO: marking incremental backup '1481749673603' as obsolete +INFO: marking incremental backup '1481749651927' as obsolete +INFO: 4 WAL file(s) marked obsolete +INFO: 2 Unused WAL file(s) present +INFO: 4 Unused file(s) (WALs included) present, use 'MANAGE -l' for the +list +``` + +The oldest full backup and its chain of incremental backups are now marked as obsolete. + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME ... STATUS +acctg 1481750365397 ... none 2016-12-14 16:19:26 EST ... active +acctg 1481750098924 ... 1481749997807 2016-12-14 16:14:59 EST ... active +acctg 1481749997807 ... none 2016-12-14 16:13:18 EST ... active +acctg 1481749992003 ... none 2016-12-14 16:13:12 EST ... active +acctg 1481749696905 ... 1481749673603 2016-12-14 16:08:17 EST ... obsolete +acctg 1481749673603 ... 1481749651927 2016-12-14 16:07:53 EST ... obsolete +acctg 1481749651927 ... 1481749619582 2016-12-14 16:07:32 EST ... obsolete +acctg 1481749619582 ... none 2016-12-14 16:07:00 EST ... obsolete +``` + +Invoking the `MANAGE` subcommand with the `-d` option deletes the entire obsolete backup chain. + +```text +-bash-4.2$ bart MANAGE -s acctg -d +INFO: removing all obsolete backups of server 'acctg' +INFO: removing obsolete backup '1481749619582' +INFO: 4 WAL file(s) will be removed +INFO: 3 incremental(s) of backup '1481749619582' will be removed +INFO: removing obsolete incremental backup '1481749696905' +INFO: removing obsolete incremental backup '1481749673603' +INFO: removing obsolete incremental backup '1481749651927' +INFO: removing WAL file '000000010000000100000000' +INFO: removing WAL file '0000000100000000000000FF' +INFO: removing WAL file '0000000100000000000000FE' +INFO: removing WAL file '0000000100000000000000FD' +INFO: 16 Unused file(s) will be removed +INFO: removing (unused) file '000000010000000100000004.00000028.backup' +. +. +. +INFO: removing (unused) file +'0000000100000000FB00002800000000FC000000.mbm' +``` + +The following code sample shows the remaining full backups and the second backup chain. + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME ... STATUS +acctg 1481750365397 ... none 2016-12-14 16:19:26 EST ... active +acctg 1481750098924 ... 1481749997807 2016-12-14 16:14:59 EST ... active +acctg 1481749997807 ... none 2016-12-14 16:13:18 EST ... active +acctg 1481749992003 ... none 2016-12-14 16:13:12 EST ... active +``` + + + +### Using a Recovery Window Retention Policy + +The following example demonstrates using the `MANAGE` and `DELETE` subcommands to evaluate, mark, and delete incremental backups when a 1-day recovery window retention policy is in effect. The example uses the following server configuration: + +```text +[ACCTG] + +host = 192.168.2.24 +port = 5445 +user = enterprisedb +cluster_owner = enterprisedb +remote_host = enterprisedb@192.168.2.24 +allow_incremental_backups = enabled +retention_policy = 1 DAYS +description = "Accounting" +``` + +The example uses the following set of backups. In the samples, some columns have been omitted from the `SHOW-BACKUPS` output to display the relevant information in a more observable manner. + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME ... STATUS +acctg 1481559303348 ... 1481554203288 2016-12-12 11:15:03 EST ... active +acctg 1481559014359 ... 1481554802918 2016-12-12 11:10:14 EST ... active +acctg 1481554802918 ... 1481553914533 2016-12-12 10:00:03 EST ... active +acctg 1481554203288 ... 1481553651165 2016-12-12 09:50:03 EST ... active +acctg 1481553914533 ... 1481553088053 2016-12-12 09:45:14 EST ... active +acctg 1481553651165 ... none 2016-12-12 09:40:51 EST ... active +acctg 1481553088053 ... 1481552078404 2016-12-12 09:31:28 EST ... active +acctg 1481552078404 ... none 2016-12-12 09:14:39 EST ... active +``` + +There are two backup chains. In each of the following chains, the first backup is the initial full backup. + +First backup chain: `1481552078404 => 1481553088053 => 1481553914533 => 1481554802918 => 1481559014359` + +Second backup chain: `1481553651165 => 1481554203288 => 1481559303348` + +The `MANAGE` subcommand is invoked when the first full backup `1481552078404` falls out of the recovery window. When the `MANAGE` subcommand is invoked, it is `2016-12-13 09:20:03 EST`, thus making the start of the 1-day recovery window at `2016-12-12 09:20:03 EST` exactly one day earlier. This backup was taken at `2016-12-12 09:14:39 EST`, which is about 5 ½ minutes before the start of the recovery window, thus making the backup obsolete. + +```text +-bash-4.2$ date +Tue Dec 13 09:20:03 EST 2016 +-bash-4.2$ bart MANAGE -s acctg +INFO: processing server 'acctg', backup '1481553651165' +INFO: processing server 'acctg', backup '1481552078404' +INFO: marking backup '1481552078404' as obsolete +INFO: 4 incremental(s) of backup '1481552078404' will be marked obsolete +INFO: marking incremental backup '1481559014359' as obsolete +INFO: marking incremental backup '1481554802918' as obsolete +INFO: marking incremental backup '1481553914533' as obsolete +INFO: marking incremental backup '1481553088053' as obsolete +INFO: 7 WAL file(s) marked obsolete +INFO: 1 Unused WAL file(s) present +INFO: 2 Unused file(s) (WALs included) present, use 'MANAGE -l' for the list +``` + +The incremental backup date and time are within the recovery window since they were taken after the start of the recovery window of `2016-12-12 09:20:03 EST`, but all backups in the chain are marked as `obsolete`. + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg\ +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME +... STATUS +acctg 1481559303348 ... 1481554203288 2016-12-12 11:15:03 EST +... active +acctg 1481559014359 ... 1481554802918 2016-12-12 11:10:14 EST +... obsolete +acctg 1481554802918 ... 1481553914533 2016-12-12 10:00:03 EST +... obsolete +acctg 1481554203288 ... 1481553651165 2016-12-12 09:50:03 EST +... active +acctg 1481553914533 ... 1481553088053 2016-12-12 09:45:14 EST +... obsolete +acctg 1481553651165 ... none 2016-12-12 09:40:51 EST +... active +acctg 1481553088053 ... 1481552078404 2016-12-12 09:31:28 EST +... obsolete +acctg 1481552078404 ... none 2016-12-12 09:14:39 EST +... obsolete +``` + +The following code sample shows how the entire backup chain is changed back to active status by invoking the `MANAGE` subcommand with the `-c nokeep` option on the full backup of the chain. + +```text +-bash-4.2$ bart MANAGE -s acctg -c nokeep -i 1481552078404 +INFO: changing status of backup '1481552078404' of server 'acctg' from +'obsolete' to 'active' +INFO: status of 4 incremental(s) of backup '1481552078404' will be +changed +INFO: changing status of incremental backup '1481559014359' of server +'acctg' from 'obsolete' to 'active' +INFO: changing status of incremental backup '1481554802918' of server +'acctg' from 'obsolete' to 'active' +INFO: changing status of incremental backup '1481553914533' of server +'acctg' from 'obsolete' to 'active' +INFO: changing status of incremental backup '1481553088053' of server +'acctg' from 'obsolete' to 'active' +INFO: 7 WAL file(s) changed +``` + +The backup chain has now been reset to active status. + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME ... STATUS +acctg 1481559303348 ... 1481554203288 2016-12-12 11:15:03 EST ... active +acctg 1481559014359 ... 1481554802918 2016-12-12 11:10:14 EST ... active +acctg 1481554802918 ... 1481553914533 2016-12-12 10:00:03 EST ... active +acctg 1481554203288 ... 1481553651165 2016-12-12 09:50:03 EST ... active +acctg 1481553914533 ... 1481553088053 2016-12-12 09:45:14 EST ... active +acctg 1481553651165 ... none 2016-12-12 09:40:51 EST ... active +acctg 1481553088053 ... 1481552078404 2016-12-12 09:31:28 EST ... active +acctg 1481552078404 ... none 2016-12-12 09:14:39 EST ... active +``` + +The following code sample shows usage of the `DELETE` subcommand on an incremental backup. The specified incremental backup `1481554802918` in the first backup chain as well as its successive incremental backup `1481559014359` are deleted. + +```text +-bash-4.2$ bart DELETE -s acctg -i 1481554802918 +INFO: deleting backup '1481554802918' of server 'acctg' +INFO: deleting backup '1481554802918' +INFO: 1 incremental backup(s) will be deleted +INFO: deleting incremental backup '1481559014359' +INFO: WALs of deleted backup(s) will belong to prior backup(if any), or +will be marked unused +INFO: 2 Unused file(s) will be removed +INFO: removing (unused) file '0000000100000000000000BA' +INFO: removing (unused) file +'0000000100000000BA00002800000000BB000000.mbm' +INFO: backup(s) deleted +``` + +The results show that the backups `1481554802918` and `1481559014359` are no longer listed by the `SHOW-BACKUPS` subcommand. + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME ... STATUS +acctg 1481559303348 ... 1481554203288 2016-12-12 11:15:03 EST ... active +acctg 1481554203288 ... 1481553651165 2016-12-12 09:50:03 EST ... active +acctg 1481553914533 ... 1481553088053 2016-12-12 09:45:14 EST ... active +acctg 1481553651165 ... none 2016-12-12 09:40:51 EST ... active +acctg 1481553088053 ... 1481552078404 2016-12-12 09:31:28 EST ... active +acctg 1481552078404 ... none 2016-12-12 09:14:39 EST ... active +``` + +The `MANAGE` subcommand is invoked again. This time both backup chains are marked `obsolete` since the full backups of both chains fall out of the start of the recovery window, which is now `2016-12-12 09:55:03 EST`. + +```text +-bash-4.2$ date +Tue Dec 13 09:55:03 EST 2016 +-bash-4.2$ bart MANAGE -s acctg +INFO: processing server 'acctg', backup '1481553651165' +INFO: marking backup '1481553651165' as obsolete +INFO: 2 incremental(s) of backup '1481553651165' will be marked obsolete +INFO: marking incremental backup '1481559303348' as obsolete +INFO: marking incremental backup '1481554203288' as obsolete +INFO: 38 WAL file(s) marked obsolete +INFO: processing server 'acctg', backup '1481552078404' +INFO: marking backup '1481552078404' as obsolete +INFO: 2 incremental(s) of backup '1481552078404' will be marked obsolete +INFO: marking incremental backup '1481553914533' as obsolete +INFO: marking incremental backup '1481553088053' as obsolete +INFO: 7 WAL file(s) marked obsolete +``` + +The following code sample shows both backup chains marked as `obsolete`. + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME +... STATUS +acctg 1481559303348 ... 1481554203288 2016-12-12 11:15:03 EST +... obsolete +acctg 1481554203288 ... 1481553651165 2016-12-12 09:50:03 EST +... obsolete +acctg 1481553914533 ... 1481553088053 2016-12-12 09:45:14 EST +... obsolete +acctg 1481553651165 ... none 2016-12-12 09:40:51 EST +... obsolete +acctg 1481553088053 ... 1481552078404 2016-12-12 09:31:28 EST +... obsolete +acctg 1481552078404 ... none 2016-12-12 09:14:39 EST +... obsolete +``` + +The following code sample demonstrates using the `MANAGE` subcommand with the `-c keep` option to keep a backup chain indefinitely. The `MANAGE` subcommand with the `-c keep` option must specify the backup identifier or backup name of the full backup of the chain, and not any incremental backup. + +```text +-bash-4.2$ bart MANAGE -s acctg -c keep -i 1481553651165 +INFO: changing status of backup '1481553651165' of server 'acctg' from +'obsolete' to 'keep' +INFO: status of 2 incremental(s) of backup '1481553651165' will be +changed +INFO: changing status of incremental backup '1481559303348' of server +'acctg' from 'obsolete' to 'keep' +INFO: changing status of incremental backup '1481554203288' of server +'acctg' from 'obsolete' to 'keep' +INFO: 38 WAL file(s) changed +``` + +The full backup `1481553651165` and its successive incremental backups `1481554203288` and `1481559303348` have been changed to `keep` status: + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME +... STATUS +acctg 1481559303348 ... 1481554203288 2016-12-12 11:15:03 EST +... keep +acctg 1481554203288 ... 1481553651165 2016-12-12 09:50:03 EST +... keep +acctg 1481553914533 ... 1481553088053 2016-12-12 09:45:14 EST +... obsolete +acctg 1481553651165 ... none 2016-12-12 09:40:51 EST +... keep +acctg 1481553088053 ... 1481552078404 2016-12-12 09:31:28 EST +... obsolete +acctg 1481552078404 ... none 2016-12-12 09:14:39 EST +... obsolete +``` + +Finally, the `MANAGE` subcommand with the `-d` option is used to delete the `obsolete` backup chain: + +```text +-bash-4.2$ bart MANAGE -s acctg -d +INFO: removing all obsolete backups of server 'acctg' +INFO: removing obsolete backup '1481552078404' +INFO: 7 WAL file(s) will be removed +INFO: 2 incremental(s) of backup '1481552078404' will be removed +INFO: removing obsolete incremental backup '1481553914533' +INFO: removing obsolete incremental backup '1481553088053' +INFO: removing WAL file '0000000100000000000000C1' +INFO: removing WAL file '0000000100000000000000C0' +INFO: removing WAL file '0000000100000000000000BF' +INFO: removing WAL file '0000000100000000000000BE' +INFO: removing WAL file '0000000100000000000000BD' +INFO: removing WAL file '0000000100000000000000BC' +INFO: removing WAL file '0000000100000000000000BB' +INFO: 48 Unused file(s) will be removed +INFO: removing (unused) file '0000000100000000000000FA' +. +. +. +INFO: removing (unused) file '0000000100000000000000BB.00000028.backup' +``` + +Only the backup chain with the `keep` status remains as shown below: + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME +... STATUS +acctg 1481559303348 ... 1481554203288 2016-12-12 11:15:03 EST +... keep +acctg 1481554203288 ... 1481553651165 2016-12-12 09:50:03 EST +... keep +acctg 1481553651165 ... none 2016-12-12 09:40:51 EST +... keep +``` diff --git a/product_docs/docs/bart/2.5.9/bart_ref/03_sample_bart_system_with_local_and_remote_database_servers.mdx b/product_docs/docs/bart/2.5.9/bart_ref/03_sample_bart_system_with_local_and_remote_database_servers.mdx new file mode 100644 index 00000000000..b1527216806 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_ref/03_sample_bart_system_with_local_and_remote_database_servers.mdx @@ -0,0 +1,1385 @@ +--- +title: "Sample BART System with Local and Remote Database Servers" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/sample_bart_system_with_local_and_remote_database_servers.html" +--- + + + +This section describes a sample BART managed backup and recovery system consisting of both local and remote database servers. The complete steps to configure and operate the system are provided. + +For detailed information about configuring a BART system, see the *EDB Backup and Recovery Installation and Upgrade Guide*. For detailed information about the operational procedures and BART subcommands, see the *EDB Backup and Recovery User Guide*. These guides are available at the [EDB website](/bart/latest/bart_inst/). + +The environment for this sample system is as follows: + +- BART on host `192.168.2.22` running with BART user account `enterprisedb` +- Local Advanced Server on host `192.168.2.22` running with user account `enterprisedb` +- Remote Advanced Server on host `192.168.2.24` running with user account `enterprisedb` +- Remote PostgreSQL server on host `192.168.2.24` running with user account `postgres` + +Passwordless SSH/SCP connections are required between the following: + +- BART on host `192.168.2.22` and the local Advanced Server on the same host `192.168.2.22` +- BART on host `192.168.2.22` and the remote Advanced Server on host `192.168.2.24` +- BART on host `192.168.2.22` and the remote PostgreSQL server on host `192.168.2.24` + +The following sections demonstrate configuring and taking full backups only. To support incremental backups as well, enable the `allow_incremental_backups` parameter for the desired database servers and use the `WAL scanner` program. + +- [The BART Configuration File](#bart_configuration_file) shows the settings used in the BART configuration file. +- [Establishing SSH/SCP Passwordless Connections](#establishing-sshscp-passwordless-connections) provides an example of how to establish an SSH/SCP passwordless connection. +- [Configuring a Replication Database User](#configuring-a-replication-database-user) provides an example of how to configure the replication database user. +- [WAL Archiving Configuration Parameters](#wal-archiving-configuration-parameters) provides an example of how to configure WAL archiving. +- [Creating the BART Backup Catalog](#creating-the-bart-backup-catalog-backup_path) provides information about creating a BART Backup Catalog. +- [Starting the Database Servers with WAL Archiving](#starting-the-database-servers-with-wal-archiving) provides example of starting the database servers with WAL archiving. +- [Taking a Full Backup](#taking-a-full-backup) illustrates taking the first full backup of the database servers. +- [Using Point-In-Time Recovery](#using-point-in-time-recovery) demonstrates the point-in-time recovery operation on the remote PostgreSQL database server. + + + +## The BART Configuration File + +The following code sample shows the settings used in the BART configuration file for the examples that follow: + +```text +[BART] +bart_host= enterprisedb@192.168.2.22 +backup_path = /opt/backup +pg_basebackup_path = /usr/edb/as11/bin/pg_basebackup +retention_policy = 6 BACKUPS +logfile = /tmp/bart.log +scanner_logfile = /tmp/bart_scanner.log + +[ACCTG] +host = 127.0.0.1 +port = 5444 +user = enterprisedb +cluster_owner = enterprisedb +backup_name = acctg_%year-%month-%dayT%hour:%minute +archive_command = 'cp %p %a/%f' +description = "Accounting" + +[MKTG] + +host = 192.168.2.24 +port = 5444 +user = repuser +cluster_owner = enterprisedb +backup_name = mktg_%year-%month-%dayT%hour:%minute +remote_host = enterprisedb@192.168.2.24 +description = "Marketing" + +[HR] + +host = 192.168.2.24 +port = 5432 +user = postgres +cluster_owner = postgres +backup_name = hr_%year-%month-%dayT%hour:%minute +remote_host = postgres@192.168.2.24 +copy_wals_during_restore = enabled +description = "Human Resources" +``` + + + +## Establishing SSH/SCP Passwordless Connections + +This section demonstrates how passwordless SSH/SCP connections are established with the authorized public keys files. + + + +### Generating a Public Key File for the BART User Account + +The BART user account is `enterprisedb` with a home directory of `/opt/PostgresPlus/9.6AS`. + +To generate the public key file, as a root user, first create the `.ssh` subdirectory in the BART user’s home directory and assign ownership of this directory to the `enterprisedb` user, ensuring there are no groups or other users that can access the `.ssh` directory. + +```text +[root@localhost 9.6AS]# pwd +/opt/PostgresPlus/9.6AS +[root@localhost 9.6AS]# mkdir .ssh +[root@localhost 9.6AS]# chown enterprisedb .ssh +[root@localhost 9.6AS]# chgrp enterprisedb .ssh +[root@localhost 9.6AS]# chmod 700 .ssh +[root@localhost 9.6AS]# ls -la | grep ssh +drwx------ 2 enterprisedb enterprisedb 4096 Apr 23 13:02 .ssh +``` + +Generate the public key file: + +```text +[user@localhost ~]$ su - enterprisedb +Password: +-bash-4.1$ pwd +/opt/PostgresPlus/9.6AS +-bash-4.1$ ssh-keygen -t rsa +Generating public/private rsa key pair. +Enter file in which to save the key +(/opt/PostgresPlus/9.6AS/.ssh/id_rsa): +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in +/opt/PostgresPlus/9.6AS/.ssh/id_rsa. +Your public key has been saved in +/opt/PostgresPlus/9.6AS/.ssh/id_rsa.pub. +The key fingerprint is: +de:65:34:d6:b1:d2:32:3c:b0:43:c6:a3:c0:9f:f4:64 +enterprisedb@localhost.localdomain +The key's randomart image is: ++----[ RSA 2048]----+ +| . .+ . | +| o .oE+ o o | +| + * o.X + | +| + .+ * | +| S o | +| . . o | +| . . | +| + | +| | ++-------------------+ +``` + +The following are the resulting files. `id_rsa.pub` is the public key file of BART user account `enterprisedb`. + +```text +-bash-4.1$ ls -l .ssh +total 8 +-rw------- 1 enterprisedb enterprisedb 1675 Apr 23 13:04 id_rsa +-rw-r--r-- 1 enterprisedb enterprisedb 416 Apr 23 13:04 id_rsa.pub +``` + +### Configuring Access between Local Advanced Server and the BART Host + +Even when the Advanced Server database is on the same host as the BART user account, and the Advanced Server database cluster owner is also the BART user account (`enterprisedb` is this case), a passwordless SSH/SCP connection must be established from the same user account to itself. + +On the BART host where the public key file was just generated (as shown in [Generating a Public Key File for the BART User Account](#generating-a-public-key-file-for-the-bart-user-account)), create the authorized keys file by appending the public key file to any existing authorized keys file. + +Log into the BART host as the BART user account and append the public key file, `id_rsa.pub` onto the `authorized_keys` file in the same `.ssh` directory. + +```text +[user@localhost ~]$ su - enterprisedb +Password: +Last login: Thu Mar 23 10:27:35 EDT 2017 on pts/0 +-bash-4.2$ pwd +/opt/PostgresPlus/9.6AS +-bash-4.2$ ls -l .ssh +total 12 +-rw------- 1 enterprisedb enterprisedb 1675 Mar 23 09:54 id_rsa +-rw-r--r-- 1 enterprisedb enterprisedb 416 Mar 23 09:54 id_rsa.pub +-rw-r--r-- 1 enterprisedb enterprisedb 345 Mar 23 10:05 known_hosts +-bash-4.2$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys +-bash-4.2$ ls -l .ssh +total 16 +-rw-rw-r-- 1 enterprisedb enterprisedb 416 Mar 23 10:33 authorized_keys +-rw------- 1 enterprisedb enterprisedb 1675 Mar 23 09:54 id_rsa +-rw-r--r-- 1 enterprisedb enterprisedb 416 Mar 23 09:54 id_rsa.pub +-rw-r--r-- 1 enterprisedb enterprisedb 345 Mar 23 10:05 known_hosts +``` + +The `authorized_keys` file must have file permission `600` as set by the following `chmod 600` command, or the passwordless connection will fail: + +```text +-bash-4.2$ chmod 600 ~/.ssh/authorized_keys +-bash-4.2$ ls -l .ssh +total 16 +-rw------- 1 enterprisedb enterprisedb 416 Mar 23 10:33 authorized_keys +-rw------- 1 enterprisedb enterprisedb 1675 Mar 23 09:54 id_rsa +-rw-r--r-- 1 enterprisedb enterprisedb 416 Mar 23 09:54 id_rsa.pub +-rw-r--r-- 1 enterprisedb enterprisedb 345 Mar 23 10:05 known_hosts +``` + +Test the passwordless connection. Use the `ssh` command to verify that you can access the same user account as you are currently logged in as (`enterprisedb`) without being prompted for a password: + +```text +-bash-4.2$ ssh enterprisedb@127.0.0.1 +Last login: Thu Mar 23 10:27:50 2017 +-bash-4.2$ exit +logout +Connection to 127.0.0.1 closed. +``` + +### Configuring Access from Remote Advanced Server to BART Host + +On the remote host `192.168.2.24`, create the public key file for the remote database server user account, `enterprisedb`, for access to the BART user account, `enterprisedb`, on the BART host 192.168.2.22. + +Create the `.ssh` directory for user account `enterprisedb` on the remote host: + +```text +[root@localhost 9.6AS]# pwd +/opt/PostgresPlus/9.6AS +[root@localhost 9.6AS]# mkdir .ssh +[root@localhost 9.6AS]# chown enterprisedb .ssh +[root@localhost 9.6AS]# chgrp enterprisedb .ssh +[root@localhost 9.6AS]# chmod 700 .ssh +[root@localhost 9.6AS]# ls -la | grep ssh +drwx------ 2 enterprisedb enterprisedb 4096 Apr 23 13:08 .ssh +``` + +Generate the public key file on the remote host for user account `enterprisedb`: + +```text +[user@localhost ~]$ su - enterprisedb +Password: +-bash-4.1$ ssh-keygen -t rsa +Generating public/private rsa key pair. +Enter file in which to save the key +(/opt/PostgresPlus/9.6AS/.ssh/id_rsa): +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in +/opt/PostgresPlus/9.6AS/.ssh/id_rsa. +Your public key has been saved in +/opt/PostgresPlus/9.6AS/.ssh/id_rsa.pub. +The key fingerprint is: +15:27:1e:1e:61:4b:48:66:67:0b:b2:be:fc:ea:ea:e6 +enterprisedb@localhost.localdomain +The key's randomart image is: ++--[ RSA 2048]---+ +| ..=.@.. | +| =.O O | +| . * | +| . . | +| . S | +| . . | +| o | +| . . | +| +Eoo.. | ++----------------+ +``` + +Copy the generated public key file, `id_rsa.pub`, to the BART user account, `enterprisedb`, on the BART host, `192.168.2.22`: + +```text +-bash-4.1$ scp ~/.ssh/id_rsa.pub enterprisedb@192.168.2.22:/tmp/tmp.pub +The authenticity of host '192.168.2.22 (192.168.2.22)' can't be +established. +RSA key fingerprint is b8:a9:97:31:79:16:b8:2b:b0:60:5a:91:38:d7:68:22. +Are you sure you want to continue connecting (yes/no)? yes +Warning: Permanently added '192.168.2.22' (RSA) to the list of known hosts. +enterprisedb@192.168.2.22's password: +id_rsa.pub +``` + +Log into the BART host as the BART user account and append the temporary public key file, `/tmp/tmp.pub` onto the `authorized_keys` file owned by the BART user account. + +```text +-bash-4.1$ ssh enterprisedb@192.168.2.22 +enterprisedb@192.168.2.22's password: +Last login: Tue Apr 21 17:03:24 2015 from 192.168.2.22 +-bash-4.1$ pwd +/opt/PostgresPlus/9.6AS +-bash-4.1$ cat /tmp/tmp.pub >> ~/.ssh/authorized_keys +-bash-4.1$ ls -l .ssh +total 12 +-rw-rw-r-- 1 enterprisedb enterprisedb 416 Apr 23 13:15 authorized_keys +-rw------- 1 enterprisedb enterprisedb 1675 Apr 23 13:04 id_rsa +-rw-r--r-- 1 enterprisedb enterprisedb 416 Apr 23 13:04 id_rsa.pub +``` + +The `authorized_keys` file must have file permission `600` as set by the following `chmod 600` command, otherwise the passwordless connection fails: + +```text +-bash-4.1$ chmod 600 ~/.ssh/authorized_keys +-bash-4.1$ ls -l .ssh +total 12 +-rw------- 1 enterprisedb enterprisedb 416 Apr 23 13:15 authorized_keys +-rw------- 1 enterprisedb enterprisedb 1675 Apr 23 13:04 id_rsa +-rw-r--r-- 1 enterprisedb enterprisedb 416 Apr 23 13:04 id_rsa.pub +-bash-4.1$ rm /tmp/tmp.pub +-bash-4.1$ exit +logout +Connection to 192.168.2.22 closed. +``` + +Test the passwordless connection. From the remote host, verify that you can log into the BART host with the BART user account without being prompted for a password: + +```text +-bash-4.1$ ssh enterprisedb@192.168.2.22 +Last login: Thu Apr 23 13:14:48 2015 from 192.168.2.24 +-bash-4.1$ exit +logout +Connection to 192.168.2.22 closed. +``` + +### Configuring Access from the BART Host to a Remote Advanced Server + +On the BART host `192.168.2.22`, copy the public key file for the BART user account, `enterprisedb`, for access to the remote database server user account, `enterprisedb`, on the remote host `192.168.2.24`. + +The following lists the current SSH keys files in the BART user’s `.ssh` directory on the BART host: + +```text +[user@localhost ~]$ su - enterprisedb +Password: +-bash-4.1$ pwd +/opt/PostgresPlus/9.6AS +-bash-4.1$ ls -l .ssh +total 12 +-rw------- 1 enterprisedb enterprisedb 416 Apr 23 13:15 authorized_keys +-rw------- 1 enterprisedb enterprisedb 1675 Apr 23 13:04 id_rsa +-rw-r--r-- 1 enterprisedb enterprisedb 416 Apr 23 13:04 id_rsa.pub +``` + +The public key file, `id_rsa.pub`, for BART user account `enterprisedb` on the BART host that was earlier generated in [Generating a Public Key File for the BART User Account](#generating-a-public-key-file-for-the-bart-user-account), is now copied to the remote Advanced Server host on `192.168.2.24`: + +```text +-bash-4.1$ scp ~/.ssh/id_rsa.pub enterprisedb@192.168.2.24:/tmp/tmp.pub +The authenticity of host '192.168.2.24 (192.168.2.24)' can't be +established. +RSA key fingerprint is 59:41:fb:0c:ae:64:3d:3f:a2:d9:90:95:cf:2c:99:f2. +Are you sure you want to continue connecting (yes/no)? yes +Warning: Permanently added '192.168.2.24' (RSA) to the list of known +hosts. +enterprisedb@192.168.2.24's password: +id_rsa.pub +``` + +Log into the `enterprisedb` user account on the remote host and copy the public key file onto the `authorized_keys` file of the remote `enterprisedb` user account under its `.ssh` directory: + +```text +-bash-4.1$ ssh enterprisedb@192.168.2.24 +enterprisedb@192.168.2.24's password: +Last login: Tue Apr 21 09:53:18 2015 from 192.168.2.22 +-bash-4.1$ pwd +/opt/PostgresPlus/9.6AS +-bash-4.1$ ls -l .ssh +total 12 +-rw------- 1 enterprisedb enterprisedb 1675 Apr 23 13:11 id_rsa +-rw-r--r-- 1 enterprisedb enterprisedb 416 Apr 23 13:11 id_rsa.pub +-rw-r--r-- 1 enterprisedb enterprisedb 394 Apr 23 13:12 known_hosts +-bash-4.1$ cat /tmp/tmp.pub >> ~/.ssh/authorized_keys +``` + +Adjust the file permission on `authorized_keys`: + +```text +-bash-4.1$ chmod 600 ~/.ssh/authorized_keys +-bash-4.1$ ls -l .ssh +total 16 +-rw------- 1 enterprisedb enterprisedb 416 Apr 23 13:26 authorized_keys +-rw------- 1 enterprisedb enterprisedb 1675 Apr 23 13:11 id_rsa +-rw-r--r-- 1 enterprisedb enterprisedb 416 Apr 23 13:11 id_rsa.pub +-rw-r--r-- 1 enterprisedb enterprisedb 394 Apr 23 13:12 known_hosts +-bash-4.1$ rm /tmp/tmp.pub +-bash-4.1$ exit +logout +Connection to 192.168.2.24 closed. +``` + +While logged into the BART host, test the passwordless connection from the BART host to the remote Advanced Server host: + +```text +-bash-4.1$ ssh enterprisedb@192.168.2.24 +Last login: Thu Apr 23 13:25:53 2015 from 192.168.2.22 +-bash-4.1$ exit +logout +Connection to 192.168.2.24 closed. +``` + +### Configuring Access from a Remote PostgreSQL Server to a BART Host + +On the remote host (192.168.2.24), create a public key file owned by the database server user account (`postgres`), allowing access to the BART user account (`enterprisedb`) on the BART host (192.168.2.22). + +Create the `.ssh` directory for the `postgres` user account on the remote host: + +```text +[root@localhost 9.6]# cd /opt/PostgreSQL/9.6 +[root@localhost 9.6]# mkdir .ssh +[root@localhost 9.6]# chown postgres .ssh +[root@localhost 9.6]# chgrp postgres .ssh +[root@localhost 9.6]# chmod 700 .ssh +[root@localhost 9.6]# ls -la | grep ssh +drwx------ 2 postgres postgres 4096 Apr 23 13:32 .ssh +``` + +Create and copy the generated public key file, `id_rsa.pub`, to the BART user account (`enterprisedb`), on the BART host (`192.168.2.22`): + +```text +[user@localhost ~]$ su - postgres +Password: +-bash-4.1$ pwd +/opt/PostgreSQL/9.6 +-bash-4.1$ ssh-keygen -t rsa +Generating public/private rsa key pair. +Enter file in which to save the key (/opt/PostgreSQL/9.6/.ssh/id_rsa): +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in /opt/PostgreSQL/9.6/.ssh/id_rsa. +Your public key has been saved in /opt/PostgreSQL/9.6/.ssh/id_rsa.pub. +The key fingerprint is: +1f:f8:76:d6:fc:a5:1a:c5:5a:66:66:01:d0:a0:ca:ba +postgres@localhost.localdomain +The key's randomart image is: ++--[ RSA 2048]----+ +| o+. | +| . .. | +| . . | +| . . . . . | +| o S . O | +| . o . @ | +| . + = o .| +| . . o . o.| +| E ... .| ++-----------------+ +-bash-4.1$ ls -l .ssh +total 8 +-rw------- 1 postgres postgres 1671 Apr 23 13:36 id_rsa +-rw-r--r-- 1 postgres postgres 412 Apr 23 13:36 id_rsa.pub +-bash-4.1$ scp ~/.ssh/id_rsa.pub enterprisedb@192.168.2.22:/tmp/tmp.pub +The authenticity of host '192.168.2.22 (192.168.2.22)' can't be +established. +RSA key fingerprint is b8:a9:97:31:79:16:b8:2b:b0:60:5a:91:38:d7:68:22. +Are you sure you want to continue connecting (yes/no)? yes +Warning: Permanently added '192.168.2.22' (RSA) to the list of known +hosts. +enterprisedb@192.168.2.22's password: +id_rsa.pub +``` + +Log into the BART host as the BART user account and append the temporary public key file, `/tmp/tmp.pub`, onto the `authorized_keys` file owned by the BART user account. + +```text +-bash-4.1$ ssh enterprisedb@192.168.2.22 +enterprisedb@192.168.2.22's password: +Last login: Thu Apr 23 13:19:25 2015 from 192.168.2.24 +-bash-4.1$ pwd +/opt/PostgresPlus/9.6AS +-bash-4.1$ cat /tmp/tmp.pub >> ~/.ssh/authorized_keys +-bash-4.1$ ls -l .ssh +total 16 +-rw------- 1 enterprisedb enterprisedb 828 Apr 23 13:40 authorized_keys +-rw------- 1 enterprisedb enterprisedb 1675 Apr 23 13:04 id_rsa +-rw-r--r-- 1 enterprisedb enterprisedb 416 Apr 23 13:04 id_rsa.pub +-rw-r--r-- 1 enterprisedb enterprisedb 394 Apr 23 13:24 known_hosts +-bash-4.1$ rm /tmp/tmp.pub +-bash-4.1$ exit +logout +Connection to 192.168.2.22 closed. +``` + +Make sure the `authorized_keys` file has file permission 600 as shown, or the passwordless connection will fail. Test the passwordless connection; from the remote host, while logged in as user account `postgres`, verify that you can log into the BART host with the BART user account without being prompted for a password: + +```text +-bash-4.1$ pwd +/opt/PostgreSQL/9.6 +-bash-4.1$ ssh enterprisedb@192.168.2.22 +Last login: Thu Apr 23 13:40:10 2015 from 192.168.2.24 +-bash-4.1$ exit +logout +Connection to 192.168.2.22 closed. +``` + +### Configuring Access from the BART Host to Remote PostgreSQL + +Copy the public key file on the BART host that is owned by the BART user account (`enterprisedb`) to the remote database server user account (`postgres`), on the remote host (192.168.2.24). + +The following lists the current SSH keys files in the BART user’s `.ssh` directory on the BART host: + +```text +[user@localhost ~]$ su - enterprisedb +Password: +-bash-4.1$ ls -l .ssh +total 16 +-rw------- 1 enterprisedb enterprisedb 828 Apr 23 13:40 authorized_keys +-rw------- 1 enterprisedb enterprisedb 1675 Apr 23 13:04 id_rsa +-rw-r--r-- 1 enterprisedb enterprisedb 416 Apr 23 13:04 id_rsa.pub +-rw-r--r-- 1 enterprisedb enterprisedb 394 Apr 23 13:24 known_hosts +``` + +The public key file, `id_rsa.pub`, for BART user account `enterprisedb` on the BART host that was earlier generated in [Generating a Public Key File for the BART User Account](#generating-a-public-key-file-for-the-bart-user-account), now resides on the remote PostgreSQL host: + +```text +-bash-4.1$ scp ~/.ssh/id_rsa.pub postgres@192.168.2.24:/tmp/tmp.pub +postgres@192.168.2.24's password: +id_rsa.pub +``` + +Log into the `postgres` user account on the remote host and copy the public key file onto the `authorized_keys` file of `postgres` under its `.ssh` directory: + +```text +-bash-4.1$ ssh postgres@192.168.2.24 +postgres@192.168.2.24's password: +Last login: Mon Jan 26 18:08:36 2015 from 192.168.2.19 +-bash-4.1$ pwd +/opt/PostgreSQL/9.6 +-bash-4.1$ cat /tmp/tmp.pub >> ~/.ssh/authorized_keys +``` + +Adjust the file permissions on `authorized_keys`: + +```text +-bash-4.1$ ls -l .ssh +total 16 +-rw-rw-r-- 1 postgres postgres 416 Apr 23 13:52 authorized_keys +-rw------- 1 postgres postgres 1671 Apr 23 13:36 id_rsa +-rw-r--r-- 1 postgres postgres 412 Apr 23 13:36 id_rsa.pub +-rw-r--r-- 1 postgres postgres 394 Apr 23 13:36 known_hosts +-bash-4.1$ chmod 600 ~/.ssh/authorized_keys +-bash-4.1$ ls -l .ssh +total 16 +-rw------- 1 postgres postgres 416 Apr 23 13:52 authorized_keys +-rw------- 1 postgres postgres 1671 Apr 23 13:36 id_rsa +-rw-r--r-- 1 postgres postgres 412 Apr 23 13:36 id_rsa.pub +-rw-r--r-- 1 postgres postgres 394 Apr 23 13:36 known_hosts +-bash-4.1$ rm /tmp/tmp.pub +-bash-4.1$ exit +logout +Connection to 192.168.2.24 closed. +``` + +Test the passwordless connection from the BART host to the remote PostgreSQL host: + +```text +[user@localhost ~]$ su - enterprisedb +Password: +-bash-4.1$ ssh postgres@192.168.2.24 +Last login: Thu Apr 23 13:52:25 2015 from 192.168.2.22 +-bash-4.1$ exit +logout +Connection to 192.168.2.24 closed. +``` + + + +## Configuring a Replication Database User + +This section demonstrates how a replication database user is established. + +**All database servers must use a superuser as the replication database user.** + +The replication database user for each database server is specified by the `user` parameter in the BART configuration file as shown by the following: + +```text +[ACCTG] + +host = 127.0.0.1 +port = 5444 +user = enterprisedb <=== Replication Database User +cluster_owner = enterprisedb +backup_name = acctg_%year-%month-%dayT%hour:%minute +archive_command = 'cp %p %a/%f' +description = "Accounting" + +[MKTG] +host = 192.168.2.24 +port = 5444 +user = repuser <=== Replication Database User +cluster_owner = enterprisedb +backup_name = mktg_%year-%month-%dayT%hour:%minute +remote_host = enterprisedb@192.168.2.24 +description = "Marketing" + +[HR] + +host = 192.168.2.24 +port = 5432 +user = postgres <=== Replication Database User +cluster_owner = enterprisedb +backup_name = hr_%year-%month-%dayT%hour:%minute +remote_host = postgres@192.168.2.24 +copy_wals_during_restore = enabled +description = "Human Resources" +``` + +Add entries to the `.pgpass` file on each server to allow the BART user account to initiate a backup without being prompted for credentials. The `.pgpass` file is located in `/opt/PostgresPlus/9.6AS/.pgpass`: + +```text +127.0.0.1:5444:*:enterprisedb:password +192.168.2.24:5444:*:repuser:password +192.168.2.24:5432:*:postgres:password +``` + +For more information about using a `.pgpass` file, please see the [PostgreSQL documentation](https://www.postgresql.org/docs/current/libpq-pgpass.html). + +While connected to `MKTG` on 192.168.2.24, execute the following `CREATE ROLE` command to create the replication database superuser: + +```text +CREATE ROLE repuser WITH LOGIN SUPERUSER PASSWORD 'password'; +``` + +Access is granted in the `pg_hba.conf` file for the local Advanced Server: + +```text +# TYPE DATABASE USER ADDRESS METHOD +# "local" is for Unix domain socket connections only +local all all md5 +# IPv4 local connections: +host template1 enterprisedb 127.0.0.1/32 md5 +host edb enterprisedb 127.0.0.1/32 md5 +#host all all 127.0.0.1/32 md5 +# IPv6 local connections: +host all all ::1/128 md5 +# Allow replication connections from localhost, by a user with the +# replication privilege. +#local replication enterprisedb md5 +host replication enterprisedb 127.0.0.1/32 md5 +``` + +Similarly, access is granted in the `pg_hba.conf` file for the remote Advanced Server installation: + +```text +# TYPE DATABASE USER ADDRESS METHOD +# "local" is for Unix domain socket connections only +local all all md5 +# IPv4 local connections: +host template1 repuser 192.168.2.22/32 md5 +host all enterprisedb 127.0.0.1/32 md5 +#host all all 127.0.0.1/32 md5 +# IPv6 local connections: +host all all ::1/128 md5 +# Allow replication connections from localhost, by a user with the +# replication privilege. +#local replication enterprisedb md5 +host replication repuser 192.168.2.22/32 md5 +``` + +Access is also granted in the `pg_hba.conf` file for the remote PostgreSQL server: + +```text +# TYPE DATABASE USER ADDRESS METHOD +# "local" is for Unix domain socket connections only +local all all md5 +# IPv4 local connections: +host template1 postgres 192.168.2.22/32 md5 +host all all 127.0.0.1/32 md5 +# IPv6 local connections: +host all all ::1/128 md5 +# Allow replication connections from localhost, by a user with the +q# replication privilege. +#local replication postgres md5 +host replication postgres 192.168.2.22/32 md5 +``` + + + +## WAL Archiving Configuration Parameters + +Use the following parameters in the `postgresql.conf` file to enable WAL archiving. The `postgresql.conf` file for the local Advanced Server database (`ACCTG`) is set as follows: + +```text +wal_level = archive +archive_mode = on # allows archiving to be done + # (change requires restart) +#archive_command = '' # command to use to archive + a logfile segment + # placeholders: %p = path of + file to archive + # %f = file name only +max_wal_senders = 3 +``` + +When the `INIT` subcommand is invoked, the Postgres `archive_command` configuration parameter in the `postgresql.auto.conf` file will be set based on the BART `archive_command` parameter located in the BART configuration file. + +!!! Note + If the Postgres `archive_command` is already set, invoke the `INIT` subcommand with the `-- no-configure` option to prevent the `archive_command` from being reset. For details, see [INIT](../bart_user/03_using_bart/03_basic_bart_subcommand_usage/02_init/#init). + +```text +[BART] +bart_host= enterprisedb@192.168.2.22 +backup_path = /opt/backup +pg_basebackup_path = /usr/edb/as11/bin/pg_basebackup +retention_policy = 6 BACKUPS +logfile = /tmp/bart.log +scanner_logfile = /tmp/bart_scanner.log + +[ACCTG] +host = 127.0.0.1 +port = 5444 +user = enterprisedb +cluster_owner = enterprisedb +backup_name = acctg_%year-%month-%dayT%hour:%minute +archive_command = 'cp %p %a/%f' +description = "Accounting" +``` + +When the `INIT` subcommand is invoked, the `postgresql.auto.conf` file contains the following: + +```text +# Do not edit this file manually! +# It will be overwritten by ALTER SYSTEM command. +archive_command = 'cp %p /opt/backup/acctg/archived_wals/%f' +``` + +The `archive_command` uses the `cp` command instead of `scp` since the BART backup catalog is local to this database cluster and the BART user account (the account that owns the backup catalog, `enterprisedb`), is the same user account running Advanced Server. The result is that there is no directory permission conflict during the archive operation. + +The `postgresql.conf` file for the remote Advanced Server, `MKTG` is set as follows: + +```text +wal_level = archive +archive_mode = on # allows archiving to be done + # (change requires restart) +archive_command = '' # command to use to archive a + logfile segment + # placeholders: %p = path of + file to archive + # %f = file name only +max_wal_senders = 3 +``` + +When the `INIT` subcommand is invoked, the Postgres `archive_command` configuration parameter in the `postgresql.auto.conf` file will be set by the default BART format of the BART `archive_command` parameter (since it is not explicitly set for this database server in the BART configuration file). + +```text +[BART] +bart_host= enterprisedb@192.168.2.22 +backup_path = /opt/backup +pg_basebackup_path = /usr/edb/as11/bin/pg_basebackup +retention_policy = 6 BACKUPS +logfile = /tmp/bart.log +scanner_logfile = /tmp/bart_scanner.log +. +. +. +[MKTG] + +host = 192.168.2.24 +port = 5444 +user = repuser +cluster_owner = enterprisedb +backup_name = mktg_%year-%month-%dayT%hour:%minute +remote_host = enterprisedb@192.168.2.24 +description = "Marketing" +``` + +The default BART `archive_command` format is: + +```text +archive_command = 'scp %p %h:%a/%f' +``` + +The `postgresql.auto.conf` file contains the following after the `INIT` subcommand is invoked: + +```text +# Do not edit this file manually! +# It will be overwritten by ALTER SYSTEM command. +archive_command = 'scp %p +enterprisedb@192.168.2.22:/opt/backup/hr/archived_wals/%f' +``` + +The `archive_command` uses the `scp` command since the BART backup catalog is remote relative to this database cluster. The BART user account, `enterprisedb`, is specified on the `scp` command since this is the user account owning the BART backup catalog where the archived WAL files are to be copied. The result is that there is no directory permission conflict during the archive operation. + +The `postgresql.conf` file for the remote PostgreSQL server (`HR`) is set as follows: + +```text +wal_level = archive +archive_mode = on # allows archiving to be done + # (change requires restart) +#archive_command = '' # command to use to archive a + logfile segment + # placeholders: %p = path of + file to archive + # %f = file name only +max_wal_senders = 3 +``` + +When the `INIT` subcommand is invoked, the Postgres `archive_command` configuration parameter in the `postgresql.auto.conf` file will be set by the default BART format of the BART `archive_command` parameter (since it is not explicitly set for this database server in the BART configuration file): + +```text +[BART] + +bart_host= enterprisedb@192.168.2.22 +backup_path = /opt/backup +pg_basebackup_path = /usr/edb/as11/bin/pg_basebackup +retention_policy = 6 BACKUPS +logfile = /tmp/bart.log +scanner_logfile = /tmp/bart_scanner.log +. +. +. +[HR] + +host = 192.168.2.24 +port = 5432 +user = postgres +cluster_owner = postgres +backup_name = hr_%year-%month-%dayT%hour:%minute +remote_host = postgres@192.168.2.24 +copy_wals_during_restore = enabled +description = "Human Resources" +``` + +The default BART `archive_command` format is: + +```text +archive_command = 'scp %p %h:%a/%f' +``` + +The `postgresql.auto.conf` file contains the following after the `INIT` subcommand is invoked: + +```text +# Do not edit this file manually! +# It will be overwritten by ALTER SYSTEM command. +archive_command = 'scp %p +enterprisedb@192.168.2.22:/opt/backup/hr/archived_wals/%f' +``` + +The `archive_command` uses the `scp` command since the BART backup catalog is remote relative to this database cluster. The BART user account, `enterprisedb`, is specified on the `scp` command since this is the user account owning the BART backup catalog where the archived WAL files are to be copied. The result is that there is no directory permission conflict during the archive operation. + + + +## Creating the BART Backup Catalog (backup_path) + +Create the directory specified by the `backup_path` configuration parameter. + +```text +[BART] + +bart_host= enterprisedb@192.168.2.22 +backup_path = /opt/backup +pg_basebackup_path = /usr/edb/as11/bin/pg_basebackup +retention_policy = 6 BACKUPS +logfile = /tmp/bart.log +scanner_logfile = /tmp/bart_scanner.log +``` + +Ensure that the directory is owned by the BART user account: + +```text +[root@localhost opt]# pwd +/opt +[root@localhost opt]# mkdir backup +[root@localhost opt]# chown enterprisedb backup +[root@localhost opt]# chgrp enterprisedb backup +[root@localhost opt]# chmod 700 backup +[root@localhost opt]# ls -l | grep backup +drwx------ 2 enterprisedb enterprisedb 4096 Apr 23 15:36 backup +``` + +Use the BART `INIT` subcommand to complete the directory structure and set the Postgres `archive_command` configuration parameter. + +Before invoking any BART subcommands, set up a profile under the BART user account’s home directory to set the `LD_LIBRARY_PATH` and `PATH` environment variables. For more information regarding setting this variable, see the EDB Backup and Recovery Installation and Upgrade Guide available at the [EDB website](/bart/latest/bart_inst/). + +The `-o` option is specified with the `INIT` subcommand to force the setting of the Postgres `archive_command` configuration parameter when `archive_mode` is `off` or if the Postgres `archive_command` parameter is already set and needs to be overridden. + +```text +[user@localhost ~]$ su - enterprisedb +Password: +-bash-4.1$ bart INIT -o +INFO: setting archive_command for server 'acctg' +WARNING: archive_command is set. server restart is required +INFO: setting archive_command for server 'hr' +WARNING: archive_command is set. server restart is required +INFO: setting archive_command for server 'mktg' +WARNING: archive_command is set. server restart is required +``` + +The BART `SHOW-SERVERS` subcommand displays the following: + +```text +-bash-4.1$ bart SHOW-SERVERS +SERVER NAME : acctg +BACKUP FRIENDLY NAME: acctg_%year-%month-%dayT%hour:%minute +HOST NAME : 127.0.0.1 +USER NAME : enterprisedb +PORT : 5444 +REMOTE HOST : +RETENTION POLICY : 6 Backups +DISK UTILIZATION : 0.00 bytes +NUMBER OF ARCHIVES : 0 +ARCHIVE PATH : /opt/backup/acctg/archived_wals +ARCHIVE COMMAND : (disabled) +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +INCREMENTAL BACKUP : DISABLED +DESCRIPTION : "Accounting" +SERVER NAME : hr +BACKUP FRIENDLY NAME: hr_%year-%month-%dayT%hour:%minute +HOST NAME : 192.168.2.24 +USER NAME : postgres +PORT : 5432 +REMOTE HOST : postgres@192.168.2.24 +RETENTION POLICY : 6 Backups +DISK UTILIZATION : 0.00 bytes +NUMBER OF ARCHIVES : 0 +ARCHIVE PATH : /opt/backup/hr/archived_wals +ARCHIVE COMMAND : (disabled) +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +INCREMENTAL BACKUP : DISABLED +DESCRIPTION : "Human Resources" +SERVER NAME : mktg +BACKUP FRIENDLY NAME: mktg_%year-%month-%dayT%hour:%minute +HOST NAME : 192.168.2.24 +USER NAME : repuser +PORT : 5444 +REMOTE HOST : enterprisedb@192.168.2.24 +RETENTION POLICY : 6 Backups +DISK UTILIZATION : 0.00 bytes +NUMBER OF ARCHIVES : 0 +ARCHIVE PATH : /opt/backup/mktg/archived_wals +ARCHIVE COMMAND : (disabled) +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +INCREMENTAL BACKUP : DISABLED +DESCRIPTION : "Marketing" +-bash-4.1$ cd /opt/backup +-bash-4.1$ pwd +/opt/backup +-bash-4.1$ ls -l +total 12 +drwxrwxr-x 3 enterprisedb enterprisedb 4096 Mar 29 13:16 acctg +drwxrwxr-x 3 enterprisedb enterprisedb 4096 Mar 29 13:16 hr +drwxrwxr-x 3 enterprisedb enterprisedb 4096 Mar 29 13:16 mktg +-bash-4.1$ ls -l acctg +total 4 +drwxrwxr-x 2 enterprisedb enterprisedb 4096 Mar 29 13:16 archived_wals +-bash-4.1$ ls -l hr +total 4 +drwxrwxr-x 2 enterprisedb enterprisedb 4096 Mar 29 13:16 archived_wals +-bash-4.1$ ls -l mktg +total 4 +drwxrwxr-x 2 enterprisedb enterprisedb 4096 Mar 29 13:16 archived_wals +``` + +The `ARCHIVE PATH` field displays the full directory path to where the WAL files are copied. This directory path must match the directory path specified in the Postgres `archive_command` parameter of the `postgresql.conf` file or the `postgresql.auto.conf` file of each database server. + + + +### Starting the Database Servers with WAL Archiving + +After the BART backup catalog directory structure has been configured, start the archiving of WAL files from the database servers by restarting each database server. + +On BART host 192.168.2.22: + +```text +[root@localhost data]# service ppas-9.6 restart +``` + +On remote host 192.168.2.24: + +```text +[root@localhost data]# service ppas-9.6 restart + +[root@localhost data]# service postgresql-9.6 restart +``` + +In the BART backup catalog, verify that the WAL files are archiving. + +Archived WAL files may not appear very frequently depending upon how often WAL archiving is set to switch to a new segment file with the `archive_timeout` parameter in your database server configuration settings. + +Verify that there are no archiving-related errors in the database server log files. + +## Taking a Full Backup + +The following code sample shows the first full backup of the database servers. + +```text +-bash-4.1$ bart BACKUP -s acctg -z +INFO: creating backup for server 'acctg' +INFO: backup identifier: '1490809695281' +60776/60776 kB (100%), 1/1 tablespace + +INFO: backup completed successfully +INFO: backup checksum: 37f3defb98ca88dcf05079815555dfc2 of base.tar.gz +INFO: +BACKUP DETAILS: +BACKUP STATUS: active +BACKUP IDENTIFIER: 1490809695281 +BACKUP NAME: acctg_2017-03-29T13:48 +BACKUP PARENT: none +BACKUP LOCATION: /opt/backup/acctg/1490809695281 +BACKUP SIZE: 6.10 MB +BACKUP FORMAT: tar.gz +BACKUP TIMEZONE: US/Eastern +XLOG METHOD: fetch +BACKUP CHECKSUM(s): 1 +ChkSum File +37f3defb98ca88dcf05079815555dfc2 base.tar.gz + +TABLESPACE(s): 0 +START WAL LOCATION: 000000010000000000000004 +STOP WAL LOCATION: 000000010000000000000004 +BACKUP METHOD: streamed +BACKUP FROM: primary +START TIME: 2017-03-29 13:48:15 EDT +STOP TIME: 2017-03-29 13:48:17 EDT +TOTAL DURATION: 2 sec(s) + +-bash-4.1$ bart BACKUP -s mktg -z +INFO: creating backup for server 'mktg' +INFO: backup identifier: '1490809751193' +61016/61016 kB (100%), 1/1 tablespace + +INFO: backup completed successfully +INFO: backup checksum: 8b010e130a105e76d01346bb56dfcf14 of base.tar.gz +INFO: +BACKUP DETAILS: +BACKUP STATUS: active +BACKUP IDENTIFIER: 1490809751193 +BACKUP NAME: mktg_2017-03-29T13:49 +BACKUP PARENT: none +BACKUP LOCATION: /opt/backup/mktg/1490809751193 +BACKUP SIZE: 6.13 MB +BACKUP FORMAT: tar.gz +BACKUP TIMEZONE: US/Eastern +XLOG METHOD: fetch +BACKUP CHECKSUM(s): 1 +ChkSum File +8b010e130a105e76d01346bb56dfcf14 base.tar.gz + +TABLESPACE(s): 0 +START WAL LOCATION: 000000010000000100000085 +BACKUP METHOD: streamed +BACKUP FROM: primary +START TIME: 2017-03-29 13:49:11 EDT +STOP TIME: 2017-03-29 13:49:14 EDT +TOTAL DURATION: 3 sec(s) + +-bash-4.1$ bart BACKUP -s hr -z +INFO: creating backup for server 'hr' +INFO: backup identifier: '1490809824946' +38991/38991 kB (100%), 1/1 tablespace +INFO: backup completed successfully +INFO: backup checksum: 277e8a1a80ba3474f541eb316a417c9a of base.tar.gz +INFO: +BACKUP DETAILS: +BACKUP STATUS: active +BACKUP IDENTIFIER: 1490809824946 +BACKUP NAME: hr_2017-03-29T13:50 +BACKUP PARENT: none +BACKUP LOCATION: /opt/backup/hr/1490809824946 +BACKUP SIZE: 2.59 MB +BACKUP FORMAT: tar.gz +BACKUP TIMEZONE: US/Eastern +XLOG METHOD: fetch +BACKUP CHECKSUM(s): 1 +ChkSum File +277e8a1a80ba3474f541eb316a417c9a base.tar.gz + +TABLESPACE(s): 0 +START WAL LOCATION: 000000010000000000000002 +BACKUP METHOD: streamed +BACKUP FROM: primary +START TIME: 2017-03-29 13:50:25 EDT +STOP TIME: 2017-03-29 13:50:26 EDT +TOTAL DURATION: 1 sec(s) +``` + +The following code sample shows the backup directories created for each backup of each database server. The backup ID is used as the backup directory name. + +```text +-bash-4.1$ cd /opt/backup +-bash-4.1$ ls -l +total 12 +drwxrwxr-x 4 enterprisedb enterprisedb 4096 Mar 29 13:48 acctg +drwxrwxr-x 4 enterprisedb enterprisedb 4096 Mar 29 13:50 hr +drwxrwxr-x 4 enterprisedb enterprisedb 4096 Mar 29 13:49 mktg +-bash-4.1$ ls -l acctg +total 8 +drwx------ 2 enterprisedb enterprisedb 4096 Mar 29 13:48 1490809695281 +drwxrwxr-x 2 enterprisedb enterprisedb 4096 Mar 29 13:48 archived_wals +-bash-4.1$ ls -l hr +total 8 +drwx------ 2 enterprisedb enterprisedb 4096 Mar 29 13:50 1490809824946 +drwxrwxr-x 2 enterprisedb enterprisedb 4096 Mar 29 13:50 archived_wals +-bash-4.1$ ls -l mktg +total 8 +drwx------ 2 enterprisedb enterprisedb 4096 Mar 29 13:49 1490809751193 +drwxrwxr-x 2 enterprisedb enterprisedb 4096 Mar 29 13:49 archived_wals +``` + + + +## Using Point-In-Time Recovery + +This section demonstrates using the point-in-time recovery operation on the remote PostgreSQL database server. + +The following tables were created about two minutes apart with WAL archiving enabled: + +```text +postgres=# \dt + + List of relations +Schema | Name | Type | Owner + +--------+----------------+---------+--------- +public | hr_rmt_t1_1356 | table | postgres +public | hr_rmt_t1_1358 | table | postgres +public | hr_rmt_t1_1400 | table | postgres +public | hr_rmt_t1_1402 | table | postgres +public | hr_rmt_t1_1404 | table | postgres +public | hr_rmt_t1_1406 | table | postgres +(6 rows) +``` + +In the table name `hr_rmt_t_, n` represents the active timeline. `` is the approximate time the table was created. For example, `hr_rmt_t1_1356` was created at approximately 1:56 PM while timeline #1 is active. + +The PostgreSQL database server was then stopped. WAL files that have been created, but not yet archived must be identified, and then saved. The following archived WAL files are in the BART backup catalog: + +```text +-bash-4.1$ ls -l hr/archived_wals +total 49156 +-rw------- 1 enterprisedb enterprisedb 16777216 Mar 29 13:50 +000000010000000000000001 +-rw------- 1 enterprisedb enterprisedb 16777216 Mar 29 13:50 +000000010000000000000002 +-rw------- 1 enterprisedb enterprisedb 302 Mar 29 13:50 +000000010000000000000002.00000028.backup +-rw------- 1 enterprisedb enterprisedb 16777216 Mar 29 14:07 +000000010000000000000003 +``` + +The following sample lists the current PostgreSQL server WAL files. The unarchived WAL files are marked with two stars (\*\*). + +```text +-bash-4.1$ cd /opt/PostgreSQL/9.6/data/pg_xlog +-bash-4.1$ pwd +/opt/PostgreSQL/9.6/data/pg_xlog +-bash-4.1$ ls -l +total 49160 +-rw------- 1 postgres postgres 302 Mar 29 13:50 +000000010000000000000002.00000028.backup +-rw------- 1 postgres postgres 16777216 Mar 29 14:07 +000000010000000000000003 +-rw------- 1 postgres postgres 16777216 Mar 29 14:07 +**000000010000000000000004** +-rw------- 1 postgres postgres 16777216 Mar 29 13:50 +**000000010000000000000005** +drwx------ 2 postgres postgres 4096 Mar 29 14:07 archive_status +``` + +Copies of the unarchived WAL files are saved to a temporary location: + +```text +-bash-4.1$ mkdir /tmp/unarchived_pg96_wals +-bash-4.1$ pwd +/opt/PostgreSQL/9.6/data/pg_xlog +bash-4.1$ cp -p 000000010000000000000004 /tmp/unarchived_pg96_wals +bash-4.1$ cp -p 000000010000000000000005 /tmp/unarchived_pg96_wals +bash-4.1$ ls -l /tmp/unarchived_pg96_wals +total 32768 +-rw------- 1 postgres postgres 16777216 Mar 29 14:07 000000010000000000000004 +-rw------- 1 postgres postgres 16777216 Mar 29 13:50 000000010000000000000005 +``` + +On the remote host, a directory is created to which the PostgreSQL database cluster is to be restored. This restore path is named `/opt/restore_pg96` and is owned by user account `postgres`. + +```text +[user@localhost ~]$ su root +Password: +[root@localhost user]# cd /opt +[root@localhost opt]# mkdir restore_pg96 +[root@localhost opt]# chown postgres restore_pg96 +[root@localhost opt]# chgrp postgres restore_pg96 +[root@localhost opt]# chmod 700 restore_pg96 +[root@localhost opt]# ls -l +total 16 +drwxr-xr-x 4 root daemon 4096 Mar 29 12:10 PostgresPlus +drwxr-xr-x 3 root daemon 4096 Mar 29 12:25 PostgreSQL +drwx------ 2 postgres postgres 4096 Mar 29 14:15 restore_pg96 +drwxr-xr-x. 2 root root 4096 Nov 22 2013 rh +``` + +In the BART configuration file, the remote user and remote host IP address, `postgres@192.168.2.24`, have been set with the `remote_host` parameter. If not given in the BART configuration file, this information must then be specified by the `--remote-host` option when giving the `RESTORE` subcommand (for example, `bart RESTORE --remote-host postgres@192.168.2.24 …`). + +```text +[HR] + +host = 192.168.2.24 +port = 5432 +user = postgres +cluster_owner = postgres +backup_name = hr_%year-%month-%dayT%hour:%minute +remote_host = postgres@192.168.2.24 +copy_wals_during_restore = enabled +description = "Human Resources" +``` + +Use the `SHOW-BACKUPS` subcommand to identify the backup to use with the `RESTORE` subcommand. + +```text +SERVER NAME BACKUP ID BACKUP NAME BACKUP PARENT +BACKUP TIME +BACKUP SIZE WAL(s) SIZE WAL FILES STATUS +acctg 1490809695281 acctg_2017-03-29T13:48 none +2017-03-29 13:48:17 EDT +6.10 MB 32.00 MB 2 active +hr 1490809824946 hr_2017-03-29T13:50 none +2017-03-29 13:50:26 EDT +2.59 MB 32.00 MB 2 active +mktg 1490809751193 mktg_2017-03-29T13:49 none +2017-03-29 13:49:14 EDT +6.13 MB 64.00 MB 4 active +``` + +The `-t` option with the `SHOW-BACKUPS` subcommand displays additional backup information: + +```text +-bash-4.1$ bart SHOW-BACKUPS -s hr -i 1490809824946 -t +SERVER NAME : hr +BACKUP ID : 1490809824946 +BACKUP NAME : hr_2017-03-29T13:50 +BACKUP PARENT : none +BACKUP STATUS : active +BACKUP TIME : 2017-03-29 13:50:26 EDT +BACKUP SIZE : 2.59 MB +WAL(S) SIZE : 32.00 MB +NO. OF WALS : 2 +FIRST WAL FILE : 000000010000000000000002 +CREATION TIME : 2017-03-29 13:50:31 EDT +LAST WAL FILE : 000000010000000000000003 +CREATION TIME : 2017-03-29 14:07:35 EDT +``` + +A recovery is made using timeline `1` to `2017-03-29 14:01:00`. + +```text +-bash-4.1$ bart RESTORE -s hr -i hr_2017-03-29T13:50 -p +/opt/restore_pg96 -t 1 -g '2017-03-29 14:01:00' +INFO: restoring backup 'hr_2017-03-29T13:50' of server 'hr' +INFO: base backup restored +INFO: copying WAL file(s) to +postgres@192.168.2.24:/opt/restore_pg96/archived_wals +INFO: writing recovery settings to postgresql.auto.conf file +INFO: archiving is disabled +INFO: permissions set on $PGDATA +INFO: restore completed successfully +``` + +The following example shows the restored backup files in the restore path directory, `/opt/restore_pg96`: + +```text +-bash-4.1$ pwd +/opt/restore_pg96 +-bash-4.1$ ls -l +total 128 +drwxr-xr-x 2 postgres postgres 4096 Mar 29 14:27 archived_wals +-rw------- 1 postgres postgres 206 Mar 29 13:50 backup_label +drwx------ 5 postgres postgres 4096 Mar 29 12:25 base +drwx------ 2 postgres postgres 4096 Mar 29 14:27 global +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_clog +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_commit_ts +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_dynshmem +-rw------- 1 postgres postgres 4212 Mar 29 13:18 pg_hba.conf +-rw------- 1 postgres postgres 1636 Mar 29 12:25 pg_ident.conf +drwxr-xr-x 2 postgres postgres 4096 Mar 29 13:45 pg_log +drwx------ 4 postgres postgres 4096 Mar 29 12:25 pg_logical +drwx------ 4 postgres postgres 4096 Mar 29 12:25 pg_multixact +drwx------ 2 postgres postgres 4096 Mar 29 13:43 pg_notify +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_replslot +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_serial +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_snapshots +drwx------ 2 postgres postgres 4096 Mar 29 13:43 pg_stat +drwx------ 2 postgres postgres 4096 Mar 29 13:50 pg_stat_tmp +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_subtrans +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_tblspc +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_twophase +-rw------- 1 postgres postgres 4 Mar 29 12:25 PG_VERSION +drwx------ 3 postgres postgres 4096 Mar 29 14:27 pg_xlog +-rw------- 1 postgres postgres 169 Mar 29 13:24 postgresql.auto.conf +-rw-r--r-- 1 postgres postgres 21458 Mar 29 14:27 postgresql.conf +-rw-r--r-- 1 postgres postgres 118 Mar 29 14:27 postgresql.auto.conf +``` + +Copy the saved, unarchived WAL files to the restore path `pg_xlog` subdirectory (`/opt/restore_pg96/pg_xlog`): + +```text +-bash-4.1$ pwd +/opt/restore_pg96/pg_xlog +-bash-4.1$ ls -l +total 16388 +-rw------- 1 postgres postgres 16777216 Mar 29 13:50 +000000010000000000000002 +drwx------ 2 postgres postgres 4096 Mar 29 14:27 archive_status +-bash-4.1$ ls -l /tmp/unarchived_pg96_wals +total 32768 +-rw------- 1 postgres postgres 16777216 Mar 29 14:07 +000000010000000000000004 +-rw------- 1 postgres postgres 16777216 Mar 29 13:50 +000000010000000000000005 +-bash-4.1$ cp -p /tmp/unarchived_pg96_wals/* . +-bash-4.1$ ls -l +total 49156 +-rw------- 1 postgres postgres 16777216 Mar 29 13:50 +000000010000000000000002 +-rw------- 1 postgres postgres 16777216 Mar 29 14:07 +000000010000000000000004 +-rw------- 1 postgres postgres 16777216 Mar 29 13:50 +000000010000000000000005 +drwx------ 2 postgres postgres 4096 Mar 29 14:27 archive_status +``` + +Inspect the `/opt/restore_pg96/postgresql.auto.conf` file to verify that it contains the correct recovery settings: + +```text +restore_command = 'cp archived_wals/%f %p' +recovery_target_time = '2017-03-29 14:01:00' +recovery_target_timeline = 1 +``` + +Note that the command restores from the `archived_wals` subdirectory of `/opt/restore_pg96` since the `copy_wals_during_restore` parameter in the BART configuration file is set to `enabled` for database server `hr`. + +Start the database server to initiate the point-in-time recovery operation: + +```text +[user@localhost ~]$ su postgres +Password: +bash-4.1$ cd /opt/restore_pg96 +bash-4.1$ /opt/PostgreSQL/9.6/bin/pg_ctl start -D /opt/restore_pg96 -l +/opt/restore_pg96/pg_log/logfile +server starting +``` + +Inspect the database server log file to ensure the operation did not result in any errors: + +```text +2017-03-29 14:33:23 EDT LOG: database system was interrupted; last known +up at 2017-03-29 13:50:25 EDT +2017-03-29 14:33:23 EDT LOG: starting point-in-time recovery to +2017-03-29 14:01:00-04 +2017-03-29 14:33:23 EDT LOG: restored log file +"000000010000000000000002" from archive +2017-03-29 14:33:23 EDT LOG: redo starts at 0/2000098 +2017-03-29 14:33:23 EDT LOG: consistent recovery state reached at +0/20000C0 +2017-03-29 14:33:23 EDT LOG: restored log file +"000000010000000000000003" from archive +2017-03-29 14:33:23 EDT LOG: recovery stopping before commit of +transaction 1762, time 2017-03-29 14:02:28.100072-04 +2017-03-29 14:33:23 EDT LOG: redo done at 0/303F390 +2017-03-29 14:33:23 EDT LOG: last completed transaction was at log time +2017-03-29 14:00:43.351333-04 +cp: cannot stat `archived_wals/00000002.history': No such file or +directory +2017-03-29 14:33:23 EDT LOG: selected new timeline ID: 2 +cp: cannot stat `archived_wals/00000001.history': No such file or +directory +2017-03-29 14:33:23 EDT LOG: archive recovery complete +2017-03-29 14:33:23 EDT LOG: MultiXact member wraparound protections are +now enabled +2017-03-29 14:33:23 EDT LOG: database system is ready to accept +connections +2017-03-29 14:33:23 EDT LOG: autovacuum launcher started +``` + +The tables that exist in the recovered database cluster are: + +```text +postgres=# \dt + List of relations +Schema | Name | Type | Owner +--------+----------------+-------+---------- +public | hr_rmt_t1_1356 | table | postgres +public | hr_rmt_t1_1358 | table | postgres +public | hr_rmt_t1_1400 | table | postgres +(3 rows) +``` + +Since recovery was up to and including 2017-03-29 14:01:00, the following tables created after 14:01 are not present: + +```text +public | hr_rmt_t1_1402 | table | postgres +public | hr_rmt_t1_1404 | table | postgres +public | hr_rmt_t1_1406 | table | postgres +``` + +The BART `RESTORE` operation stops WAL archiving by adding an `archive_mode = off` parameter at the very end of the `postgresql.conf` file. This last parameter in the file overrides any other previous setting of the same parameter in the file. Delete the last setting and restart the database server to start WAL archiving. + +```text +# Add settings for extensions here +archive_mode = off +``` diff --git a/product_docs/docs/bart/2.5.9/bart_ref/images/EDB_logo.png b/product_docs/docs/bart/2.5.9/bart_ref/images/EDB_logo.png new file mode 100644 index 00000000000..39a54822d85 Binary files /dev/null and b/product_docs/docs/bart/2.5.9/bart_ref/images/EDB_logo.png differ diff --git a/product_docs/docs/bart/2.5.9/bart_ref/images/edb.png b/product_docs/docs/bart/2.5.9/bart_ref/images/edb.png new file mode 100644 index 00000000000..71e5bdde787 Binary files /dev/null and b/product_docs/docs/bart/2.5.9/bart_ref/images/edb.png differ diff --git a/product_docs/docs/bart/2.5.9/bart_ref/images/edb_logo.svg b/product_docs/docs/bart/2.5.9/bart_ref/images/edb_logo.svg new file mode 100644 index 00000000000..f24d1dfefee --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_ref/images/edb_logo.svg @@ -0,0 +1,19 @@ + + + edb-logo-disc-dark + + + + \ No newline at end of file diff --git a/product_docs/docs/bart/2.5.9/bart_ref/images/image2.png b/product_docs/docs/bart/2.5.9/bart_ref/images/image2.png new file mode 100644 index 00000000000..4eba2e7efa7 Binary files /dev/null and b/product_docs/docs/bart/2.5.9/bart_ref/images/image2.png differ diff --git a/product_docs/docs/bart/2.5.9/bart_ref/index.mdx b/product_docs/docs/bart/2.5.9/bart_ref/index.mdx new file mode 100644 index 00000000000..6a8817bd039 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_ref/index.mdx @@ -0,0 +1,33 @@ +--- +navTitle: Reference Guide +title: "EDB Postgres Backup and Recovery Reference Guide" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/genindex.html" + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/conclusion.html" + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/index.html" +--- + +This guide acts as a quick reference for BART subcommands and provides comprehensive examples of the following BART operations: + +- Performing a full backup of database servers +- Performing a point-in-time recovery (PITR) on a remote PostgreSQL database server +- Restoring an incremental backup +- Restoring a database cluster with tablespaces +- Evaluating, marking, and deleting backups and incremental backups +- Configuring and operating local and remote database servers + +For detailed information about BART subcommands and operations, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). + +The document is organized as follows: + +- See [Subcommands](01_bart_subcommands_examples/#using_bart_subcommands) to view BART subcommand examples. +- See [Examples](02_additional_examples/#examples) to view BART operations examples. +- See [Sample BART System](03_sample_bart_system_with_local_and_remote_database_servers/#a_sample_bart_system_with_local_and_remote_database_servers) to view examples of both local and remote database server configuration and operation. + +
+ +bart_subcommands_examples additional_examples sample_bart_system_with_local_and_remote_database_servers conclusion + +
diff --git a/product_docs/docs/bart/2.5.9/bart_user/01_introduction.mdx b/product_docs/docs/bart/2.5.9/bart_user/01_introduction.mdx new file mode 100644 index 00000000000..1212b2847bf --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/01_introduction.mdx @@ -0,0 +1,55 @@ +--- +title: "Introduction" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/introduction.html" +--- + +The EDB Backup and Recovery Tool (BART) is an administrative utility that provides simplified backup and recovery management for multiple local or remote EDB Advanced Server and PostgreSQL database servers. + +BART provides the following features: + +- Support for complete, hot, physical backups of multiple Advanced Servers and PostgreSQL database servers +- Support for two types of backups – full base backups and block-level incremental backups +- Backup and recovery management of database servers on local or remote hosts +- A single, centralized catalog for backup data +- Retention policy support for defining and managing how long backups should be kept +- The capability to store the backup data in compressed format +- Verified backup data with checksums +- Backup information displayed in an easy-to-read format +- A simplified point-in-time recovery process + +This guide provides the following information about using BART: + +- an [overview](02_overview/#overview) of the BART components and concepts. +- [backup and recovery management process](03_using_bart/#using_bart). +- [using tablespaces](04_using_tablespaces/#using_tablespaces). + +For information about installing BART, see the *EDB Backup and Recovery Installation and Upgrade Guide*; for examples of BART operations and subcommand usage, see the *EDB Backup and Recovery Reference Guide*. These guides are available at the [EDB website](/bart/latest/bart_inst/). + + + +## Conventions Used in this Guide + +The following is a list of conventions used throughout this document. + +- Much of the information in this document applies interchangeably to the PostgreSQL and EDB Advanced Server database systems. The term *Advanced Server* is used to refer to EDB Advanced Server. The term *Postgres* is used to generically refer to both PostgreSQL and Advanced Server. When a distinction needs to be made between these two database systems, the specific names, PostgreSQL or Advanced Server are used. + +- The installation directory of the PostgreSQL or Advanced Server products is referred to as `POSTGRES_INSTALL_HOME`: + + - For PostgreSQL Linux installations, this defaults to `/opt/PostgreSQL/` for version 10 and earlier. For later versions, the installation directory is `/var/lib/pgsql/`. + - For Advanced Server Linux installations performed using the interactive installer for version 10 and earlier, this defaults to `/opt/PostgresPlus/AS` or `/opt/edb/as`. For Advanced Server Linux installations performed with an RPM package, this defaults to `/usr/ppas-` or `/usr/edb/as`. For Advanced Server Linux installations performed with an RPM package for version 11 or later, this defaults to `/usr/edb/as`. + +## Restrictions on pg_basebackup + +BART takes full backups using the `pg_basebackup` utility program under the following conditions: + +- The backup is taken on a standby server. +- The `--with-pg_basebackup` option is specified with the `BACKUP` subcommand (see [Backup](03_using_bart/03_basic_bart_subcommand_usage/03_backup/#backup)). +- The number of thread count in effect is 1, and the `with-pg_basebackup` option is not specified with the `BACKUP` subcommand. +- Database servers can only be backed up using `pg_basebackup` utility program of the same or later version than the database server version. + +In the global section of the BART configuration file, the `pg_basebackup_path` parameter specifies the complete directory path to the `pg_basebackup` program. For information about the `pg_basebackup_path` parameter and the `thread_count`, see the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/). + +For information about `pg_basebackup`, see the [PostgreSQL Core Documentation](https://postgresql.org/docs/current/static/app-pgbasebackup.html). diff --git a/product_docs/docs/bart/2.5.9/bart_user/02_overview/01_block-level_incremental_backup/01_incremental_backup_limitations_and_requirements.mdx b/product_docs/docs/bart/2.5.9/bart_user/02_overview/01_block-level_incremental_backup/01_incremental_backup_limitations_and_requirements.mdx new file mode 100644 index 00000000000..a3fe8894d09 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/02_overview/01_block-level_incremental_backup/01_incremental_backup_limitations_and_requirements.mdx @@ -0,0 +1,42 @@ +--- +title: "Incremental Backup Limitations and Requirements" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/incremental_backup_limitations_and_requirements.html" +--- + + + +The following limitations apply to incremental backup: + +- If you have restored a full or incremental backup, you must take a full backup before enabling incremental backup. +- If a standby node has been promoted to the role of a primary node, you must take a full backup before enabling incremental backup on the cluster. +- On a standby database server, you cannot take an incremental backup. + +You must meet the following requirements before implementing incremental backup: + +- You must create or select an operating system account to be used as the BART user account. + +- You must create or select the replication database user, which must be a superuser. + +- In the BART configuration file: + + - You must set the `cluster_owner` parameter to the Linux operating system user account that owns the database cluster directory from which incremental backups are to be taken. + - You must enable the `allow_incremental_backups` parameter. + +- A passwordless SSH/SCP connection must be established between the BART user account on the BART host and the `cluster_owner` user account on the database server. + + It must be noted that a passwordless SSH/SCP connection must be established even if BART and the database server are running on the same host and the BART user account and the `cluster_owner` user account are the same account. + +- In addition to the BART host (where the BART backup catalog resides), the BART package must also be installed on every remote database server on which incremental backups are to be restored. To restore an incremental backup, the `bart` program must be executable on the remote host by the remote user (the remote user is specified by the `remote_host` parameter in the BART configuration file or by the `-r` option when using the `RESTORE` subcommand to restore the incremental backup). + +- When [restoring incremental backups on a remote database server](05_restoring_an_incremental_backup/#restoring-an-incremental-backup-on-a-remote-host), a passwordless SSH/SCP connection must be established from the BART user account on the BART host to the remote user on the remote host (the remote user is specified by the `remote_host` parameter in the BART configuration file or by the `-r` option when using the `RESTORE` subcommand to restore the incremental backup). + +- Compression of archived WAL files in the BART backup catalog is not permitted for database servers on which incremental backups are to be taken. The `wal_compression` setting in the BART configuration file must be disabled for those database servers. + +- The incremental backup must be on the same timeline as the parent backup. The timeline changes after each recovery operation so an incremental backup cannot use a parent backup from an earlier timeline. + +For information about configuring these requirements, see the EDB Backup and Recovery Installation and Upgrade Guide available at the [EDB website](/bart/latest/bart_inst/). + +The following section provides an overview of the basic incremental backup concepts. diff --git a/product_docs/docs/bart/2.5.9/bart_user/02_overview/01_block-level_incremental_backup/02_concept_overview.mdx b/product_docs/docs/bart/2.5.9/bart_user/02_overview/01_block-level_incremental_backup/02_concept_overview.mdx new file mode 100644 index 00000000000..8183d4802bd --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/02_overview/01_block-level_incremental_backup/02_concept_overview.mdx @@ -0,0 +1,33 @@ +--- +title: "Concept Overview" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/concept_overview.html" +--- + + + +Using incremental backups involves the following sequence of steps: + +1. Configure BART, and enable and initiate archiving of WAL files to the `archive_path` in the same manner as done for full backups. + + The default `archive_path` is the BART backup catalog (`//archived_wals`). Using the `` parameter in the server section of the BART configuration file, you can specify the location where WAL files will be archived. + + For more information about the `archive_path` parameter and configuring BART, see the EDB Backup and Recovery Installation and Upgrade Guide available at the [EDB website](/bart/latest/bart_inst/). + +2. Take an initial full backup with the `BACKUP` subcommand. This full backup establishes the parent of the first incremental backup. + +3. Scan all WAL files produced by database servers on which incremental backups are to be taken. These WAL files are scanned once they have been archived to the `archive_path`. + + Each scanned WAL file results in a modified block map (MBM) file that records the location of modified blocks obtained from the corresponding WAL file. The BART WAL scanner program `bart-scanner` performs this process. + +4. Take incremental backups using the `BACKUP` subcommand with the `--parent` option to specify the backup identifier or name of a previous, full backup or an incremental backup. Any previous backup may be chosen as the parent as long as all backups belong to the same timeline. + +5. The incremental backup process identifies which WAL files may contain changes from when the parent backup was taken to the starting point of the incremental backup. The corresponding MBM files are used to locate and copy the modified blocks to the incremental backup directory along with other database cluster directories and files. Instead of backing up all, full relation files, only the modified blocks are copied and saved. In addition, the relevant MBM files are condensed into one consolidated block map (CBM) file that is stored with the incremental backup. + + Multiple block copier threads can be used to copy the modified blocks to the incremental backup directory. See the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/) for information about setting the `thread_count` parameter in the BART configuration file. See [Backup](../../03_using_bart/03_basic_bart_subcommand_usage/03_backup/#backup) for information about using the `--thread-count` option with the `BACKUP` subcommand. + +6. Invoke the restore process for an incremental backup using the `RESTORE` subcommand in the same manner as restoring a full backup. The `-i` option specifies the backup identifier or name of the incremental backup to restore. The restore process begins by going back through the chain of past, parent incremental backups until the initial full backup starting the chain is identified. This full backup provides the initial set of directories and files to be restored to the location specified with the `-p` option. Each subsequent incremental backup in the chain is then restored. Restoration of an incremental backup uses its CBM file to restore the modified blocks from the incremental backup. + +The following sections provide some additional information on these procedures. diff --git a/product_docs/docs/bart/2.5.9/bart_user/02_overview/01_block-level_incremental_backup/03_wal_scanning_preparation_for_an_incremental_backup.mdx b/product_docs/docs/bart/2.5.9/bart_user/02_overview/01_block-level_incremental_backup/03_wal_scanning_preparation_for_an_incremental_backup.mdx new file mode 100644 index 00000000000..5264499e13e --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/02_overview/01_block-level_incremental_backup/03_wal_scanning_preparation_for_an_incremental_backup.mdx @@ -0,0 +1,54 @@ +--- +title: "WAL Scanning – Preparation for an Incremental Backup" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/wal_scanning_preparation_for_an_incremental_backup.html" +--- + + + +The WAL scanner program (`bart-scanner`) scans the WAL files created from the time of the parent backup up to the start of the incremental backup to determine which blocks have modified since the parent backup, and records the information in a file called the *modified block map (MBM) file*. One MBM file is created for each WAL file. + +The MBM file is stored in the directory where archived_wals will be stored, as specified in the `archive_path` parameter in the `bart.cfg` file. If the `archive_path` is not specified, the default `archived_wals` directory is: + +`//` + +Where: + +`` is the BART backup catalog parent directory specified in the global section of the BART configuration file. + +`` is the lowercase conversion of the database server name specified in the server section of the BART configuration file. + +The following code snippet is the content of the archive path showing the MBM files created for the WAL files. (The user name and group name of the files have been removed from the example to list the WAL files and MBM files in a more comparable manner): + +```text +[root@localhost archived_wals]# pwd +/opt/backup/acctg/archived_wals +[root@localhost archived_wals]# ls -l +total 131104 +-rw------- 1 ... ... 16777216 Oct 12 09:38 000000010000000100000078 +-rw------- 1 ... ... 16777216 Oct 12 09:38 000000010000000100000079 +-rw------- 1 ... ... 16777216 Oct 12 09:38 00000001000000010000007A +-rw------- 1 ... ... 16777216 Oct 12 09:35 00000001000000010000007B +-rw------- 1 ... ... 16777216 Oct 12 09:38 00000001000000010000007C +-rw------- 1 ... ... 16777216 Oct 12 09:39 00000001000000010000007D +-rw------- 1 ... ... 16777216 Oct 12 09:42 00000001000000010000007E +-rw------- 1 ... ... 16777216 Oct 12 09:47 00000001000000010000007F +-rw-rw-r-- 1 ... ... 161 Oct 12 09:49 0000000100000001780000280000000179000000.mbm +-rw-rw-r-- 1 ... ... 684 Oct 12 09:49 000000010000000179000028000000017A000000.mbm +-rw-rw-r-- 1 ... ... 161 Oct 12 09:49 00000001000000017A000028000000017B000000.mbm +-rw-rw-r-- 1 ... ... 161 Oct 12 09:49 00000001000000017B000028000000017C000000.mbm +-rw-rw-r-- 1 ... ...1524 Oct 12 09:49 00000001000000017C000028000000017D000000.mbm +-rw-rw-r-- 1 ... ... 161 Oct 12 09:49 00000001000000017D000028000000017E000000.mbm +-rw-rw-r-- 1 ... ... 161 Oct 12 09:49 00000001000000017E000028000000017F000000.mbm +-rw-rw-r-- 1 ... ... 161 Oct 12 09:49 00000001000000017F0000280000000180000000.mbm +``` + +MBM files have the suffix, `.mbm`. + +In preparation for any incremental backup, the WAL files should be scanned as soon as they are copied to the `archive_path`. Thus, the WAL scanner should be running as soon as the WAL files from the database cluster are archived to the `archive_path`. If the `archive_path` contains WAL files that have not yet been scanned, starting the WAL scanner begins scanning these files. If WAL file fails to be scanned (resulting in a missing MBM file), you can use the WAL scanner to specify an individual WAL file. + +Under certain conditions such as when the Network File System (NFS) is used to copy WAL files to the `archive_path`, the WAL files may have been missed by the WAL scanner program for scanning and creation of MBM files. Use the `scan_interval` parameter in the BART configuration file to initiate force scanning of WAL files in the `archive_path` to ensure MBM files are generated. See the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/) for more information about the `scan_interval` parameter. + +See [Running the BART WAL Scanner](../../03_using_bart/04_running_the_bart_wal_scanner/#running_the_bart_wal_scanner) for information about using the WAL scanner. diff --git a/product_docs/docs/bart/2.5.9/bart_user/02_overview/01_block-level_incremental_backup/04_performing_an_incremental_backup.mdx b/product_docs/docs/bart/2.5.9/bart_user/02_overview/01_block-level_incremental_backup/04_performing_an_incremental_backup.mdx new file mode 100644 index 00000000000..7cd01990da6 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/02_overview/01_block-level_incremental_backup/04_performing_an_incremental_backup.mdx @@ -0,0 +1,76 @@ +--- +title: "Performing an Incremental Backup" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/performing_an_incremental_backup.html" +--- + + + +The WAL files produced at the time of the parent backup up to the start of the incremental backup contain information about which blocks were modified during that time interval. That information is consolidated into an MBM file for each WAL file by the WAL scanner. + +The MBM files for the relevant WAL files are read, and the information is used to copy the modified blocks from the database cluster to the `archived_wals` directory as specified in the `archive_path` parameter in the `bart.cfg` file. When compared to a full backup, the number and sizes of relation files can be significantly less for an incremental backup. + +For comparison, the following is an abbreviated list of the files copied to the archived `base` subdirectory of a full backup for one database: + +```text +[root@localhost 14845]# pwd +/opt/backup/acctg/1476301238969/base/base/14845 +[root@localhost 14845]# ls +112 13182_vm 14740 16467 16615 2608_vm 2655 2699 2995 ... +113 13184 14742 16471 174 2609 2656 2701 2995_vm ... +1247 13186 14745 16473 175 2609_fsm 2657 2702 2996 ... +1247_fsm 13187 14747 16474 2187 2609_vm 2658 2703 2998 ... +1247_vm 13187_fsm 14748 16476 2328 2610 2659 2704 2998_vm ... +1249 13187_vm 14749 16477 2328_fsm 2610_fsm 2660 2753 2999 ... +1249_fsm 13189 14752 16479 2328_vm 2610_vm 2661 2753_fsm 2999_vm ... +1249_vm 13191 14754 16488 2336 2611 2662 2753_vm 3079 ... +1255 13192 14755 16490 2336_vm 2611_vm 2663 2754 3079_fsm ... + . + . + . +13182_fsm 14739 16465 16603 2608_fsm 2654 2696 2893_vm 3501_vm ... +``` + +In contrast, the following is the content of the archived `base` subdirectory of the same database from a subsequent incremental backup: + +```text +[root@localhost 14845]# pwd +/opt/backup/acctg/1476301835391/base/base/14845 +[root@localhost 14845]# ls +1247 1249 1259 16384 17006 2608 2610 2658 2663 2678 ... +1247_fsm 1249_fsm 1259_fsm 16387 17009 2608_fsm 2610_fsm 2659 2673 2679 ... +1247_vm 1249_vm 1259_vm 16389 17011 2608_vm 2610_vm 2662 2674 2703 ... +``` + +The information from the MBM files are consolidated into one file called a *consolidated block map* (CBM) file. During the restore operation for the incremental backup, the CBM file is used to identify the modified blocks to be restored for that backup. In addition, the incremental backup also stores other required subdirectories and files from the database cluster as is done for full backups. + +Before taking an incremental backup, an initial full backup must be taken with the `BACKUP` subcommand. This full backup establishes the parent of the first incremental backup. + +The syntax for taking a full backup is: + +```text +bart BACKUP –s { | all } [ -F { p | t } ] + [ -z ] [ –c ] + [ --backup-name ] + [ --thread-count ] + [ { --with-pg_basebackup | --no-pg_basebackup } ] +``` + +The syntax for taking an incremental backup is: + +```text +bart BACKUP –s { | all } [ -F p] + [ --parent { | } ] + [ --backup-name ] + [ --thread-count ] + [ --check ] +``` + +You must specify the following before taking an incremental backup: + +- `-Fp` option for plain text format as incremental backup can only be taken in the plain text format. +- `--check` option to verify if the required MBM files are present in the `archived_wals` directory. The `--parent` option must be specified when the `--check` option is used. + +See [BACKUP](../../03_using_bart/03_basic_bart_subcommand_usage/03_backup/#backup) for more information about using the `BACKUP` subcommand. diff --git a/product_docs/docs/bart/2.5.9/bart_user/02_overview/01_block-level_incremental_backup/05_restoring_an_incremental_backup.mdx b/product_docs/docs/bart/2.5.9/bart_user/02_overview/01_block-level_incremental_backup/05_restoring_an_incremental_backup.mdx new file mode 100644 index 00000000000..c86914aa329 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/02_overview/01_block-level_incremental_backup/05_restoring_an_incremental_backup.mdx @@ -0,0 +1,42 @@ +--- +title: "Restoring an Incremental Backup" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/restoring_an_incremental_backup.html" +--- + + + +Restoring an incremental backup may require additional steps depending upon the host on which the incremental backup is to be restored: + +- [Restoring an Incremental Backup on a BART Host](#restoring-an-incremental-backup-on-a-bart-host) - This section outlines restoring an incremental backup onto the same host where BART has been installed. +- [Restoring an Incremental Backup on a Remote Host](#restoring-an-incremental-backup-on-a-remote-host) - This section outlines restoring an incremental backup onto a remote host where BART has not been installed. + + + +## Restoring an Incremental Backup on a BART Host + +Specify a backup identifier or name, and include the `-i` option when invoking the `RESTORE` subcommand to restore an incremental backup. All `RESTORE` options may be used in the same manner as when restoring a full backup. See [RESTORE](../../03_using_bart/03_basic_bart_subcommand_usage/08_restore/#restore) command for more details. + +First, all files from the full backup from the beginning of the backup chain are restored. For each incremental backup, the CBM file is used to identify and restore blocks from the incremental backup. If there are new relations or databases identified in the CBM file, then relevant relation files are copied. If consolidated block map information is found indicating the drop of a relation or a database, then the relevant files are removed from the restore directory. Similarly, if there is any indication of a table truncation, then the related files are truncated. + +Also note that you can use the `-w` option of the `RESTORE` subcommand to specify a multiple number of parallel worker processes to stream the modified blocks to the restore host. + + + +## Restoring an Incremental Backup on a Remote Host + +Ensure the `bart` program is available on the remote host when restoring an incremental backup on a remote host; the invocation of the `RESTORE` subcommand for an incremental backup results in the execution of the `bart` program on the remote host to restore the modified blocks to their proper location. + +To restore an incremental backup onto a remote host where BART has not been installed, perform the following steps: + +**Step 1:** Install `BART` on the remote host to which an incremental backup is to be restored. + +No editing is needed in the `bart.cfg` file installed on the remote host. + +**Step 2:** Determine the Linux operating system user account on the remote host to be used as the remote user. This user is specified by the `remote_host` parameter in the BART configuration file or by the `-r` option when using the `RESTORE` subcommand to restore the incremental backup. The remote user must be the owner of the directory where the incremental backup is to be restored on the remote host. By default, the user account is `enterprisedb` for Advanced Server or `postgres` for PostgreSQL. + +**Step 3:** Ensure a passwordless SSH/SCP connection is established from the BART user on the BART host to the remote user on the remote host. For information about creating a passwordless SSH/SCP connection, see the *EDB Backup and Recovery Installation and Upgrade Guide*, available at the [EDB website](/bart/latest/bart_inst/). + +When restoring an incremental backup, specify the backup identifier or name of the incremental backup that will be restored. See the [RESTORE](../../03_using_bart/03_basic_bart_subcommand_usage/08_restore/#restore) documentation for more details. To view an example of restoring an incremental backup, see the *EDB Backup and Recovery Reference Guide* available at the [EDB website](/bart/latest/bart_ref/). diff --git a/product_docs/docs/bart/2.5.9/bart_user/02_overview/01_block-level_incremental_backup/index.mdx b/product_docs/docs/bart/2.5.9/bart_user/02_overview/01_block-level_incremental_backup/index.mdx new file mode 100644 index 00000000000..3e65e3b0056 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/02_overview/01_block-level_incremental_backup/index.mdx @@ -0,0 +1,24 @@ +--- +title: "Block-Level Incremental Backup" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/block-level_incremental_backup.html" +--- + + + +This section describes the basic concepts of a block-level incremental backup (referred to as an incremental backup). An incremental backup is a unique functionality of BART. + +An incremental backup provides a number of advantages when compared to using a full backup: + +- The amount of time required to produce an incremental backup is generally less than a full backup, as modified relation blocks are saved instead of all full relation files of the database cluster. +- An incremental backup uses less disk space than a full backup. + +Generally, all BART features (such as retention policy management) apply to incremental backups and full backups. See [Managing Incremental Backups](../../03_using_bart/02_managing_backups_using_a_retention_policy/05_managing_incremental_backups/#managing_incremental_backups) for more information. + +
+ +incremental_backup_limitations_and_requirements concept_overview wal_scanning_preparation_for_an_incremental_backup performing_an_incremental_backup restoring_an_incremental_backup + +
diff --git a/product_docs/docs/bart/2.5.9/bart_user/02_overview/02_creating_a_backup_chain.mdx b/product_docs/docs/bart/2.5.9/bart_user/02_overview/02_creating_a_backup_chain.mdx new file mode 100644 index 00000000000..644040d87f1 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/02_overview/02_creating_a_backup_chain.mdx @@ -0,0 +1,22 @@ +--- +title: "Creating a Backup Chain" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/creating_a_backup_chain.html" +--- + + + +A *backup chain* is the set of backups consisting of a full backup and all of its successive incremental backups. Tracing back on the parent backups of all incremental backups in the chain eventually leads back to that single, full backup. + +It is possible to have a *multi-forked* backup chain, which is two or more successive lines of incremental backups, all of which begin with the same, full backup. Thus, within the chain there is a backup that serves as the parent of more than one incremental backup. + +Since restoration of an incremental backup is dependent upon first restoring the full backup, then all successive incremental backups up to, and including the incremental backup specified by the `RESTORE` subcommand, it is crucial to note the following: + +- Deletion or corruption of the full backup destroys the entire backup chain. It is not possible to restore any of the incremental backups that were part of that chain. +- Deletion or corruption of an incremental backup within the chain results in the inability to restore any incremental backup that was added to that successive line of backups following the deleted or corrupted backup. The full backup and incremental backups prior to the deleted or corrupted backup can still be restored. + +The actions of retention policy management are applied to the full backup and all of its successive incremental backups within the chain in an identical manner as if they were one backup. Thus, use of retention policy management does not result in the breakup of a backup chain. + +See the *EDB Backup and Recovery Reference Guide*, available at the [EDB website](/bart/latest/bart_ref/) for examples of creating a backup chain and restoring an incremental backup. diff --git a/product_docs/docs/bart/2.5.9/bart_user/02_overview/index.mdx b/product_docs/docs/bart/2.5.9/bart_user/02_overview/index.mdx new file mode 100644 index 00000000000..7b5b7e92fb3 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/02_overview/index.mdx @@ -0,0 +1,97 @@ +--- +title: "Overview" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/overview.html" +--- + + + +BART provides a simplified interface for the continuous archiving and point-in-time recovery method provided with Postgres database servers. This consists of the following processes: + +- Capturing a complete image of a database cluster as a full base backup or referred to simply as a *full backup*. +- Capturing a modified image of a database cluster called a *block-level incremental backup* or referred as *incremental backup*, which is similar to a full backup, but contains the modified blocks of the relation files that have been changed since a previous backup. +- Archiving the `Write-Ahead Log segments` (WAL files), which continuously record changes to be made to the database files. +- Performing *Point-In-Time Recovery* (PITR) to a specified transaction ID or timestamp with respect to a timeline using a full backup along with successive, [block-level incremental backups](01_block-level_incremental_backup/#block-level_incremental_backup) that reside in the same backup chain, and the WAL files. + +Detailed information regarding WAL files and point-in-time recovery is documented in the [PostgreSQL Core Documentation](https://www.postgresql.org/docs/current/static/continuous-archiving.html). + +The general term *backup* refers to both full backups and incremental backups. + +When taking a full backup of a standby server, BART uses the PostgreSQL `pg_basebackup` utility program. However, it must be noted that for standby servers, you can only take a full backup, but cannot take an incremental or parallel backups. For information about standby servers, see the [PostgreSQL Documentation](https://www.postgresql.org/docs/current/static/high-availability.html). + +BART uses a centralized backup catalog, a single configuration file, and a command line interface controlling the necessary operations to simplify the management process. Reasonable defaults are automatically used for various backup and restore options. BART also performs the necessary recovery file configuration required for point-in-time recovery using its command line interface. + +BART also provides the following features to enhance backup management: + +- Automation of the WAL archiving command configuration. +- Usage of retention policies to evaluate, categorize, and delete obsolete backups. +- Compression of WAL files to conserve disk space. +- Customizable naming of backups to ease their usage. +- Easy access to comprehensive information about each backup. + +The key components of a BART installation are: + +- **BART Host.** The host system on which BART is installed. BART operations are invoked from this host system. The database server backups and archived WAL files are stored on this host as well. +- **BART User Account.** Linux operating system user account you choose to run BART. The BART user account owns the BART backup catalog directory. +- **BART Configuration File.** File in editable text format containing the configuration information that BART uses. +- **BART Backup Catalog.** File system directory structure containing all of the backups for the database servers that BART manages. It is also the default `archive_path` to store archived WAL files. +- **BART Backupinfo File.** File in text format containing information for a BART backup. A `backupinfo` file resides in each backup subdirectory within the BART backup catalog. +- **BART Command Line Utility Program.** Single, executable file named `bart`, which is used to manage all BART operations. +- **BART WAL Scanner Program.** Single, executable file named `bart-scanner`, which is used to scan WAL files to locate and record the modified blocks for incremental backups. + +Other concepts and terms referred to in this document include the following: + +- **Postgres Database Cluster.** Also commonly called the *data directory*, this is the file system directory where all of the data files related to a particular Postgres database server instance are stored. (Each specific running instance is identified by its host and port number when connecting to a database.) The database cluster is identified by the `–D` option when it is created, started, stopped, etc. by the `Postgres initdb` and `pg_ctl` commands. A full backup is a copy of a database cluster. + + The terms database cluster and database server are used somewhat interchangeably throughout this document, though a single database server can run multiple database clusters. + +- **Postgres User Account.** Linux operating system user account that runs the Advanced Server or PostgreSQL database server and owns the database cluster directory. + + - By default, the database user account is `enterprisedb` when Advanced Server is installed to support compatibility with Oracle databases. + + - By default, the database user account is `postgres` when Advanced Server is installed in PostgreSQL compatible mode. For a PostgreSQL database server, the default database user account is also `postgres`. + + The BART configuration parameter `cluster_owner` must be set to the database user account for each database server. + +- **Replication Database User.** For each database server that BART manages, a database superuser must be selected to act as the replication database user. This database user is used to connect to the database server when backups are taken. The database superusers created with an initial Postgres database server installation (`enterprisedb` or `postgres`) may be used for this purpose. The BART configuration parameter `user` must be set to this replication database user for each database server. + +- **Secure Shell (SSH)/Secure Copy (SCP).** Linux utility programs used to log into hosts (SSH) and copy files (SCP) between hosts. A valid user account must be specified that exists on the target host and in fact is the user account under which the SSH or SCP operations occur. + +For information on how all of these components are configured and used with BART, see the EDB Backup and Recovery Installation and Upgrade Guide available at the [EDB website](/bart/latest/bart_inst/). + +**Supported BART Operations** + +The following tables are not a conclusive list of the scenarios supported by BART, but instead provides an overview of some of the most common scenarios in both `pg_basebackup` (thread count=1) as well as parallel backup mode (thread count greater than 1). + +| | -Fp-xlog-method=fetch | -Fp-xlog-method=stream | -Ft-xlog-method=fetch | -Ft-xlog-method=stream | +| -------------------------------------------- | --------------------- | ---------------------- | --------------------- | ---------------------- | +| `Primary Database Server/Full backup` | Supported | Supported | Supported | Supported | +| `Primary Database Server/Incremental backup` | Supported | Supported | Not Supported | Not Supported | +| `Standby Database Server/Full backup` | Supported | Supported | Supported | Supported | +| `Standby Database Server/Incremental backup` | Not Supported | Not Supported | Not Supported | Not Supported | + +Backup + +| | Wal compression by BART | WAL scanner | +| -------------------------------------------- | ----------------------- | ----------- | +| `Primary Database Server/Full backup` | Supported | N/A | +| `Primary Database Server/Incremental backup` | Not Supported | N/A | +| `Standby Database Server/Full backup` | Supported | N/A | +| `Standby Database Server/Incremental backup` | Not Supported | N/A | + +Wal Archiving + +| | Wal compression = enabled | Wal compression = disabled | +| ------------------ | ------------------------- | -------------------------- | +| `Restore` | Supported | Supported | +| `Parallel restore` | Supported | Supported | + +Restore + +
+ +block-level_incremental_backup creating_a_backup_chain + +
diff --git a/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/01_bart_management_overview/01_performing_a_restore_operation.mdx b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/01_bart_management_overview/01_performing_a_restore_operation.mdx new file mode 100644 index 00000000000..8b5fdec0c09 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/01_bart_management_overview/01_performing_a_restore_operation.mdx @@ -0,0 +1,57 @@ +--- +title: "Performing a Restore Operation" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/performing_a_restore_operation.html" +--- + + + +The following steps describe the process of restoring a backup: + +**Step 1:** Use your system-specific command to shut down the database server. + +**Step 2:** Inspect the `pg_wal` subdirectory (inspect the `pg_xlog` subdirectory if you are using server version 9.6) of the data directory and save any WAL files that have not yet been archived to the `archive_path`. If there are files that have not been archived, save them to a temporary location. + +**Step 3:** If you want to restore to current data directory, it is recommended to make a copy of the current data directory and then delete all files and subdirectories under the data directory if you have enough extra space. If there is not enough space, then make a copy of `pg_wal` directory (or `pg_xlog` if you are using server version 9.6) until the server is successfully restored. + +If you want to restore to a new, empty directory, create the directory on which you want to restore the backed up database cluster. Ensure the data directory can be written to by the BART user account or by the user account specified by the `remote_host` configuration parameter, or by the `--remote-host` option of the `RESTORE` subcommand (if these are to be used). + +**Step 4:** Perform the same process for tablespaces as described in Step 3. The `tablespace_path` parameter in the BART configuration file must contain the tablespace directory paths to which the tablespace data files are to be restored. See the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/) for more information about this parameter. + +**Step 5:** Identify the backup to use for the restore operation and obtain the backup ID or backup name. + +To use the latest backup, omit the `-i` option; the `RESTORE` subcommand uses that backup by default. The backups can be listed with the `SHOW-BACKUPS` subcommand. + +**Step 6:** Run the BART `RESTORE` subcommand. + +- Minimal recovery settings will be saved in the `postgresql.auto.conf` file and archive recovery will proceed only until consistency is reached, with no restoration of files from the archive. See [Restore](../03_basic_bart_subcommand_usage/08_restore/#restore) for detailed information about `Restore` subcommand. + +- If the `-c` option is specified or if the `copy_wals_during_restore` BART configuration parameter is enabled for this database server, then the following actions occur: + + - In addition to restoring the database cluster to the directory specified by the `-p restore_path` option, the archived WAL files of the backup are copied from the BART backup catalog to the subdirectory `restore_path/archived_wals`. + - If recovery settings are saved in the `postgresql.auto.conf` file, the command string set in the `restore_command` parameter retrieves the WAL files from this `archived_wals` subdirectory relative to the `restore_path` parent directory as: `restore_command = cp archived_wals/%f %p` + +You must ensure that valid options are specified when using the `RESTORE` subcommand. BART will not generate an error message if invalid option values or invalid option combinations are provided. BART will accept the invalid options and pass them to the `postgresql.auto.conf` file, which will then be processed by the database server when it is restarted. + +**Step 7:** Copy any saved WAL files from Step 2 to the `restore_path/pg_xlog` subdirectory. + +**Step 8:** Inspect the restored directories and data files of the restored database cluster in directory `restore_path`. + +All files and directories must be owned by the user account that you intend to use to start the database server. Recursively change the user and group ownership of the `restore_path` directory, its files, and its subdirectories if necessary. There must only be directory access privileges for the user account that will start the database server. No other groups or users can have access to the directory. + +**Step 9:** The `postgresql.auto.conf` file should be configured to recover only until the cluster reaches consistency. In either case, the settings may be modified as desired. + +**Step 10:** Disable WAL archiving at this point. The BART `RESTORE` subcommand adds `archive_mode = off` to the end of the `postgresql.conf` file. + +- If you want to restart the database server with WAL archiving enabled, ensure that this additional parameter is deleted. +- The original `archive_mode` parameter still resides in the `postgresql.conf` file in its initial location with its last setting. + +**Step 11:** Start the database server to initiate recovery. After completion, check the database server log file to ensure the recovery was successful. + +If the backup is restored to a different location than where the original database cluster resided, operations dependent upon the database cluster location may fail if supporting service scripts are not updated to reflect the location where the backup has been restored. For information about the use and modification of service scripts, see the EDB Advanced Server Installation Guide available at the [EDB website](/epas/latest/). + +See [Restore](../03_basic_bart_subcommand_usage/08_restore/#restore) for more information about using the BART `Restore` subcommand. + +An example of a restore operation is documented in the EDB Backup and Recovery Reference Guide available at the [EDB website](/bart/latest/bart_ref/). diff --git a/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/01_bart_management_overview/02_point_in_time_recovery_operation.mdx b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/01_bart_management_overview/02_point_in_time_recovery_operation.mdx new file mode 100644 index 00000000000..caaaa89e7c0 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/01_bart_management_overview/02_point_in_time_recovery_operation.mdx @@ -0,0 +1,51 @@ +--- +title: "Point-In-Time Recovery Operation" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/point_in_time_recovery_operation.html" +--- + + + +The following steps outline how to perform a point-in-time recovery operation for a database cluster: + +1. Use your system-specific command to shut down the database server. + +2. If you want to: + a. restore the database cluster and tablespace files to new, empty directories, create the new directories with the appropriate directory ownership and permissions. + b. reuse the existing database cluster directories, delete all the files and subdirectories in the existing directories. We strongly recommend that you make a copy of this data before deleting it. Be sure to save any recent WAL files in the `pg_wal` subdirectory ( `pg_xlog` subdirectory if you are using server version 9.6) that have not been archived to `archive_path`. + +3. Run the BART `SHOW-BACKUPS -s ` subcommand to list the backup IDs and backup names of the backups for the database server. You will need to provide the appropriate backup ID or backup name with the BART `RESTORE` subcommand, unless you intend to restore the latest backup in which case the `-i` option of the `RESTORE` subcommand for specifying the backup ID or backup name may be omitted. + +4. Run the BART `RESTORE` subcommand with the appropriate options. + + - The backup is restored to the directory specified by the `-p restore_path` option. + + - In addition, if the `RESTORE` subcommand `-c` option is specified or if the enabled setting of the `copy_wals_during_restore` BART configuration parameter is applicable to the database server, then the required archived WAL files from the `archive_path` are copied to the `restore_path/archived_wals` subdirectory. + + - Ensure the `restore_path` directory and all subdirectories and files in the `restore_path` are owned by the proper Postgres user account (for example, `enterprisedb` or `postgres`). Also ensure that only the Postgres user account has access permission to the `restore_path` directory. + + Use the `chown` command to make the appropriate adjustments to file permissions; for example, the following command changes the ownership of `restore_path` to `enterprisedb`: + + `chown -R enterprisedb:enterprisedb restore_path` + + The following command restricts access to `restore_path`: + + `chmod 700 restore_path` + +5. Copy any saved WAL files from Step 2 that were not archived to the BART backup catalog to the `restore_path/pg_wal` subdirectory (`pg_xlog` subdirectory if you are using server version 9.6). + +6. Identify the timeline ID you wish to use to perform the restore operation. + + The available timeline IDs can be identified by the first non-zero digit of the WAL file names reading from left to right. + +7. Verify that the `postgresql.auto.conf` file created in the directory specified with the `RESTORE` subcommand’s `-p ` option was generated with the correct recovery parameter settings. + + If the `RESTORE` subcommand `-c` option is specified or if the enabled setting of the `copy_wals_during_restore` BART configuration parameter is applicable to the database server, then the `restore_command` parameter retrieves the archived WAL files from the `/archived_wals` subdirectory that was created by the `RESTORE` subcommand, otherwise the `restore_command` retrieves the archived WAL files from the BART backup catalog. + +8. The BART `RESTORE` subcommand disables WAL archiving in the restored database cluster. If you want to immediately enable WAL archiving, modify the `postgresql.conf` file by deleting the `archive_mode = off` parameter that BART appends to the end of the file. + +9. Start the database server, which will then perform the point-in-time recovery operation if recovery settings are saved in the `postgresql.auto.conf` file. + +For a detailed description of the `RESTORE` subcommand, see [Basic BART Subcommand Usage](../03_basic_bart_subcommand_usage/#basic_bart_subcommand_usage). An example of a Point-in-Time Recovery operation is documented in the *EDB Backup and Recovery Reference Guide* available at the [EDB website](/bart/latest/bart_ref/). See [Restore](../03_basic_bart_subcommand_usage/08_restore/#restore) for more information about using the `Restore` subcommand. diff --git a/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/01_bart_management_overview/index.mdx b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/01_bart_management_overview/index.mdx new file mode 100644 index 00000000000..4cb9c779397 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/01_bart_management_overview/index.mdx @@ -0,0 +1,34 @@ +--- +title: "BART Management Overview" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/bart_management_overview.html" +--- + + + +After configuring BART, you can begin the backup and recovery management process. The following steps will help you get started: + +1. Run the `CHECK-CONFIG` subcommand without the `-s` option. When the `CHECK-CONFIG` subcommand is used without specifying the `-s` option, it checks the parameters in the global section of the BART configuration file. +2. Run the `INIT` subcommand (if you have not already done so) to finish creation of the BART backup catalog, which results in the complete directory structure to which backups and WAL files are saved. This step must be done before restarting the database servers with enabled WAL archiving, otherwise the copy operation in the `archive_command` parameter of the `postgresql.conf` file or the `postgresql.auto.conf` file fails due to the absence of the target archive directory. When the directory structure is complete, the `archived_wals` subdirectory should exist for each database server. +3. Start the Postgres database servers with archiving enabled. Verify that the WAL files are appearing in the `archive_path`. The archiving frequency is dependent upon other `postgresql.conf` configuration parameters. Check the Postgres database server log files to ensure there are no archiving errors. Archiving should be operational before taking a backup in order to ensure that the WAL files that may be created during the backup process are archived. +4. Start the WAL scanner if you intend to take incremental backups. Since the WAL scanner processes the WAL files copied to the `archive path`, it is advantageous to commence the WAL scanning as soon as the WAL files begin to appear in the `archive_path` in order to keep the scanning in pace with the WAL archiving. +5. Run the BART `CHECK-CONFIG` subcommand for each database server with the `-s` option specifying the server name. This ensures the database server is properly configured for taking backups. +6. Create a full backup for each database server. The full backup establishes the starting point of when point-in-time recovery can begin and also establishes the initial parent backup for any incremental backups to be taken. + +There are now a number of other BART management processes you may perform: + +- Execute the `BACKUP` subcommand to create additional full backups or incremental backups. +- Use the `VERIFY-CHKSUM` subcommand to verify the checksum of the full backups. +- Display database server information with the `SHOW-SERVERS` subcommand. +- Display backup information with the `SHOW-BACKUPS` subcommand. +- Compress the archived WAL files in the `archive_path` by enabling WAL compression in the BART configuration file and then invoking the `MANAGE` subcommand. +- Determine and set the retention policy for backups in the BART configuration file. +- Establish the procedure for using the `MANAGE` subcommand to enforce the retention policy for backups. This may include using `cron` jobs to schedule the `MANAGE` subcommand. + +
+ +performing_a_restore_operation point_in_time_recovery_operation + +
diff --git a/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/01_overview_managing_backups_using_a_retention_policy.mdx b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/01_overview_managing_backups_using_a_retention_policy.mdx new file mode 100644 index 00000000000..7169d6f7bb6 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/01_overview_managing_backups_using_a_retention_policy.mdx @@ -0,0 +1,23 @@ +--- +title: "Overview - Managing Backups Using a Retention Policy" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/overview_managing_backups_using_a_retention_policy.html" +--- + + + +The BART retention policy results in the categorization of each backup in one of three statuses – *active*, *obsolete*, and *keep*. + +- **Active.** The backup satisfies the retention policy applicable to its server. Such backups would be considered necessary to ensure the recovery safety for the server and thus should be retained. +- **Obsolete.** The backup does not satisfy the retention policy applicable to its server. The backup is no longer considered necessary for the recovery safety of the server and thus can be deleted. +- **Keep.** The backup is to be retained regardless of the retention policy applicable to its server. The backup is considered vital to the recovery safety for the server and thus should not be deleted for an indefinite period of time. + +There are two types of retention policies - redundancy retention policy and recovery window retention policy. + +- **Redundancy Retention Policy** - The [redundancy retention policy](03_setting_the_retention_policy/#redundancy-retention-policy) relies on a specified, maximum number of most recent backups to retain for a given server. When the number of backups exceeds that maximum number, the oldest backups are considered obsolete (except for backups marked as keep). +- **Recovery Window Retention Policy** - The [recovery window retention policy](03_setting_the_retention_policy/#recovery-window-retention-policy) relies on a time frame (the recovery window) for when a backup should be considered active. The boundaries defining the recovery window are the current date/time (the ending boundary of the recovery window) and the date/time going back in the past for a specified length of time (the starting boundary of the recovery window). + - If the date/time the backup was taken is within the recovery window (that is, the backup date/time is on or after the starting date/time of the recovery window), then the backup is considered active, otherwise it is considered obsolete (except for backups marked as keep). + - Thus, for the recovery window retention policy, the recovery window time frame dynamically shifts, so the end of the recovery window is always the current date/time when the `MANAGE` subcommand is run. As you run the `MANAGE` subcommand at future points in time, the starting boundary of the recovery window moves forward in time. At some future point, the date/time of when a backup was taken will be earlier than the starting boundary of the recovery window. This is when an active backup’s status will be considered obsolete. + - You can see the starting boundary of the recovery window at any point in time by running the `SHOW-SERVERS` subcommand. The `RETENTION POLICY` field of the `SHOW-SERVERS` subcommand displays the starting boundary of the recovery window. diff --git a/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/02_marking_the_backup_status.mdx b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/02_marking_the_backup_status.mdx new file mode 100644 index 00000000000..047552d0a9e --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/02_marking_the_backup_status.mdx @@ -0,0 +1,25 @@ +--- +title: "Marking the Backup Status" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/marking_the_backup_status.html" +--- + + + +When a backup is initially created with the `BACKUP` subcommand, it is always recorded with active status. Use the `MANAGE` subcommand to evaluate if the backup status should be changed to obsolete in accordance with the retention policy. You can review the current status of your backups with the `SHOW-BACKUPS` subcommand. + +Active backups are evaluated and also marked (that is, internally recorded by BART) as obsolete only when the `MANAGE` subcommand is invoked either with no options or with only the `-s` option. + +Once a backup has been marked as obsolete, you cannot change it back to active unless you perform the following steps: + +- Use the `MANAGE` subcommand with the `-c` option along with the backup identifier or name with the `-i` option. To keep this particular backup indefinitely, use `-c keep`, otherwise use `-c nokeep`. +- If you use the `-c nokeep` option, the backup status is changed back to active. When the `MANAGE` subcommand is used the next time, the backup is re-evaluated to determine if its status needs to be changed back to obsolete based on the current retention policy in the BART configuration file. + +After setting the `retention_policy` parameter and running the `MANAGE` subcommand if you change the `retention_policy` parameter, the current, marked status of the backups are probably inconsistent with the new `retention_policy` setting. To modify the backup status to be consistent with the new `retention_policy` setting, you need to run the `MANAGE` subcommand with: + +- the `-c nokeep` option to change the obsolete status to active status if there are backups currently marked as obsolete that would no longer be considered obsolete under a new retention policy. You can also specify the `-i all` option to change all backups back to active status, including those currently marked as keep. +- no options or with only the `-s` option to reset the marked status based on the new `retention_policy` setting in the BART configuration file. + +See [MANAGE](../03_basic_bart_subcommand_usage/07_manage/#manage) for usage information for the `MANAGE` subcommand. diff --git a/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/03_setting_the_retention_policy.mdx b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/03_setting_the_retention_policy.mdx new file mode 100644 index 00000000000..a4396239bfe --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/03_setting_the_retention_policy.mdx @@ -0,0 +1,82 @@ +--- +title: "Setting the Retention Policy" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/setting_the_retention_policy.html" +--- + + + +The retention policy is determined by the `retention_policy` parameter in the BART configuration file. It can be applied globally to all servers, but each server can override the global retention policy with its own. For information about creating a global retention policy and an individual database server retention policy, see the EDB Backup and Recovery Installation and Upgrade Guide available at the [EDB website](/bart/latest/bart_inst/). + +There are two types of retention policies - redundancy retention policy and the recovery window retention policy as described in the following sections. + + + +## Redundancy Retention Policy + +To use the redundancy retention policy, set `retention_policy = max_number BACKUPS` where `max_number` is a positive integer designating the maximum number of most recent backups. + +**Additional Restrictions:** + +- The keyword `BACKUPS` must always be specified in plural form (for example, `1 BACKUPS`). +- BART will accept a maximum integer value of 2,147,483,647 for `max_number`; however, you should use a realistic, practical value based on your system environment. + +The redundancy retention policy is the default type of retention policy if all keywords `BACKUPS`, `DAYS`, `WEEKS`, and `MONTHS` following the `max_number` integer are omitted as shown by the following example: + +`retention_policy = 3` + +In the following example, the redundancy retention policy setting considers the three most recent backups as the active backups. Any older backups, except those marked as `keep`, are considered obsolete: + +```text +[ACCTG] +host = 127.0.0.1 +port = 5444 +user = enterprisedb +archive_command = 'cp %p %a/%f' +retention_policy = 3 BACKUPS +description = "Accounting" +``` + +The `SHOW-SERVERS` subcommand displays the `3 Backups` redundancy retention policy in the `RETENTION POLICY` field: + +```bash +-bash-4.1$ bart SHOW-SERVERS -s acctg +SERVER NAME : acctg +HOST NAME : 127.0.0.1 +USER NAME : enterprisedb +PORT : 5444 +REMOTE HOST : +RETENTION POLICY : 3 Backups +DISK UTILIZATION : 627.04 MB +NUMBER OF ARCHIVES : 25 +ARCHIVE PATH : /opt/backup/acctg/archived_wals +ARCHIVE COMMAND : cp %p /opt/backup/acctg/archived_wals/%f +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +DESCRIPTION : "Accounting" +``` + + + +## Recovery Window Retention Policy + +To use the recovery window retention policy, set the `retention_policy` parameter to the desired length of time for the recovery window in one of the following ways: + +- Set to `max_number DAYS` to define the start date/time recovery window boundary as the number of days specified by `max_number` going back in time from the current date/time. +- Set to `max_number WEEKS` to define the start date/time recovery window boundary as the number of weeks specified by `max_number` going back in time from the current date/time. +- Set to `max_number MONTHS` to define the start date/time recovery window boundary as the number of months specified by `max_number` going back in time from the current date/time. + +**Additional Restrictions:** + +- The keywords `DAYS`, `WEEKS`, and `MONTHS` must always be specified in plural form (for example, `1 DAYS`, `1 WEEKS`, or `1 MONTHS`). +- BART will accept a maximum integer value of `2,147,483,647` for `max_number`, however, a realistic, practical value based on your system environment must always be used. + +A backup is considered active if the date/time of the backup is equal to or greater than the start of the recovery window date/time. + +You can view the actual, calculated recovery window by: + +- Invoking the `MANAGE` subcommand in debug mode, along with the `-n` option. +- Using the `SHOW-SERVERS` subcommand. diff --git a/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/04_managing_the_backups_based_on_the_retention_policy.mdx b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/04_managing_the_backups_based_on_the_retention_policy.mdx new file mode 100644 index 00000000000..def779a4026 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/04_managing_the_backups_based_on_the_retention_policy.mdx @@ -0,0 +1,147 @@ +--- +title: "Managing the Backups Based on the Retention Policy" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/managing_the_backups_based_on_the_retention_policy.html" +--- + + + +The [MANAGE](../03_basic_bart_subcommand_usage/07_manage/#manage) subcommand is used to evaluate and categorize backups according to the retention policy set in the BART configuration file. When a backup is first created with the `BACKUP` subcommand, it is `active`. You can use the `MANAGE` subcommand to change the status of an active backup to `obsolete`. Obsolete backups can then be deleted. + +This section covers following aspects of backup management: + +- The rules for [deleting backups](#deletions_permitted_under_retention_policy) depending upon the backup status and the subcommand used. +- The process to retain a backup indefinitely by [marking it as keep](#marking-backups-for-indefinite-keep-status). This section also provides information about resetting backups status (that are marked as `obsolete` and `keep`) back to active status. +- The general process for [evaluating, marking, and then deleting obsolete backups](#evaluating-marking-and-deleting-obsolete-backups). + + + +## Deletions Permitted Under a Retention Policy + +This section describes how and under what conditions backups may be deleted under a retention policy. + +You must use the `MANAGE` subcommand to delete obsolete backups. Use the `DELETE` subcommand only for special administrative purposes. + +The deletion behavior of the `MANAGE` subcommand and the `DELETE` subcommand are based on different aspects of the retention policy. + +- The `MANAGE` subcommand deletion relies solely upon how a backup status is currently marked (that is, internally recorded by BART). The current setting of the `retention_policy` parameter in the BART configuration file is ignored. +- The `DELETE` subcommand relies solely upon the current setting of the `retention_policy` parameter in the BART configuration file. The current active, obsolete, or keep status of a backup is ignored. + +The specific deletion rules for the `MANAGE` and `DELETE` subcommands are as follows: + +- `MANAGE` subcommand: The `MANAGE` subcommand with the `-d` option can only delete backups marked as obsolete. This deletion occurs regardless of the current `retention_policy` setting in the BART configuration file. The deletion of backups relies on the last occasion when the backups have been marked. +- `DELETE` subcommand: + + - Under a redundancy retention policy currently set with the `retention_policy` parameter in the BART configuration file, any backup regardless of its marked status, can be deleted with the `DELETE` subcommand when the backup identifier or name is specified with the `-i` option and if the current total number of backups for the specified database server is greater than the maximum number of redundancy backups currently specified with the `retention_policy` parameter. + + If the total number of backups is less than or equal to the specified, maximum number of redundancy backups, then no additional backups can be deleted using `DELETE` with the `-i backup` option. + + - Under a recovery window retention policy currently set with the `retention_policy` parameter in the BART configuration file, any backup regardless of its marked status, can be deleted with the `DELETE` subcommand when the backup identifier or name is specified with the `-i` option, and if the backup date/time is not within the recovery window currently specified with the `retention_policy` parameter. If the backup date/time is within the recovery window, then it cannot be deleted using `DELETE` with the `-i backup` option. + + - Invoking the `DELETE` subcommand with the `-i all` option results in the deletion of all backups regardless of the retention policy and regardless of whether the status is marked as active, obsolete, or keep. + +The following table summarizes the deletion rules of backups according to their marked status. An entry of `Yes` indicates the backup may be deleted under the specified circumstances. An entry of `No` indicates that the backup may not be deleted. + + ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OperationRedundancy Retention PolicyRecovery Window Retention Policy
ActiveObsoleteKeepActiveObsoleteKeep
MANAGE –dNoYesNoNoYesNo
DELETE –i *backup* +

Yes

+

(see Note 1)

+
+

Yes

+

(see Note 1)

+
+

Yes

+

(see Note 1_)

+
+

Yes

+

(see Note 2

+
+

Yes

(see Note 2 +
+

Yes

(see Note 2) +
DELETE –i allYesYesYesYesYesYes
+ + + +!!! Note + Redundancy Retention Policy (Note 1) : Deletion occurs only if the total number of backups for the specified database server is greater than the specified, maximum number of redundancy backups currently set with the `redundancy_policy` parameter in the BART configuration file. + + + +!!! Note + Recovery Window Retention Policy (Note 2): Deletion occurs only if the backup is not within the recovery window currently set with the `redundancy_policy` parameter in the BART configuration file. + + + +## Marking Backups for Indefinite Keep Status + +There may be certain backups that you wish to keep for an indefinite period of time and do not wish to delete based upon the retention policy applied to the database server. Such backups can be marked as `keep` to exclude them from being marked as obsolete. Use the `MANAGE` subcommand with the `-c keep` option to retain such backups indefinitely. + + + +## Evaluating, Marking, and Deleting Obsolete Backups + +When the `MANAGE` subcommand is invoked, BART evaluates active backups: + +- If you include the `-s` option when invoking the `MANAGE` subcommand, BART evaluates backups for the database server. +- If you include the `-s all` option when invoking the `MANAGE` subcommand, BART evaluates backups for all database servers. +- If the `-s` option is omitted, the command evaluates the current number of backups for the database server based on the redundancy retention policy or the current date/time for a recovery window retention policy. + +!!! Note + The status of backups currently marked as `obsolete` or `keep` is not changed. To re-evaluate such backups and then classify them, their status must first be reset to `active` with the `MANAGE -c nokeep` option. See [Marking the Backup Status](02_marking_the_backup_status/#marking_the_backup_status) for more information. + +See the *EDB Backup and Recovery Reference Guide* available at the [EDB website](/bart/latest/bart_ref/) to review examples of how to evaluate, mark, and delete backups using a redundancy retention policy and recovery window retention policy, as well as examples of `MANAGE` subcommand. diff --git a/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/05_managing_incremental_backups.mdx b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/05_managing_incremental_backups.mdx new file mode 100644 index 00000000000..c69f6b09086 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/05_managing_incremental_backups.mdx @@ -0,0 +1,51 @@ +--- +title: "Managing Incremental Backups" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/managing_incremental_backups.html" +--- + + + +The following section summarizes how retention policy management affects incremental backups. + +- The retention policy rules are applied to full backups. + - A redundancy retention policy uses the number of full backups to determine if a backup is obsolete. Incremental backups are excluded from the comparison count against the `retention_policy` setting for the maximum number of backups. + - A recovery window retention policy uses the backup date/time of any full backups to determine if a backup is obsolete. The backup date/time of any successive incremental backups in the chain are ignored when comparing with the recovery window. +- The retention status of all incremental backups in a chain is set to the same status applied to the full backup of the chain. +- The actions applied by the `MANAGE` and `DELETE` subcommands on a full backup are applied to all incremental backups in the chain in the same manner. +- Thus, a backup chain (that is, the full backup and all its successive incremental backups) are treated by retention policy management as if they are all one, single backup. + - The status setting applied to the full backup is also applied to all incremental backups in its chain. + - If a full backup is marked as obsolete and then deleted according to the retention policy, all incremental backups in the chain are also marked obsolete and then deleted as well. + +The following are some specific points regarding the `MANAGE` and `DELETE` subcommands on incremental backups. + +- `MANAGE` subcommand: + - When the `MANAGE` subcommand is invoked, the status applied to the full backup is also applied to all successive incremental backups in the chain. + - The `MANAGE` subcommand with the `-c { keep | nokeep}` option cannot specify the backup identifier or backup name of an incremental backup with `-i` backup option. The `-i` backup option can only specify the backup identifier or backup name of a full backup. + - You can also use the `-i` all option to take a backup of all backups. When the `MANAGE` subcommand with the `-c { keep | nokeep }` option is applied to a full backup, the same status change is made to all incremental backups in the chain. +- `DELETE` subcommand: + - The `DELETE` subcommand with the `-s server -i` backup option specifies the backup identifier or backup name of an incremental backup in which case that incremental backup along with all its successive incremental backups are deleted, thus shortening that backup chain. + +## Using a Redundancy Retention Policy with Incremental Backups + +When a [redundancy retention policy](03_setting_the_retention_policy/#redundancy-retention-policy) is used and the `MANAGE` subcommand is invoked, the status of the oldest `active` full backup is changed to `obsolete` if the number of full backups exceeds the maximum number specified by the `retention_policy` parameter in the BART configuration file. + +!!! Note + When a full backup is changed from `active` to `obsolete`, all successive incremental backups in the chain of the full backup are also changed from `active` to `obsolete`. + +When determining the number of backups that exceeds the number specified by the `retention_policy` parameter, only full backups are counted for the comparison. Incremental backups are not included in the count for the comparison against the `retention_policy` parameter setting. + +See the *EDB Backup and Recovery Reference Guide* available at the [EDB website](/bart/latest/bart_ref/) for examples demonstrating use of the `MANAGE` and `DELETE` subcommands when a redundancy retention policy is in effect. + +## Using a Recovery Window Retention Policy with Incremental Backups + +If the `MANAGE` command is invoked when BART is configured to use a [recovery window retention policy](03_setting_the_retention_policy/#recovery-window-retention-policy), the status of `active` full backups are changed to `obsolete` if the date/time of the full backup is outside of the recovery window. + +!!! Note + If a full backup is changed from `active` to `obsolete`, all successive incremental backups in the chain of the full backup are also changed from `active` to `obsolete`. + +The status of an incremental backup is changed to `obsolete` regardless of whether or not the date/time of when the incremental backup was taken still lies within the recovery window. + +See the *EDB Backup and Recovery Reference Guide* available at the [EDB website](/bart/latest/bart_ref/) for examples demonstrating use of the `MANAGE` and `DELETE` subcommands when a recovery window retention policy is in effect. diff --git a/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/index.mdx b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/index.mdx new file mode 100644 index 00000000000..aff92bbd6a5 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/index.mdx @@ -0,0 +1,27 @@ +--- +title: "Managing Backups Using a Retention Policy" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/managing_backups_using_a_retention_policy.html" +--- + + + +Over the course of time when using BART, the number of backups can grow significantly. This ultimately leads to a large consumption of disk space unless an administrator periodically performs the process of deleting the oldest backups that are no longer needed. This process of determining when a backup is old enough to be deleted and then actually deleting such backups can be done and automated with the following basic steps: + +1. Determine and set a retention policy in the BART configuration file. A *retention policy* is a rule that determines when a backup is considered obsolete. The retention policy can be applied globally to all servers, but each server can override the global retention policy with its own. + +2. Use the `MANAGE` subcommand to categorize and manage backups according to the retention policy. + +3. Create a cron job to periodically run the `MANAGE` subcommand to evaluate the backups and then list and/or delete the obsolete backups. + + Retention policy management applies differently to incremental backups than to full backups. See [Managing Incremental Backups](05_managing_incremental_backups/#managing_incremental_backups) for information about how retention policy management is applied to each backup type. + + The following sections describe how retention policy management generally applies to backups, and its specific usage and effect on full backups. + +
+ +overview_managing_backups_using_a_retention_policy marking_the_backup_status setting_the_retention_policy managing_the_backups_based_on_the_retention_policy managing_incremental_backups + +
diff --git a/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/01_check_config.mdx b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/01_check_config.mdx new file mode 100644 index 00000000000..f12dd038edd --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/01_check_config.mdx @@ -0,0 +1,35 @@ +--- +title: "CHECK-CONFIG" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/check_config.html" +--- + + + +The `CHECK-CONFIG` subcommand checks the parameter settings in the BART configuration file as well as the database server configuration for which the `-s` option is specified. + +**Syntax:** + +`bart CHECK-CONFIG [ –s server_name ]` + +The following table describes the option. + +| Options | Description | +| ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s ` or `--server ` | `server_name` is the name of the database server to be checked for proper configuration. If the option is omitted, the settings of the global section of the BART configuration file are checked. | + +- When the `-s` option is omitted, the global section \[BART] parameters including `bart_host`, `backup_path`, and `pg_basebackup_path` are checked. +- When the `-s` option is specified, the server section parameters are checked. In addition, certain database server `postgresql.conf` parameters are also checked, which include the following: + - The `cluster_owner` parameter must be set to the user account owning the database cluster directory. + - A passwordless SSH/SCP connection must be set between the BART user and the user account specified by the `cluster_owner` parameter. + - A database superuser must be specified by the BART `user` parameter. + - The `pg_hba.conf` file must contain a replication entry for the database superuser specified by the BART `user` parameter. + - The `archive_mode` parameter in the `postgresql.conf` file must be enabled. + - The `archive_command` parameter in the `postgresql.auto.conf` or the `postgresql.conf` file must be set. + - The `allow_incremental_backups` parameter in the BART configuration file must be enabled for database servers for which incremental backups are to be taken. + - Archiving of WAL files to the `archive_path` must be in process. + - The WAL scanner program must be running. + +The `CHECK-CONFIG` subcommand displays an error message if the required configuration is not properly set. diff --git a/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/02_init.mdx b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/02_init.mdx new file mode 100644 index 00000000000..d8cdeed8126 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/02_init.mdx @@ -0,0 +1,41 @@ +--- +title: "INIT" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/init.html" +--- + + + +The `INIT` subcommand is used to create the BART backup catalog directory, rebuild the BART `backupinfo` file, and set the `archive_command` in the PostgreSQL server based on the `archive_command` setting in the `bart.cfg` file. + +!!! Note + If the `archive_mode` configuration parameter is set to `off`, then the `-o` option must be used to set the Postgres `archive_command` using the BART `archive_command` parameter in the BART configuration file even if the `archive_command` is not currently set in `postgresql.conf` nor in `postgresql.auto.conf` file. + +**Syntax:** + +```text +bart INIT [ –s { | all } ] [ -o ] + [ -r [ -i { | | all } ] ] + [--no-configure] +``` + +All subcommand options are generally specified in lowercase. The following table describes the command options: + +| Options | Description | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s { \| all }`

`--server { \| all }` | `server_name` is the name of the database server to which the `INIT` actions are to be applied. If `all` is specified or if the option is omitted, the actions are applied to all servers. | +| `-o`

`--override` | Overrides the existing, active Postgres `archive_command` configuration parameter setting in the `postgresql.conf` file or the `postgresql.auto.conf` file using the BART `archive_command` parameter in the BART configuration file. The `INIT` generated archive command string is written to the `postgresql.auto.conf` file. | +| `-r`

`--rebuild` | Rebuilds the backupinfo file (a text file named `backupinfo`) located in each backup subdirectory. This option is only intended for recovering from a situation where the backupinfo file has become corrupt.
If the backup was initially created with a user-defined backup name, and then the `INIT -r` option is invoked to rebuild that `backupinfo` file, the user-defined backup name is no longer available. Thus, future references to the backup must use the backup identifier. | +| `-i { \| \| all }`

`--backupid { \| \| all }` | `` is an integer, backup identifier and `` is the user-defined alphanumeric name for the backup. If `all` is specified or if the option is omitted, the backupinfo files of all backups for the database servers specified by the `-s` option are recreated. The `-i` option can only be used with the `-r` option. | +| `--no-configure` | Prevents the `archive_command` from being set in the PostgreSQL server. | + +**Archive Command Setting** + +After the `archive_command` is set, you need to either restart the PostgreSQL server or reload the configuration file in the PostgreSQL server based on the following conditions. + +- If the `archive_mode` is set to `off` and `archive_command` is not set in the PostgreSQL server, the `archive_command` is set based on the `archive_command` setting in the `bart.cfg` and also sets the `archive_mode` to `on`. In this case, you need to restart the PostgreSQL server using `pg_ctl restart` +- If the `archive_mode` is set to `on` and `archive_command` is not set in the PostgreSQL server, the `archive_command` is set based on the `archive_command` setting in the `bart.cfg`. In this case, you need to reload the configuration in the PostgreSQL server using `pg_reload_conf()` or `pg_ctl reload`. +- If the `archive_mode` is set to `off` and `archive_command` is already set in the PostgreSQL server, the `archive_mode` is set to on. In this case, you need to restart the PostgreSQL server using `pg_ctl restart` +- If the `archive_mode` is set to `on` and `archive_command` is already set in the PostgreSQL server, then the `archive_command` is not set unless `-o` option is specified. diff --git a/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/03_backup.mdx b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/03_backup.mdx new file mode 100644 index 00000000000..aa12cd957e2 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/03_backup.mdx @@ -0,0 +1,104 @@ +--- +title: "BACKUP" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/backup.html" +--- + + + +The `BACKUP` subcommand is used to create a full backup or an incremental backup. + +**Syntax for full backup:** + +```text +bart BACKUP –s { | all } [ -F { p | t } ] + [ -z ] [ –c ] + [ --backup-name ] + [ --thread-count ] + [ { --with-pg_basebackup | --no-pg_basebackup } ] +``` + +!!! Note + While taking a backup, if a file (for example, database server log file) exceeding 1 GB size is stored in the `$PGDATA` directory, the backup will fail. To avoid such backup failure, you need to store large files (exceeding 1 GB) outside the `$PGDATA` directory. + +**Syntax for incremental Backup:** + +```text +bart BACKUP –s { | all } [ -F p] + [ --parent { | } ] + [ --backup-name ] + [ --thread-count ] + [ --check ] +``` + +!!! Note + To take an [incremental backup](../../02_overview/01_block-level_incremental_backup/#block-level_incremental_backup), you must take a full backup first followed by incremental backup. + +**Please Note:** + +- While a `BACKUP` subcommand is in progress, no other subcommands must be invoked. Any subcommands invoked while a backup is in progress will skip and ignore the backups. + +- For full backup, the target default format is a tar file, whereas for incremental backup, only plain format must be specified. + +- The backup is saved in the `//` directory, where `` is the value assigned to the `` parameter in the BART configuration file, `` is the lowercase name of the database server as listed in the configuration file, and `` is a backup identifier assigned by BART to the particular backup. + +- MD5 checksums of the full backup and any user-defined tablespaces are saved as well for tar backups. + +- Before performing the backup, BART checks to ensure if there is enough disk space to completely store the backup in the BART backup catalog. + +- In the `postgresql.conf` file, ensure the `wal_keep_segments` configuration parameter is set to a sufficiently large value. A low setting of the `wal_keep_segments` configuration parameter may result in the deletion of some WAL files before the BART `BACKUP` subcommand saves them to the `archive_path`. For information about the `wal_keep_segments` parameter, see the [PostgreSQL Core Documentation](https://www.postgresql.org/docs/current/static/runtime-config-replication.html). + +- In the BART configuration file, setting `xlog_method=stream` will instruct the server to stream the transaction log in parallel with creation of the backup for a specific database server; otherwise the transaction log files are collected upon completion of the backup. See the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/) for details about database server setting. + + !!! Note + If the transaction log streaming method is used, the `-Fp` option for a plain text backup format must be specified with the `BACKUP` subcommand. + +- When you use BART to take a backup of PostgreSQL server, multiple backups can be taken simultaneously and if a backup is interrupted, the backup mode is terminated automatically without the need to run `pg_stop_backup()` command manually to terminate the backup. + +**Options** + +Along with the `BACKUP` subcommand, specify the following option: + +| Options | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s { server_name \| all }`
`--server { server_name \| all }` | `server_name` is the database server name to be backed up as specified in the BART configuration file. If `all` is specified, all servers are backed up. This option is mandatory.
If `all` is specified, and a connection to a database server listed in the BART configuration file cannot be opened, the backup for that database server is skipped, but the backup operation continues for the other database servers. | + +Specify the following options as required. If you do not specify any of the following options, the backup is created using default settings. + +| Options | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-F { p \| t }`
`--format { p \| t }` | Specify this option to provide the backup file format. Use `p` for plain text or `t` for tar. If the option is omitted, the default is tar format.
For taking incremental backups, the option `-Fp` must be specified. | +| `-z`
`--gzip` | This is applicable only for full backup. Specify this option to use gzip compression on the tar file output using the default compression level. This option is applicable only for the tar format. | +| `-c `
`--compress-level ` | This is applicable only for full backup. Specify this option to use the gzip compression level on the tar file output. `compression_level` is a digit from 1 through 9, with 9 being the best compression. This option is applicable only for the tar format. | +| `--parent { backup_id \| backup_name }` | Specify this option to take an incremental backup. `` is the backup identifier of a parent backup. `` is the user-defined alphanumeric name of a parent backup.
The parent is a backup taken prior to the incremental backup. The parent backup can be either a full backup or an incremental backup.
The option `–Fp` must be specified since an incremental backup can only be taken in plain text format.
An incremental backup cannot be taken on a standby database server. See [Block-Level Incremental Backup](../../02_overview/01_block-level_incremental_backup/#block-level_incremental_backup) for additional information on incremental backups. | +| `--backup-name ` | Specify this option to assign a user-defined, alphanumeric friendly name to the backup. The maximum permitted length of backup name is 49 characters.
The backup name may include the following variables to be substituted by the timestamp values when the backup is taken: 1) `%year` – 4-digit year, 2) `%month` – 2-digit month, 3) `%day` – 2-digit day, 4) `%hour` 2-digit hour, 5) `%minute` – 2-digit minute, and 6) `%second` – 2-digit second.
To include the percent sign (`%`) as a character in the backup name, specify `%%` in the alphanumeric string.
If the backup name contains space characters (i.e. more than one word) or when referenced with the option `-i` by other subcommands (such as `restore`), enclose the string in single quotes or double quotes. See [backup name examples](#backup_name_examples).
If the `--backup-name` option is not specified, and the `backup_name` parameter is not set for this database server in the BART configuration file, then the backup can only be referenced in other BART subcommands by the BART assigned backup identifier. | +| `--thread-count ` | Use this option to use the number of worker threads to run in parallel to copy blocks for a backup.
If the option `--thread-count` is omitted, then the `thread_count` parameter in the BART configuration file applicable to this database server is used.
If the option `--thread-count` is not enabled for this database server, then the `thread_count` setting in the global section of the BART configuration file is used.
If the option `--thread-count` is not set in the global section as well, the default number of threads is 1.
If parallel backup is run with N number of worker threads, then it will initiate N+ 1 concurrent connections with the server.
Thread count will not be effective if backup is taken on a standby server.
For more information about the `--thread-count` parameter, see the EDB Backup and Recovery Installation and Upgrade Guide available at the [EDB website](/bart/latest/bart_inst/) | +| `--with-pg_basebackup` | This is applicable only for full backup. Specify this option to use `pg_basebackup` to take a full backup. The number of thread counts in effect is ignored as given by the `thread_count` parameter in the BART configuration file.
When taking a full backup, if the thread count in effect is greater than `1`, then the `pg_basebackup` utility is not used to take the full backup (parallel worker threads are used) unless the option `--with-pg_basebackup` is specified with the `BACKUP` subcommand. | +| `--no-pg_basebackup` | This is applicable only for full backup. Specify this option if you do not want `pg_basebackup` to be used to take a full backup.
When taking a full backup, if the thread count in effect is only `1`, then the `pg_basebackup` utility is used to take the full backup unless the option `--no-pg_basebackup` is specified with the `BACKUP` subcommand. | +| `--check` | This is applicable only for incremental backup. Specify this option to verify if the required MBM files are present in the `archived_wals` directory as specified in the `archive_path` parameter in the `bart.cfg` file before taking an incremental backup. The option `--parent` must be specified when the option `--check` is used. An actual incremental backup is not taken when the option `--check` is specified. | + + + +**Backup Name Examples** + +The following examples demonstrate using the `--backup-name` clause: + +```text +./bart backup -s ppas12 -Ft --backup-name "YEAR = %year +MONTH = %month DAY = %day" +./bart backup -s ppas12 -Ft --backup-name "YEAR = %year +MONTH = %month DAY = %day %%" +./bart show-backups -s ppas12 -i "test backup" +``` + +**Error messages** + +The following table lists the error messages that may be encountered when using the `BACKUP` subcommand: + +| error message | Cause | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `edb@localhost bin]$ ./bart backup -s mktg -Ft`

`WARNING: xlog_method is empty, defaulting to global policy`

`ERROR: backup failed for server 'mktg'`

`free disk space is not enough to backup the server 'mktg'`

`space available 13.35 GB, approximately required 14.65 GB` | Insufficient free disk space. | +| `ERROR: backup failed for server 'mktg'`

`command failed with exit code 1`

`pg_basebackup: could not get transaction log end position from server: ERROR: requested WAL segment 00000001000000D50000006B has already been removed` | The wal_keep_segments configuration parameter is not set to a sufficiently large value in the postgresql.conf file. | +| `ERROR: backup failed for server 'mktg'`

`connection to the server failed: could not connect to server: Connection refused`

`Is the server running on host "172.16.114.132" and accepting`

`TCP/IP connections on port 5444?` | A connection to a database server listed in the BART configuration file fails. As a result the backup for that database server is skipped, but the backup operation continues for other database servers | diff --git a/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/04_show_servers.mdx b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/04_show_servers.mdx new file mode 100644 index 00000000000..778efd3d4d6 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/04_show_servers.mdx @@ -0,0 +1,21 @@ +--- +title: "SHOW-SERVERS" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/show_servers.html" +--- + + + +The `SHOW-SERVERS` subcommand displays the information for the managed database servers listed in the BART configuration file. + +**Syntax:** + +`bart SHOW-SERVERS [ –s { | all } ]` + +The following table describes the command options. + +| Options | Description | +| ---------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s { \| all }`
`--server { \| all }` | `` is the name of the database server whose BART configuration information is to be displayed. If `all` is specified or if the option is omitted, information for all database servers is displayed. | diff --git a/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/05_show_backups.mdx b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/05_show_backups.mdx new file mode 100644 index 00000000000..d006df69db1 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/05_show_backups.mdx @@ -0,0 +1,25 @@ +--- +title: "SHOW-BACKUPS" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/show_backups.html" +--- + +The `SHOW-BACKUPS` subcommand displays the backup information for the managed database servers. + +**Syntax:** + +```text +bart SHOW-BACKUPS [ –s { | all } ] + [ -i { | | all } ] + [ -t ] +``` + +The following table describes the command options: + +| Options | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s { \| all }`
`--server { \| all }` | `` is the name of the database server whose backup information is to be displayed.
If `all` is specified or if the option is omitted, the backup information for all database servers is displayed with the exception as described by the following note:
If `SHOW-BACKUPS` is invoked while the BART `BACKUP` subcommand is in progress, backups affected by the backup process are shown in progress status in the displayed backup information. | +| `-i { \| \| all }`
`--backupid { \| \| all }` | `` is a backup identifier and `` is the user-defined alphanumeric name for the backup.
If `all` is specified or if the option is omitted, all backup information for the relevant database server is displayed. | +| `-t`
`--toggle` | Displays more backup information in a list format. If the option is omitted, the default is a tabular format. | diff --git a/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/06_verify_chksum.mdx b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/06_verify_chksum.mdx new file mode 100644 index 00000000000..4ec79d52d62 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/06_verify_chksum.mdx @@ -0,0 +1,29 @@ +--- +title: "VERIFY-CHKSUM" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/verify_chksum.html" +--- + + + +The `VERIFY-CHKSUM` subcommand verifies the MD5 checksums of the full backups and any user-defined tablespaces for the specified database server or for all database servers. The checksum is verified by comparing the current checksum of the backup against the checksum when the backup was taken. + +!!! Note + The `VERIFY-CHKSUM` subcommand is only used for tar format backups. It is not applicable to plain format backups. + +**Syntax:** + +```text +bart VERIFY-CHKSUM + [ -s { | all } ] + [ -i { | | all } ] +``` + +The following table describes the command options: + +| Options | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s { \| all }`

`--server { \| all }` | `` is the name of the database server whose tar backup checksums are to be verified. If `all` is specified or if the `-s` option is omitted, the checksums are verified for all database servers. | +| `-i { \| \| all }`

`--backupid { \| \| all }` | `` is the backup identifier of a tar format full backup whose checksum is to be verified along with any user-defined tablespaces.
`` is the user-defined alphanumeric name for the full backup.
If `all` is specified or if the `-i` option is omitted, the checksums of all tar backups for the relevant database server are verified. | diff --git a/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/07_manage.mdx b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/07_manage.mdx new file mode 100644 index 00000000000..52a74badaa7 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/07_manage.mdx @@ -0,0 +1,62 @@ +--- +title: "MANAGE" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/manage.html" +--- + + + +The `MANAGE` subcommand can be invoked to: + +- Evaluate backups, mark their status, and delete obsolete backups based on the `retention_policy` parameter in the BART configuration file (See [Managing Backups Using a Retention Policy](../02_managing_backups_using_a_retention_policy/#managing_backups_using_a_retention_policy) for information about retention policy management). + +- Compress the archived WAL files based on the `wal_compression` parameter in the BART configuration file (See the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/) for information about setting this parameter). + + **Syntax:** + + ```text + bart MANAGE [ –s { | all} ] + [ -l ] [ -d ] + [ -c { keep | nokeep } + -i { | | all } ] + [ -n ] + ``` + +The following summarizes the actions performed when the `MANAGE` subcommand is invoked: + +- When the `MANAGE` subcommand is invoked with no options or with only the `-s ` or `-s all` option, the following actions are performed: + - For the server specified by the `-s` option, or for all servers (if `-s all` is specified or the `-s` option is omitted), active backups are marked as `obsolete` in accordance with the retention policy. + - All backups that were marked `obsolete` or `keep` prior to invoking the `MANAGE` subcommand remain marked with the same prior status. + - If WAL compression is enabled for the database server, then any uncompressed, archived WAL files in the BART backup catalog of the database server are compressed with gzip. +- When the `MANAGE` subcommand is invoked with any other option besides the `-s` option, the following actions are performed: + - For the server specified by the `-s` option, or for all servers, the action performed is determined by the other specified options (that is, `-l` to list obsolete backups, `-d` to delete obsolete backups, `-c` to keep or to return backups to `active` status, or `-n` to perform a dry run of any action). + - No marking of `active` backups to `obsolete` status is performed regardless of the retention policy. + - All backups that were marked `obsolete` or `keep` prior to invoking the `MANAGE` subcommand remain marked with the same prior status unless the `-c` option (without the `-n` option) is specified to change the backup status of the particular backup or all backups referenced with the `-i` option. + - No compression is applied to any uncompressed, archived WAL file in the BART backup catalog regardless of whether or not WAL compression is enabled. + +The following are additional considerations when using WAL compression: + +- Compression of archived WAL files is not permitted for database servers on which incremental backups are to be taken. +- The gzip compression program must be installed on the BART host and be accessible in the `PATH` of the BART user account. +- When the `RESTORE` subcommand is invoked, if the `-c` option is specified or if the `copy_wals_during_restore` BART configuration parameter is enabled for the database server, then the following actions occur: + + - If compressed, archived WAL files are stored in the BART backup catalog and the location to which the WAL files are to be restored is on a remote host relative to the BART host: + + - the archived WAL files are transmitted across the network to the remote host in compressed format only if the gzip compression program is accessible in the `PATH` of the remote user account that is used to log into the remote host when performing the `RESTORE` operation. + - This remote user is specified with either the `remote_host` parameter in the BART configuration file or the `RESTORE -r` option (see [RESTORE](08_restore/#restore)). + - Transmission of compressed WAL files results in less network traffic. After the compressed WAL files are transmitted across the network, the `RESTORE` subcommand uncompresses the files for the point-in-time recovery operation. + - If the gzip program is not accessible on the remote host in the manner described in the previous bullet point, then the compressed, archived WAL files are first uncompressed while on the BART host, then transmitted across the network to the remote host in uncompressed format. +- When the `RESTORE` subcommand is invoked without the `-c` option and the `copy_wals_during_restore` BART configuration parameter is disabled for the database server, then any compressed, archived WAL files needed for the `RESTORE` operation are uncompressed in the BART backup catalog. The uncompressed WAL files can then be saved to the remote host by the `restore_command` in the `postgresql.auto.conf` file when the database server archive recovery begins. + +The following table describes the command options: + +| Options | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `s { \| all }`
`--server { \| all }` | `` is the name of the database server to which the actions are to be applied. If `all` is specified or if the `-s` option is omitted, the actions are applied to all database servers. | +| `-l`
`--list-obsolete` | Lists the backups marked as obsolete. | +| `-d`
`--delete-obsolete` | Delete the backups marked as `obsolete`. This action physically deletes the backup along with its archived WAL files and any MBM files for incremental backups. | +| `-c { keep \| nokeep }`

`--change-status { keep \| nokeep }` | Specify `keep` to change the status of a backup to `keep` to retain it indefinitely.
Specify `nokeep` to change the status of any backup back to active status. The backup can then be re-evaluated and possibly be marked to `obsolete` according to the retention policy by subsequent usage of the `MANAGE` subcommand.
The `–i` option must be included when using the `-c` option. | +| `-i { \| \| all }`

`--backupid { \| \| all }` | `` is a backup identifier and `` is the user-defined alphanumeric name for the backup.
If `all` is specified, then actions are applied to all backups.
The `–c` option must be included when using the `-i` option. | +| `-n`
`--dry-run` | Performs the test run and displays the results prior to actually implementing the actions as if the operation was performed, however, no changes are actually made.
If `-n` is specified with the `-d` option, it displays which backups would be deleted, but does not actually delete the backups.
If `-n` is specified with the `-c` option, it displays the keep or nokeep action, but does not actually change the backup from its current status.
If `-n` is specified alone with no other options, or with only the `-s` option, it displays which active backups would be marked as obsolete, but does not actually change the backup status. In addition, no compression is performed on uncompressed, archived WAL files even if WAL compression is enabled for the database server. | diff --git a/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/08_restore.mdx b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/08_restore.mdx new file mode 100644 index 00000000000..d74a4d1f5d6 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/08_restore.mdx @@ -0,0 +1,46 @@ +--- +title: "RESTORE" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/restore.html" +--- + + + +The `RESTORE` subcommand restores a backup and its archived WAL files for the designated database server to the specified directory location. If the appropriate `RESTORE` options are specified, all recovery settings will be saved in the `postgresql.auto.conf` file. + +**Syntax:** + +```text +bart RESTORE –s -p + [ –i { | } ] + [ -r ] + [ -w ] + [ -t ] + [ { -x | -g } ] + [ -c ] +``` + +For information about using a continuous archive backup for recovery, see the [PostgreSQL Core Documentation](https://www.postgresql.org/docs/13/static/continuous-archiving.html). This reference material provides detailed information about the underlying point-in-time recovery process and the meaning and usage of the restore options that are generated into the `postgresql.auto.conf` file by BART. + +**Please note**: + +- For special requirements when restoring an incremental backup to a remote database server, see [Restoring an Incremental Backup on a Remote Host](../../02_overview/01_block-level_incremental_backup/05_restoring_an_incremental_backup/#restoring_an_incremental_backup_on_a_remote_host). +- Check to ensure that the host where the backup is to be restored contains enough disk space for the backup and its archived WAL files. The `RESTORE` subcommand may result in an error while copying files if there is not enough disk space available. +- See [Performing a Restore Operation](../01_bart_management_overview/01_performing_a_restore_operation/#performing_a_restore_operation) to view steps on how to perform a restore operation and see [Point-In-Time Recovery Operation](../01_bart_management_overview/02_point_in_time_recovery_operation/#point_in_time_recovery_operation) to view steps on how to perform a point-in-time recovery operation. +- If the backup is restored to a different database cluster directory than where the original database cluster resided, certain operations dependent upon the database cluster location may fail. This happens if their supporting service scripts are not updated to reflect the new directory location of restored backup. For information about the usage and modification of service scripts, see the *EDB Advanced Server Installation Guide* available at the [EDB website](/epas/latest/). + +The following table describes the command options: + +| Options | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s `
`--server ` | `` is the name of the database server to be restored. | +| `-p `
`--restore-path ` | `` is the directory path where the backup of the database server is to be restored. The directory must be empty and have the proper ownership and privileges assigned to it. | +| `-i { \| }`

`--backupid { \| }` | `` is the backup identifier of the backup to be used for the restoration and `` is the user-defined alphanumeric name for the backup.
If the option is omitted, the default is to use the latest backup. | +| `-r or --remote-host ` | `` is the user account on the remote database server host that accepts a passwordless SSH/SCP login connection and is the owner of the directory where the backup is to be restored and `` is the IP address of the remote host to which the backup is to be restored. This option must be specified if the `` parameter for this database server is not set in the BART configuration file.
If the BART user account is not the same as the operating system account owning the `` directory given with the `-p` option, use the `` BART configuration parameter or the `RESTORE` subcommand `-r` option to specify the `` directory owner even when restoring to a directory on the same host as the BART host.
See the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/) for information about the `` parameter. | +| `-w `
`--workers ` | `` is the specification of the number of worker processes to run in parallel to stream the modified blocks of an incremental backup to the restore location.
For example, if 4 worker processes are specified, 4 receiver processes on the restore host and 4 streamer processes on the BART host are used. The output of each streamer process is connected to the input of a receiver process. When the receiver gets to the point where it needs a modified block file, it obtains those modified blocks from its input. With this method, the modified block files are never written to the restore host disk. If the `-w` option is omitted, the default is `1` \| worker process. | +| `-t `
`--target-tli ` | `` is the integer identifier of the timeline to be used for replaying the archived WAL files for point-in-time recovery. | +| `-x `
`--target-xid ` | `` is the integer identifier of the transaction ID that determines the transaction up to and including, which point-in-time recovery encompasses. Include either the `-x ` or the `--target-xid ` option if point-in-time recovery is desired. | +| `-g `

`--target-timestamp ` | `` is the timestamp that determines the point in time up to and including, which point-in-time recovery encompasses. Include either the `--target-timestamp ` or the `-g ` option if point-in-time recovery is desired. | +| `-c`
`--copy-wals` | Specify this option to copy archived WAL files from the BART backup catalog to `/archived_wals` directory.
If recovery settings are saved in the `postgresql.auto.conf` file for point-in-time recovery, the `restore_command` retrieves the WAL files from `/archived_wals` for the database server archive recovery.
If the `-c` option is omitted and the `copy_wals_during_restore` parameter in the BART configuration file is not enabled in a manner applicable to this database server, the `restore_command` in the `postgresql.auto.conf` file is generated by default to retrieve the archived WAL files directly from the BART backup catalog. See the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/) for information about the `copy_wals_during_restore` parameter. | \ No newline at end of file diff --git a/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/09_delete.mdx b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/09_delete.mdx new file mode 100644 index 00000000000..7f9836ad724 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/09_delete.mdx @@ -0,0 +1,34 @@ +--- +title: "DELETE" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/delete.html" +--- + + + +The `DELETE` subcommand removes the subdirectory and data files from the BART backup catalog for the specified backups along with its archived WAL files. + +**Syntax:** + +```text +bart DELETE –s + -i { all | + [']{ | },... }['] + } + [ -n ] +``` + +!!! Note + While invoking the `DELETE` subcommand, you must specify a specific database server. + +For database servers under a retention policy, there are conditions where certain backups may not be deleted. See [Deletions Permitted Under a Retention Policy](../02_managing_backups_using_a_retention_policy/04_managing_the_backups_based_on_the_retention_policy/#deletions_permitted_under_retention_policy) for information about permitted backup deletions. + +The following table describes the command options: + +| Options | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s `

`--server ` | `` is the name of the database server whose backups are to be deleted. | +| `-i { all \| [']{ \| },... }['] }`

`--backupid { all \| [']{ \| },... }['] }` | `` is the backup identifier of the backup to be deleted and `` is the user-defined alphanumeric name for the backup.
Multiple backup identifiers and backup names may be specified in a comma-separated list. The list must be enclosed within single quotes if there is any white space appearing before or after each comma.
If `all` is specified, all of the backups and their archived WAL files for the specified database server are deleted. | +| `-n`
`--dry-run` | Displays the results as if the deletions were done, however, no physical removal of the files are actually performed. In other words, a test run is performed so that you can see the potential results prior to actually initiating the action.
After the deletion, the BART backup catalog for the database server no longer contains the corresponding directory for the deleted backup ID. The `archived_wals` subdirectory no longer contains the WAL files of the backup. | diff --git a/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/index.mdx b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/index.mdx new file mode 100644 index 00000000000..379dd137082 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/03_basic_bart_subcommand_usage/index.mdx @@ -0,0 +1,50 @@ +--- +title: "Basic BART Subcommand Usage" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/basic_bart_subcommand_usage.html" +--- + + + +This section briefly describes the BART subcommands and options. You can invoke the `bart` program (located in the `/bin` directory) with the desired options and subcommands to manage your BART installation. + +To view examples of BART subcommands, see the *EDB Backup and Recovery Reference Guide* available at the [EDB website](/bart/latest/bart_ref/). + +**Syntax for invoking BART**: + + `bart [ general_option ]... [ subcommand ] [subcommand_option ]...` + +- When invoking a subcommand, the subcommand name is not case-sensitive (that is, the subcommand can be specified in uppercase, lowercase, or mixed case). +- Each subcommand has a number of its own applicable options that are specified following the subcommand. All options are available in both single-character and multi-character forms. +- Keywords are case-sensitive; options are generally specified in lowercase unless specified otherwise in this section. +- When invoking BART, the current user must be the BART user account (operating system user account used to run the BART command line program). For example, enterprisedb or postgres can be selected as the BART user account when the managed database servers are Advanced Server or PostgreSQL respectively. +- The chosen operating system user account must own the BART backup catalog directory, be able to run the `bart` program and the `bart scanner` program, and have a passwordless SSH/SCP connection established between database servers managed by BART. + +You can specify one or more of the following general options: + +| Options | Description | +| ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-h` or `--help` | Displays general syntax and information on BART usage. All subcommands support a help option (`-h`, `--help`). If the help option is specified, information is displayed regarding that particular subcommand. The subcommand, itself, is not executed. | +| `-v` or `--version` | Displays the BART version information. | +| `-d` or `--debug` | Displays debugging output while executing BART subcommands. | +| `-c `or `--config-path ` | Specifies `config_file_path` as the full directory path to a BART configuration file. Use this option if you do not want to use the default BART configuration file `/etc/bart.cfg`. | + +**Troubleshooting: Setting Path Environment Variable** + +If execution of BART subcommands fails with the following error message, then you need to set the `LD_LIBRARY_PATH` to include the `libpq` library directory: + + `./bart: symbol lookup error: ./bart: undefined symbol: PQping` + +**Workaround:** Set the `LD_LIBRARY_PATH` environment variable for the BART user account to include the directory containing the `libpq` library. This directory is `POSTGRES_INSTALL_HOME/lib`. + +It is suggested that the `PATH` and the `LD_LIBRARY_PATH` environment variable settings be placed in the BART user account’s profile. See the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/) for details. + +In the following sections, the `help` option is omitted from the syntax diagrams for the purpose of providing readability for the subcommand options. + +
+ +check_config init backup show_servers show_backups verify_chksum manage restore delete + +
diff --git a/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/04_running_the_bart_wal_scanner.mdx b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/04_running_the_bart_wal_scanner.mdx new file mode 100644 index 00000000000..b047505556e --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/04_running_the_bart_wal_scanner.mdx @@ -0,0 +1,56 @@ +--- +title: "Running the BART WAL Scanner" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/running_the_bart_wal_scanner.html" +--- + + + +Use the BART WAL scanner to invoke the `bart-scanner` program located in the `BART_HOME/bin` directory. When invoking the WAL scanner, the current user must be the BART user account. + +**Syntax:** + +```text +bart-scanner + [ -d ] + [ -c ] + { –h | + -v | + --daemon | + -p | + | + RELOAD | + STOP +``` + +!!! Note + For clarity, the syntax diagram shows only the single-character option form (for example, `-d`), but the multi-character option form (for example, `--debug`) is supported as well. + +The WAL scanner processes each WAL file to find and record modified blocks in a corresponding modified block map (MBM) file. The default approach is that the WAL scanner gets notified whenever a new WAL file is added to the `archived_wals` directory specified in the `archive_path` parameter of the configuration file. It then scans the WAL file and produces the MBM file. + +The default approach does not work in some cases; for example when the WAL files are shipped to the `archive_path` using the Network File System (NFS) and also in case of some specific platforms. This results in the WAL files being copied to the `archived_wals` directory, but the WAL scanner does not scan them (as WAL scanner is not aware of WAL file) and produce the MBM files. This results in the failure of an incremental backup. This can be avoided by using the timer-based WAL scanning approach, which is done by using the `scan_interval` parameter in the BART configuration file. The value for `scan_interval` is the number of seconds after which the WAL scanner will initiate force scanning of the new WAL files. See the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/) for more information about `scan_interval` parameter. + +When the `bart-scanner` program is invoked, it forks a separate process for each database server enabled with the `allow_incremental_backups` parameter. + +The WAL scanner processes can run in either the foreground or background depending upon usage of the `--daemon` option. Use the `--daemon` option to run the WAL scanner process in the background so that all output messages can be viewed in the BART log file. If the `--daemon` option is omitted, the WAL scanner process runs in the foreground and all output messages can be viewed from the terminal running the program as well as in the BART log file. + +See the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/) for additional information about WAL scanning, `allow_incremental_backups`, and `logfile` parameters. + +!!! Note + The BART user account’s `LD_LIBRARY_PATH` environment variable may need to be set to include the directory containing the `libpq` library if invocation of the WAL scanner program fails. See [Basic BART Subcommand Usage](03_basic_bart_subcommand_usage/#basic_bart_subcommand_usage) for information about setting the `LD_LIBRARY_PATH` environment variable. + +The following table describes the scanner options: + +| Options | Description | +| ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-h` `--help` | Displays general syntax and information on WAL scanner usage. | +| `-v` `--version` | Displays the WAL scanner version information. | +| `-d` `--debug` | Displays debugging output while executing the WAL scanner with any of its options. | +| `-c ` `--config-path ` | Use this option to specify the `config_file_path` of a BART configuration file if you do not want to use the default BART configuration file path `BART_HOME/etc/bart.cfg`. | +| `--daemon` | Runs the WAL scanner as a background process. | +| `-p ` `--print ` | Use this option to specify the full directory path to an MBM file whose content is to be printed. The directory specified in the `archive_path` parameter in the `bart.cfg` file contains the MBM files. | +| `` | Specify the full directory path to a WAL file to be scanned. The directory specified in the `archive_path` parameter in the `bart.cfg` file contains the WAL files. Use this option if a WAL file in the archive path is missing its MBM file. This option is to be used for assisting the EnterpriseDB support team for debugging problems that may have been encountered. | +| `RELOAD` | Reloads the BART configuration file. The keyword `RELOAD` is not case-sensitive. The `RELOAD` option is useful if you make changes to the configuration file after the WAL scanner has been started. It will reload the configuration file and adjust the WAL scanners accordingly. For example, if a server section allowing incremental backups is removed from the BART configuration file, then the process attached to that server will stop. Similarly, if a server allowing incremental backups is added, a new WAL scanner process will be launched to scan the WAL files of that server. | +| `STOP` | Stops the WAL scanner. The keyword `STOP` is not case-sensitive. | diff --git a/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/index.mdx b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/index.mdx new file mode 100644 index 00000000000..a076b82b5e9 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/03_using_bart/index.mdx @@ -0,0 +1,19 @@ +--- +title: "Using BART" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/using_bart.html" +--- + + + +After installing and configuring the BART host and the database servers, you can start using BART. + +This section describes how to perform backup and recovery management operations using BART. Review the sections that follow before proceeding with any BART operation. + +
+ +bart_management_overview managing_backups_using_a_retention_policy basic_bart_subcommand_usage running_the_bart_wal_scanner + +
diff --git a/product_docs/docs/bart/2.5.9/bart_user/04_using_tablespaces.mdx b/product_docs/docs/bart/2.5.9/bart_user/04_using_tablespaces.mdx new file mode 100644 index 00000000000..94d5450778a --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/04_using_tablespaces.mdx @@ -0,0 +1,59 @@ +--- +title: "Using Tablespaces" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/using_tablespaces.html" +--- + + + +If the database cluster contains user-defined tablespaces (that is, tablespaces created with the `CREATE TABLESPACE` command): + +- You can take full backups with the `BACKUP` subcommand in either tar (`-Ft`) or plain text (`-Fp`) backup file format. +- You must take incremental backups in the plain text (`-Fp`) backup file format. +- You can take full backups using the transaction log streaming method (xlog_method = stream in the BART configuration file) `--with-pg_basebackup` and the `BACKUP` subcommand in either tar (`-Ft`) or plain text (`-Fp`) backup file format. + +!!! Note + If the particular database cluster you plan to back up contains tablespaces created by the `CREATE TABLESPACE` command, then you must set the `tablespace_path` parameter in the BART configuration file before you perform a BART `RESTORE` operation. + +The `tablespace_path` parameter specifies the directory paths to which you want the tablespaces to be restored. It takes the following format: + + `OID_1=tablespace_path_1;OID_2=tablespace_path_2 ...` + +Where `OID_1`, `OID_2`, … are the Object Identifiers of the tablespaces. You can find the OIDs of the tablespaces and their corresponding soft links to the directories by listing the contents of the `POSTGRES_INSTALL_HOME/data/pg_tblspc` subdirectory as shown in the following example: + +```text +[root@localhost pg_tblspc ]# pwd +/opt/PostgresPlus/9.6AS/data/pg_tblspc +[root@localhost pg_tblspc]# ls -l +total 0 +lrwxrwxrwx 1 enterprisedb enterprisedb 17 Aug 22 16:38 16644 -> /mnt/tablespace_1 +lrwxrwxrwx 1 enterprisedb enterprisedb 17 Aug 22 16:38 16645 -> /mnt/tablespace_2 +``` + +The OIDs are `16644` and `16645` to directories `/mnt/tablespace_1` and `/mnt/tablespace_2`, respectively. + +If you later wish to restore the tablespaces to the same locations as indicated in the preceding example, the BART configuration file must contain the following entry: + +```text +[ACCTG] +host = 127.0.0.1 +port = 5444 +user = enterprisedb +cluster_owner = enterprisedb +tablespace_path = 16644=/mnt/tablespace_1;16645=/mnt/tablespace_2 +description = "Accounting" +``` + +If you later wish to restore the tablespaces to different locations, specify the new directory locations in the `tablespace_path` parameter. + +In either case, the directories specified in the `tablespace_path` parameter must exist and be empty at the time you perform the `BART RESTORE` operation. + +If the database server is running on a remote host (in other words you are also using the `remote_host` configuration parameter or will specify the `--remote-host` option with the `RESTORE` subcommand), the specified tablespace directories must exist on the specified remote host. + +To view example of backing up and restoring a database cluster on a remote host containing tablespaces, see the *EDB Backup and Recovery Reference Guide* available at the [EDB website](/bart/latest/bart_ref/). + +The directories must be owned by the user account with which you intend to start the database server (typically the Postgres user account) with no access by other users or groups as is required for the directory path to which the main full backup is to be restored. + +To view a sample BART managed backup and recovery system consisting of both local and remote database servers, see the *EDB Backup and Recovery Reference Guide* available at the [EDB website](/bart/latest/bart_ref/). diff --git a/product_docs/docs/bart/2.5.9/bart_user/images/EDB_logo.png b/product_docs/docs/bart/2.5.9/bart_user/images/EDB_logo.png new file mode 100644 index 00000000000..39a54822d85 Binary files /dev/null and b/product_docs/docs/bart/2.5.9/bart_user/images/EDB_logo.png differ diff --git a/product_docs/docs/bart/2.5.9/bart_user/images/copy_1.png b/product_docs/docs/bart/2.5.9/bart_user/images/copy_1.png new file mode 100644 index 00000000000..b15833dc37d Binary files /dev/null and b/product_docs/docs/bart/2.5.9/bart_user/images/copy_1.png differ diff --git a/product_docs/docs/bart/2.5.9/bart_user/images/edb.png b/product_docs/docs/bart/2.5.9/bart_user/images/edb.png new file mode 100644 index 00000000000..71e5bdde787 Binary files /dev/null and b/product_docs/docs/bart/2.5.9/bart_user/images/edb.png differ diff --git a/product_docs/docs/bart/2.5.9/bart_user/images/edb_logo.svg b/product_docs/docs/bart/2.5.9/bart_user/images/edb_logo.svg new file mode 100644 index 00000000000..f24d1dfefee --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/images/edb_logo.svg @@ -0,0 +1,19 @@ + + + edb-logo-disc-dark + + + + \ No newline at end of file diff --git a/product_docs/docs/bart/2.5.9/bart_user/index.mdx b/product_docs/docs/bart/2.5.9/bart_user/index.mdx new file mode 100644 index 00000000000..50504d9e3db --- /dev/null +++ b/product_docs/docs/bart/2.5.9/bart_user/index.mdx @@ -0,0 +1,17 @@ +--- +navTitle: Backup and Recovery Guide +title: "EDB Postgres Backup and Recovery User Guide" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/genindex.html" + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/introduction.html" + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/conclusion.html" + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/index.html" +--- + +
+ +introduction overview using_bart using_tablespaces conclusion + +
diff --git a/product_docs/docs/bart/2.5.9/index.mdx b/product_docs/docs/bart/2.5.9/index.mdx new file mode 100644 index 00000000000..5a4e4fd6cc0 --- /dev/null +++ b/product_docs/docs/bart/2.5.9/index.mdx @@ -0,0 +1,17 @@ +--- +title: Backup and Recovery Tool +directoryDefaults: + description: "EDB Backup and Recovery Tool Version 2.5.9 Documentation and release notes. A tool to manage and configure PostgreSQL backups and disaster recovery." +navigation: + - "#Getting Started" + - bart_inst + - bart_qs_7 + - bart_qs_8 + - "#Guides" + - bart_user + - bart_ref +--- + + + + diff --git a/product_docs/docs/bart/2.5/bart_inst/02_installing_bart.mdx b/product_docs/docs/bart/2.5/bart_inst/02_installing_bart.mdx new file mode 100644 index 00000000000..f4e2ef84cbd --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_inst/02_installing_bart.mdx @@ -0,0 +1,433 @@ +--- +title: 'Installing BART' + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/installation-getting-started/installation-upgrade-guide/2.6.1/installing_bart.html" +--- + +This section will walk you through performing a fresh installation of BART on a host. Installation instructions are organized into the following platform/installer specific sections: + +- [Installing BART on a CentOS Host](#installing-bart-on-a-centos-host) +- [Installing BART on a RHEL Host](#installing-bart-on-a-rhel-host) +- [Installing BART on a RHEL/CentOS 7 PPCLE Host](#installing-bart-on-a-rhelcentos-7-ppcle-host) +- [Installing BART on a Debian or Ubuntu Host](#installing-bart-on-a-debian-or-ubuntu-host) +- [Installing BART on an SLES 12 Host](#installing-bart-on-an-sles-12-host) + +!!! Note + If you are using the pdf version of this document, using the cut/paste command to copy may result in extra spaces or carriage returns in the pasted command. If a command fails, check the command carefully for additional characters. + +## Installing BART on a CentOS Host + +The following section demonstrates installing BART on a CentOS host using an RPM package.  This section assumes that the user has some knowledge of installation and system administration procedures, and has administrative privileges on the host. + +1. To install the repository configuration, assume superuser privileges and invoke one of the following platform-specific commands: + + On CentOS 7: + + ```text + yum -y install https://yum.enterprisedb.com/edbrepos/edb-repo-latest.noarch.rpm + ``` + + On CentOS 8: + + ```text + dnf -y install https://yum.enterprisedb.com/edbrepos/edb-repo-latest.noarch.rpm + ``` + +2. Replace the `USERNAME:PASSWORD` in the following command with the username and password of a registered EnterpriseDB user: + + ```text + sed -i "s@:@USERNAME:PASSWORD@" /etc/yum.repos.d/edb.repo + ``` + + To request credentials for the repository, visit the [EDB website](https://www.enterprisedb.com/user). + +3. Before installing BART, execute the following command to install the Extra Packages for Enterprise Linux (EPEL) release package: + + On CentOS 7: + + ```text + yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm + ``` + + On CentOS 8: + + ```text + dnf -y install epel-release + ``` + +4. For CentOS 8, enable the PowerTools repository to satisfy EPEL package dependencies: + + ```text + dnf config-manager --set-enabled PowerTools + ``` + +5. For CentOS 8, disable the built-in PostgreSQL module: + + ```text + dnf -qy module disable postgresql + ``` + +6. Optionally, install the `pg_basebackup` utility program using the server client package. If you do not already have the `pg_basebackup` program installed on the BART host, you can install a limited number of files that include the `pg_basebackup` program by invoking the following command: + + On CentOS 7: + + ```text + yum install edb-as-server-client + ``` + + On CentOS 8: + + ```text + dnf install edb-as-server-client + ``` + + In the above command, replace `` with the required Advanced Server version. The `pg_basebackup` version must be the same or more recent than the database server to be backed up. For example, `pg_basebackup` version 10 can be used to back up database server version 10, but cannot be used to back up database server version 11. + +7. Use the following command to install BART: + + On CentOS 7: + + ```text + yum -y install edb-bart-2.5.9 + ``` + + On CentOS 8: + + ```text + dnf -y install edb-bart-2.5.9 + ``` + + Repeat the installation process described in this section to install BART on each remote host on which an incremental backup is to be restored. + + To verify the BART installation, navigate to the `/usr/edb/bart/bin` directory and execute the following command: + + ```text + bart --version + ``` + + The `bart --version` command should return the current BART version. If the `bart --version` command returns an error stating the PATH is not available after switching from the root user to another BART user account, adjust the setting of the `PATH` environment variable to include the directory location of the BART `bin` subdirectory in the `~/.bashrc` or `~/.bash_profile` files of the following user accounts: + + - The BART user account on the BART host. See [Configuring BART](03_configuring_bart/#path) for details. + - The remote user account on the remote host to which incremental backups are to be restored. For details, see the *EDB Backup and Recovery User Guide* available at the [EDB website](/bart/latest/bart_user/). + + Upon successful installation, BART is installed in the `BART_HOME` directory: + + `/usr/edb/bart` + + The installation includes the following files: + +| File Name | Location | Description | +| ------------------- | ----------------- | ------------------------------------- | +| bart | ``/bin | BART command line, executable program | +| bart-scanner | ``/bin | BART WAL scanner program | +| bart.cfg.sample | ``/etc | Sample BART configuration file | +| xlogreader_ident.so | ``/lib | Libraries supporting WAL versions | +| bart_license.txt | `` | License agreement | + +After BART is installed successfully, you need to [configure the installation](03_configuring_bart/#configuration). + +## Installing BART on a RHEL Host + +The following section demonstrates installing BART on a RHEL host using an RPM package.  This section assumes that the user has some knowledge of installation and system administration procedures, and has administrative privileges on the host. + +1. To install the repository configuration, assume superuser privileges and invoke one of the following platform-specific commands: + + On RHEL 7: + + ```text + yum -y install https://yum.enterprisedb.com/edbrepos/edb-repo-latest.noarch.rpm + ``` + + On RHEL 8: + + ```text + dnf -y install https://yum.enterprisedb.com/edbrepos/edb-repo-latest.noarch.rpm + ``` + +2. Replace the `USERNAME:PASSWORD` in the following command with the username and password of a registered EnterpriseDB user: + + ```text + sed -i "s@:@USERNAME:PASSWORD@" /etc/yum.repos.d/edb.repo + ``` + + To request credentials for the repository, visit the [EDB website](https://www.enterprisedb.com/user). + +3. Before installing BART, execute the following command to install the Extra Packages for Enterprise Linux (EPEL) release package: + + On RHEL 7: + + ```text + yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm + ``` + + On RHEL 8: + + ```text + dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm + ``` + +4. Enable the repository: + + On RHEL 7, enable the `optional, extras`, and `HA` repositories to satisfy EPEL package dependencies: + + ```text + subscription-manager repos --enable "rhel-*-optional-rpms" --enable "rhel-*-extras-rpms" --enable "rhel-ha-for-rhel-*-server-rpms" + ``` + + On RHEL 8, enable the `codeready-builder-for-rhel-8-*-rpms` repository to satisfy EPEL packages dependency: + + ```text + ARCH=$( /bin/arch ) + + subscription-manager repos --enable "codeready-builder-for-rhel-8-${ARCH}-rpms" + ``` + +5. For RHEL 8, disable the built-in PostgreSQL module: + + ```text + dnf -qy module disable postgresql + ``` + +6. Optionally, install the `pg_basebackup` utility program using the server client package. If you do not already have the `pg_basebackup` program installed on the BART host, you can install a limited number of files that include the `pg_basebackup` program by invoking the following command: + + On RHEL 7: + + ```text + yum install edb-as-server-client + ``` + + On RHEL 8: + + ```text + dnf install edb-as-server-client + ``` + + In the above command, replace `` with the required Advanced Server version. The `pg_basebackup` version must be the same or more recent than the database server to be backed up. For example, `pg_basebackup` version 10 can be used to back up database server version 10, but cannot be used to back up database server version 11. + +7. Use the following command to install the BART: + + On RHEL 7: + + ```text + yum -y install edb-bart-2.5.9 + ``` + + On RHEL 8: + + ```text + dnf -y install edb-bart-2.5.9 + ``` + + Repeat the installation process described in this section to install BART on each remote host on which an incremental backup is to be restored. + + To verify the BART installation, navigate to the `/usr/edb/bart/bin` directory and execute the following command: + + ```text + bart --version + ``` + + The `bart --version` command should return the current BART version. If the `bart --version` command returns an error stating the PATH is not available after switching from the root user to another BART user account, adjust the setting of the `PATH` environment variable to include the directory location of the BART `bin` subdirectory in the `~/.bashrc` or `~/.bash_profile` files of the following user accounts: + + - The BART user account on the BART host. See [Configuring BART](03_configuring_bart/#path) for details. + - The remote user account on the remote host to which incremental backups are to be restored. For details, see the *EDB Backup and Recovery User Guide* available at the [EDB website](/bart/latest/bart_user/). + + Upon successful installation, BART is installed in the `BART_HOME` directory: + + `/usr/edb/bart` + + The installation includes the following files: + +| File Name | Location | Description | +| ------------------- | ----------------- | ------------------------------------- | +| bart | ``/bin | BART command line, executable program | +| bart-scanner | ``/bin | BART WAL scanner program | +| bart.cfg.sample | ``/etc | Sample BART configuration file | +| xlogreader_ident.so | ``/lib | Libraries supporting WAL versions | +| bart_license.txt | `` | License agreement | + +After BART is installed successfully, you need to [configure the installation](03_configuring_bart/#configuration). + + + +## Installing BART on a RHEL/CentOS 7 PPCLE Host + +The following section demonstrates installing BART on a RHEL host using an RPM package.  This section assumes that the user has some knowledge of installation and system administration procedures, and has administrative privileges on the host. + +1. Install Advance Toolchain: + + ```text + rpm --import https://public.dhe.ibm.com/software/server/POWER/Linux/toolchain/at/redhat/RHEL7/gpg-pubkey-6976a827-5164221b + + cat > /etc/yum.repos.d/advance-toolchain.repo <:@USERNAME:PASSWORD@" /etc/yum.repos.d/edb.repo + ``` + + To request credentials for the repository, visit the [EDB website](https://www.enterprisedb.com/user). + +4. Before installing BART, execute the following command to install the Extra Packages for Enterprise Linux (EPEL) release package: + + ```text + yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm + ``` + +5. On RHEL 7, enable the `optional, extras`, and `HA` repositories to satisfy EPEL package dependencies: + + ```text + subscription-manager repos --enable "rhel-*-optional-rpms" --enable "rhel-*-extras-rpms" --enable "rhel-ha-for-rhel-*-server-rpms" + ``` + +6. Invoke the following command to install BART: + + ```text + yum -y install edb-bart-2.5.9 + ``` + + + +## Installing BART on a Debian or Ubuntu Host + +Perform the following steps to install a Debian package using the EnterpriseDB apt repository. + +To request credentials for the repository, visit the [EDB website](https://www.enterprisedb.com/repository-access-request). + +1. Assume the superuser privileges. + + ```text + sudo su - + ``` + +2. To configure the EnterpriseDB repository on Debian 9 and Ubuntu 18: + + ```text + sh -c 'echo "deb https://username:password@apt.enterprisedb.com/$(lsb_release -cs)-edb/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/edb-$(lsb_release -cs).list' + ``` + + On Debian 10: + + a. Set up the EnterpriseDB repository: + + ```text + sh -c 'echo "deb [arch=amd64] https://apt.enterprisedb.com/$(lsb_release -cs)-edb/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/edb-$(lsb_release -cs).list' + ``` + + b. Substitute your EnterpriseDB credentials for the `username` and `password` placeholders in the following command: + + ```text + sh -c 'echo "machine apt.enterprisedb.com login password " > /etc/apt/auth.conf.d/edb.conf' + ``` + +3. Add support to your system for secure APT repositories. + + ```text + apt-get install apt-transport-https + ``` + +4. Add the EDB signing key; When invoking the command, replace the `username` and `password` with the credentials provided by EnterpriseDB. + + ```text + wget -q -O - https://apt.enterprisedb.com/edb-deb.gpg.key | apt-key add – + ``` + +5. Update the repository metadata. + + ```text + apt-get update + ``` + +6. Install the Debian package: + + a. Contact [EDB Support](https://support.enterprisedb.com) for information about how to install the BART 2.5.9 package. + + b. Navigate to the download directory and execute the following command: + + ```text + apt-get install ./edb-bart_2.5.9-1-deb10_amd64.deb + ``` + + + +## Installing BART on an SLES 12 Host + +This section provides instructions for installing BART on an SLES 12 SP4 host using the zypper package manager. BART is supported on SLES SP4 and SP5 versions. + +1. Assume superuser privileges. + + ```text + sudo su - + ``` + +2. Use the following command to add the EDB repository to your SLES host: + + ```text + zypper addrepo https://zypp.enterprisedb.com/suse/edb-sles.repo + ``` + +3. Invoke the following command to refresh the metadata: + + ```text + zypper refresh + ``` + +4. Install `SUSEConnect` to register the host with SUSE to allow access to SUSE repositories: + + ```text + zypper install SUSEConnect + ``` + +5. Register the host with SUSE to allow access to SUSE repositories and replace `'REGISTRATION_CODE'` and `'EMAIL'` with your SUSE registration information: + + ```text + SUSEConnect -r 'REGISTRATION_CODE' -e 'EMAIL' + ``` + + ```text + SUSEConnect -p PackageHub/12.4/x86_64 + ``` + + ```text + SUSEConnect -p sle-sdk/12.4/x86_64 + ``` + +6. Install the following repository for PEM dependencies: + + ```text + zypper addrepo https://download.opensuse.org/repositories/Apache:/Modules/SLE_12_SP4/Apache:Modules.repo + ``` + +7. Refresh the metadata: + + ```text + zypper refresh + ``` + +8. Then, use the zypper utility to install BART: + + ```text + zypper install edb-bart-2.5.9 + ``` diff --git a/product_docs/docs/bart/2.5/bart_inst/03_configuring_bart.mdx b/product_docs/docs/bart/2.5/bart_inst/03_configuring_bart.mdx new file mode 100644 index 00000000000..0201f230692 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_inst/03_configuring_bart.mdx @@ -0,0 +1,643 @@ +--- +title: "Configuring BART" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/installation-getting-started/installation-upgrade-guide/2.6.1/configuring_bart.html" +--- + + + +To configure BART, you must establish the BART user account, [configure the BART host](#configuring-the-bart-host), and [configure the database server](#configuring_database_server) that will be backed up. + + + +## Establishing the BART User Account + +The BART user account is an operating system user that will run the BART command line program. The BART user account must: + +- own the BART backup catalog. +- be able to run the `bart` program and the `bart-scanner` program. +- be able to establish a SSH/SCP connection to and from each database server managed by BART. + +You can optionally use the `enterprisedb` database user as the BART user account for an Advanced Server database and `postgres` database user as the BART user account for a PostgreSQL server. If you do not wish to use an existing database user as the BART user account, you must create an operating system user to assume the role. + + + +## Configuring BART and Database Server + +As stated earlier, to configure BART, you must [configure the BART host](#configuring-the-bart-host) as well as the [database server](#configuring_database_server). The following table acts as a configuration parameter reference listing the mandatory and optional parameters with default values for `[SERVER]` as well as `[BART]` sections. + +- Parameters set in the `[BART]` section are applicable to all BART managed database servers. +- Parameters set in the `Server` section are applicable only to the specific server; the `Server` parameter setting overrides the `[BART]` section setting. + +For information about configuring BART host parameters, see the [BART Host Parameter Reference](#bart) and for information about configuring the database server parameters, see the [Database Server Parameter Reference](#server). + +| **Parameter** | **Type** | **Default** | **\[SERVER]** | **\[BART]** | +| -------------------------- | --------- | ------------------------------------------------------------ | ------------- | ----------- | +| `[BART]` | Mandatory | N/A | N/A | Yes | +| `` | Mandatory | N/A | N/A | Yes | +| `` | Mandatory | N/A | N/A | Yes | +| `` | Mandatory | N/A | N/A | Yes | +| `retention_policy` | Optional | `BACKUPS` | Yes | Yes | +| `wal_compression` | Optional | `Disabled` | Yes | Yes | +| `copy_wals_during_restore` | Optional | `Disabled` | Yes | Yes | +| `xlog_method` | Optional | `fetch` | Yes | Yes | +| `logfile` | Optional | `/tmp/bart.log` | N/A | Yes | +| `scanner_logfile` | Optional | `/tmp/bart_scanner.log` | N/A | Yes | +| `` | Optional | `/tmp` | N/A | Yes | +| `` | Optional | `` | N/A | Yes | +| `` | Optional | `1` | Yes | Yes | +| `` | Optional | `49152` | Yes | Yes | +| `` | Optional | `0` | Yes | Yes | +| `` | Optional | `20 seconds` | Yes | Yes | +| `` | Optional | `1` | Yes | Yes | +| `[Server Name]` | Mandatory | N/A | Yes | N/A | +| `` | Optional | N/A | Yes | N/A | +| `host` | Mandatory | N/A | Yes | N/A | +| `port` | Mandatory | `5444` for EPAS; `5432` for Postgres | Yes | N/A | +| `user` | Mandatory | N/A | Yes | N/A | +| `` | Optional | `BART backup catalog` | Yes | N/A | +| `` | Optional | N/A | Yes | N/A | +| `` | Mandatory | `enterprisedb` for EPAS

`postgres` for PostgreSQL | Yes | N/A | +| `` | Optional | N/A | Yes | N/A | +| `` | Optional | N/A | Yes | N/A | +| `allow_incremental_backup` | Optional | `Disabled` | Yes | N/A | +| `description` | Optional | N/A | Yes | N/A | + + + +### Configuring the BART Host + +To configure the BART host, perform the following steps on the BART host as a root user: + +**Step 1.** Navigate to the `usr/edb/bart/etc` directory and make a copy of the `bart.cfg.sample` file to create the `bart.cfg` file that will contain the parameter settings. + +**Step 2.** Confirm that the Postgres `pg_basebackup` utility program is installed on the BART host. The `pg_basebackup` utility resides in the `bin` directory under your Postgres installation. + + + +**Step 3.** Ensure the `LD_LIBRARY_PATH` environment variable includes the location of the `libpq` library. If your `libpq` library does not reside in the default location (`POSTGRES_INSTALL_HOME/lib`), you must add the library path to the `LD_LIBRARY_PATH` environment variable in the BART user account’s profile (`bash_profile`) located in `/home/`: + +```text +# .bash_profile +# Get the aliases and functions +if [ -f ~/.bashrc ]; then +. ~/.bashrc +fi +# User specific environment and startup programs +export LD_LIBRARY_PATH=/usr/edb/as11/lib:$LD_LIBRARY_PATH +``` + +**Step 4.** Create the BART backup catalog and ensure the BART user account holds privileges on the BART backup catalog. In the following example, the BART configuration file specifies `/opt/backup` as the parent directory for the BART backup catalog in the `` parameter: + +```text +[BART] + +bart_host = bartuser@192.168.2.22 +backup_path = /opt/backup +pg_basebackup_path = /usr/edb/as11/bin/pg_basebackup +logfile = /tmp/bart.log +scanner_logfile = /tmp/bart_scanner.log +``` + +In the following example, `bartuser` is the BART user account. The example creates and sets the ownership and permissions on the BART backup catalog: + +```text +su root +mkdir /opt/backup +chown bartuser /opt/backup +chgrp bartuser /opt/backup +chmod 700 /opt/backup +``` + +If the subdirectory does not exist, BART creates a subdirectory for each database server listed in the configuration file when you invoke the `bart` command line program. + +**Step 5.** Use your choice of editor to open the BART configuration file (located in the `usr/edb/bart/etc` directory) and edit the configuration as required. You must add the mandatory parameters to the `[BART]` section. Default values may be used for optional parameters. + +The following table describes the `[BART]` host parameters. + + + +| **Parameters/Placeholder** | **Type** | **Description** | +| -------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `[BART}` | Mandatory | Identifies the global section of the configuration file. It must be named BART. | +| `bart_host` | Mandatory | Specify the bart user name and the IP address of the bart host on which the BART utility resides. You must specify it in the form of <bart_user>@<bart_host_address>. | +| `backup_path` | Mandatory | Specify the path to the file system parent directory where all BART backups are stored. | +| `pg_basebackup_path` | Mandatory | Specify the path to the `pg_basebackup` program that you installed on the BART host. For information about `pg_basebackup` version-specific restrictions, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). | +| `wal_compression` | Optional | Set this parameter to `enabled` to compress the archived WAL files in gzip format in the BART backup catalog when the `MANAGE` subcommand is invoked. By default it is set to `disabled`. The gzip compression program must be in the BART user account’s `PATH` and the WAL compression setting must not be enabled for those database servers where you need to take incremental backups. | +| `copy_wals_during_restore` | Optional | Set this parameter to `enabled` to copy the archived WAL files from the BART backup catalog to the `restore_path/archived_wals` directory prior to the database server archive recovery. Enabling this option helps you save time during the restore operation. Set this parameter to `disabled` (default) to retrieve the archived WAL files directly from the BART backup catalog during the database server archive recovery. During the restore operation, recovery settings will be saved in the `postgresql.auto.conf` file. The `restore_command` in the `postgresql.auto.conf` file will be determined by the value specified in the `copy_wals_during_restore` parameter. If the `RESTORE` subcommand is invoked with the `-c` option, the archived WAL files are copied from the BART backup catalog to the `restore_path/archived_wals` directory, thus overriding any setting of the `copy_wals_during_restore` parameter. If the `RESTORE` subcommand is invoked without the `-c` option, the value specified by the `copy_wals_during_restore` parameter is used. | +| `xlog_method` | Optional | Specify how the transaction log is collected during the execution of `pg_basebackup` through the `BACKUP` subcommand. Set `xlog_method` to `fetch` (default) to collect the transaction log files after the backup is completed. Set to `stream` to stream the transaction log in parallel with the full backup creation. | +| `retention_policy` | Optional | Set this parameter to determine when an active backup should be marked as `obsolete` when the `MANAGE` subcommand is used. You can specify the retention policy either in terms of number of backups or duration (days, weeks, or months). ` BACKUPS` (default), ` DAYS`, ` WEEKS`, or ` MONTHS` where `` is a positive integer. For information about managing backups using a retention policy, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). | +| `logfile` | Optional | Use this parameter to specify the path to the BART log file. The default log file location is `/tmp/bart.log`. The log file will be created the first time you invoke the `bart` command line program using the sample configuration file value. To change the default setting, you must delete the `bart.log` file from the `/tmp` directory and create a new log file in another directory so that a new log file will be created and owned by the new BART user account. If no path to a log file is specified, BART does not create a log file. | +| `scanner_logfile` | Optional | Use this parameter to specify the path to the XLOG/WAL scanner log file. The default location is `/tmp/bart_scanner.log`. The scanner log file will be created the first time you invoke the `bart_scanner` program using the sample configuration file value. To change the default setting, you must delete the `bart_scanner.log` file from the `/tmp` directory and create a new log file in another directory so that a new log file will be created and owned by the new BART user account. If no path to a log file is specified, BART does not create a WAL scanner log file. | +| `` | Optional | Specify the socket directory path where all BART sockets will be stored. The default directory is `/tmp`. While specifying the `bart_socket_directory` path, you must ensure that the directory exists and the BART user has the required access permissions to the directory. | +| `` | Optional | Specify a user-friendly BART socket file name. Using this option overrides the default BART socket name generated using MD5 checksum. You must shut down the bart-scanner before setting this option. You can view the `` in the `sockPath` field after starting the bart-scanner in the debug mode. This option helps in preventing the use of MD5 during the bart-scanner startup, thus making BART more compliant in FIPS mode. | +| `` | Optional | Specify the number of worker threads for copying blocks (for incremental backups) or data files (for full backup) from the database server to the `archive_path` when the `BACKUP` subcommand is invoked. The default value is `1`. The same set of worker threads are used for the compression operation when taking full backups in order to provide parallel, compressed backups when the `BACKUP` subcommand is specified with the `-z` or `-c` options. The compression operation does not apply to incremental backups. See [thread count](#thread_count) for more information. | +| `` | Optional | Specify the number of blocks of memory used for copying modified blocks from the database server to the `archive_path` when the `BACKUP` subcommand is invoked for incremental backups. The default value is 49152 blocks; each block is 8192 bytes. The maximum permitted value is 131072 blocks and the minimum permitted value is 1 block. Reduce the `` setting if the server runs out of memory while executing the `pg_read_binary_file()`. | +| `` | Optional | Specify the number of seconds after which the WAL scanner should initiate force scanning of the new WAL files. The default value is 0, which means no brute-force scanning will be started. After upgrading to the latest version of BART, users who have set this parameter to a non-default value may see increased CPU consumption on the part of bart-scanner. If this is an issue, consider increasing the configured value of `scan_interval` parameter, or removing the setting if it is not required. | +| `` | Optional | Specify the number of seconds to wait for MBM files before timing out; this parameter is applicable only for incremental backup. You must set the `scan_interval` to a value significantly less than the MBM scan timeout. The default value is 20 seconds. The `mbm_scan_timeout` parameter value must be greater than 0. If the value is 0 or negative, then an error will be displayed during an incremental backup. | +| `` | Optional | Specify the number of parallel worker processes required to stream the modified blocks of an incremental backup to the restore host. The default value is 1. | + + + +**Thread Count** + +If the `BACKUP` subcommand is invoked with the `--thread-count` option, then the number of worker threads specified by this option overrides any setting of the `thread_count` parameter in the BART configuration file. If the `BACKUP` subcommand is invoked without the `--thread-count` option, then the following determines the number of worker threads used: + +- The setting of the `thread_count` parameter in the server section of the BART configuration file overrides the setting of `thread_count` in the global section for that particular database server. +- If omitted in the server section, the setting of `thread_count` in the global section is used. +- If the `thread_count` parameter is not specified in either section, the default is 1. +- When taking a full backup, if the `thread count` in effect is only 1, then the `pg_basebackup` utility is used to take the full backup unless the `--no-pg_basebackup` option is specified with the `BACKUP` subcommand. + +`` will not be effective if the backup is taken on a standby server. + +If parallel backup is run with `N` number of worker threads, then it will initiate `N + 1` concurrent connections with the server. + +**Step 6** Invoke the `CHECK-CONFIG` subcommand, omitting the `-s` option to check the parameter settings in the BART configuration file. It should return the current BART version. + +```text +bart CHECK-CONFIG +``` + +The `CHECK-CONFIG` subcommand displays an error message if the required configuration is not properly set. You need to check the logfile to fix this. + + + +### Configuring the Database Server + +To configure the database server, you must: + +1. [Authorize SSH/SCP access without a password prompt](#authorizing_ssh_scp_access). +2. [Create and configure a replication database user](#setting_up_a_replication_database_user). +3. [Adding the database server to the configuration file (server section)](#adding_a_database_server). +4. [Enable WAL archiving of the server](#enabling_wal_archiving). +5. [Verify the server configuration settings](#verifying_configuration_settings). + +The following section will walk you through the configuration process. + +!!! Note + You must authorize SSH/SCP access and set up a replication database user before restarting the database server with WAL archiving enabled. + + + +**Authorizing SSH/SCP Access** + +BART uses the Secure Shell (`ssh`) and Secure Copy (`scp`) Linux utility programs to copy the backup and WAL files from the BART managed database servers to the BART host as well as to restore backups. + +- The client/server `ssh` and `scp` commands must not prompt for a password when establishing a connection with the target server (the server to which a passwordless connection is being made). +- A passwordless connection uses *authorized public keys* (public key of a client user account) to authenticate with the target server. +- You must add the public key of each client user account to the target user account’s authorized public keys list on the target server. + +For BART usage, there are two scenarios that require a passwordless SSH/SCP connection: + +- When connecting from each BART managed database server (SSH/SCP client) to the BART host (target SSH/SCP server) to support WAL archiving as implemented by the `archive_command` parameter. + - In this case, the database server user account should generate the public key file (`id_rsa.pub`) with the `ssh-keygen –t rsa` command on the database server host. + - The public key file name should be appended to the `~/.ssh/authorized_keys` file on the BART host. The `authorized_keys` file is in the BART user account’s home directory. +- When connecting from the BART host (SSH/SCP client) to each BART managed database server (target SSH/SCP server) for taking incremental backups and for supporting restoration of the full backup, the archived WAL files, and the modified blocks, which occurs when the BART `RESTORE` subcommand is given. + - In this case, the BART user account should generate the public key file (`id_rsa.pub`) with the `ssh-keygen –t rsa` command on the BART host. + - The public key file name should be appended to the `~/.ssh/authorized_keys` file on the database server host. The `authorized_keys` file is in the home directory of the user account that owns the directory where the database backup is to be restored. +- If backups are to be taken from a given database server host, but restored to a different database server host, the passwordless SSH/SCP connections must be configured from the BART host to the database server host from which the backup is to be taken as well as from the BART host to the database server host to which the backup is to be restored. + +See the EDB Backup and Recovery Reference Guide available at the [EDB website](/bart/latest/bart_ref/) to view examples of creating a passwordless connection. + +**Enabling Public Key Authentication** + +The following example enables SSH/SCP access on a CentOS 7.x host; similar (platform-specific) steps will apply to other platforms/versions. + +1. In the SSH server daemon configuration file (`sshd_config`) located in the `/etc/ssh`, set the `PubkeyAuthentication` parameter to `yes`. +2. Reload the configuration file: + +```text +service sshd reload +``` + +If you get any SSH or SCP errors, examine the `/var/log/secure` log file. + +**Creating a Passwordless Connection** + +The following general instructions will walk you through generating a client’s public key file, creating the target server’s authorized public keys file, and creating a passwordless connection. + +**Step 1.** On the client system, log in as the user account that will be initiating the SSH or SCP connection. + +**Step 2.** Navigate to the user account’s home directory and check for an existing `.ssh` subdirectory. If the `.ssh` directory does not exist, create one and assign the required privileges to the user. + +**Step 3.** Generate the public key file with the following command. Accept all prompted defaults and do not specify a passphrase when prompted for one. + +```text +ssh-keygen –t rsa +``` + +The public key file named `id_rsa.pub` is created in the `.ssh` subdirectory. + +**Step 4.** While logged into the client where you just generated the public key file, use `SCP` to make a temporary copy of it on the target server: + +```text +scp ~/.ssh/id_rsa.pub @:tmp.pub +``` + +**Step 5.** Navigate into the target user account’s home directory and check for an existing `.ssh` subdirectory. If it does not exist, create one and assign the required privileges to the user. + +**Step 6.** Append the temporary, client’s public key file, `tmp.pub`, to the `authorized_keys` file. If an `authorized keys` file does not exist, create a new file, but do not completely replace any existing `authorized keys` file. + +```text +cat tmp.pub >> ~/.ssh/authorized_keys +``` + +Make sure the `authorized_keys` file is only accessible by the file owner and not by groups or other users. If the `authorized_keys` file does not have the required permission setting or it was newly created, change the file permissions as follows: + +```text +chmod 600 ~/.ssh/authorized_keys +``` + +**Step 7.** Delete the temporary public key file: + +```text +rm tmp.pub +``` + +Now, when logged into the client system as `user` there should be no prompt for a password when commands such as the following is given: + +```text +ssh target_user@host_address +``` + + + +**Setting up a Replication Database User** + +For each database server that is to be managed by BART, a database user must be chosen to serve as the *replication database user*. The replication database user sets the Postgres `archive_command` configuration parameter when the `INIT` subcommand in invoked and creates backups when the `BACKUP` subcommand is invoked. The replication database user must be a `superuser`. + +When executed with the PSQL client, the following PostgreSQL command creates a superuser to be the replication database user: + +`CREATE ROLE repuser WITH LOGIN SUPERUSER PASSWORD 'password';` + +The `pg_hba.conf` file must minimally permit the replication database user to have access to the database. + +In the following example, the `pg_hba.conf` file permits the `repuser` (replication database user) to have access to the `template1` database. The IP address from which `repuser` has access to `template1` database is the location of the BART host: + +**For pg_basebackup only:** If `pg_basebackup` is to be used for taking any backups (such as for standby servers), the replication database user must also be included in the `pg_hba.conf` file as a `replication` database connection as shown by the last entry in the following example. + +```text +# TYPE DATABASE USER ADDRESS METHOD +# "local" is for Unix domain socket connections only +local all all md5 +# IPv4 local connections: +host template1 repuser 192.168.2.22/32 md5 +host all enterprisedb 127.0.0.1/32 md5 +# IPv6 local connections: +host all all ::1/128 md5 +# Allow replication connections from localhost, by a user with the +# replication privilege. +host replication repuser 192.168.2.22/32 md5 +``` + +The replication database user must be specified for the `user` parameter in the BART configuration file for the database server as shown in the following example: + +```text +[ACCTG] +host = 192.168.2.24 +port = 5444 +user = repuser +cluster_owner = enterprisedb +remote_host = enterprisedb@192.168.2.24 +description = "Accounting" +``` + +There must be no password prompt when connecting to the database server with the replication database user. There are several ways to permit this; one recommended method is to use a `.pgpass` file located in the BART user account’s home directory. + +For example, if `bartuser` is the BART user account, then the `.pgpass` file located in the `/home/bartuser` directory must contain the following entry: + +`192.168.2.24:5444::repuser:password` + +When `bartuser` invokes a BART backup, the password for the replication database user, `repuser`, is obtained from the `.pgpass` file of `bartuser` to connect to the database server running at `192.168.2.24` on `port 5444`. + +The `.pgpass` file must contain an entry for each BART managed database server and its corresponding replication database user and password. + + + +**Adding a Database Server to the BART Configuration File** + +To manage the backup and recovery of a database server, you must add entries to the `[SERVER]` section of the BART configuration file, which is located in `/etc` directory. + + + +*Database Server Parameter Reference* + +Set the following parameters in the \[`SERVER`] section of the BART configuration file. The parameter setting in the \[`SERVER`] section overrides the setting in the global \[`BART`] section for that particular database server. If omitted, the default value will be used. + +For each cluster serviced by BART, the following parameters are mandatory: + +```text +[HR] + +host = 192.168.2.24 +port = 5432 +user = postgres +cluster_owner = postgres +``` + +!!! Note + The port parameter setting is required only if the database server listens on a port other than the default (for example if Postgres listens on a port other than 5432). + +The following table describes the database server parameters. + + + + + + + + + +| **Parameters/Placeholder** | Type | **Description** | +| --------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `[ServerName]` | Mandatory | Specify the server name that you want to backup using BART. It is not case-sensitive when referenced with BART subcommand options. A lowercase conversion of this name is used to create a subdirectory in the BART backup catalog for storing the backups and WAL files for this database server (for eg., epas12). | +| `` | Optional | Specify a [template](#backup_name_template) for user-defined, friendly names that will be assigned to the backups of the database server. The maximum permitted length of backup name is 49 characters. The `` parameter can be overridden by the `--backup-name` option of the `BACKUP` subcommand. If this parameter is omitted from the BART configuration file, and the `--backup-name` option with a user-defined name is not specified with the `BACKUP` subcommand, then the backup can only be referenced in BART subcommands by the BART assigned, integer backup identifier. | +| `host` | Mandatory | Specify the IP address of the database server to be configured for backup. | +| `port` | Mandatory | Specify the port number identifying the database server instance (that is, the relevant database cluster) to be backed up. The default port number for EPAS is `5444` and for Postgres it is `5432`. The port parameter setting is only required if the database server listens on a port other than the default value. | +| `User` | Mandatory | Specify the replication database user name used by BART to establish the connection to the database server for full backups. See [Setting up a Replication Database User](#setting_up_a_replication_database_user) for more information. | +| `` | Optional | Specify the path where archived WAL files will be stored. The default location is the BART backup catalog (`//archived_wals`). | +| `` | Optional | When the `INIT` subcommand is used, the content and variables specified in the BART `` result in the archive command string to be generated into the `Postgres archive_command` parameter in the `postgresql.auto.conf` file. To configure the BART `` parameter, enclose the command string within single quotes ('). If you do not specify the `` parameter in the configuration file, the default setting is taken as `'scp %p %h:%a/%f'`. See [Archive Command Auto Configuration](#archive_command_auto_configuration) for information about variables. The BART `` parameter in the BART configuration file, and the Postgres `` parameter in the `postgresql.conf` file (or the `postgresql.auto.conf` file) refer to two different parameters that are to be set in different manner. | +| `` | Mandatory | Specify the Linux operating system user account that owns the database cluster. This is typically `enterprisedb` for Advanced Server database clusters installed in the Oracle compatible mode, or `postgres` for Advanced Server database clusters installed in the PostgreSQL compatible mode and PostgreSQL database clusters. | +| `` | Optional | Specify the IP address of the remote server to which a backup is to be restored. Specify this parameter in the form of `@`. `` is the user account on the target database server host that accepts a passwordless SSH/SCP login connection and owns the directory where the backup is to be restored. `` is the IP address of the remote host. For restoring a backup to a remote host or for restoring any backup where `` and the BART user account are not the same users, either this parameter must be set or it may be specified with the `-r` option with the BART `RESTORE` subcommand. | +| `` | Optional | Specify path to which tablespaces are to be restored in the format `OID = `; If the backup is to be restored to a remote host specified by the `` parameter, then the tablespace paths must exist on the remote host. | +| `allow_incremental_backups` | Optional | Set this parameter to `enabled` to enable use of the WAL scanner and permit taking incremental backups when the `BACKUP` subcommand is invoked with the `--parent` option. Set it to `disabled` (default) to disallow incremental backups and thus permit only full backups. For information about using the `BACKUP` subcommand and running the WAL scanner, please see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). | +| `Description` | Optional | Specify the description that will be used to identify the database server. | + +For information regarding the following parameters, see [configuring the BART host](#configuring-the-bart-host). + +- `retention_policy` +- `xlog_method` +- `wal_compression` +- `copy_wals_during_restore`. +- `thread_count`. +- `batch_size`. +- `scan_interval`. +- `mbm_scan_timeout`. +- `workers` + + + +**Backup Name Template** + +- The template is an alphanumeric string that may include the following variables that will be replaced with the timestamp values when the backup is taken: + + - `%year` to be replaced by 4-digit year + - `%month` to be replaced by 2-digit month + - `%day` to be replaced by 2-digit day + - `%hour` to be replaced by 2-digit hour + - `%minute` to be replaced by 2-digit minute + - `%second` to be replaced by 2-digit second + +- To include a percent sign (`%`) as a character in the backup name, specify `%%` in the template. + +- Do not enclose the template string in quotes even if you want the template to include space characters, otherwise the enclosing quotes are stored as part of the backup name. However, when referenced with the `-i` option by BART subcommands use of space characters in the backup name requires enclosing the backup name in quotes. + +The following example shows the configuration settings of three database servers: + +```text +[ACCTG] + +host = 127.0.0.1 +port = 5444 +user = enterprisedb +cluster_owner = enterprisedb +backup_name = acctg_%year-%month-%dayT%hour:%minute:%second +archive_command = 'cp %p %a/%f' +allow_incremental_backups = enabled +retention_policy = 8 BACKUPS +description = "Accounting" + +[MKTG] + +host = 192.168.2.24 +port = 5444 +user = repuser +cluster_owner = enterprisedb +remote_host = enterprisedb@192.168.2.24 +allow_incremental_backups = enabled +description = "Marketing" + +[HR] + +host = 127.0.0.1 +port = 5432 +user = postgres +cluster_owner = postgres +retention_policy = 4 DAYS +description = "Human Resources" +``` + + + +**Enabling WAL Archiving** + +WAL archiving must be enabled for the database server for which BART is to perform backup and recovery management. + +- The WAL Archiving Configuration section describes the manual WAL archiving configuration process. +- The Archive Command Auto Configuration section describes an automated WAL archiving process. + +*WAL Archiving Configuration* + +Set the following configuration parameters in the `postgresql.conf` file to enable WAL archiving + +- Set `wal_level` to `replica` or higher. +- Set `archive_mode` to `on`. +- Set the PostgreSQL `archive_command` parameter to copy the WAL files to the `archive_path`. The `archive_command` configuration parameter mentioned here is located in the `postgresql.conf` file; the PostgreSQL `archive_command` parameter is used in a different manner than the BART [archive_command](#archive_command). +- Set `max_wal_senders` to a value high enough to leave at least one session available for the backup. If the `xlog_method=stream` parameter setting is to be used by this database server, the `max_wal_senders` setting must account for an additional session for the transaction log streaming (the setting must be a minimum of 2). See [Configuring the BART host](#configuring-the-bart-host) for information about the `xlog_method` parameter. + +For detailed information about WAL archiving, see the [PostgreSQL Core Documentation](https://www.postgresql.org/docs/current/static/continuous-archiving.html). + +The `ARCHIVE PATH` field displayed by the BART `SHOW-SERVERS` subcommand displays the full directory path where the WAL files should be copied as specified in the `archive_command` configuration parameter in the `postgresql.conf` file: + +```text +-bash-4.1$ bart SHOW-SERVERS -s acctg +SERVER NAME : acctg +HOST NAME : 192.168.2.24 +USER NAME : repuser +PORT : 5444 +REMOTE HOST : +RETENTION POLICY : none +DISK UTILIZATION : 0.00 bytes +NUMBER OF ARCHIVES : 0 +ARCHIVE PATH : /opt/backup/acctg/archived_wals +ARCHIVE COMMAND : (disabled) +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +INCREMENTAL BACKUP : DISABLED +DESCRIPTION : "Accounting" +``` + +The parameter settings in the following example will copy the WAL files to a directory named `/opt/backup/acctg/archived_wals` on the BART host located at `192.168.2.22` as the `bartuser` user account. Using the `bartuser` account ensures that the operation will have sufficient permissions to copy to the BART backup catalog owned by `bartuser`. + +```text +archive_mode = on # allows archiving to be done + # (change requires restart) +archive_command = 'scp %p bartuser@192.168.2.22:/opt/backup/acctg/archived_wals/%f' + # command to use to archive a logfile segment + # placeholders: %p = path of file to archive + # %f = file name only +... + +max_wal_senders = 1 # max number of walsender processes + # (change requires restart) +``` + +The database server must be restarted in order to initiate WAL archiving, but do not do so until you have verified that the full path of the BART backup catalog has been created by a prior BART subcommand or the archive operation will fail. + +Start the WAL scanner by executing the following command: + +```text +./bart-scanner +``` + + + +*Archive Command Auto Configuration* + +To enable WAL archiving: + +- In the `postgresql.conf` file, set the `wal_level` to `replica` or higher, `archive_mode` to `on`, and `max_wal_senders` to a value high enough to leave at least one session available for the backup. If the `xlog_method=stream` parameter setting is to be used by this database server as determined in the BART configuration file, the `max_wal_senders` setting must account for an additional session for the transaction log streaming (that is, the setting must be a minimum of `2`). See [Configuring the BART host](#configuring-the-bart-host) for information on the `xlog_method` parameter. + +- Configure the Postgres `archive_command` parameter automatically with the `INIT` subcommand and restart the database server when you are ready to initiate WAL archiving. The `INIT` subcommand invokes the Postgres `ALTER SYSTEM` command to set the Postgres `archive_command` configuration parameter in the `postgresql.auto.conf` file located in the managed database server’s `POSTGRES_INSTALL_HOME data directory`. For additional information about the `INIT` subcommand, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). + + The archive command string that the `INIT` subcommand generates into the `postgresql.auto.conf` file is determined by the parameter setting of the BART `archive_command` parameter in the server section of the BART configuration file. If the BART `archive_command` parameter is not set in the server section for a given database server, the command string that is configured uses the following default format: + + `'scp %p %h:%a/%f'` + + The following table describes these variables: + +| **Variable** | **Description** | +| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `%p` | The path of the file to archive used by the Postgres archiving process. | +| `%h` | Will be replaced by the `@` as specified in the <bart_host> parameter setting. | +| `%a` | Will be replaced by the BART `archived_wals` directory as specified in the [archive path](#archive_path) parameter setting. If the `` is not specified, then the default directory is `//archived_wals`. `` is the lowercase conversion of the database server name. | +| `%f` | The archived file name used by the Postgres archiving process. | + +The placeholders `%h` and `%a` are replaced by the `INIT` subcommand when creating the archive command string. The placeholders `%p` and `%f` are not replaced by the `INIT` subcommand, but are kept as given to be used by the Postgres archiving process. + +For example, to use the default archive command format, the BART configuration file contains the following settings where the BART `archive_command` parameter is omitted from the server section for `ACCTG`: + +```text +[BART] + +bart_host= bartuser@192.168.2.22 +backup_path = /opt/backup +pg_basebackup_path = /usr/edb/as11/bin/pg_basebackup +logfile = /tmp/bart.log +scanner_logfile = /tmp/bart_scanner.log + +[ACCTG] + +host = 127.0.0.1 +port = 5444 +user = repuser +cluster_owner = enterprisedb +description = "Accounting" +``` + +The `INIT` subcommand is invoked by BART user account `bartuser` as follows: + +```text +[bartuser@localhost ~]$ bart INIT -s acctg -o +INFO: setting archive_command for server 'acctg' +WARNING: archive_command is set. server restart is required +``` + +If the BART backup catalog directory is not already complete, it will be completed. + +The resulting archive command string in the `postgresql.auto.conf` file located in the managed database server’s `POSTGRES_INSTALL_HOME/data directory` appears as follows: + +```text +# Do not edit this file manually! +# It will be overwritten by ALTER SYSTEM command. +archive_command = 'scp %p +bartuser@192.168.2.22:/opt/backup/acctg/archived_wals/%f' +``` + +Run the `INIT` subcommand with the `-o` option to override any existing `archive_command` setting in the `postgresql.conf` or the `postgresql.auto.conf` file. In addition, the `-o` option must be used to generate the command string if the `archive_mode` is set to off even if there are no existing settings of the `archive_command` in the `postgresql.conf` or `postgresql.auto.conf` files. + +In this example, the following BART configuration file is used with an explicit setting of the BART `archive_command` parameter: + +```text +[BART] + +bart_host= enterprisedb@192.168.2.22 +backup_path = /opt/backup +pg_basebackup_path = /usr/edb/as11/bin/pg_basebackup +logfile = /tmp/bart.log +scanner_logfile = /tmp/bart_scanner.log + +[ACCTG] + +host = 127.0.0.1 +port = 5444 +user = repuser +cluster_owner = enterprisedb +archive_command = 'cp %p %a/%f' +description = "Accounting" +``` + +The `INIT` subcommand is invoked by BART user account `enterprisedb` as follows: + +```text +-bash-4.1$ bart INIT -s acctg -o +INFO: setting archive_command for server 'acctg' +WARNING: archive_command is set. server restart is required +``` + +The resulting Postgres `archive_command` parameter in the `postgresql.auto.conf` file appears as follows: + +```text +# Do not edit this file manually! +# It will be overwritten by ALTER SYSTEM command. +archive_command = 'cp %p /opt/backup/acctg/archived_wals/%f' +``` + +When the database server has been restarted, the `ARCHIVE COMMAND` field of the `SHOW-SERVERS` subcommand displays the active Postgres archive command as shown by the following example: + +```text +-bash-4.1$ bart SHOW-SERVERS -s acctg +SERVER NAME : acctg +HOST NAME : 127.0.0.1 +USER NAME : repuser +PORT : 5444 +REMOTE HOST : +RETENTION POLICY : none +DISK UTILIZATION : 48.00 MB +NUMBER OF ARCHIVES : 0 +ARCHIVE PATH : /opt/backup/acctg/archived_wals +ARCHIVE SCOMMAND : `cp %p /opt/backup/acctg/archived_wals/%f` +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +INCREMENTAL BACKUP : DISABLED +DESCRIPTION : "Accounting" +``` + + + +**Verifying Configuration Settings** + +To verify the parameter settings of the database server specified, execute tthe `CHECK-CONFIG` subcommand with the `–s` option: + +```text +bart CHECK-CONFIG [ –s server_name ] +``` + +The `CHECK-CONFIG` subcommand confirms the following: + +- The `cluster_owner` parameter is set to the user account owning the database cluster directory. +- A passwordless SSH/SCP connection is set between the BART user and the user account specified by the `cluster_owner` parameter. +- The BART `user` parameter specifies a database superuser. +- The BART `user` has access to the backup directory catalog. +- The `pg_hba.conf` file contains a replication entry for the database superuser specified by the BART `user` parameter. +- The `archive_mode` parameter in the `postgresql.conf` file is enabled. +- The `archive_command` parameter in the `postgresql.auto.conf` or the `postgresql.conf` file is set. +- The `allow_incremental_backups` parameter in the BART configuration file is enabled for database servers for which incremental backups are to be taken. +- Archiving of WAL files to the `archive_path` is in process. +- The WAL scanner program is running. + +After configuring the BART host and the database server(s), you can start using BART. For information about using BART, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). diff --git a/product_docs/docs/bart/2.5/bart_inst/04_upgrading_bart.mdx b/product_docs/docs/bart/2.5/bart_inst/04_upgrading_bart.mdx new file mode 100644 index 00000000000..4ea97b87ab6 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_inst/04_upgrading_bart.mdx @@ -0,0 +1,77 @@ +--- +title: "Upgrading BART" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/installation-getting-started/installation-upgrade-guide/2.6.1/upgrading_bart.html" +--- + + + +This section outlines the process of upgrading BART from an existing version to the latest version. + +**Upgrade Restrictions** + +The following restrictions apply with regard to previous BART versions. + +- You can take incremental backups using the latest version only when the parent backup (full or incremental backup) has also been taken with the latest version. +- Using the latest version, you can restore incremental backups that are taken only with the latest version of BART. However, using the latest version you can restore full backups that were taken with older versions. + + + +## Upgrading from Older Versions of BART + +Perform the following steps to upgrade from older versions of BART to the latest version: + +**Step 1:** Assume the identity of the BART user account and invoke the following command to stop the BART WAL scanner program (`bart-scanner`): + +```text +bart-scanner STOP +``` + +**Step 2:** As the `root` user, upgrade to the latest BART version with the `yum upgrade` command. + +- To upgrade the BART RPM package directly from the *EDB Yum Repository* website, specify only the package name: + + On CentOS 7: + + ```text + yum upgrade edb-bart + ``` + + You can also use a downloaded RPM package file to upgrade. To use a downloaded BART RPM package file to upgrade, use the `yum` command, specifying the complete RPM package file name: + + ```text + yum upgrade edb-bart-x.y.z rhel7.x86_64.rpm + ``` + + Where x denotes the major version of BART, and y and z denotes the minor version. + + On a Debian or Ubuntu Host: + On a Debian or Ubuntu Host: + + ```text + apt-get upgrade edb-bart + ``` + + On a SLES Host: + + ```text + zypper update edb-bart + ``` + +**Step 3:** Repeat the process described in this section to upgrade to the latest BART version on each remote hosts where an incremental backup will be restored. + +For additional information about restoration of incremental backups on remote hosts, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). + +**Step 4:** If the `bart --version` command returns an error stating the `PATH` is not available after switching from `root` user to another BART user account, adjust the setting of the `PATH` environment variable to include the location of the BART x.y.z executable (the `bin` subdirectory) in the `~/.bashrc` or `~/.bash_profile` files of the following user accounts: + +- The BART user account on the BART host. +- The remote user account on the remote host to which incremental backups are to be restored. For details, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). + +The `PATH` setting should be the same as set for BART x.y.z since all versions use `/usr/edb/bart/bin`. + +!!! Note + After upgrading to the latest BART version, you must take a new full backup of your system before performing an incremental backup. + + \ No newline at end of file diff --git a/product_docs/docs/bart/2.5/bart_inst/05_uninstalling_bart.mdx b/product_docs/docs/bart/2.5/bart_inst/05_uninstalling_bart.mdx new file mode 100644 index 00000000000..8374221ef88 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_inst/05_uninstalling_bart.mdx @@ -0,0 +1,50 @@ +--- +title: "Uninstalling BART" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/installation-getting-started/installation-upgrade-guide/2.6.1/uninstalling_bart.html" +--- + + + +This section walks you through uninstalling BART. + +## Uninstalling BART on a RHEL/CentOS Host + +To uninstall BART on a RHEL/CentOS host, assume the identity of the `root` user and invoke the following command: + +On RHEL/CentOS 7: + +```text +yum remove edb-bart +``` + +On RHEL/CentOS 8: + +```text +dnf remove edb-bart +``` + +Uninstalling BART does not delete the backup files and archived WAL files that reside in the BART backup catalog. To permanently delete the backup files and archived WAL files in the BART backup catalog (`/opt/backup`), use one of the following commands: + +- `rm –rf /opt/backup` +- BART `DELETE` subcommand + +For information about the BART `DELETE` subcommand, see the *EDB Backup and Recovery User Guide* available at the [EDB website](/bart/latest/bart_user/). + +## Uninstalling BART on an SLES 12 Host + +To uninstall BART on an SLES 12 host, assume the identity of the `root` user and invoke the following command: + +```text +zypper remove edb-bart +``` + +## Uninstalling BART on a Debian/Ubuntu Host + +To uninstall BART on a Debian or Ubuntu host, invoke the following command: + +```text +apt-get remove edb-bart +``` diff --git a/product_docs/docs/bart/2.5/bart_inst/images/EDB_logo.png b/product_docs/docs/bart/2.5/bart_inst/images/EDB_logo.png new file mode 100644 index 00000000000..39a54822d85 Binary files /dev/null and b/product_docs/docs/bart/2.5/bart_inst/images/EDB_logo.png differ diff --git a/product_docs/docs/bart/2.5/bart_inst/images/edb.png b/product_docs/docs/bart/2.5/bart_inst/images/edb.png new file mode 100644 index 00000000000..71e5bdde787 Binary files /dev/null and b/product_docs/docs/bart/2.5/bart_inst/images/edb.png differ diff --git a/product_docs/docs/bart/2.5/bart_inst/images/edb_logo.svg b/product_docs/docs/bart/2.5/bart_inst/images/edb_logo.svg new file mode 100644 index 00000000000..f24d1dfefee --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_inst/images/edb_logo.svg @@ -0,0 +1,19 @@ + + + edb-logo-disc-dark + + + + \ No newline at end of file diff --git a/product_docs/docs/bart/2.5/bart_inst/images/edblogo.png b/product_docs/docs/bart/2.5/bart_inst/images/edblogo.png new file mode 100644 index 00000000000..71e5bdde787 Binary files /dev/null and b/product_docs/docs/bart/2.5/bart_inst/images/edblogo.png differ diff --git a/product_docs/docs/bart/2.5/bart_inst/index.mdx b/product_docs/docs/bart/2.5/bart_inst/index.mdx new file mode 100644 index 00000000000..dd182be18aa --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_inst/index.mdx @@ -0,0 +1,45 @@ +--- +navTitle: Installation Guide +title: "EDB Postgres Backup and Recovery Installation Guide" +legacyRedirects: + - "/edb-docs/d/edb-backup-and-recovery-tool/installation-getting-started/installation-upgrade-guide/2.6.1/requirements_overview.html" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/installation-getting-started/installation-upgrade-guide/2.6.1/conclusion.html" + - "/edb-docs/d/edb-backup-and-recovery-tool/installation-getting-started/installation-upgrade-guide/2.6.1/genindex.html" + - "/edb-docs/d/edb-backup-and-recovery-tool/installation-getting-started/installation-upgrade-guide/2.6.1/index.html" +--- + +This guide provides information about how to install and configure the EDB Backup and Recovery Tool (BART) 2.5. + + + +## Requirements Overview + +### Supported Platforms and Database Versions + +- To view a complete list of platforms that EDB supports, visit the [EDB website.](https://www.enterprisedb.com/services-support/edb-supported-products-and-platforms) + +!!! Note + BART 2.5 does not support CentOS/RHEL/OEL 6.x platforms. EDB recommends migrating the EDB products running on these platforms to a supported platform. + +- BART supports the following database versions: + + - Advanced Server versions 9.6, 10, 11, and 12. + - PostgreSQL versions 9.6, 10, 11, and 12. + +### Software Requirements + +You require the following components to install BART. + +- BART Host Components - Use EDB packages to add BART host components; see [Installing BART](02_installing_bart/#installing-bart) for information about how to install these components. + +- Additional Components - In addition to the BART host components, the following components are required: + + - The [Secure Shell (SSH) server daemon and Secure Copy (SCP) client programs](03_configuring_bart/#authorizing_ssh_scp_access) must be enabled and activated on the BART host as well as on the remote database server hosts on which BART will be managing backup and recovery. + - BART uses the `pg_basebackup` utility program when taking full backups. + +### Limitation + +BART supports taking only a full backup of standby servers; it does not support taking incremental or parallel backups of standby servers. diff --git a/product_docs/docs/bart/2.5/bart_qs_7/images/EDB_logo.png b/product_docs/docs/bart/2.5/bart_qs_7/images/EDB_logo.png new file mode 100644 index 00000000000..39a54822d85 Binary files /dev/null and b/product_docs/docs/bart/2.5/bart_qs_7/images/EDB_logo.png differ diff --git a/product_docs/docs/bart/2.5/bart_qs_7/images/edb.png b/product_docs/docs/bart/2.5/bart_qs_7/images/edb.png new file mode 100644 index 00000000000..71e5bdde787 Binary files /dev/null and b/product_docs/docs/bart/2.5/bart_qs_7/images/edb.png differ diff --git a/product_docs/docs/bart/2.5/bart_qs_7/images/edb_logo.svg b/product_docs/docs/bart/2.5/bart_qs_7/images/edb_logo.svg new file mode 100644 index 00000000000..f24d1dfefee --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_qs_7/images/edb_logo.svg @@ -0,0 +1,19 @@ + + + edb-logo-disc-dark + + + + \ No newline at end of file diff --git a/product_docs/docs/bart/2.5/bart_qs_7/images/image2.png b/product_docs/docs/bart/2.5/bart_qs_7/images/image2.png new file mode 100644 index 00000000000..4eba2e7efa7 Binary files /dev/null and b/product_docs/docs/bart/2.5/bart_qs_7/images/image2.png differ diff --git a/product_docs/docs/bart/2.5/bart_qs_7/index.mdx b/product_docs/docs/bart/2.5/bart_qs_7/index.mdx new file mode 100644 index 00000000000..1d54bf90879 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_qs_7/index.mdx @@ -0,0 +1,321 @@ +--- +title: "Quick Start Guide for RHEL/CentOS 7" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/quick-start/quick-start-guide-for-rhelcentos-7/2.6.1/genindex.html" + - "/edb-docs/d/edb-backup-and-recovery-tool/quick-start/quick-start-guide-for-rhelcentos-7/2.6.1/index.html" +--- + +This tutorial demonstrates using `yum` to [install](#installing) and [configure](../bart_qs_8/#configuring) Backup and Recovery Tool (BART) 2.5 on a CentOS 7 host with minimal configuration settings.  The tutorial assumes that the user has some knowledge of installation and system administration procedures, and has administrative privileges on the host. + +For detailed information about BART installation and configuration, see the *BART Installation and Upgrade Guide*, available at the [EDB website](/bart/latest/bart_inst/). + +- BART is tested with the following database versions: + + - Advanced Server - 9.6, 10, 11, and 12. + - PostgreSQL - 9.6, 10, 11, and 12. + + + +**Installing BART** + +The following steps describe installing BART on CentOS 7.x OS using `yum`. + +1. Assume superuser privileges and use `yum` to create the repository configuration file: + + ```text + yum install -y https://yum.enterprisedb.com/edbrepos/edb-repo-latest.noarch.rpm + ``` + +2. Create an EDB user account to request credentials to the EDB repository; for a user account visit the [EnterpriseDB website](https://www.enterprisedb.com/repository-access-request). + +3. Use your choice of editor to open the repository configuration file (named `edb.repo`, located in `/etc/yum.repos.d`), and set the `enabled` parameter value to `1`, and replace the `username` and `password` placeholders in the `baseurl` specification with the username and password of a registered EnterpriseDB user. + +4. Update the cache: + + ```text + yum makecache + ``` + +5. Install an Advanced Server or PostgreSQL database server. + + To install Advanced Server, execute the following command: + + ```text + yum -y install edb-as12-server + ``` + + Use sudo to assume the identity of the `enterprisedb` database superuser + + ```text + sudo su - enterprisedb + ``` + + Create an Advanced Server cluster named `acctg` on listener port `5444`: + + ```text + /usr/edb/as12/bin/initdb -D /var/lib/edb/as12/acctg + ``` + + As the `enterprisedb` user, start the cluster: + + ```text + /usr/edb/as12/bin/pg_ctl start -D /var/lib/edb/as12/acctg + ``` + + You can check the status of the cluster with the following command: + + ```text + /usr/edb/as12/bin/pg_ctl status -D /var/lib/edb/as12/acctg + ``` + + !!! Note + The BART host server is not required to have an Advanced Server or PostgreSQL installation, but must include a copy of the Postgres `libpq` library, the `pg_basebackup` utility program, and Boost Libraries 1.53 version for CentOS 7. + +6. If you do not already have the `pg_basebackup` program installed on the BART host, you can use the following command to install a limited number of files that include the `pg_basebackup` program: + + ```text + yum install edb-as-server-client + ``` + + Where <xx> is the Advanced Server version. + +7. As a root user, execute the following command to install BART: + + ```text + yum install edb-bart + ``` + +BART (the bart program and bart-scanner) is installed in the `/usr/edb/bart/bin` directory, referred to as ``. Repeat the installation process described in this section to install BART on all remote hosts where incremental backups are to be restored. + + + +**Configuring BART** + +Before configuring BART, establish the BART user account (the operating system user) that will run the BART command line program. Then, to configure the BART host and each database server that is to be managed by BART, perform the following steps: + +1. Assume superuser privileges, create the directory that will hold the BART backup catalog, and assign its ownership (with restrictive privileges) to the BART user account: + + In this example, `bartuser` is the BART user account and `/opt/backup` is the BART backup catalog. + + ```text + su root + mkdir /opt/backup + chown bartuser /opt/backup + chgrp bartuser /opt/backup + chmod 700 /opt/backup + ``` + +2. Navigate to the `/usr/edb/bart/etc` directory and copy the `bart.cfg.sample` file to create the BART configuration file (`bart.cfg`): + + ```text + cp bart.cfg.sample bart.cfg + ``` + +3. Open the BART configuration file (`bart.cfg`) using an editor of your choice and scroll through the BART configuration file to edit the file as required; sample settings are included for your reference. You must add the mandatory parameters to the `[BART]` and `[ServerName]` sections. Default values may be used for optional parameters. For detailed information about parameter settings, see the *BART Installation and Upgrade Guide*, available at the [EDB website](/bart/latest/bart_inst/). + + Parameters set in the `[BART]` section are applicable to all BART managed database servers, while parameters set in the `[ServerName]` section are applicable only to the specific server; `[ServerName]` settings override `[BART]` section settings. + + In the following example, only mandatory parameters are set: + + ```text + [BART] + bart_host= bartuser@192.168.169.199 + backup_path = /opt/backup + pg_basebackup_path = /usr/edb/as12/bin/pg_basebackup + + [EPAS12] + host = 127.0.0.1 + user = repuser + cluster_owner = enterprisedb + ``` + +The following table describes only mandatory parameters: + +| **Parameters/Placeholder** | **Section** | **Description** | +| -------------------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `bart_host` | `[BART]` | Use this field to specify the BART user and the IP address of the host on which the BART utility is installed. Specify the value in the form of `@`. | +| `backup_path` | `[BART]` | Use this field to specify the path where all BART backups and archived WAL files will be stored. Ensure the BART user account holds privileges to create subdirectories and files within the location specified in the `backup_path` parameter. The default `backup_path` is BART backup catalog (`/opt/backup`). | +| `pg_basebackup_path` | `[BART]` | Use this field to specify the path to the pg_basebackup utility (`/usr/edb/as/bin/pg_basebackup`). | +| `[ServerName]` | `[ServerName]` | Specify the name of the database server to be backed up (for example, \[EPAS12]). | +| `host` | `[ServerName]` | Specify the IP address of the database server to be configured for backup. | +| `user` | `[ServerName]` | Specify the replication database user name used by BART to establish the connection to the database server for full backups. | +| `cluster_owner` | `[ServerName]` | Specify the Linux operating system user account that owns the database cluster. | + +4. As a BART user, navigate to `/usr/edb/bart/bin` and invoke the following subcommand (omitting the `-s` option) to verify the \[BART] section parameter settings: + + ```text + bart CHECK-CONFIG + ``` + +5. Authorize [SSH/SCP access](../bart_qs_8/#passwordless) between the server and the BART host without a password prompt. + +6. Create a [replication database user](../bart_qs_8/#replication) for each database server that BART manages. + +7. To enable continuous WAL archiving for any database server for which BART is to perform a backup, modify the `postgresql.conf` file, setting: + + - `wal_level` to `replica` or higher (for Postgres 9.6 or later) + - `archive_mode` to `on` + - `archive_command` (if it is not set in the `bart.cfg` file) + - `max_wal_senders` to a value high enough to leave at least one session available for the backup. + + After setting the parameters, restart the database server. + +8. To start the WAL scanner, navigate to `/usr/edb/bart/bin` as a BART user and execute the following command: + + ```text + ./bart-scanner + ``` + +9. If you are using the default `archive_command`, then navigate to `/usr/edb/bart/bin` as a BART user, run the `INIT` subcommand without the `-o` option, and restart the database server: + + ```text + bart INIT [ -s { | all } ] + ``` + + Where `` is the name of the database server to be backed up. + + If you have customized the `archive_command` setting in the `bart.cfg` file, run the `INIT` subcommand with the `-o` option to override any existing Postgresql `archive_command` setting in the `postgresql.conf` or the `postgresql.auto.conf` file, and restart the database server. + + ```text + bart INIT [ -s { | all } ] [ -o ] + ``` + +10. To verify the database server parameter settings, as a BART user navigate to `/usr/edb/bart/bin` and invoke the `CHECK-CONFIG` subcommand with the -s option: + + ```text + bart CHECK-CONFIG [ -s ] + ``` + + BART is now configured successfully. For detailed information about using BART, see the *EDB Backup and Recovery Tool User Guide*, available at the [EDB website](/bart/latest/bart_user/). + + + +**Creating a Passwordless Connection** + +The following example enables SSH/SCP access on a CentOS 7.x host; similar (platform-specific) steps will apply to other platforms/versions. You must create a passwordless connection between the BART host (SSH/SCP client) and the database server (target SSH/SCP server), as well as a passwordless connection between the database server (SSH/SCP client) and the BART host (target SSH/SCP server). + +1. Log in as the user account on the BART host that will be initiating the SSH or SCP connection and navigate to the user account’s home directory and check for an existing `.ssh` subdirectory. If the `.ssh` directory does not exist, create one with the required privileges. + +2. As a root user navigate to `/usr/edb/bart`, open the `/etc/ssh/sshd_config` file and set the `PubkeyAuthentication` parameter to `yes`. + +3. Reload the configuration file: + + ```text + service sshd reload + ``` + + If you get any SSH or SCP errors, examine the log file (`/var/log/secure`). + +4. As a BART user, use the following command to generate the public key file; you can accept the default responses: + + ```text + ssh-keygen -t rsa + ``` + + The public key file named `id_rsa.pub` is created in the `.ssh` subdirectory. + +5. Use `SCP` to make a temporary copy of the public key file on the target server: + + ```text + scp ~/.ssh/id_rsa.pub target_user@host_address:tmp.pub + ``` + +6. As a `target_user`, log into the target server using `ssh target_user@host_address` command and navigate to the user account’s home directory to check if there is an existing `.ssh` subdirectory. If it does not exist, create one with the required privileges. + +7. Append the client’s temporary public key file, `tmp.pub`, to the `authorized_keys` file: + + ```text + cat tmp.pub >> ~/.ssh/authorized_keys + ``` + + If an `authorized_keys` file does not exist, create a new file, but be careful not to completely replace any existing `authorized_keys` file. + +8. Ensure only the file owner (and not other groups or users) has access to `authorized_keys` file: + + ```text + chmod 600 ~/.ssh/authorized_keys + ``` + +9. Delete the temporary public key file: + + ```text + rm tmp.pub + ``` + + Now, when logged into the BART host as a user, there should be no prompt for a password when you are connecting to the target database server: + + ```text + ssh target_user@database_server_address + ``` + +**Creating a Passwordless Connection Between the Database Server and the BART Host** + +If backups are to be taken from a given database server host, but restored to a different database server host, the passwordless SSH/SCP connections must be configured from the BART host to the database server host from which the backup is to be taken as well as from the BART host to the database server host to which the backup is to be restored. + +An example of how to create a passwordless connection is documented in the *EDB Backup and Recovery Reference Guide*, available at the [EDB website](/bart/latest/bart_ref/). + +Even when the Advanced Server database is on the same host as BART, and the Advanced Server database cluster owner is also the BART user account, a passwordless SSH/SCP connection must be established from the same user account to itself. + +1. On the database server, navigate into the target user account’s home directory to check for an existing `.ssh` subdirectory. If it does does not exist, create one in the user account’s home directory with the required privileges. + +2. As a database server user, generate the public key file: + + ```text + ssh-keygen -t rsa + ``` + +3. Create a temporary copy of the public key file: + + ```text + scp ~/.ssh/id_rsa.pub target_user@host_address:tmp.pub + ``` + +4. As a target user, log into the BART host and navigate to the user account’s home directory to check if there is an existing `.ssh` subdirectory. If it does not exist, create one with the required privileges: + + ```text + ssh target_user@host_address + ``` + +5. Append the temporary, client’s public key file to the `authorized_keys` file: + + ```text + cat tmp.pub >> ~/.ssh/authorized_keys + ``` + +If an `authorized_keys` file does not exist, create a new file, but do not completely replace any existing `authorized_keys` file. + +6. Ensure only the file owner (and not other groups or users) has access to `authorized_keys` file: + + ```text + chmod 600 ~/.ssh/authorized_keys + ``` + +7. Delete the temporary public key file: + + ```text + rm tmp.pub + ``` + + Now, when logged into the database server as a user, there should be no prompt for a password when you are connecting to the BART host: + + ```text + ssh bart_user@bartip_address + ``` + + + +**Creating a Replication Database User** + +1. To create a replication database user (a superuser), connect to the database server with the psql client, and invoke the following PostgreSQL command: + + ```text + CREATE ROLE WITH LOGIN SUPERUSER PASSWORD ''; + ``` + +2. Specify this replication database user in the `user` parameter of the `bart.cfg` file. + +3. The [pg_hba.conf](https://www.postgresql.org/docs/current/auth-pg-hba-conf.html) file must minimally permit the replication database user to have access to the database. The IP address from which the replication database user has access to the database is the BART host location. The replication database user must also be included in the `pg_hba.conf` file as a replication database connection if `pg_basebackup` is to be used for taking any backups. + +4. To ensure there is no password prompt when connecting to the database server with the replication database user, a recommended method is to use the `.pgpass` file located in the BART user account’s home directory (if it does not exist, you need to create the `.pgpass` file with the required privileges). The `.pgpass` file must contain an entry for each BART managed database server, and its corresponding replication database user and password. diff --git a/product_docs/docs/bart/2.5/bart_qs_8/images/EDB_logo.png b/product_docs/docs/bart/2.5/bart_qs_8/images/EDB_logo.png new file mode 100644 index 00000000000..39a54822d85 Binary files /dev/null and b/product_docs/docs/bart/2.5/bart_qs_8/images/EDB_logo.png differ diff --git a/product_docs/docs/bart/2.5/bart_qs_8/images/edb.png b/product_docs/docs/bart/2.5/bart_qs_8/images/edb.png new file mode 100644 index 00000000000..71e5bdde787 Binary files /dev/null and b/product_docs/docs/bart/2.5/bart_qs_8/images/edb.png differ diff --git a/product_docs/docs/bart/2.5/bart_qs_8/images/edb_logo.svg b/product_docs/docs/bart/2.5/bart_qs_8/images/edb_logo.svg new file mode 100644 index 00000000000..f24d1dfefee --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_qs_8/images/edb_logo.svg @@ -0,0 +1,19 @@ + + + edb-logo-disc-dark + + + + \ No newline at end of file diff --git a/product_docs/docs/bart/2.5/bart_qs_8/images/image2.png b/product_docs/docs/bart/2.5/bart_qs_8/images/image2.png new file mode 100644 index 00000000000..4eba2e7efa7 Binary files /dev/null and b/product_docs/docs/bart/2.5/bart_qs_8/images/image2.png differ diff --git a/product_docs/docs/bart/2.5/bart_qs_8/index.mdx b/product_docs/docs/bart/2.5/bart_qs_8/index.mdx new file mode 100644 index 00000000000..7dc447abfb2 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_qs_8/index.mdx @@ -0,0 +1,317 @@ +--- +title: "Quick Start Guide for RHEL/CentOS 8" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/quick-start/quick-start-guide-for-rhelcentos-8/2.6.1/genindex.html" + - "/edb-docs/d/edb-backup-and-recovery-tool/quick-start/quick-start-guide-for-rhelcentos-8/2.6.1/index.html" +--- + +This tutorial demonstrates using the `dnf` command to install and configure the EDB Backup and Recovery Tool (BART) 2.5 on a CentOS 8 host with minimal configuration settings.  The tutorial assumes that the user has some knowledge of installation and system administration procedures and has administrative privileges on the host. + +For detailed information about BART installation and configuration, see the *BART Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/). + +- BART is tested with the following database versions: + + - Advanced Server - 9.6, 10, 11, and 12. + - PostgreSQL - 9.6, 10, 11, and 12. + +**Installing BART** + +The following steps describe installing BART on CentOS 8.x OS. + +1. Assume superuser privileges and use `dnf` to create the repository configuration file: + + ```text + dnf install -y https://yum.enterprisedb.com/edbrepos/edb-repo-latest.noarch.rpm + ``` + +2. Create an EDB user account to request credentials to the EDB repository; for a user account visit the [EnterpriseDB website](https://www.enterprisedb.com/repository-access-request). + +3. Use your choice of editor to open the repository configuration file (named `edb.repo`, located in `/etc/yum.repos.d`), set the `enabled` parameter value to `1`, and replace the `username` and `password` placeholders in the `baseurl` specification with the username and password of a registered EnterpriseDB user. + +4. Update the cache: + + ```text + dnf makecache + ``` + +5. Install an Advanced Server or PostgreSQL database server. + + To install Advanced Server, execute the following command: + + ```text + dnf -y install edb-as12-server + ``` + + Use sudo to assume the identity of the `enterprisedb` database superuser: + + ```text + sudo su - enterprisedb + ``` + + Create an Advanced Server cluster named `acctg` on listener port `5444`: + + ```text + /usr/edb/as12/bin/initdb -D /var/lib/edb/as12/acctg + ``` + + As the `enterprisedb` user, start the cluster: + + ```text + /usr/edb/as12/bin/pg_ctl start -D /var/lib/edb/as12/acctg + ``` + + You can check the status of the cluster with the following command: + + ```text + /usr/edb/as12/bin/pg_ctl status -D /var/lib/edb/as12/acctg + ``` + + !!! Note + The BART host server is not required to have an Advanced Server or PostgreSQL installation, but must include a copy of the Postgres `libpq` library, the `pg_basebackup` utility program, and Boost Libraries 1.66 version for CentOS 8. + +6. If you do not already have the `pg_basebackup` program installed on the BART host, you can use the following command to install a limited number of files that include the `pg_basebackup` program: + + ```text + dnf install edb-asxx-server-client + ``` + +7. As a root user, use the following command to install the BART RPM package: + + ```text + dnf install edb-bart + ``` + +BART (the `bart` program and `bart-scanner`) is installed in the `/usr/edb/bart/bin` directory, referred to as ``. Repeat the installation process described in this section to install BART on all remote hosts where incremental backups are to be restored. + + + +**Configuring BART** + +Before configuring BART, establish the BART user account (the operating system user) to run the BART command line program. Then, to configure the BART host and each database server that is to be managed by BART, perform the following steps: + +1. Assume superuser privileges, create the directory that will hold the BART backup catalog, and assign its ownership (with restrictive privileges) to the BART user account: + + In this example, `bartuser` is the BART user account and `/opt/backup` is the BART backup catalog. + + ```text + su root + mkdir /opt/backup + chown bartuser /opt/backup + chgrp bartuser /opt/backup + chmod 700 /opt/backup + ``` + +2. Navigate to the `/usr/edb/bart/etc` directory and copy the `bart.cfg.sample` file to create the BART configuration file (`bart.cfg`): + + ```text + cp bart.cfg.sample bart.cfg + ``` + +3. Open the BART configuration file (`bart.cfg`) using an editor of your choice and scroll through the BART configuration file to edit the file as required; sample settings are included for your reference. You must add the mandatory parameters to the `[BART]` and `[ServerName]` sections. Default values may be used for optional parameters. For detailed information about parameter settings, see the *BART Installation and Upgrade Guide*, available at the [EDB website](/bart/latest/bart_inst/). + + Parameters set in the `[BART]` section are applicable to all BART managed database servers, while parameters set in the `[ServerName]` section are applicable only to the specific server; `[ServerName]` settings override `[BART]` section settings. + + In the following example, only mandatory parameters are set: + + ```text + [BART] + bart_host= bartuser@192.168.169.199 + backup_path = /opt/backup + pg_basebackup_path = /usr/edb/as12/bin/pg_basebackup + + [EPAS12] + host = 127.0.0.1 + user = repuser + cluster_owner = enterprisedb + ``` + +The following table describes only mandatory parameters: + +| **Parameters/Placeholder** | **Section** | **Description** | +| -------------------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `bart_host` | `[BART]` | Use this field to specify the BART user and the IP address of the host on which the BART utility is installed. Specify the value in the form of `@`. | +| `backup_path` | `[BART]` | Use this field to specify the path where all BART backups and archived WAL files will be stored. Ensure the BART user account holds privileges to create subdirectories and files within the location specified in the `backup_path` parameter. The default `backup_path` is BART backup catalog (`/opt/backup`). | +| `pg_basebackup_path` | `[BART]` | Use this field to specify the path to the pg_basebackup utility (`/usr/edb/as/bin/pg_basebackup`). | +| `[ServerName]` | `[ServerName]` | Specify the name of the database server to be backed up (for example, \[EPAS12]). | +| `host` | `[ServerName]` | Specify the IP address of the database server to be configured for backup. | +| `user` | `[ServerName]` | Specify the replication database user name used by BART to establish the connection to the database server for full backups. | +| `cluster_owner` | `[ServerName]` | Specify the Linux operating system user account that owns the database cluster. | + +4. As a BART user, navigate to `/usr/edb/bart/bin` and invoke the following subcommand (omitting the `-s` option) to verify the \[BART] section parameter settings: + + ```text + bart CHECK-CONFIG + ``` + +5. Authorize [SSH/SCP access](#passwordless) between the server and the BART host without a password prompt. + +6. Create a [replication database user](#replication) for each database server that BART manages. + +7. To enable continuous WAL archiving for any database server for which BART is to perform a backup, modify the `postgresql.conf` fil and set it to: + + - `wal_level` to `replica` or higher (for Postgres 9.6 or later) + - `archive_mode` to `on` + - `archive_command` (if it is not set in the `bart.cfg` file) + - `max_wal_senders` to a value high enough to leave at least one session available for the backup. + + After setting the parameters, restart the database server. + +8. To start the WAL scanner, navigate to `/usr/edb/bart/bin` as a BART user and execute the following command: + + ```text + ./bart-scanner + ``` + +9. If you are using the default `archive_command`, then navigate to `/usr/edb/bart/bin` as a BART user, run the `INIT` subcommand without the `-o` option, and restart the database server: + + ```text + bart INIT [ -s { | all } ] + ``` + + Where `` is the name of the database server to be backed up. + + If you have customized the `archive_command` setting in the `bart.cfg` file, run the `INIT` subcommand with the `-o` option to override any existing Postgresql `archive_command` setting in the `postgresql.conf` or the `postgresql.auto.conf` file, and restart the database server. + + ```text + bart INIT [ -s { | all } ] [ -o ] + ``` + +10. To verify the database server parameter settings, as a BART user navigate to `/usr/edb/bart/bin` and invoke the `CHECK-CONFIG` subcommand with the -s option: + + ```text + bart CHECK-CONFIG [ -s ] + ``` + + BART is now configured successfully. For detailed information about using BART, see the *EDB Backup and Recovery Tool User Guide* available at the [EDB website](/bart/latest/bart_user/). + + + +**Creating a Passwordless Connection** + +The following example enables SSH/SCP access on a CentOS 8.x host; similar (platform-specific) steps will apply to other platforms/versions. You must create a passwordless connection between the BART host (SSH/SCP client) and the database server (target SSH/SCP server), as well as a passwordless connection between the database server (SSH/SCP client) and the BART host (target SSH/SCP server). + +1. Log in as the user account on the BART host that will be initiating the SSH or SCP connection and navigate to the user account’s home directory and check for an existing `.ssh` subdirectory. If the `.ssh` directory does not exist, create one with the required privileges. + +2. As a root user navigate to `/usr/edb/bart`, open the `/etc/ssh/sshd_config` file and set the `PubkeyAuthentication` parameter to `yes`. + +3. Reload the configuration file: + + ```text + service sshd reload + ``` + + If you get any SSH or SCP errors, examine the log file (`/var/log/secure`). + +4. As a BART user, use the following command to generate the public key file; you can accept the default responses: + + ```text + ssh-keygen -t rsa + ``` + + The public key file named `id_rsa.pub` is created in the `.ssh` subdirectory. + +5. Use `SCP` to make a temporary copy of the public key file on the target server: + + ```text + scp ~/.ssh/id_rsa.pub target_user@host_address:tmp.pub + ``` + +6. As a `target_user`, log into the target server using `ssh target_user@host_address` command and navigate to the user account’s home directory to check if there is an existing `.ssh` subdirectory. If it does not exist, create one with the required privileges. + +7. Append the temporary client’s public key file, `tmp.pub`, to the `authorized_keys` file: + + ```text + cat tmp.pub >> ~/.ssh/authorized_keys + ``` + + If an `authorized_keys` file does not exist, create a new file, but be careful not to completely replace any existing `authorized_keys` file. + +8. Ensure only the file owner (and not other groups or users) has access to `authorized_keys` file: + + ```text + chmod 600 ~/.ssh/authorized_keys + ``` + +9. Delete the temporary public key file: + + ```text + rm tmp.pub + ``` + + Now, when logged into the BART host as a user, there should be no prompt for a password when you are connecting to the target database server: + + ```text + ssh target_user@database_server_address + ``` + +**Creating a Passwordless Connection Between the Database Server and the BART Host** + +If backups are to be taken from a given database server host, but restored to a different database server host, the passwordless SSH/SCP connections must be configured from the BART host to the database server host from which the backup is to be taken as well as from the BART host to the database server host to which the backup is to be restored. + +An example of how to create a passwordless connection is documented in the *EDB Backup and Recovery Reference Guide*, available at the [EDB website](/bart/latest/bart_ref/). + +Even when the Advanced Server database is on the same host as BART, and the Advanced Server database cluster owner is also the BART user account, a passwordless SSH/SCP connection must be established from the same user account to itself. + +1. On the database server, navigate into the target user account’s home directory to check for an existing `.ssh` subdirectory. If it does does not exist, create one in the user account’s home directory with the required privileges. + +2. As a database server user, generate the public key file: + + ```text + ssh-keygen -t rsa + ``` + +3. Create a temporary copy of the public key file: + + ```text + scp ~/.ssh/id_rsa.pub target_user@host_address:tmp.pub + ``` + +4. As a target user, log into the BART host and navigate to the user account’s home directory to check if there is an existing `.ssh` subdirectory. If it does not exist, create one with the required privileges: + + ```text + ssh target_user@host_address + ``` + +5. Append the client’s temporary public key file to the `authorized_keys` file: + + ```text + cat tmp.pub >> ~/.ssh/authorized_keys + ``` + +If the `authorized_keys file` does not exist, create a new file, but do not completely replace any existing `authorized_keys` file. + +6. Ensure that only the file owner (and not other groups or users) has access to `authorized_keys` file: + + ```text + chmod 600 ~/.ssh/authorized_keys + ``` + +7. Delete the temporary public key file: + + ```text + rm tmp.pub + ``` + + Now, when logged into the database server as a user, there should be no prompt for a password when you are connecting to the BART host: + + ```text + ssh bart_user@bartip_address + ``` + + + +**Creating a Replication Database User** + +1. To create a replication database user (a superuser), connect to the database server with the psql client, and invoke the following PostgreSQL command: + + ```text + CREATE ROLE WITH LOGIN SUPERUSER PASSWORD ''; + ``` + +2. Specify this replication database user in the `user` parameter of the `bart.cfg` file. + +3. The [pg_hba.conf](https://www.postgresql.org/docs/current/auth-pg-hba-conf.html) file must minimally permit the replication database user to have access to the database. The IP address from which the replication database user has access to the database is the BART host location. The replication database user must also be included in the `pg_hba.conf` file as a replication database connection if `pg_basebackup` is to be used for taking any backups. + +4. To ensure there is no password prompt when connecting to the database server with the replication database user, a recommended method is to use the `.pgpass` file located in the BART user account’s home directory (if it does not exist, you need to create the `.pgpass` file with the required privileges). The `.pgpass` file must contain an entry for each BART managed database server, and its corresponding replication database user and password. diff --git a/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/01_backup.mdx b/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/01_backup.mdx new file mode 100644 index 00000000000..2649c676929 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/01_backup.mdx @@ -0,0 +1,218 @@ +--- +title: "BACKUP" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/backup.html" +--- + +Use the `BACKUP` subcommand to create a full or incremental backup. + +**Syntax for a Full Backup:** + +```text +bart BACKUP –s { | all } [ -F { p | t } ] + +[ -z ] [ –c ] + +[ --backup-name ] + +[ --thread-count ] + +[ { --with-pg_basebackup | --no-pg_basebackup } ] +``` + +**Syntax for an Incremental Backup:** + +```text +bart BACKUP –s [-Fp] + +[ --parent { | } ] + +[ --backup-name ] + +[ --thread-count ] + +``` + +Before performing an incremental backup, you must take a full backup. For more details about incremental backup, refer to *Block-Level Incremental Backup* in the *EDB Backup and Recovery User Guide* available at the [EDB website](/bart/latest/bart_user/). + +The following table describes the `BACKUP` options: + +| Options | Description | +| ---------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s { \| all }`
`--server { \| all }` | Use this option to specify the database server to be backed up.
Specify `` to take a backup of the database server (as specified in the BART configuration file).
Specify `all` to take a backup of all servers. | +| `-F { p \| t }`
`--format { p \| t }` | Use this option to specify the backup file format.
Specify `p` option to take backup in plain text format and specify `t` option to take backup in tar format. If the `p` or `t` option is omitted, the default is tar format.
Use `p` option with the `BACKUP` subcommand when streaming is used as a backup method.
An incremental backup can only be taken in plain text format (`p`). | +| `-z`
`(--gzip)` | This option is applicable only for full backup and `tar` format. Use this option to enable gzip compression of tar files using the default compression level (typically 6). | +| `-c `
`--compress-level ` | This is applicable only for full backup and tar format. Use this option to specify the gzip compression level on the tar file output. `` is a digit from 1 through 9, with 9 being the best compression. | +| `--backup-name ` | Use this option to assign a user-defined, alphanumeric friendly name to the backup. The maximum permitted length of backup name is 49 characters.
For detailed information about this parameter, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/).
If the option `--backup-name` is not specified and the `backup_name` parameter is not set for this database server in the BART configuration file, then the backup can only be referenced in other BART subcommands by the BART assigned backup identifier. | +| `--thread-count ` | Use this option to specify the number of worker threads to run in parallel to copy blocks for a backup.
For detailed information about the `--thread-count` parameter, see the EDB Backup and Recovery Installation and Upgrade Guide available at the [EDB website](/bart/latest/bart_inst/). | +| `--with-pg_basebackup` | This is applicable only for full backup. Use this option to specify the use of `pg_basebackup` to take a full backup. The number of thread counts in effect is ignored as given by the `thread_count` parameter in the BART configuration file.
When taking a full backup, if the thread count in effect is greater than `1`, then the `pg_basebackup` utility is not used to take the full backup (parallel worker threads are used) unless the `--with-pg_basebackup` option is specified with the `BACKUP` subcommand. | +| `--no-pg_basebackup` | This is applicable only for full backup. Use this option to specify that `pg_basebackup` is not to be used to take a full backup.
When taking a full backup, if the thread count in effect is only `1`, then the `pg_basebackup` utility is used to take the full backup unless the `--no-pg_basebackup` option is specified with the `BACKUP` subcommand. | +| `--parent { \| }` | Use this option to take an incremental backup. The parent backup is a backup taken prior to the incremental backup; it can be either a full backup or an incremental backup. `` is the backup identifier of a parent backup and `` is the user-defined alphanumeric name of a parent backup. | +| `--check` | This is applicable only for incremental backup. Use this option to verify if the required MBM files are present in the BART backup catalog before taking an incremental backup. However, an actual incremental backup is not taken when the `--check` option is specified.
The `--parent` option must be used along with the `--check` option. | + +**Examples** + +The following code sample demonstrates using variables with the `BACKUP` subcommand: + +```text +./bart backup -s ppas12 -Ft --backup-name "YEAR = %year MONTH = +%month DAY = %day" +``` + +```text +./bart backup -s ppas12 -Ft --backup-name "YEAR = %year MONTH = +%month DAY = %day %%" +``` + +```text +./bart show-backups -s ppas12 -i "test backup" +``` + +The following code sample displays the result of creating a full backup in the default tar format with gzip compression when the `BACKUP` subcommand was invoked. Note that checksums are generated for the full backup and user-defined tablespaces for the tar format backup: + +```text +[edb@localhost bin]$ ./bart BACKUP -s hr -z +INFO: DebugTarget - getVar(checkDiskSpace.bytesAvailable) +INFO: new backup identifier generated 1567591909098 +INFO: creating 5 harvester threads +NOTICE: all required WAL segments have been archived +INFO: backup completed successfully +INFO: +BART VERSION: 2.5 +BACKUP DETAILS: +BACKUP STATUS: active +BACKUP IDENTIFIER: 1567591909098 +BACKUP NAME: none +BACKUP PARENT: none +BACKUP LOCATION: /home/edb/bkup_new/hr/1567591909098 +BACKUP SIZE: 13.91 MB +BACKUP FORMAT: tar.gz +BACKUP TIMEZONE: America/New_York +XLOG METHOD: fetch +BACKUP CHECKSUM(s): 0 +TABLESPACE(s): 3 +Oid Name Location +16387 test1 /home/edb/tbl1 +16388 test2 /home/edb/tbl2 +16389 test3 /home/edb/tbl3 + +START WAL LOCATION: 000000010000000000000025 +STOP WAL LOCATION: 000000010000000000000026 +BACKUP METHOD: streamed +BACKUP FROM: master +START TIME: 2019-09-04 06:11:49 EDT +STOP TIME: 2019-09-04 06:11:53 EDT +TOTAL DURATION: 4 sec(s) +``` + +The following code sample displays information about the directory containing the full backup: + +```text +[edb@localhost bin]$number_of_threads> +[edb@localhost bin]$ ls -l /home/edb/bkup_new/hr/ +total 8 +drwxrwxr-x. 3 edb edb 34 Aug 27 05:57 1566899819709 +drwxrwxr-x. 3 edb edb 58 Aug 27 05:57 1566899827751 +drwxrwxr-x. 3 edb edb 4096 Sep 4 06:11 1567591909098 +drwxrwxr-x. 2 edb edb 4096 Sep 4 06:11 archived_wals +[edb@localhost bin]$ +``` + +The following code sample displays information about the creation of a full backup while streaming the transaction log. Note that the `-Fp` option must be specified with the `BACKUP` subcommand when streaming is used as a backup method. + +```text +[edb@localhost bin]$ ./bart BACKUP -s ACCTG -Fp +INFO: DebugTarget - getVar(checkDiskSpace.bytesAvailable) +INFO: new backup identifier generated 1566898964200 +INFO: creating 5 harvester threads +NOTICE: pg_stop_backup complete, all required WAL segments have been archived +INFO: backup completed successfully +INFO: +BART VERSION: 2.5 +BACKUP DETAILS: +BACKUP STATUS: active +BACKUP IDENTIFIER: 1566898964200 +BACKUP NAME: none +BACKUP PARENT: none +BACKUP LOCATION: /home/edb/bkup_new/acctg/1566898964200 +BACKUP SIZE: 46.03 MB +BACKUP FORMAT: plain +BACKUP TIMEZONE: US/Eastern +XLOG METHOD: fetch +BACKUP CHECKSUM(s): 0 +TABLESPACE(s): 0 +START WAL LOCATION: 000000010000000000000017 +BACKUP METHOD: streamed +BACKUP FROM: master +START TIME: 2019-08-27 05:42:44 EDT +STOP TIME: 2019-08-27 05:42:46 EDT +TOTAL DURATION: 2 sec(s) +``` + +The following code sample displays the assignment of a user-defined backup name with the `--backup-name` option: + +```text +[edb@localhost bin]$ ./bart BACKUP -s acctg --backup-name acctg_%year-%month-%day +INFO: DebugTarget - getVar(checkDiskSpace.bytesAvailable) +INFO: new backup identifier generated 1566899004804 +INFO: creating 5 harvester threads +NOTICE: pg_stop_backup complete, all required WAL segments have been archived +INFO: backup completed successfully +INFO: +BART VERSION: 2.5 +BACKUP DETAILS: +BACKUP STATUS: active +BACKUP IDENTIFIER: 1566899004804 +BACKUP NAME: acctg_2019-08-27 +BACKUP PARENT: none +BACKUP LOCATION: /home/edb/bkup_new/acctg/1566899004804 +BACKUP SIZE: 46.86 MB +BACKUP FORMAT: tar +BACKUP TIMEZONE: US/Eastern +XLOG METHOD: fetch +BACKUP CHECKSUM(s): 0 +TABLESPACE(s): 0 +START WAL LOCATION: 00000001000000000000001A +BACKUP METHOD: streamed +BACKUP FROM: master +START TIME: 2019-08-27 05:43:24 EDT +STOP TIME: 2019-08-27 05:43:24 EDT +TOTAL DURATION: 0 sec(s) +``` + +The following code sample displays an incremental backup taken by specifying the `--parent` option. The option `-Fp` must be specified while taking an incremental backup as incremental backup can be taken only in plain text format. + +```text +[edb@localhost bin]$ ./bart BACKUP -s hr -Fp --parent hr_full_1 --backup-name +hr_incr_1 +INFO: DebugTarget - getVar(checkDiskSpace.bytesAvailable) +INFO: checking /home/edb/bkup_new/hr/archived_wals for MBM files from 0/20000028 to +0/22000000 +INFO: new backup identifier generated 1566899827751 +INFO: creating 5 harvester threads +NOTICE: all required WAL segments have been archived +INFO: backup completed successfully +INFO: +BART VERSION: 2.5 +BACKUP DETAILS: +BACKUP STATUS: active +BACKUP IDENTIFIER: 1566899827751 +BACKUP NAME: hr_incr_1 +BACKUP PARENT: 1566899819709 +BACKUP LOCATION: /home/edb/bkup_new/hr/1566899827751 +BACKUP SIZE: 7.19 MB +BACKUP FORMAT: plain +BACKUP TIMEZONE: America/New_York +XLOG METHOD: fetch +BACKUP CHECKSUM(s): 0 +TABLESPACE(s): 0 +START WAL LOCATION: 000000010000000000000022 +STOP WAL LOCATION: 000000010000000000000023 +BACKUP METHOD: streamed +BACKUP FROM: master +START TIME: 2019-08-27 05:57:07 EDT +STOP TIME: 2019-08-27 05:57:08 EDT +TOTAL DURATION: 1 sec(s) +``` \ No newline at end of file diff --git a/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/02_check_config.mdx b/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/02_check_config.mdx new file mode 100644 index 00000000000..69c51d5249e --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/02_check_config.mdx @@ -0,0 +1,65 @@ +--- +title: "CHECK-CONFIG" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/check_config.html" +--- + +The `CHECK-CONFIG` subcommand checks the global parameter settings as well as the database server configuration in the BART configuration file. + +The following syntax is used to check the BART configuration file global section settings. + +```text +bart CHECK-CONFIG +``` + +The following syntax is used to check the database server configuration settings. + +```text +bart CHECK-CONFIG [ –s ] +``` + +The following table describes the `CHECK-CONFIG` option: + +| Option | Description | +| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | +| `-s ` `--server ` | `` is the name of the database server whose configuration parameter settings are to be checked. | + +**Example** + +The following code sample demonstrates successfully checking the BART configuration file global parameters with the `bart CHECK-CONFIG` command: + +```text +bash-4.1$ bart CHECK-CONFIG +INFO: Verifying that pg_basebackup is executable +INFO: success - +INFO: success - pg_basebackup(/usr/edb/as11/bin/pg_basebackup) returns +version 11.400000 +``` + +The following code sample demonstrates successfully checking the BART configuration file database server parameters with the `bart CHECK-CONFIG` command with the `–s` option: + +```text +[edb@localhost bin]$ ./bart check-config -s hr +INFO: Checking server hr +INFO: Verifying cluster_owner and ssh/scp connectivity +INFO: success +INFO: Verifying user, host, and replication connectivity +INFO: success +INFO: Verifying that user is a database superuser +INFO: success +INFO: Verifying that cluster_owner can read cluster data files +INFO: success +INFO: Verifying that you have permission to write to vault +INFO: success +INFO: /home/edb/bkup_new/hr +INFO: Verifying database server configuration +INFO: success +INFO: Verifying that WAL archiving is working +INFO: waiting 30 seconds for +/home/edb/bkup_new/hr/archived_wals/00000001000000000000001E +INFO: success +INFO: Verifying that bart-scanner is configured and running +INFO: success +``` diff --git a/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/03_delete.mdx b/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/03_delete.mdx new file mode 100644 index 00000000000..a148c571880 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/03_delete.mdx @@ -0,0 +1,141 @@ +--- +title: "DELETE" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/delete.html" +--- + +The `DELETE` subcommand removes the subdirectory and data files from the BART backup catalog for the specified backups along with archived WAL files. + +**Syntax:** + +```text +bart DELETE –s +-i { all | [']{ | },... }['] } +[ -n ] +``` + +Note that when invoking the `DELETE` subcommand, you must specify a database server. + +For database servers under a retention policy, there are conditions where certain backups may not be deleted. For more information, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). + +The following table describes the `DELETE` options: + +| Options | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s `
`--server ` | `` is the name of the database server whose backups are to be deleted. | +| ``-i { all \| [']{ \| }',... }[`] }``

``--backupid { all \| [']{ \| }',... }[`] }`` | `` is the backup identifier of the backup to be deleted. `` is the user-defined alphanumeric name for the backup.
Multiple backup identifiers and backup names may be specified in a comma-separated list. The list must be enclosed within single quotes if there is any white space appearing before or after each comma (see [Example](#deleting_multiple_backups_with_space_characters)).
If `all` is specified, all backups and their archived WAL files for the specified database server are deleted. | +| `-n`
`--dry-run` | Performs the test run and displays the results prior to physically removing files; no files are actually deleted. | + +**Example** + +The following code sample demonstrates deleting a backup from the specified database server: + +```text +[edb@localhost bin]$ ./bart DELETE -s acctg -i acctg_2019-08-27 +INFO: deleting backup 'acctg_2019-08-27' of server 'acctg' +INFO: deleting backup '1566900093665' +INFO: WALs of deleted backup(s) will belong to prior backup(if any), or will +be marked unused +WARNING: not marking any WALs as unused WALs, the WAL file +'/home/edb/bkup_new/acctg/archived_wals/000000010000000000000025' +is required, yet not available in archived_wals directory +INFO: backup(s) deleted +[edb@localhost bin]$ +``` + +After the deletion, the BART backup catalog for the database server no longer contains the corresponding directory for the deleted `backup ID`. The following code sample displays information about `archived_wals` subdirectory that no longer contains the backup WAL files: + +```text +[edb@localhost acctg]$ ls -l +total 16 +drwxrwxr-x. 3 edb edb 4096 Aug 27 06:03 1566900199604 +drwxrwxr-x. 3 edb edb 4096 Aug 27 06:03 1566900204377 +drwxrwxr-x. 3 edb edb 4096 Aug 27 06:03 1566900209087 +drwxrwxr-x. 3 edb edb 4096 Aug 27 06:05 1566900321228 +drwxrwxr-x. 2 edb edb 6 Aug 27 06:01 archived_wals +``` + +The following code sample demonstrates deleting multiple backups from the database server. + +```text +[edb@localhost bin]$ ./bart DELETE -s acctg -i `1566988095633,1566988100760, +acctg_2019-08-28` +INFO: deleting backup `1566988095633` of server `acctg` +INFO: deleting backup `1566988095633` +INFO: WALs of deleted backup(s) will belong to prior backup(if any), or will +be marked unused +WARNING: not marking any WALs as unused WALs, the WAL file +`/home/edb/bkup_new/acctg/archived_wals/000000010000000000000037` is required, +yet not available in archived_wals directory +INFO: backup(s) deleted +INFO: deleting backup `1566988100760` of server `acctg` +INFO: deleting backup `1566988100760` +INFO: WALs of deleted backup(s) will belong to prior backup(if any), or will +be marked unused +WARNING: not marking any WALs as unused WALs, the WAL file +`/home/edb/bkup_new/acctg/archived_wals/000000010000000000000039` is +required, yet not available in archived_wals directory +INFO: backup(s) deleted +INFO: deleting backup `acctg_2019-08-28` of server `acctg` +INFO: deleting backup `1566988115512` +INFO: WALs of deleted backup(s) will belong to prior backup(if any), or will +be marked unused +WARNING: not marking any WALs as unused WALs, the WAL file +`/home/edb/bkup_new/acctg/archived_wals/00000001000000000000003C` is required, +yet not available in archived_wals directory +INFO: backup(s) deleted +[edb@localhost bin]$ +[edb@localhost bin]$ +[edb@localhost bin]$ +[edb@localhost acctg]$ +[edb@localhost acctg]$ ls -l +total 8 +drwxrwxr-x. 3 edb edb 4096 Aug 28 06:28 1566988105086 +drwxrwxr-x. 3 edb edb 4096 Aug 28 06:28 1566988109477 +drwxrwxr-x. 2 edb edb 6 Aug 28 06:09 archived_wals +[edb@localhost acctg]$ +``` + + + +**Deleting Multiple Backups with Space Characters** + +The following code sample demonstrates deleting multiple backups; since there are space characters in the comma-separated list, the entire list must be enclosed within single quotes: + +```text +[edb@localhost bin]$ ./bart DELETE -s acctg -i +`1566900199604,1566900204377,1566900209087`; +INFO: deleting backup `1566900199604` of server `acctg` +INFO: deleting backup `1566900199604` +INFO: WALs of deleted backup(s) will belong to prior backup(if any), or will +be marked unused +WARNING: not marking any WALs as unused WALs, the WAL file +`/home/edb/bkup_new/acctg/archived_wals/000000010000000000000028` is required, +yet not available in archived_wals directory +INFO: backup(s) deleted +INFO: deleting backup `1566900204377` of server `acctg` +INFO: deleting backup `1566900204377` +INFO: WALs of deleted backup(s) will belong to prior backup(if any), or will +be marked unused +WARNING: not marking any WALs as unused WALs, the WAL file +`/home/edb/bkup_new/acctg/archived_wals/00000001000000000000002A` is required, +yet not available in archived_wals directory +INFO: backup(s) deleted +INFO: deleting backup `1566900209087` of server `acctg` +INFO: deleting backup `1566900209087` +INFO: WALs of deleted backup(s) will belong to prior backup(if any), or will +be marked unused +WARNING: not marking any WALs as unused WALs, the WAL file +`/home/edb/bkup_new/acctg/archived_wals/00000001000000000000002C` is required, +yet not available in archived_wals directory +INFO: backup(s) deleted +[edb@localhost bin]$ +[edb@localhost bin]$ +[edb@localhost acctg]$ ls -l +total 4 +drwxrwxr-x. 3 edb edb 4096 Aug 27 06:05 1566900321228 +drwxrwxr-x. 2 edb edb 6 Aug 27 06:01 archived_wals +[edb@localhost acctg]$ +``` diff --git a/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/04_init.mdx b/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/04_init.mdx new file mode 100644 index 00000000000..9f8b020ac03 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/04_init.mdx @@ -0,0 +1,276 @@ +--- +title: "INIT" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/init.html" +--- + + + +The `INIT` subcommand is used to create the BART backup catalog directory, rebuild the BART `backupinfo` file, and set the `archive_command` in the server based on the `archive_command` setting in the `bart.cfg` file. + +**Syntax:** + +```text +bart INIT [ –s { | all } ] [ -o ] + +[ -r [ -i { | | all } ] ] + +[--no-configure] +``` + +The following table describes the `INIT` options: + +| Options | Description | +| ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s { \| all }`
`--server { \| all }` | `` is the name of the database server to which the `INIT` actions are to be applied. If `all` is specified or if the option is omitted, actions are applied to all servers. | +| `-o`
`--override` | Overrides the existing Postgres `archive_command` configuration parameter setting in the `postgresql.conf` file or the `postgresql.auto.conf` file using the BART `archive_command` parameter in the BART configuration file. The `INIT` generated `archive command` string is written to the `postgresql.auto.conf` file. | +| `-r`
`--rebuild` | Rebuilds the `backupinfo` file located in each backup subdirectory. If `all` is specified or if the option is omitted, the `backupinfo` files of all backups for the database servers specified by the `-s` option are recreated. This option is only intended for recovering from a situation where the backupinfo file has become corrupt.
If the backup was initially created with a user-defined backup name, and then the `INIT -r` option is invoked to rebuild that `backupinfo` file, the user-defined backup name is no longer available. Thus, future references to the backup must use the backup identifier. | +| `-i { \| \| all }`
`--backupid { \| \| all }` | `` is an integer, backup identifier and `` is the user-defined alphanumeric name for the backup. The `-i` option can only be used with the `-r` option. | +| `--no-configure` | Prevents the `archive_command` from being set in the PostgreSQL server. | + +**Examples** + +In the following code sample, you can see that `archive_mode = off` and `archive_command` is not set. After invoking the BART `INIT` subcommand, `archive_mode` is set to `on` and `archive_command` is set: + +```text +archive_mode = off # enables archiving; off, on, or always +# (change requires restart) +archive_command = '' +# command to use to archive a logfile segment +[edb@localhost bin]$ ./bart init -s ppas11 +INFO: setting archive_mode/archive_command for server 'ppas11' +WARNING: archive_mode/archive_command is set. Restart the PostgreSQL +server using 'pg_ctl restart' +[edb@localhost bin]$ +# Do not edit this file manually! +# It will be overwritten by the ALTER SYSTEM command. +archive_mode = 'on' +archive_command = 'scp %p +edb@127.0.0.1:/home/edb/bkup/ppas11/archived_wals/%f' +``` + +In the following code sample, you can see that `archive_mode = on`, and `archive_command` is not set. After invoking the `INIT` subcommand, `archive_command` is set: + +```text +archive_mode = on # enables archiving; off, on, or always +# (change requires restart) +archive_command = '' # command to use to archive a logfile segment +[edb@localhost bin]$ ./bart init -s ppas11 +INFO: setting archive_mode/archive_command for server 'ppas11' +WARNING: archive_command is set. Reload the configuration in the +PostgreSQL server using pg_reload_conf() or 'pg_ctl reload' +[edb@localhost bin]$ +# Do not edit this file manually! +# It will be overwritten by the ALTER SYSTEM command. +archive_command = 'scp %p +edb@127.0.0.1:/home/edb/bkup/ppas11/archived_wals/%f' +``` + +In the following code sample, you can see that `archive_mode = on` and `archive_command` are already set. After invoking the `INIT` subcommand, there is no change in their settings. Note that to override the existing `archive_command`, you must include the `-o` option. + +```text +archive_mode = on # enables archiving; off, on, or always +# (change requires restart) +archive_command = 'scp %p +edb@127.0.0.1:/home/edb/bkup/ppas11/archived_wals/%f' # command to use +to archive a logfile segment +# placeholders: %p = path of file to archive +[edb@localhost bin]$ ./bart init -s ppas11 +INFO: setting archive_mode/archive_command for server 'ppas11' +WARNING: archive_command is not set for server 'ppas11' +[edb@localhost bin]$ +# Do not edit this file manually! +# It will be overwritten by the ALTER SYSTEM command. +``` + +In the following code sample, you can see that `archive_mode = off` and `archive_command` is already set. After invoking the `INIT` subcommand `archive_mode` is set to `on`: + +```text +archive_mode = off # enables archiving; off, on, or always +# (change requires restart) +archive_command = 'scp %p +edb@127.0.0.1:/home/edb/bkup/ppas11/archived_wals/%f' # command to use +to archive a log file segment +[edb@localhost bin]$ ./bart init -s ppas11 +INFO: setting archive_mode/archive_command for server 'ppas11' +WARNING: archive_mode/archive_command is set. Restart the PostgreSQL +server using 'pg_ctl restart' +# Do not edit this file manually! +# It will be overwritten by the ALTER SYSTEM command. +archive_mode = 'on' +archive_command = 'scp %p +edb@127.0.0.1:/home/edb/bkup/ppas11/archived_wals/%f' +``` + +In the following code sample an existing `archive command` setting is overridden by resetting the `archive_command` in the PostgreSQL server with the `archive_command = 'cp %p %a/%f'` parameter from the `bart.cfg` file: + +```text +[BART] + +bart_host= enterprisedb@192.168.2.22 +backup_path = /opt/backup_edb +pg_basebackup_path = /usr/edb/as11/bin/pg_basebackup +logfile = /tmp/bart.log +scanner_logfile = /tmp/bart_scanner.log + +[ACCTG] + +host = 127.0.0.1 +port = 5444 +user = repuser +cluster_owner = enterprisedb +archive_command = 'cp %p %a/%f' +description = "Accounting" +``` + +The `archive_mode` and `archive_command` parameters in the database server are set as follows: + +```text +edb=# SHOW archive_mode; +archive_mode +-------------- +on +(1 row) +edb=# SHOW archive_command; +archive_command +------------------------------------------------------------------ +scp %p bartuser@192.168.2.22:/opt/backup/acctg/archived_wals/%f + +(1 row) +``` + +Invoke the `INIT` subcommand with the `-o` option to override the current `archive_command` setting in the PostgreSQL server: + +```text +-bash-4.1$ bart INIT -s acctg -o +INFO: setting archive_mode/archive_command for server 'acctg' +WARNING: archive_command is set. Reload the configuration in the +PostgreSQL server using pg_reload_conf() or 'pg_ctl reload' +``` + +Reload the database server configuration; a restart of the database server is not necessary to reset only the `archive_command` parameter: + +```text +[root@localhost tmp]# service ppas11 reload +``` + +The `archive_command` in the PostgreSQL server is now set as follows: + +```text +edb=# SHOW archive_command; + archive_command +----------------------------------------------- +cp %p /opt/backup_edb/acctg/archived_wals/%f +(1 row) +``` + +The new command string is written to the `postgresql.auto.conf` file: + +```text +# Do not edit this file manually! +# It will be overwritten by ALTER SYSTEM command. +archive_command = 'cp %p /opt/backup_edb/acctg/archived_wals/%f' +``` + +When you invoke the BART `INIT` command with the `-r` option, BART rebuilds the `backupinfo` file using the content of the backup directory for the server specified or for all servers. The BART `backupinfo` file is initially created by the `BACKUP` subcommand and contains the backup information used by BART. + +!!! Note + If the backup was initially created with a user-defined backup name, and then the `INIT -r` option is invoked to rebuild the `backupinfo` file, the user-defined backup name is no longer available. Thus, future references to the backup must use the backup identifier. + +The following code sample shows the `backupinfo` file location in a backup subdirectory: + +```text +[root@localhost acctg]# pwd +/opt/backup/acctg +[root@localhost acctg]# ls -l +total 4 +drwx------ 2 enterprisedb enterprisedb 38 Oct 26 10:21 1477491569966 +drwxrwxr-x 2 enterprisedb enterprisedb 4096 Oct 26 10:19 archived_wals +[root@localhost acctg]# ls -l 1477491569966 +total 61144 +-rw-rw-r-- 1 enterprisedb enterprisedb 703 Oct 26 10:19 backupinfo +-rw-rw-r-- 1 enterprisedb enterprisedb 62603776 Oct 26 10:19 base.tar +``` + +The following code sample displays the `backupinfo` file content: + +```text +BACKUP DETAILS: +BACKUP STATUS: active +BACKUP IDENTIFIER: 1477491569966 +BACKUP NAME: none +BACKUP PARENT: none +BACKUP LOCATION: /opt/backup/acctg/1477491569966 +BACKUP SIZE: 59.70 MB +BACKUP FORMAT: tar +BACKUP TIMEZONE: +XLOG METHOD: fetch +BACKUP CHECKSUM(s): 1 +ChkSum File +84b3eeb1e3f7b3e75c2f689570d04f10 base.tar +TABLESPACE(s): 0 +START WAL LOCATION: 2/A5000028 (file 0000000100000002000000A5) +STOP WAL LOCATION: 2/A50000C0 (file 0000000100000002000000A5) +CHECKPOINT LOCATION: 2/A5000028 +BACKUP METHOD: streamed +BACKUP FROM: master +START TIME: 2016-10-26 10:19:30 EDT +LABEL: pg_basebackup base backup +STOP TIME: 2016-10-26 10:19:30 EDT +TOTAL DURATION: 0 sec(s) +``` + +The following code sample displays an error message if the `backupinfo` file is missing when invoking a BART subcommand: + +```text +-bash-4.2$ bart SHOW-BACKUPS +ERROR: 'backupinfo' file does not exist for backup '1477491569966' +please use 'INIT -r' to generate the file +``` + +The `backupinfo` file may be missing if the `BACKUP` subcommand did not complete successfully. + +The following code sample displays information about rebuilding the `backupinfo` file of the specified backup for database server `acctg`: + +```text +-bash-4.1$ bart INIT -s acctg -r -i 1428346620427 +INFO: rebuilding BACKUPINFO for backup '1428346620427' of server 'acctg' +INFO: backup checksum: ced59b72a7846ff8fb8afb6922c70649 of base.tar +``` + +The following code sample displays information about how the `backupinfo` files of all backups are rebuilt for all database servers: + +```text +-bash-4.1$ bart INIT -r + +INFO: rebuilding BACKUPINFO for backup '1428347191544' of server 'acctg' +INFO: backup checksum: 1ac5c61f055c910db314783212f2544f of base.tar +INFO: rebuilding BACKUPINFO for backup '1428346620427' of server 'acctg' +INFO: backup checksum: ced59b72a7846ff8fb8afb6922c70649 of base.tar +INFO: rebuilding BACKUPINFO for backup '1428347198335' of server 'dev' +INFO: backup checksum: a8890dd8ab7e6be5d5bc0f38028a237b of base.tar +INFO: rebuilding BACKUPINFO for backup '1428346957515' of server 'dev' +INFO: backup checksum: ea62549cf090573625d4adeb7d919700 of base.tar +``` + +The following code sample displays information about invoking `BART INIT` with the `-r - i` option: + +```text +edb@localhost bin]$ ./bart init -s ppas11 -i 1551778898392 -r +INFO: rebuilding BACKUPINFO for backup '1551778898392' of server +'ppas11' +[edb@localhost bin]$ ls /home/edb/bkup/ppas11/1551778898392/ +backupinfo backup_label base base-1.tar base-2.tar base-3.tar +base-4.tar base-5.tar base.tar +``` + +The following code sample displays information about invoking the `BART INIT` command with the `--no-configure` option. You can use the `--no-configure` option with the `INIT` subcommand to prevent the `archive_command` option from being set in the PostgreSQL server. + +```text +[edb@localhost bin]$ ./bart init -s ppas11 -o --no-configure +[edb@localhost bin]$ +# Do not edit this file manually! +# It will be overwritten by the ALTER SYSTEM command. +``` diff --git a/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/05_manage.mdx b/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/05_manage.mdx new file mode 100644 index 00000000000..75e63130a8e --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/05_manage.mdx @@ -0,0 +1,228 @@ +--- +title: "MANAGE" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/manage.html" +--- + +The `MANAGE` subcommand can be invoked to: + +- Evaluate backups, mark their status, and delete obsolete backups based on the `retention_policy` parameter in the BART configuration file. +- Compress the archived WAL files based on the `wal_compression` parameter in the BART configuration file. + +**Syntax:** + +```text +bart MANAGE [ –s { | all} ] +[ -l ] [ -d ] +[ -c { keep | nokeep } +-i { | | all } ] +[ -n ] +``` + +To view detailed information about the `MANAGE` subcommand and retention policy management, see *the EDB Backup and Recovery User Guide*. For information about setting the `wal_compression` parameter, see the *EDB Backup and Recovery Installation and Upgrade Guide*. These guides are available at the [EDB website](/bart/latest/bart_user/). + +The following table describes the `MANAGE` options: + +| Options | Description | +| ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `-s [ \| all ]`
`--server [ \| all ]` | `` is the name of the database server to which the `MANAGE` actions are to be applied.
If `all` is specified or if the `-s` option is omitted, actions are applied to all database servers. | +| `-l`
`--list-obsolete` | Lists the backups marked as obsolete. | +| `-d`
`--delete-obsolete` | Deletes the backups marked as obsolete. This action physically deletes the backup along with its archived WAL files and any MBM files for incremental backups. | +| `-c { keep \| nokeep }`
`--change-status { keep \| nokeep }` | Specify `keep` to change the backup status to `keep` to retain the backup indefinitely.

Specify `nokeep` to change the backup status back to `active`. You can then re-evaluate and possibly mark the backup as `obsolete` (according to the retention policy) using the `MANAGE` subcommand.

The `-c` option can only be used with the `-i` option. | +| `-i { \| \| all` }

`--backupid { \| \| all` } | `` is a backup identifier and `` is the user-defined alphanumeric name for the backup.
If `all` is specified, actions are applied to all backups.
The `-i` option can only be used with the `-c` option. | +| `-n`
`--dry-run` | Performs the test run and displays the results prior to actually implementing the actions as if the operation was performed, however, no changes are actually made.
If you specify `-n` with the `-d` option, it displays which backups would be deleted, but does not actually delete the backups.
If you specify `-n` with the `-c` option, it displays the keep or nokeep action, but does not actually change the backup status.
If you specify `-n` alone with no other options or if you specify `-n` with only the `-s` option, it displays which active backups would be marked as obsolete, but does not actually change the backup status. In addition, no compression is performed on uncompressed, archived WAL files even if WAL compression is enabled for the database server. | + +**Example** + +The following code sample performs a dry run for the specified database server displaying which active backups are evaluated as obsolete according to the retention policy, but does not actually change the backup status: + +```text +-bash-4.2$ bart MANAGE -s acctg -n +INFO: processing server 'acctg', backup '1482770807519' +INFO: processing server 'acctg', backup '1482770803000' +INFO: marking backup '1482770803000' as obsolete +INFO: 1 WAL file(s) marked obsolete +INFO: processing server 'acctg', backup '1482770735155' +INFO: marking backup '1482770735155' as obsolete +INFO: 2 incremental(s) of backup '1482770735155' will be marked obsolete +INFO: marking incremental backup '1482770780423' as obsolete +INFO: marking incremental backup '1482770763227' as obsolete +INFO: 3 WAL file(s) marked obsolete +INFO: 1 Unused WAL file(s) present +INFO: 2 Unused file(s) (WALs included) present, use 'MANAGE -l' for the +list +``` + +The following code sample marks active backups as obsolete according to the retention policy for the specified database server: + +```text +-bash-4.2$ bart MANAGE -s acctg +INFO: processing server 'acctg', backup '1482770807519' +INFO: processing server 'acctg', backup '1482770803000' +INFO: marking backup '1482770803000' as obsolete +INFO: 1 WAL file(s) marked obsolete +INFO: processing server 'acctg', backup '1482770735155' +INFO: marking backup '1482770735155' as obsolete +INFO: 2 incremental(s) of backup '1482770735155' will be marked obsolete +INFO: marking incremental backup '1482770780423' as obsolete +INFO: marking incremental backup '1482770763227' as obsolete +INFO: 3 WAL file(s) marked obsolete +INFO: 1 Unused WAL file(s) present +INFO: 2 Unused file(s) (WALs included) present, use 'MANAGE -l' for the +list +``` + +The following code sample lists backups marked as obsolete for the specified database server: + +```text +-bash-4.2$ bart MANAGE -s acctg -l +SERVER NAME: acctg +BACKUP ID: 1482770803000 +BACKUP STATUS: obsolete +BACKUP TIME: 2016-12-26 11:46:43 EST +BACKUP SIZE: 59.52 MB +WAL FILE(s): 1 +WAL FILE: 000000010000000100000055 +SERVER NAME: acctg +BACKUP ID: 1482770735155 +BACKUP STATUS: obsolete +BACKUP TIME: 2016-12-26 11:45:35 EST +BACKUP SIZE: 59.52 MB +INCREMENTAL BACKUP(s): 2 +BACKUP ID: 1482770780423 +BACKUP PARENT: 1482770735155 +BACKUP STATUS: obsolete +BACKUP TIME: 2016-12-26 11:45:35 EST +BACKUP SIZE: 59.52 MB +BACKUP ID: 1482770763227 +BACKUP PARENT: 1482770735155 +BACKUP STATUS: obsolete +BACKUP TIME: 2016-12-26 11:45:35 EST +BACKUP SIZE: 59.52 MB +WAL FILE(s): 3 +WAL FILE: 000000010000000100000054 +WAL FILE: 000000010000000100000053 +WAL FILE: 000000010000000100000052 +UNUSED FILE(s): 2 +UNUSED FILE: 000000010000000100000051 +UNUSED FILE: 0000000100000001510000280000000152000000.mbm +``` + +The following code sample deletes the obsolete backups for the specified database server: + +```text +-bash-4.2$ bart MANAGE -s acctg -d +INFO: removing all obsolete backups of server 'acctg' +INFO: removing obsolete backup '1482770803000' +INFO: 1 WAL file(s) will be removed +INFO: removing WAL file '000000010000000100000055' +INFO: removing obsolete backup '1482770735155' +INFO: 3 WAL file(s) will be removed +INFO: 2 incremental(s) of backup '1482770735155' will be removed +INFO: removing obsolete incremental backup '1482770780423' +INFO: removing obsolete incremental backup '1482770763227' +INFO: removing WAL file '000000010000000100000054' +INFO: removing WAL file '000000010000000100000053' +INFO: removing WAL file '000000010000000100000052' +INFO: 8 Unused file(s) will be removed +INFO: removing (unused) file '000000010000000100000056.00000028.backup' +INFO: removing (unused) file '000000010000000100000056' +INFO: removing (unused) file '000000010000000100000055.00000028.backup' +INFO: removing (unused) file '000000010000000100000054.00000028.backup' +INFO: removing (unused) file '000000010000000100000053.00000028.backup' +INFO: removing (unused) file '000000010000000100000052.00000028.backup' +INFO: removing (unused) file '000000010000000100000051' +INFO: removing (unused) file +'0000000100000001510000280000000152000000.mbm' +``` + +The following code sample changes the specified backup to keep status to retain it indefinitely: + +```text +-bash-4.2$ bart MANAGE -s acctg -c keep -i 1482770807519 +INFO: changing status of backup '1482770807519' of server 'acctg' from +'active' to 'keep' +INFO: 1 WAL file(s) changed +-bash-4.2$ bart SHOW-BACKUPS -s acctg -i 1482770807519 -t +SERVER NAME : acctg +BACKUP ID : 1482770807519 +BACKUP NAME : none +BACKUP PARENT : none +BACKUP STATUS : keep +BACKUP TIME : 2016-12-26 11:46:47 EST +BACKUP SIZE : 59.52 MB +WAL(S) SIZE : 16.00 MB +NO. OF WALS : 1 +FIRST WAL FILE : 000000010000000100000057 +CREATION TIME : 2016-12-26 11:52:47 EST +LAST WAL FILE : 000000010000000100000057 +CREATION TIME : 2016-12-26 11:52:47 EST +``` + +The following code sample resets the specified backup to active status: + +```text +-bash-4.2$ bart MANAGE -s acctg -c nokeep -i 1482770807519 +INFO: changing status of backup '1482770807519' of server 'acctg' from +'keep' to 'active' +INFO: 1 WAL file(s) changed +-bash-4.2$ bart SHOW-BACKUPS -s acctg -i 1482770807519 -t +SERVER NAME : acctg +BACKUP ID : 1482770807519 +BACKUP NAME : none +BACKUP PARENT : none +BACKUP STATUS : active +BACKUP TIME : 2016-12-26 11:46:47 EST +BACKUP SIZE : 59.52 MB +WAL(S) SIZE : 16.00 MB +NO. OF WALS : 1 +FIRST WAL FILE : 000000010000000100000057 +CREATION TIME : 2016-12-26 11:52:47 EST +LAST WAL FILE : 000000010000000100000057 +CREATION TIME : 2016-12-26 11:52:47 EST +``` + +The following code sample uses the enabled `wal_compression` parameter in the BART configuration file as shown by the following: + +```text +[ACCTG] + +host = 127.0.0.1 +port = 5445 +user = enterprisedb +cluster_owner = enterprisedb +allow_incremental_backups = disabled +wal_compression = enabled +description = "Accounting" +``` + +When the `MANAGE` subcommand is invoked, the following message is displayed indicating that WAL file compression is performed: + +```text +-bash-4.2$ bart MANAGE -s acctg +INFO: 4 WAL file(s) compressed +WARNING: 'retention_policy' is not set for server 'acctg' +``` + +The following code sample shows the archived WAL files in compressed format: + +```text +-bash-4.2$ pwd +/opt/backup/acctg +-bash-4.2$ ls -l archived_wals +total 160 +-rw------- 1 enterprisedb enterprisedb 27089 Dec 26 12:16 +00000001000000010000005B.gz +-rw------- 1 enterprisedb enterprisedb 305 Dec 26 12:17 +00000001000000010000005C.00000028.backup +-rw------- 1 enterprisedb enterprisedb 27112 Dec 26 12:17 +00000001000000010000005C.gz +-rw------- 1 enterprisedb enterprisedb 65995 Dec 26 12:18 +00000001000000010000005D.gz +-rw------- 1 enterprisedb enterprisedb 305 Dec 26 12:18 +00000001000000010000005E.00000028.backup +-rw------- 1 enterprisedb enterprisedb 27117 Dec 26 12:18 +00000001000000010000005E.gz +``` diff --git a/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/06_restore.mdx b/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/06_restore.mdx new file mode 100644 index 00000000000..b0399e9d3e4 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/06_restore.mdx @@ -0,0 +1,158 @@ +--- +title: "RESTORE" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/restore.html" +--- + +The `RESTORE` subcommand restores a backup and its archived WAL files for the designated database server to the specified directory location. + +**Syntax for Restore**: + +```text +bart RESTORE –s -p +[ –i { | } ] +[ -r @ ] +[ -w ] +[ -t ] +[ { -x | -g } ] +[ -c ] +``` + +To view detailed information about the `RESTORE` subcommand, see the *EDB Backup and Recovery User Guide* available at the [EDB website](/bart/latest/bart_user/). + +If the backup is restored to a different database cluster directory than where the original database cluster resided, then some operations dependent upon the database cluster location may fail. This happens if the supporting service scripts are not updated to reflect the new directory location of restored backup. + +For information about the use and modification of service scripts, see the EDB Advanced Server Installation Guide available at the [EDB website](/epas/latest/). + +The following table describes the `RESTORE` options: + +| Options | Description | +| --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s `
`--server ` | `` is the name of the database server to be restored. | +| `-p --restore-path `
`--restore-path ` | `` is the directory path where the backup of the database server is to be restored. The directory must be empty and have the proper ownership and privileges assigned to it. | +| `-i { \| }`

`--backupid { \| }` | `backup_id` is the backup identifier of the backup to be used for the restoration and `` is the user-defined alphanumeric name for the backup.
If the option is omitted, the latest backup is restored by default. | +| `-r `

`--remote-host ` | `` is the user account on the remote database server host that accepts a passwordless SSH/SCP login connection and is the owner of the directory where the backup is to be restored.
`` is the IP address of the remote host to which the backup is to be restored. This option must be specified if the `remote_host` parameter for this database server is not set in the BART configuration file.
For information about the `remote_host` parameter, see the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/). | +| `-w `
`--workers ` | `` is the number of worker processes to run in parallel to stream the modified blocks of an incremental backup to the restore location. If the `-w` option is omitted, the default is `1` worker process.
For example, if four worker processes are specified, four receiver processes on the restore host and four streamer processes on the BART host are used. The output of each streamer process is connected to the input of a receiver process.
When the receiver gets to the point where it needs a modified block file, it obtains those modified blocks from its input. With this method, the modified block files are never written to the restore host disk. | +| `-t `
`--target-tli ` | `` is the integer identifier of the timeline to be used for replaying the archived WAL files for point-in-time recovery. | +| `-x `
`--target-xid ` | `` is the integer identifier of the transaction ID that determines the transaction up to and including, which point-in-time recovery encompasses. | +| `-g `

`--target-timestamp ` | `` is the timestamp that determines the point in time up to and including, which point-in-time recovery encompasses. | +| `-c`

`--copy-wals` | Specify this option to copy archived WAL files from the BART backup catalog to `/archived_wals` directory.
The `restore_command` retrieves the WAL files from `/archived_wals` for the database server archive recovery.
If the `-c` option is omitted and the `copy_wals_during_restore` parameter in the BART configuration file is not enabled in a manner applicable to this database server, then the `restore_command` in the `postgresql.conf` retrieves the archived WAL files directly from the BART backup catalog.
For information about the `copy_wals_during_restore` parameter, see the EDB Backup and Recovery Installation and Upgrade Guide available at the [EDB website](/bart/latest/bart_inst/). | + +**Examples** + +The following code sample restores a database server(named `mktg`) to the `/opt/restore` directory up to timestamp `2015-12-15 10:47:00`: + +```text +-bash-4.1$ bart RESTORE -s mktg -i 1450194208824 -p /opt/restore -t 1 -g +'2015-12-15 10:47:00' +INFO: restoring backup '1450194208824' of server 'mktg' +INFO: restoring backup to enterprisedb@192.168.2.24:/opt/restore +INFO: base backup restored +INFO: WAL file(s) will be streamed from the BART host +INFO: writing recovery settings to postgresql.auto.conf file +INFO: archiving is disabled +INFO: tablespace(s) restored +``` + +The following parameters are set in the `postgresql.auto.conf` file: + +```text +restore_command = 'scp -o BatchMode=yes -o PasswordAuthentication=no +enterprisedb@192.168.2.22:/opt/backup/mktg/archived_wals/%f %p' +recovery_target_time = '2015-12-15 10:47:00' +recovery_target_timeline = 1 +``` + +The following is a list of the restored files and subdirectories: + +```text +[root@localhost restore]# pwd +/opt/restore +[root@localhost restore]# ls -l +total 108 +-rw------- 1 enterprisedb enterprisedb 208 Dec 15 10:43 backup_label +drwx------ 6 enterprisedb enterprisedb 4096 Dec 2 10:38 base +drwx------ 2 enterprisedb enterprisedb 4096 Dec 15 10:42 dbms_pipe +drwx------ 2 enterprisedb enterprisedb 4096 Dec 15 11:00 global +drwx------ 2 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_clog\ +-rw------- 1 enterprisedb enterprisedb 4438 Dec 2 10:38 pg_hba.conf +-rw------- 1 enterprisedb enterprisedb 1636 Nov 10 15:38 pg_ident.conf +drwxr-xr-x 2 enterprisedb enterprisedb 4096 Dec 15 10:42 pg_log +drwx------ 4 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_multixact +drwx------ 2 enterprisedb enterprisedb 4096 Dec 15 10:42 pg_notify +drwx------ 2 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_serial +drwx------ 2 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_snapshots +drwx------ 2 enterprisedb enterprisedb 4096 Dec 15 10:42 pg_stat +drwx------ 2 enterprisedb enterprisedb 4096 Dec 15 10:43 pg_stat_tmp +drwx------ 2 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_subtrans +drwx------ 2 enterprisedb enterprisedb 4096 Dec 15 11:00 pg_tblspc +drwx------ 2 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_twophase +-rw------- 1 enterprisedb enterprisedb 4 Nov 10 15:38 PG_VERSION +drwx------ 2 enterprisedb enterprisedb 4096 Dec 15 11:00 pg_xlog +-rw------- 1 enterprisedb enterprisedb 23906 Dec 15 11:00 +postgresql.conf +-rw-r--r-- 1 enterprisedb enterprisedb 217 Dec 15 11:00 +postgresql.auto.conf +``` + +**Example** + +The following code sample performs a `RESTORE` operation with the `copy_wals_during_restore` parameter enabled to copy the archived WAL files to the local `/archived_wals` directory: + +```text +-bash-4.1$ bart RESTORE -s hr -i hr_2017-03-29T13:50 -p +/opt/restore_pg96 -t 1 -g '2017-03-29 14:01:00' +INFO: restoring backup 'hr_2017-03-29T13:50' of server 'hr' +INFO: base backup restored +INFO: copying WAL file(s) to +postgres@192.168.2.24:/opt/restore_pg96/archived_wals +INFO: writing recovery settings to postgresql.auto.conf file +INFO: archiving is disabled +INFO: permissions set on $PGDATA +INFO: restore completed successfully +``` + +The following parameters are set in the `postgresql.auto.conf` file: + +```text +restore_command = 'cp archived_wals/%f %p' +recovery_target_time = '2017-03-29 14:01:00' +recovery_target_timeline = 1 +``` + +The following is a list of the restored files and subdirectories: + +```text +-bash-4.1$ pwd +/opt/restore_pg96 +-bash-4.1$ ls -l +total 128 +drwxr-xr-x 2 postgres postgres 4096 Mar 29 14:27 archived_wals +-rw------- 1 postgres postgres 206 Mar 29 13:50 backup_label +drwx------ 5 postgres postgres 4096 Mar 29 12:25 base +drwx------ 2 postgres postgres 4096 Mar 29 14:27 global +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_clog +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_commit_ts +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_dynshmem +-rw------- 1 postgres postgres 4212 Mar 29 13:18 pg_hba.conf +-rw------- 1 postgres postgres 1636 Mar 29 12:25 pg_ident.conf +drwxr-xr-x 2 postgres postgres 4096 Mar 29 13:45 pg_log +drwx------ 4 postgres postgres 4096 Mar 29 12:25 pg_logical +drwx------ 4 postgres postgres 4096 Mar 29 12:25 pg_multixact +drwx------ 2 postgres postgres 4096 Mar 29 13:43 pg_notify +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_replslot +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_serial +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_snapshots +drwx------ 2 postgres postgres 4096 Mar 29 13:43 pg_stat +drwx------ 2 postgres postgres 4096 Mar 29 13:50 pg_stat_tmp +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_subtrans +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_tblspc +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_twophase +-rw------- 1 postgres postgres 4 Mar 29 12:25 PG_VERSION +drwx------ 3 postgres postgres 4096 Mar 29 14:27 pg_xlog +-rw------- 1 postgres postgres 169 Mar 29 13:24 postgresql.auto.conf +-rw-r--r-- 1 postgres postgres 21458 Mar 29 14:27 postgresql.conf +-rw-r--r-- 1 postgres postgres 118 Mar 29 14:27 postgresql.auto.conf +``` \ No newline at end of file diff --git a/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/07_show_servers.mdx b/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/07_show_servers.mdx new file mode 100644 index 00000000000..8ada69b5622 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/07_show_servers.mdx @@ -0,0 +1,77 @@ +--- +title: "SHOW-SERVERS" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/show_servers.html" +--- + +The `SHOW-SERVERS` subcommand displays information for the managed database servers listed in the BART configuration file. + +**Syntax:** + +```text +bart SHOW-SERVERS [ –s { | all } ] +``` + +The following table describes the `SHOW-SERVERS` option: + +| Option | Description | +| ---------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s { \| all` }
`--server { \| all` } | `` is the name of the database server to which the `SHOW-SERVERS` actions are to be applied.
If `all` is specified or if the `-s` option is omitted, the actions are applied to all database servers. | + +**Example** + +The following code sample shows all the database servers managed by BART as returned by the `SHOW-SERVERS` subcommand: + +```text +-bash-4.2$ bart SHOW-SERVERS +SERVER NAME : acctg +BACKUP FRIENDLY NAME: acctg_%year-%month-%dayT%hour:%minute +HOST NAME : 127.0.0.1 +USER NAME : enterprisedb +PORT : 5444 +REMOTE HOST : +RETENTION POLICY : 6 Backups +DISK UTILIZATION : 0.00 bytes +NUMBER OF ARCHIVES : 0 +ARCHIVE PATH : /opt/backup/acctg/archived_wals +ARCHIVE COMMAND : (disabled) +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +INCREMENTAL BACKUP : DISABLED +DESCRIPTION : "Accounting" +SERVER NAME : hr +BACKUP FRIENDLY NAME: hr_%year-%month-%dayT%hour:%minute +HOST NAME : 192.168.2.24 +USER NAME : postgres +PORT : 5432 +REMOTE HOST : postgres@192.168.2.24 +RETENTION POLICY : 6 Backups +DISK UTILIZATION : 0.00 bytes +NUMBER OF ARCHIVES : 0 +ARCHIVE PATH : /opt/backup/hr/archived_wals +ARCHIVE COMMAND : (disabled) +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +INCREMENTAL BACKUP : DISABLED +DESCRIPTION : "Human Resources" +SERVER NAME : mktg +BACKUP FRIENDLY NAME: mktg_%year-%month-%dayT%hour:%minute +HOST NAME : 192.168.2.24 +USER NAME : repuser +PORT : 5444 +REMOTE HOST : enterprisedb@192.168.2.24 +RETENTION POLICY : 6 Backups +DISK UTILIZATION : 0.00 bytes +NUMBER OF ARCHIVES : 0 +ARCHIVE PATH : /opt/backup/mktg/archived_wals +ARCHIVE COMMAND : (disabled) +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +INCREMENTAL BACKUP : DISABLED\ +DESCRIPTION : "Marketing" +``` diff --git a/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/08_show_backups.mdx b/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/08_show_backups.mdx new file mode 100644 index 00000000000..03b7727add3 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/08_show_backups.mdx @@ -0,0 +1,100 @@ +--- +title: "SHOW-BACKUPS" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/show_backups.html" +--- + +The `SHOW-BACKUPS` subcommand displays the backup information for the managed database servers. + +**Syntax:** + +```text +bart SHOW-BACKUPS [ –s { | all } ] +[ -i { | | all } ] +[ -t ] +``` + +The following table describes the `SHOW-BACKUPS` options: + +| Options | Description | +| ------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s { \| all` }

`--server { \| all` } | `` is the name of the database server whose backup information is to be displayed.
If `all` is specified or if the option is omitted, the backup information for all database servers is displayed. | +| `-i { \| \| all }`

`--backupid { \| \| all }` | `` is a backup identifier and `` is the user-defined alphanumeric name for the backup.
If `all` is specified or if the option is omitted, all backup information for the relevant database server is displayed. | +| `-t`
`--toggle` | Displays detailed backup information in list format. If the option is omitted, the default is a tabular format. | + +**Example** + +The following code sample shows the backup from database server `dev`: + +```text +-bash-4.2$ bart SHOW-BACKUPS -s dev +SERVER NAME BACKUP ID BACKUP NAME BACKUP PARENT +BACKUP TIME BACKUP SIZE WAL(s) SIZE WAL FILES STATUS +dev 1477579596637 dev_2016-10-27T10:46:36 none +2016-10-27 10:46:37 EDT 54.50 MB 96.00 MB 6 active +``` + +The following code sample shows detailed information using the `-t` option: + +```text +-bash-4.2$ bart SHOW-BACKUPS -s dev -i 1477579596637 -t +SERVER NAME : dev +BACKUP ID : 1477579596637 +BACKUP NAME : dev_2016-10-27T10:46:36 +BACKUP PARENT : none +BACKUP STATUS : active +BACKUP TIME : 2016-10-27 10:46:37 EDT +BACKUP SIZE : 54.50 MB +WAL(S) SIZE : 80.00 MB +NO. OF WALS : 5 +FIRST WAL FILE : 0000000100000001000000EC +CREATION TIME : 2016-10-27 10:46:37 EDT +LAST WAL FILE : 0000000100000001000000F0 +CREATION TIME : 2016-10-27 11:22:01 EDT +``` + +The following code sample shows a listing of an incremental backup along with its parent backup: + +```text +-bash-4.2$ bart SHOW-BACKUPS +SERVER NAME BACKUP ID BACKUP NAME BACKUP PARENT +BACKUP TIME BACKUP SIZE WAL(s) SIZE WAL FILES STATUS +acctg 1477580293193 acctg_2016-10-27 none +2016-10-27 10:58:13 EDT 16.45 MB 16.00 MB 1 active +acctg 1477580111358 acctg_2016-10-27 none 2016-10-27 10:55:11 EDT 59.71 +MB 16.00 MB 1 active +``` + +The following code sample shows the complete, detailed information of the incremental backup and the parent backup: + +```text +-bash-4.2$ bart SHOW-BACKUPS -t +SERVER NAME : acctg +BACKUP ID : 1477580293193 +BACKUP NAME : none +BACKUP PARENT : acctg_2016-10-27 +BACKUP STATUS : active +BACKUP TIME : 2016-10-27 10:58:13 EDT +BACKUP SIZE : 16.45 MB +WAL(S) SIZE : 16.00 MB +NO. OF WALS : 1 +FIRST WAL FILE : 0000000100000002000000D9 +CREATION TIME : 2016-10-27 10:58:13 EDT +LAST WAL FILE : 0000000100000002000000D9 +CREATION TIME : 2016-10-27 10:58:13 EDT +SERVER NAME : acctg +BACKUP ID : 1477580111358 +BACKUP NAME : acctg_2016-10-27 +BACKUP PARENT : none +BACKUP STATUS : active +BACKUP TIME : 2016-10-27 10:55:11 EDT +BACKUP SIZE : 59.71 MB +WAL(S) SIZE : 16.00 MB +NO. OF WALS : 1 +FIRST WAL FILE : 0000000100000002000000D8 +CREATION TIME : 2016-10-27 10:55:12 EDT +LAST WAL FILE : 0000000100000002000000D8 +CREATION TIME : 2016-10-27 10:55:12 EDT +``` diff --git a/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/09_verify_chksum.mdx b/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/09_verify_chksum.mdx new file mode 100644 index 00000000000..973ae05dc7d --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/09_verify_chksum.mdx @@ -0,0 +1,41 @@ +--- +title: "VERIFY-CHKSUM" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/verify_chksum.html" +--- + +The `VERIFY-CHKSUM` subcommand verifies the MD5 checksums of the full backups and any user-defined tablespaces for the specified database server or for all database servers. The checksum is verified by comparing the current checksum of the backup against the checksum when the backup was taken. + +!!! Note + The `VERIFY-CHKSUM` subcommand is only used for tar format backups. + +**Syntax:** + +```text +bart VERIFY-CHKSUM +[ –s { | all } ] +[ -i { | | all } ] +``` + +The following table describes the `VERIFY-CHKSUM` options: + +| Options | Description | +| ---------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s { \| all }`
`--server { \| all` } | `` is the name of the database server whose tar backup checksums are to be verified.
If `all` is specified or if the `-s` option is omitted, the checksums of all tar backups are verified for all database servers. | +| `-i { \| \| all` }

`--backupid { \| \| all` } | `` is the backup identifier of a tar format full backup whose checksum is to be verified along with any user-defined tablespaces. `` is the user-defined alphanumeric name for the full backup.
If `all` is specified or if the `-i` option is omitted, the checksums of all tar backups for the relevant database server are verified. | + +**Example** + +The following code sample verifies the checksum of all tar format backups of the specified database server: + +```text +-bash-4.1$ bart VERIFY-CHKSUM -s acctg -i all +SERVER NAME BACKUP ID VERIFY +acctg 1430239348243 OK +acctg 1430232284202 OK +acctg 1430232016284 OK +acctg 1430231949065 OK +acctg 1429821844271 OK +``` diff --git a/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/10_running_the_bart_wal_scanner.mdx b/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/10_running_the_bart_wal_scanner.mdx new file mode 100644 index 00000000000..e28e5954347 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/10_running_the_bart_wal_scanner.mdx @@ -0,0 +1,166 @@ +--- +title: "Running the BART WAL Scanner" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/running_the_bart_wal_scanner.html" +--- + +The BART WAL scanner is used to process each WAL file to find and record modified blocks in a corresponding MBM file. As a BART account user, use the BART WAL scanner to invoke the `bart-scanner` program located in the `/bin` directory. + +For detailed information about the WAL scanner and its usage, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). + +**Syntax:** + +```text +bart-scanner +[ -d ] +[ -c ] +{ –h | +-v | +--daemon | +-p | + | +RELOAD | +STOP +``` + +When the `bart-scanner` program is invoked, it forks a separate process for each database server enabled with the `allow_incremental_backups` parameter. + +The WAL scanner processes can run in either the foreground or background depending upon usage of the `--daemon` option: + +- If the `--daemon` option is specified, the WAL scanner process runs in the background. All output messages can be viewed in the BART log file. +- If the `--daemon` option is omitted, the WAL scanner process runs in the foreground. All output messages can be viewed from the terminal running the program as well as in the BART log file. + +The following table describes the `VERIFY-CHKSUM` options. + +| Options | Description | +| ---------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-h` `--help` | Displays general syntax and information on WAL scanner usage. | +| `-v` `--version` | Displays the WAL scanner version information. | +| `-d` `--debug` | Displays debugging output while executing the WAL scanner with any of its options. | +| `-c ` `--config-path ` | Specifies `` as the full directory path to a BART configuration file. Use this option if you do not want to use the default BART configuration file `/etc/bart.cfg` | +| `--daemon` | Runs the WAL scanner as a background process. | +| `-p ` `--print ` | Specifies the full directory path to an MBM file whose content is to be printed. The `archived_wals` directory as specified in the the `archive_path` parameter in the `bart.cfg` file contains the MBM files. | +| `` | Specifies the full directory path to a WAL file to be scanned. The archive path directory contains the WAL files. Use it if a WAL file in the archive path is missing its MBM file. This option is to be used for assisting the EnterpriseDB support team for debugging problems that may have been encountered. | +| `RELOAD` | Reloads the BART configuration file. The keyword `RELOAD` is case-insensitive. The `RELOAD` option is useful if you make changes to the configuration file after the WAL scanner has been started. It will reload the configuration file and adjust the WAL scanners accordingly. For example, if a server section allowing incremental backups is removed from the BART configuration file, then the process attached to that server will stop. Similarly, if a server allowing incremental backups is added, a new WAL scanner process will be launched to scan the WAL files of that server. | +| `STOP` | Stops the WAL scanner. The keyword `STOP` is not case-sensitive. | + +**Example** + +The following code sample demonstrates starting the WAL scanner to run interactively. The WAL scanner begins scanning existing WAL files in the archive path that have not yet been scanned (that is, there is no corresponding MBM file for the WAL file): + +```text +-bash-4.2$ bart-scanner +INFO: process created for server 'acctg', pid = 5287 +INFO: going to parse backlog of WALs, if any. +INFO: WAL file to be processed: 0000000100000000000000ED +INFO: WAL file to be processed: 0000000100000000000000EE +INFO: WAL file to be processed: 0000000100000000000000EF +INFO: WAL file to be processed: 0000000100000000000000F0 +INFO: WAL file to be processed: 0000000100000000000000F1 +``` + +The following code sample is the content of the archive path showing the MBM files created for the WAL files. (The user name and group name of the files have been removed from the example to list the WAL files and MBM files in a more readable manner): + +```text +[root@localhost archived_wals]# pwd +/opt/backup/acctg/archived_wals +[root@localhost archived_wals]# ls -l +total 81944 +-rw------- 1 ... ... 16777216 Dec 20 09:10 0000000100000000000000ED +-rw------- 1 ... ... 16777216 Dec 20 09:06 0000000100000000000000EE +-rw------- 1 ... ... 16777216 Dec 20 09:11 0000000100000000000000EF +-rw------- 1 ... ... 16777216 Dec 20 09:15 0000000100000000000000F0 +-rw------- 1 ... ... 16777216 Dec 20 09:16 0000000100000000000000F1 +-rw------- 1 ... ... 305 Dec 20 09:16 0000000100000000000000F1.00000028.backup +-rw-rw-r-- 1 ... ... 161 Dec 20 09:18 +0000000100000000ED00002800000000EE000000.mbm +-rw-rw-r-- 1 ... ... 161 Dec 20 09:18 +0000000100000000EE00002800000000EF000000.mbm +-rw-rw-r-- 1 ... ... 161 Dec 20 09:18 +0000000100000000EF00002800000000F0000000.mbm +-rw-rw-r-- 1 ... ... 161 Dec 20 09:18 +0000000100000000F000002800000000F1000000.mbm +-rw-rw-r-- 1 ... ... 161 Dec 20 09:18 +0000000100000000F100002800000000F2000000.mbm +``` + +To stop the interactively running WAL scanner, either enter `ctrl-C` at the terminal running the WAL scanner or invoke the `bart-scanner` program from another terminal with the `STOP` option: + +```text +-bash-4.2$ bart-scanner STOP +-bash-4.2$ +``` + +The terminal on which the WAL scanner was running interactively appears as follows after it has been stopped: + +```text +-bash-4.2$ bart-scanner +INFO: process created for server 'acctg', pid = 5287 +INFO: going to parse backlog of WALs, if any. +INFO: WAL file to be processed: 0000000100000000000000ED +INFO: WAL file to be processed: 0000000100000000000000EE +INFO: WAL file to be processed: 0000000100000000000000EF +INFO: WAL file to be processed: 0000000100000000000000F0 +INFO: WAL file to be processed: 0000000100000000000000F1 +INFO: bart-scanner stopped +-bash-4.2$ +``` + +The following code sample demonstrates invoking the WAL scanner to run as a background process with the `--daemon` option: + +```text +-bash-4.2$ bart-scanner --daemon +-bash-4.2$ +``` + +The WAL scanner runs as a background process. There is also a separate background process for each database server that has been enabled for WAL scanning with the `allow_incremental_backups` parameter in the BART configuration file: + +```text +-bash-4.2$ ps -ef | grep bart + enterpr+ 4340 1 0 09:48 ? 00:00:00 bart-scanner --daemon + enterpr+ 4341 4340 0 09:48 ? 00:00:00 bart-scanner --daemon + enterpr+ 4415 3673 0 09:50 pts/0 00:00:00 grep --color=auto bart +``` + +To stop the WAL scanner processes, invoke the WAL scanner with the `STOP` option: + +```text +-bash-4.2$ bart-scanner STOP +-bash-4.2$ +``` + +The following command demonstrates scanning an individual WAL file: + +```text +-bash-4.2$ bart-scanner /opt/backup/acctg/archived_wals/0000000100000000000000FF +-bash-4.2$ +``` + +To print the content of an MBM file for assisting the EnterpriseDB support team for debugging problems that may have been encountered, use the `-p` option to specify the file as shown in the following code sample: + +```text +-bash-4.2$ bart-scanner -p +/opt/backup/acctg/archived_wals/0000000100000000FF0000280000000100000000.mbm + +Header: +Version: 1.0:90500:1.2.0 +Scan Start: 2016-12-20 10:02:11 EST, Scan End: 2016-12-20 10:02:11 EST, Diff: 0 sec(s) +Start LSN: ff000028, End LSN: 100000000, TLI: 1 +flags: 0, Check Sum: f9cfe66ae2569894d6746b61503a767d + +Path: base/14845/16384 +NodeTag: BLOCK_CHANGE +Relation: relPath base/14845/16384, isTSNode 0, Blocks +*............................................................................. +First modified block: 0 +Total modified blocks: 1 + +Path: base/14845/16391 +NodeTag: BLOCK_CHANGE +Relation: relPath base/14845/16391, isTSNode 0, Blocks +*.............................................................................. +First modified block: 0 +Total modified blocks: 1 +``` diff --git a/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/index.mdx b/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/index.mdx new file mode 100644 index 00000000000..20c71192ef2 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_ref/01_bart_subcommands_examples/index.mdx @@ -0,0 +1,115 @@ +--- +title: "BART Subcommand Syntax and Examples" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/bart_subcommands_examples.html" +--- + + + +This section briefly describes each BART subcommand and provides an example. + +**Invoking BART** + +BART subcommands are invoked at the Linux command line as a BART user. You can invoke the `bart` program (located in the `/bin` directory) with the desired options to manage your BART installation. + +The following examples demonstrate ways of invoking BART. In these examples, the BART user account is named `bartuser`. + +```text +$ su bartuser +Password: +$ export +LD_LIBRARY_PATH=/opt/PostgresPlus/9.6AS/lib/:$LD_LIBRARY_PATH +$ ./bart SHOW-SERVERS +``` + +To run BART from any current working directory: + +```text +$ su bartuser +Password: +$ export +LD_LIBRARY_PATH=/opt/PostgresPlus/9.6AS/lib/:$LD_LIBRARY_PATH +$ bart SHOW-SERVERS +``` + +**Syntax for invoking BART** + +```text +bart [ ]... [ ] []... +``` + +You can use either abbreviated or long option forms on the command line (for example `-h` or `--help`). + +**General Options** + +You can specify the following general options with `bart`. + +`-h` or (`--help`) + +- Displays general syntax and information about BART usage. +- All subcommands support a help option (`-h, --help`). If the help option is specified, information is displayed regarding that particular subcommand. The subcommand, itself, is not executed. + +The following code sample displays the result of invoking the `--help` option for the `BACKUP` subcommand: + +```text +-bash-4.2$ bart BACKUP --help +bart: backup and recovery tool + +Usage: +bart BACKUP [OPTION]... + +Options: +-h, --help Show this help message and exit +-s, --server Name of the server or 'all' (full backups only) to specify all servers +-F, --format=p|t Backup output format (tar (default) or plain) +-z, --gzip Enables gzip compression of tar files +-c, --compress-level Specifies the compression level (1 through 9, 9 being + best compression) +--backup-name Specify a friendly name for the current backup +--parent Specify parent backup for incremental backup +--check Verify checksum of required mbm files +``` + +`-v` (or `--version`) + +The following code sample displays information returned by the `bart --version` subcommand: + +```text +[edb@localhost bin]$ bart --version +bart (EnterpriseDB) 2.5.2 +[edb@localhost bin]$ +``` + +`-d` (or `--debug`) + +The following code sample displays debugging output returned by the `bart MANAGE` subcommand: + +```text +-bash-4.1$ bart -d MANAGE -n +DEBUG: Server: acctg, Now: 2015-04-17 16:34:03 EDT, RetentionWindow: +259200 (secs) ==> 72 hour(s) +DEBUG: Server: dev, Now: 2015-04-17 16:34:03 EDT, RetentionWindow: +1814400 (secs) ==> 504 hour(s) +DEBUG: Server: hr, Now: 2015-04-17 16:34:03 EDT, RetentionWindow: +7776000 (secs) ==> 2160 hour(s) +``` + +`-c` (or `--config-path) ` + +The following code sample demonstrates using the `-c` option to specify a non-default configuration file name and installation location: + +```text +$ su bartuser +Password: +$ export +LD_LIBRARY_PATH=/opt/PostgresPlus/9.6AS/lib/:$LD_LIBRARY_PATH +$ bart -c /home/bartuser/bart.cfg SHOW-SERVERS +``` + +
+ +backup check_config delete init manage restore show_servers show_backups verify_chksum running_the_bart_wal_scanner + +
diff --git a/product_docs/docs/bart/2.5/bart_ref/02_additional_examples.mdx b/product_docs/docs/bart/2.5/bart_ref/02_additional_examples.mdx new file mode 100644 index 00000000000..38a519f727d --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_ref/02_additional_examples.mdx @@ -0,0 +1,1473 @@ +--- +title: "Additional Examples" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/additional_examples.html" +--- + + + +This section lists examples of the following BART operations. + +- Restoring a database cluster with tablespaces. +- Restoring an incremental backup. +- Managing backups. +- Managing incremental backups. + +## Restoring a Database Cluster with Tablespaces + +The following code sample illustrates taking a backup and restoring a database cluster on a remote host containing tablespaces. For detailed information regarding using tablespaces, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). + +On an Advanced Server database running on a remote host, the following tablespaces are created for use by two tables: + +```text +edb=# CREATE TABLESPACE tblspc_1 LOCATION '/mnt/tablespace_1'; +CREATE TABLESPACE +edb=# CREATE TABLESPACE tblspc_2 LOCATION '/mnt/tablespace_2'; +CREATE TABLESPACE +edb=# \db + List of tablespaces +Name | Owner | Location +------------+-----------------+------------------- +pg_default | enterprisedb | +pg_global | enterprisedb | +tblspc_1 | enterprisedb | /mnt/tablespace_1 +tblspc_2 | enterprisedb | /mnt/tablespace_2 +(4 rows) + +edb=# CREATE TABLE tbl_tblspc_1 (c1 TEXT) TABLESPACE tblspc_1; +CREATE TABLE +edb=# CREATE TABLE tbl_tblspc_2 (c1 TEXT) TABLESPACE tblspc_2; +CREATE TABLE +edb=# \d tbl_tblspc_1 +Table "enterprisedb.tbl_tblspc_1" +Column | Type | Modifiers +-------+------+----------- +c1 | text | +Tablespace: "tblspc_1" + +edb=# \d tbl_tblspc_2 +Table "enterprisedb.tbl_tblspc_2" +Column | Type | Modifiers +-------+------+----------- +c1 | text | +Tablespace: "tblspc_2" +``` + +The following code sample shows the OIDs assigned to the tablespaces and the symbolic links to the tablespace directories: + +```text +-bash-4.1$ pwd +/opt/PostgresPlus/9.6AS/data/pg_tblspc +-bash-4.1$ ls -l +total 0 +lrwxrwxrwx 1 enterprisedb enterprisedb 17 Nov 16 16:17 16587 ->/mnt/tablespace_1 +lrwxrwxrwx 1 enterprisedb enterprisedb 17 Nov 16 16:17 16588 ->/mnt/tablespace_2 +``` + +The BART configuration file contains the following settings. Note that the `tablespace_path` parameter does not have to be set at this point. + +```text +[BART] +bart_host= enterprisedb@192.168.2.22 +backup_path = /opt/backup +pg_basebackup_path = /usr/edb/as11/bin/pg_basebackup +logfile = /tmp/bart.log +scanner_logfile = /tmp/bart_scanner.log + +[ACCTG] +host = 192.168.2.24 +port = 5444 +user = repuser +cluster_owner = enterprisedb +remote_host = enterprisedb@192.168.2.24 +tablespace_path = +description = "Accounting" +``` + +After the necessary configuration steps are performed to ensure BART manages the remote database server, a full backup is taken as shown in the following code sample: + +```text +-bash-4.1$ bart BACKUP -s acctg + +INFO: creating backup for server 'acctg' +INFO: backup identifier: '1447709811516' +54521/54521 kB (100%), 3/3 tablespaces + +INFO: backup completed successfully +INFO: backup checksum: 594f69fe7d26af991d4173d3823e174f of 16587.tar +INFO: backup checksum: 7a5507567729a21c98a15c948ff6c015 of base.tar +INFO: backup checksum: ae8c62604c409635c9d9e82b29cc0399 of 16588.tar +INFO: +BACKUP DETAILS: +BACKUP STATUS: active +BACKUP IDENTIFIER: 1447709811516 +BACKUP NAME: none +BACKUP LOCATION: /opt/backup/acctg/1447709811516 +BACKUP SIZE: 53.25 MB +BACKUP FORMAT: tar +XLOG METHOD: fetch +BACKUP CHECKSUM(s): 3 +ChkSum File +594f69fe7d26af991d4173d3823e174f 16587.tar +7a5507567729a21c98a15c948ff6c015 base.tar +ae8c62604c409635c9d9e82b29cc0399 16588.tar + +TABLESPACE(s): 2 +Oid Name Location +16587 tblspc_1 /mnt/tablespace_1 +16588 tblspc_2 /mnt/tablespace_2 +START WAL LOCATION: 00000001000000000000000F +BACKUP METHOD: streamed +BACKUP FROM: master +START TIME: 2015-11-16 16:36:51 EST +STOP TIME: 2015-11-16 16:36:52 EST +TOTAL DURATION: 1 sec(s) +``` + +Note that in the output from the preceding example, checksums are generated for the tablespaces as well as the full backup. + +Within the backup subdirectory `1447709811516` of the BART backup catalog, the tablespace data is stored with file names `16587.tar.gz` and `16588.tar.gz` as shown below: + +```text +-bash-4.1$ pwd +/opt/backup/acctg +-bash-4.1$ ls -l +total 8 +drwx------ 2 enterprisedb enterprisedb 4096 Nov 16 16:36 1447709811516 +drwx------ 2 enterprisedb enterprisedb 4096 Nov 16 16:43 archived_wals +-bash-4.1$ ls -l 1447709811516 +total 54536 +-rw-rw-r-- 1 enterprisedb enterprisedb 19968 Nov 16 16:36 16587.tar +-rw-rw-r-- 1 enterprisedb enterprisedb 19968 Nov 16 16:36 16588.tar +-rw-rw-r-- 1 enterprisedb enterprisedb 949 Nov 16 17:05 backupinfo +-rw-rw-r-- 1 enterprisedb enterprisedb 55792640 Nov 16 16:36 base.tar +``` + +When you are ready to restore the backup, in addition to creating the directory to which the main database cluster is to be restored, you must prepare the directories to which the tablespaces are to be restored. + +On the remote host, directories `/opt/restore_tblspc_1` and `/opt/restore_tblspc_2` are created and assigned the proper ownership and permissions as shown by the following example. The main database cluster is to be restored to `/opt/restore`. + +```text +[root@localhost opt]# mkdir restore_tblspc_1 +[root@localhost opt]# chown enterprisedb restore_tblspc_1 +[root@localhost opt]# chgrp enterprisedb restore_tblspc_1 +[root@localhost opt]# chmod 700 restore_tblspc_1 + +[root@localhost opt]# mkdir restore_tblspc_2 +[root@localhost opt]# chown enterprisedb restore_tblspc_2 +[root@localhost opt]# chgrp enterprisedb restore_tblspc_2 +[root@localhost opt]# chmod 700 restore_tblspc_2 +[root@localhost opt]# ls -l +total 20 +drwxr-xr-x 3 root daemon 4096 Nov 10 15:38 PostgresPlus +drwx------ 2 enterprisedb enterprisedb 4096 Nov 16 17:40 restore +drwx------ 2 enterprisedb enterprisedb 4096 Nov 16 17:40 +restore_tblspc_1 +drwx------ 2 enterprisedb enterprisedb 4096 Nov 16 17:41 +restore_tblspc_2 +drwxr-xr-x. 2 root root 4096 Nov 22 2013 rh +``` + +Set the `tablespace_path` parameter in the BART configuration file to specify the tablespace directories. The remote host user and IP address are specified by the `remote_host` configuration parameter. + +```text +[ACCTG] + +host = 192.168.2.24 +port = 5444 +user = repuser +cluster_owner = enterprisedb +remote_host = enterprisedb@192.168.2.24 +tablespace_path = +16587=/opt/restore_tblspc_1;16588=/opt/restore_tblspc_2 + +description = "Accounting" +``` + +The following code sample demonstrates invoking the `RESTORE` subcommand: + +```text +-bash-4.1$ bart RESTORE -s acctg -i 1447709811516 -p /opt/restore +INFO: restoring backup '1447709811516' of server 'acctg' +INFO: restoring backup to enterprisedb@192.168.2.24:/opt/restore +INFO: base backup restored +INFO: archiving is disabled +INFO: tablespace(s) restored +``` + +The following code sample shows the restored full backup (including the restored tablespaces): + +```text +bash-4.1$ pwd +/opt +-bash-4.1$ ls -l restore +total 104 +-rw------- 1 enterprisedb enterprisedb 206 Nov 16 16:36 backup_label.old +drwx------ 6 enterprisedb enterprisedb 4096 Nov 10 15:38 base +drwx------ 2 enterprisedb enterprisedb 4096 Nov 16 17:46 global +drwx------ 2 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_clog +-rw------- 1 enterprisedb enterprisedb 4438 Nov 10 16:23 pg_hba.conf +-rw------- 1 enterprisedb enterprisedb 1636 Nov 10 15:38 pg_ident.conf +drwxr-xr-x 2 enterprisedb enterprisedb 4096 Nov 16 17:45 pg_log +drwx------ 4 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_multixact +drwx------ 2 enterprisedb enterprisedb 4096 Nov 16 17:45 pg_notify +drwx------ 2 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_serial +drwx------ 2 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_snapshots +drwx------ 2 enterprisedb enterprisedb 4096 Nov 16 17:47 pg_stat +drwx------ 2 enterprisedb enterprisedb 4096 Nov 16 17:47 pg_stat_tmp +drwx------ 2 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_subtrans +drwx------ 2 enterprisedb enterprisedb 4096 Nov 16 17:42 pg_tblspc +drwx------ 2 enterprisedb enterprisedb 4096 Nov 10 15:38 pg_twophase +-rw------- 1 enterprisedb enterprisedb 4 Nov 10 15:38 PG_VERSION +drwx------ 3 enterprisedb enterprisedb 4096 Nov 16 17:47 pg_xlog +-rw------- 1 enterprisedb enterprisedb 23906 Nov 16 17:42 postgresql.conf +-rw------- 1 enterprisedb enterprisedb 61 Nov 16 17:45 postmaster.opts +-bash-4.1$ +-bash-4.1$ ls -l restore_tblspc_1 +total 4 +drwx------ 3 enterprisedb enterprisedb 4096 Nov 16 16:18 +PG_9.6_201306121 +-bash-4.1$ ls -l restore_tblspc_2 +total 4 +drwx------ 3 enterprisedb enterprisedb 4096 Nov 16 16:18 +PG_9.6_201306121 +``` + +The symbolic links in the `pg_tblspc` subdirectory point to the restored directory location: + +```text +bash-4.1$ pwd +/opt/restore/pg_tblspc +-bash-4.1$ ls -l +total 0 +lrwxrwxrwx 1 enterprisedb enterprisedb 21 Nov 16 17:42 16587 -> +/opt/restore_tblspc_1 +lrwxrwxrwx 1 enterprisedb enterprisedb 21 Nov 16 17:42 16588 -> +/opt/restore_tblspc_2 +``` + +`psql` queries also show the restored tablespaces: + +```text +edb=# \db + + List of tablespaces +Name | Owner | Location +------------+--------------+----------------------- +pg_default | enterprisedb | +pg_global | enterprisedb | +tblspc_1 | enterprisedb | /opt/restore_tblspc_1 +tblspc_2 | enterprisedb | /opt/restore_tblspc_2 +``` + +## Restoring an Incremental Backup + +Restoring an incremental backup may require additional setup steps depending upon the host on which the incremental backup is to be restored. For more information, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). + +This section provides an example of creating backup chains and then restoring an incremental backup. + +**Creating a Backup Chain** + +A *backup chain* is the set of backups consisting of a full backup and all of its successive incremental backups. Tracing back on the parent backups of all incremental backups in the chain eventually leads back to that single, full backup. + +In the following example, the `allow_incremental_backups` parameter is set to `enabled` in the BART configuration file to permit incremental backups on the listed database server: + +```text +[BART] + +bart_host= enterprisedb@192.168.2.27 +backup_path = /opt/backup +pg_basebackup_path = /usr/edb/as11/bin/pg_basebackup +logfile = /tmp/bart.log +scanner_logfile = /tmp/bart_scanner.log + +[ACCTG] + +host = 127.0.0.1 +port = 5445 +user = enterprisedb +cluster_owner = enterprisedb +allow_incremental_backups = enabled +description = "Accounting" +``` + +After the database server has been started with WAL archiving enabled to the BART backup catalog, the WAL scanner is started: + +```text +-bash-4.2$ bart-scanner --daemon +``` + +First, a full backup is taken. + +```text +-bash-4.2$ bart BACKUP -s acctg --backup-name full_1 +INFO: creating backup for server 'acctg' +INFO: backup identifier: '1490649204327'\ +63364/63364 kB (100%), 1/1 tablespace +INFO: backup completed successfully +INFO: backup checksum: aae27d4a7c09dffc82f423221154db7e of base.tar +INFO: +BACKUP DETAILS: +BACKUP STATUS: active +BACKUP IDENTIFIER: 1490649204327 +BACKUP NAME: full_1 +BACKUP PARENT: none +BACKUP LOCATION: /opt/backup/acctg/1490649204327 +BACKUP SIZE: 61.88 MB +BACKUP FORMAT: tar +BACKUP TIMEZONE: US/Eastern +XLOG METHOD: fetch +BACKUP CHECKSUM(s): 1 +ChkSum File +aae27d4a7c09dffc82f423221154db7e base.tar +TABLESPACE(s): 0 +START WAL LOCATION: 00000001000000000000000E +BACKUP METHOD: streamed +BACKUP FROM: master +START TIME: 2017-03-27 17:13:24 EDT +STOP TIME: 2017-03-27 17:13:25 EDT +TOTAL DURATION: 1 sec(s) +``` + +A series of incremental backups are taken. The first incremental backup specifies the full backup as the parent. Each successive incremental backup then uses the preceding incremental backup as its parent. + +```text +-bash-4.2$ bart BACKUP -s acctg -F p --parent full_1 --backup-name +incr_1-a +INFO: creating incremental backup for server 'acctg' +INFO: checking mbm files /opt/backup/acctg/archived_wals +INFO: new backup identifier generated 1490649255649 +INFO: reading directory /opt/backup/acctg/archived_wals +INFO: all files processed +NOTICE: pg_stop_backup complete, all required WAL segments have been +archived +INFO: incremental backup completed successfully +INFO: +BACKUP DETAILS: +BACKUP STATUS: active +BACKUP IDENTIFIER: 1490649255649 +BACKUP NAME: incr_1-a +BACKUP PARENT: 1490649204327 +BACKUP LOCATION: /opt/backup/acctg/1490649255649 +BACKUP SIZE: 16.56 MB +BACKUP FORMAT: plain +BACKUP TIMEZONE: US/Eastern +XLOG METHOD: fetch +BACKUP CHECKSUM(s): 0 +TABLESPACE(s): 0 +START WAL LOCATION: 000000010000000000000010 +STOP WAL LOCATION: 000000010000000000000010 +BACKUP METHOD: pg_start_backup +BACKUP FROM: master +START TIME: 2017-03-27 17:14:15 EDT +STOP TIME: 2017-03-27 17:14:16 EDT +TOTAL DURATION: 1 sec(s) +-bash-4.2$ bart BACKUP -s acctg -F p --parent incr_1-a --backup-name +incr_1-b +INFO: creating incremental backup for server 'acctg' +INFO: checking mbm files /opt/backup/acctg/archived_wals +INFO: new backup identifier generated 1490649336845 +INFO: reading directory /opt/backup/acctg/archived_wals +INFO: all files processed +NOTICE: pg_stop_backup complete, all required WAL segments have been +archived +INFO: incremental backup completed successfully +. +. +. +-bash-4.2$ bart BACKUP -s acctg -F p --parent incr_1-b --backup-name +incr_1-c +INFO: creating incremental backup for server 'acctg' +INFO: checking mbm files /opt/backup/acctg/archived_wals +INFO: new backup identifier generated 1490649414316 +INFO: reading directory /opt/backup/acctg/archived_wals +INFO: all files processed +NOTICE: pg_stop_backup complete, all required WAL segments have been +archived +INFO: incremental backup completed successfully +. +. +. +``` + +The following output of the `SHOW-BACKUPS` subcommand lists the backup chain, which are backups `full_1, incr_1-a, incr_1-b, and incr_1-c`. + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID BACKUP NAME BACKUP PARENT BACKUP TIME ... +acctg 1490649414316 incr_1-c incr_1-b 2017-03-27 17:16:55 ... +acctg 1490649336845 incr_1-b incr_1-a 2017-03-27 17:15:37 ... +acctg 1490649255649 incr_1-a full_1 2017-03-27 17:14:16 ... +acctg 1490649204327 full_1 none 2017-03-27 17:13:25 ... +``` + +For the `full backup full_1`, the `BACKUP PARENT` field contains `none`. For each incremental backup, the `BACKUP PARENT` field contains the backup identifier or name of its parent backup. + +A second backup chain is created in the same manner with the `BACKUP` subcommand. The following example shows the addition of the resulting, second backup chain consisting of full backup `full_2` and incremental backups `incr_2-a` and `incr_2-b`. + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID BACKUP NAME BACKUP PARENT BACKUP TIME ... +acctg 1490649605607 incr_2-b incr_2-a 2017-03-27 17:20:06 ... +acctg 1490649587702 incr_2-a full_2 2017-03-27 17:19:48 ... +acctg 1490649528633 full_2 none 2017-03-27 17:18:49 ... +acctg 1490649414316 incr_1-c incr_1-b 2017-03-27 17:16:55 ... +acctg 1490649336845 incr_1-b incr_1-a 2017-03-27 17:15:37 ... +acctg 1490649255649 incr_1-a full_1 2017-03-27 17:14:16 ... +acctg 1490649204327 full_1 none 2017-03-27 17:13:25 ... +``` + +The following additional incremental backups starting with `incr_1-b-1`, which designates `incr_1-b` as the parent, results in the forking from that backup into a second line of backups in the chain consisting of `full_1, incr_1-a, incr_1-b, incr_1-b-1, incr_1-b-2`, and `incr_1-b-3` as shown in the following list: + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID BACKUP NAME BACKUP PARENT BACKUP TIME ... +acctg 1490649791430 incr_1-b-3 incr_1-b-2 2017-03-27 17:23:12 ... +acctg 1490649763929 incr_1-b-2 incr_1-b-1 2017-03-27 17:22:44 ... +acctg 1490649731672 incr_1-b-1 incr_1-b 2017-03-27 17:22:12 ... +acctg 1490649605607 incr_2-b incr_2-a 2017-03-27 17:20:06 ... +acctg 1490649587702 incr_2-a full_2 2017-03-27 17:19:48 ... +acctg 1490649528633 full_2 none 2017-03-27 17:18:49 ... +acctg 1490649414316 incr_1-c incr_1-b 2017-03-27 17:16:55 ... +acctg 1490649336845 incr_1-b incr_1-a 2017-03-27 17:15:37 ... +acctg 1490649255649 incr_1-a full_1 2017-03-27 17:14:16 ... +acctg 1490649204327 full_1 none 2017-03-27 17:13:25 ... +``` + +**Restoring an Incremental Backup** + +Restoring an incremental backup is done with the `RESTORE` subcommand in the same manner as for restoring a full backup. Specify the backup identifier or backup name of the incremental backup to be restored as shown in the following example. + +```text +-bash-4.2$ bart RESTORE -s acctg -p /opt/restore -i incr_1-b +INFO: restoring incremental backup 'incr_1-b' of server 'acctg' +INFO: base backup restored +INFO: archiving is disabled +INFO: permissions set on $PGDATA +INFO: incremental restore completed successfully +``` + +Restoring incremental backup `incr_1-b` as shown by the preceding example results in the restoration of full backup `full_1`, then incremental backups `incr_1-a` and finally, `incr_1-b`. + +## Managing Backups + +This section illustrates evaluating, marking, and deleting backups using the `MANAGE` subcommand using a redundancy retention policy and a recovery window retention policy. For detailed information about the `MANAGE` subcommand, see the *EDB Backup and Recovery User Guide* available at the [EDB website](/bart/latest/bart_user/). + + + +### Using a Redundancy Retention Policy + +The following code sample uses a redundancy retention policy to evaluate, mark, and delete backups as shown by the following server configuration: + +```text +[ACCTG] +host = 127.0.0.1 +port = 5444 +user = enterprisedb +archive_command = 'cp %p %a/%f' +retention_policy = 3 BACKUPS +description = "Accounting" +``` + +The following list is the set of backups. Note that the last backup in the list has been marked as `keep`. + +```text +-bash-4.1$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID BACKUP TIME BACKUP SIZE WAL(s) SIZE +WAL FILES STATUS +acctg 1428768344061 2015-04-11 12:05:46 EDT 5.72 MB 48.00 MB +3 active +acctg 1428684537299 2015-04-10 12:49:00 EDT 5.72 MB 272.00 MB +17 active +acctg 1428589759899 2015-04-09 10:29:27 EDT 5.65 MB 96.00 MB +6 active +acctg 1428502049836 2015-04-08 10:07:30 EDT 55.25 MB 96.00 MB +6 active +acctg 1428422324880 2015-04-07 11:58:45 EDT 54.53 MB 32.00 MB +2 active +acctg 1428355371389 2015-04-06 17:22:53 EDT 5.71 MB 16.00 MB +1 keep +``` + +Invoke the `MANAGE` subcommand with the `-n` option to perform a dry run to observe which active backups would be changed to obsolete according to the retention policy as shown in the following code sample: + +```text +-bash-4.1$ bart MANAGE -s acctg -n +INFO: processing server 'acctg', backup '1428768344061' +INFO: processing server 'acctg', backup '1428684537299' +INFO: processing server 'acctg', backup '1428589759899' +INFO: processing server 'acctg', backup '1428502049836' +INFO: marking backup '1428502049836' as obsolete +INFO: 6 WAL file(s) marked obsolete +INFO: processing server 'acctg', backup '1428422324880' +INFO: marking backup '1428422324880' as obsolete +INFO: 2 WAL file(s) marked obsolete +INFO: processing server 'acctg', backup '1428355371389' +``` + +The dry run shows that backups `1428502049836` and `1428422324880` would be marked as `obsolete`. + +!!! Note + A dry run does not change the backup status. The two backups that would be considered obsolete are still marked as `active`: + +```text +-bash-4.1$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID BACKUP TIME BACKUP SIZE WAL(s) SIZE +WAL FILES STATUS +acctg 1428768344061 2015-04-11 12:05:46 EDT 5.72 MB 48.00 MB +3 active +acctg 1428684537299 2015-04-10 12:49:00 EDT 5.72 MB 272.00 MB +17 active +acctg 1428589759899 2015-04-09 10:29:27 EDT 5.65 MB 96.00 MB +6 active +acctg 1428502049836 2015-04-08 10:07:30 EDT 55.25 MB 96.00 MB +6 active +acctg 1428422324880 2015-04-07 11:58:45 EDT 54.53 MB 32.00 MB +2 active +acctg 1428355371389 2015-04-06 17:22:53 EDT 5.71 MB 16.00 MB +1 keep +``` + +Invoke the `MANAGE` subcommand omitting the `-n` option to change and mark the status of the backups as `obsolete`: + +```text +-bash-4.1$ bart MANAGE -s acctg +INFO: processing server 'acctg', backup '1428768344061' +INFO: processing server 'acctg', backup '1428684537299' +INFO: processing server 'acctg', backup '1428589759899' +INFO: processing server 'acctg', backup '1428502049836' +INFO: marking backup '1428502049836' as obsolete +INFO: 6 WAL file(s) marked obsolete +INFO: processing server 'acctg', backup '1428422324880' +INFO: marking backup '1428422324880' as obsolete +INFO: 2 WAL file(s) marked obsolete +INFO: processing server 'acctg', backup '1428355371389' +``` + +The obsolete backups can be observed in a number of ways. Use the `MANAGE` subcommand with the `-l` option to list the `obsolete` backups: + +```text +-bash-4.1$ bart MANAGE -s acctg -l +INFO: 6 WAL file(s) will be removed +SERVER NAME: acctg +BACKUP ID: 1428502049836 +BACKUP STATUS: obsolete +BACKUP TIME: 2015-04-08 10:07:30 EDT +BACKUP SIZE: 55.25 MB +WAL FILE(s): 6 +WAL FILE: 000000010000000100000003 +WAL FILE: 000000010000000100000002 +WAL FILE: 000000010000000100000001 +WAL FILE: 000000010000000100000000 +WAL FILE: 0000000100000000000000E3 +WAL FILE: 0000000100000000000000E2 +INFO: 2 WAL file(s) will be removed +SERVER NAME: acctg +BACKUP ID: 1428422324880 +BACKUP STATUS: obsolete +BACKUP TIME: 2015-04-07 11:58:45 EDT +BACKUP SIZE: 54.53 MB +WAL FILE(s): 2 +WAL FILE: 0000000100000000000000E1 +WAL FILE: 0000000100000000000000E0 +``` + +The `STATUS` field of the `SHOW-BACKUPS` subcommand displays the current status: + +```text +-bash-4.1$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID BACKUP TIME BACKUP SIZE WAL(s) SIZE +WAL FILES STATUS +acctg 1428768344061 2015-04-11 12:05:46 EDT 5.72 MB 48.00 MB +3 active +acctg 1428684537299 2015-04-10 12:49:00 EDT 5.72 MB 272.00 MB +17 active +acctg 1428589759899 2015-04-09 10:29:27 EDT 5.65 MB 96.00 MB +6 active +acctg 1428502049836 2015-04-08 10:07:30 EDT 55.25 MB 96.00 MB +6 obsolete +acctg 1428422324880 2015-04-07 11:58:45 EDT 54.53 MB 32.00 MB +2 obsolete +acctg 1428355371389 2015-04-06 17:22:53 EDT 5.71 MB 16.00 MB +1 keep +``` + +The details of an individual backup can be displayed using the `SHOW-BACKUPS` subcommand with the `-t` option. Note the status in the `BACKUP STATUS` field. + +```text +-bash-4.1$ bart SHOW-BACKUPS -s acctg -i 1428502049836 -t +SERVER NAME : acctg +BACKUP ID : 1428502049836 +BACKUP NAME : none +BACKUP STATUS : obsolete +BACKUP TIME : 2015-04-08 10:07:30 EDT +BACKUP SIZE : 55.25 MB +WAL(S) SIZE : 96.00 MB +NO. OF WALS : 6 +FIRST WAL FILE : 0000000100000000000000E2 +CREATION TIME : 2015-04-08 10:07:30 EDT +LAST WAL FILE : 000000010000000100000003 +CREATION TIME : 2015-04-09 10:25:46 EDT +``` + +Use the `MANAGE` subcommand with the `-d` option to physically delete the `obsolete` backups including the unneeded WAL files. + +```text +-bash-4.1$ bart MANAGE -s acctg -d +INFO: removing all obsolete backups of server 'acctg' +INFO: removing obsolete backup '1428502049836' +INFO: 6 WAL file(s) will be removed +INFO: removing WAL file '000000010000000100000003' +INFO: removing WAL file '000000010000000100000002' +INFO: removing WAL file '000000010000000100000001' +INFO: removing WAL file '000000010000000100000000' +INFO: removing WAL file '0000000100000000000000E3' +INFO: removing WAL file '0000000100000000000000E2' +INFO: removing obsolete backup '1428422324880' +INFO: 2 WAL file(s) will be removed +INFO: removing WAL file '0000000100000000000000E1' +INFO: removing WAL file '0000000100000000000000E0' +``` + +The `SHOW-BACKUPS` subcommand now displays the remaining backups marked as `active` or `keep`: + +```text +-bash-4.1$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID BACKUP TIME BACKUP SIZE WAL(s) SIZE +WAL FILES STATUS +acctg 1428768344061 2015-04-11 12:05:46 EDT 5.72 MB 48.00 MB +3 active +acctg 1428684537299 2015-04-10 12:49:00 EDT 5.72 MB 272.00 MB +17 active +acctg 1428589759899 2015-04-09 10:29:27 EDT 5.65 MB 96.00 MB +6 active +acctg 1428355371389 2015-04-06 17:22:53 EDT 5.71 MB 16.00 MB +1 keep +``` + + + +### Using a Recovery Window Retention Policy + +This section illustrates the evaluation, marking, and deletion of backup using a recovery window retention policy. To use the recovery window retention policy, set the `retention_policy` parameter to the desired length of time for the recovery window. + +This section provides examples of the following: + +- How to view the calculated recovery window. +- How to evaluate, mark, and delete backup using a recovery window retention policy. + +#### Viewing the Recovery Window + +You can view the actual, calculated recovery window by invoking any of the following subcommands: + +- `MANAGE` subcommand in debug mode (along with the `-n` option). +- `SHOW-SERVERS` subcommand. + +##### Viewing the Recovery Window Using the Manage Subcommand + +When invoking BART in debug mode with the `MANAGE` subcommand and the `-n` option, the length of the recovery window is calculated based on the `retention_policy` setting and the current date/time. + +For example, using the following `retention_policy` settings: + +```text +[ACCTG] + +host = 127.0.0.1 +port = 5444 +user = enterprisedb +archive_command = 'cp %p %a/%f' +retention_policy = 3 DAYS +backup-name = acctg_%year-%month-%dayT%hour:%minute:%second +description = "Accounting" + +[DEV] + +host = 127.0.0.1 +port = 5445 +user = enterprisedb +archive_command = 'cp %p %a/%f' +retention_policy = 3 WEEKS +description = "Development" + +[HR] + +host = 127.0.0.1 +port = 5432 +user = postgres +retention_policy = 3 MONTHS +description = "Human Resources" +``` + +If the `MANAGE` subcommand is invoked in debug mode along with the `-n` option on 2015-04-17, the following results are displayed: + +```text +-bash-4.1$ bart -d MANAGE -n +DEBUG: Server: acctg, Now: 2015-04-17 16:34:03 EDT, RetentionWindow: +259200 (secs) ==> 72 hour(s) +DEBUG: Server: dev, Now: 2015-04-17 16:34:03 EDT, RetentionWindow: +1814400 (secs) ==> 504 hour(s) +DEBUG: Server: hr, Now: 2015-04-17 16:34:03 EDT, RetentionWindow: +7776000 (secs) ==> 2160 hour(s) +``` + +For server `acctg`, 72 hours translates to a recovery window of 3 days. + +For server `dev`, 504 hours translates to a recovery window of 21 days (3 weeks). + +For server `hr`, 2160 hours translates to a recovery window of 90 days (3 months). + +For a setting of ` MONTHS`, the calculated total number of days for the recovery window is dependent upon the actual number of days in the preceding months from the current date/time. Thus, ` MONTHS` is not always exactly equivalent to ` x 30 DAYS`. For example, if the current date/time is in the month of March, a 1-month recovery window would be equivalent to only 28 days because the preceding month is February. Thus, for a current date of March 31, a 1-month recovery window would start on March 3. However, the typical result is that the day of the month of the starting recovery window boundary will be the same day of the month of when the `MANAGE` subcommand is invoked. + +##### Viewing the Recovery Window Using the Show-Servers Subcommand + +This section provides an example of viewing the recovery window using the `SHOW-SERVERS` subcommand; the `RETENTION POLICY` field displays the start of the recovery window. + +In the following code sample, the recovery window retention policy setting considers the backups taken within a 3-day recovery window as the active backups. + +```text +[ACCTG] +host = 127.0.0.1 +port = 5444 +user = enterprisedb +archive_command = 'cp %p %a/%f' +retention_policy = 3 DAYS +description = "Accounting" +``` + +The start of the 3-day recovery window displayed in the `RETENTION POLICY` field is `2015-04-07 14:57:36 EDT` when the `SHOW-SERVERS` subcommand is invoked on `2015-04-10`. + +At this current point in time, backups taken on or after `2015-04-07 14:57:36 EDT` would be considered active. Backups taken prior to `2015-04-07 14:57:36 EDT` would be considered obsolete except for backups marked as `keep`. + +```text +-bash-4.1$ date +Fri Apr 10 14:57:33 EDT 2015 +-bash-4.1$ +-bash-4.1$ bart SHOW-SERVERS -s acctg +SERVER NAME : acctg +HOST NAME : 127.0.0.1 +USER NAME : enterprisedb +PORT : 5444 +REMOTE HOST : +RETENTION POLICY : 2015-04-07 14:57:36 EDT +DISK UTILIZATION : 824.77 MB +NUMBER OF ARCHIVES : 37 +ARCHIVE PATH : /opt/backup/acctg/archived_wals +ARCHIVE COMMAND : cp %p /opt/backup/acctg/archived_wals/%f +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +DESCRIPTION : "Accounting" +``` + +In the following code sample, the recovery window retention policy setting considers the backups taken within a 3-week recovery window as the `active` backups. + +```text +[DEV] +host = 127.0.0.1 +port = 5445 +user = enterprisedb +archive_command = 'cp %p %a/%f' +retention_policy = 3 WEEKS +description = "Development" +``` + +The start of the 3-week recovery window displayed in the `RETENTION POLICY` field is `2015-03-20 14:59:42 EDT` when the `SHOW-SERVERS` subcommand is invoked on `2015-04-10`. + +At this current point in time, backups taken on or after `2015-03-20 14:59:42 EDT` would be considered `active`. Backups taken prior to `2015-03-20 14:59:42 EDT` would be considered `obsolete` except for backups marked as `keep`. + +```text +-bash-4.1$ date +Fri Apr 10 14:59:39 EDT 2015 +-bash-4.1$ +-bash-4.1$ bart SHOW-SERVERS -s dev +SERVER NAME : dev +HOST NAME : 127.0.0.1 +USER NAME : enterprisedb +PORT : 5445 +REMOTE HOST : +RETENTION POLICY : 2015-03-20 14:59:42 EDT +DISK UTILIZATION : 434.53 MB +NUMBER OF ARCHIVES : 22 +ARCHIVE PATH : /opt/backup/dev/archived_wals +ARCHIVE COMMAND : cp %p /opt/backup/dev/archived_wals/%f +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +DESCRIPTION : "Development" +``` + +In the following code sample, the recovery window retention policy setting considers the backups taken within a 3-month recovery window as the `active` backups. + +```text +[HR] +host = 127.0.0.1 +port = 5432 +user = postgres +retention_policy = 3 MONTHS +description = "Human Resources" +``` + +The start of the 3-month recovery window displayed in the `RETENTION POLICY` field is `2015-01-10 14:04:23 EST` when the `SHOW-SERVERS` subcommand is invoked on `2015-04-10`. + +At this current point in time, backups taken on or after `2015-01-10 14:04:23 EST` would be considered `active`. Backups taken prior to `2015-01-10 14:04:23 EST` would be considered `obsolete`, except for backups marked as `keep`. + +```text +-bash-4.1$ date +Fri Apr 10 15:04:19 EDT 2015 +-bash-4.1$ +-bash-4.1$ bart SHOW-SERVERS -s hr +SERVER NAME : hr +HOST NAME : 127.0.0.1 +USER NAME : postgres +PORT : 5432 +REMOTE HOST : +RETENTION POLICY : 2015-01-10 14:04:23 EST +DISK UTILIZATION : 480.76 MB +NUMBER OF ARCHIVES : 26 +ARCHIVE PATH : /opt/backup/hr/archived_wals +ARCHIVE COMMAND : scp %p +enterprisedb@192.168.2.22:/opt/backup/hr/archived_wals/%f +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +DESCRIPTION : "Human Resources" +``` + +#### Evaluating, Marking, and Deleting Backup Using a Recovery Window Retention Policy + +The following code sample uses a recovery window retention policy to evaluate, mark, and delete backups as shown by the following server configuration: + +```text +[DEV] +host = 127.0.0.1 +port = 5445 +user = enterprisedb +archive_command = 'cp %p %a/%f' +retention_policy = 3 DAYS +description = "Development" +``` + +The following is the current set of backups. Note that the last backup in the list has been marked as `keep`. + +```text +-bash-4.1$ bart SHOW-BACKUPS -s dev +SERVER NAME BACKUP ID BACKUP TIME BACKUP SIZE WAL(s) SIZE +WAL FILES STATUS +dev 1428933278236 2015-04-13 09:54:40 EDT 5.65 MB 16.00 MB +1 active +dev 1428862187757 2015-04-12 14:09:50 EDT 5.65 MB 32.00 MB +2 active +dev 1428768351638 2015-04-11 12:05:54 EDT 5.65 MB 32.00 MB +2 active +dev 1428684544008 2015-04-10 12:49:06 EDT 5.65 MB 224.00 MB +14 active +dev 1428590536488 2015-04-09 10:42:18 EDT 5.65 MB 48.00 MB +3 active +dev 1428502171990 2015-04-08 10:09:34 EDT 5.65 MB 80.00 MB +5 keep +``` + +The current date and time is `2015-04-13 16:46:35 EDT` as shown below: + +```text +-bash-4.1$ date +Mon Apr 13 16:46:35 EDT 2015 +``` + +Thus, a 3-day recovery window would evaluate backups prior to `2015-04-10 16:46:35 EDT` as `obsolete` except for those marked as `keep`. + +Invoke the `MANAGE` subcommand with the `-n` option to perform a dry run to observe which active backups would be changed to `obsolete` according to the retention policy. + +```text +-bash-4.1$ bart MANAGE -s dev -n +INFO: processing server 'dev', backup '1428933278236' +INFO: processing server 'dev', backup '1428862187757' +INFO: processing server 'dev', backup '1428768351638' +INFO: processing server 'dev', backup '1428684544008' +INFO: marking backup '1428684544008' as obsolete +INFO: 14 WAL file(s) marked obsolete +INFO: 1 Unused WAL file(s) present +INFO: processing server 'dev', backup '1428590536488' +INFO: marking backup '1428590536488' as obsolete +INFO: 3 WAL file(s) marked obsolete +INFO: 1 Unused WAL file(s) present +INFO: processing server 'dev', backup '1428502171990' +``` + +The dry run shows that backups `1428684544008` and `1428590536488` would be marked as `obsolete`. + +Also note that a dry run does not change the backup status. The two backups that would be considered obsolete are still marked as `active`: + +```text +-bash-4.1$ bart SHOW-BACKUPS -s dev\ + SERVER NAME BACKUP ID BACKUP TIME BACKUP SIZE WAL(s) SIZE + WAL FILES STATUS + dev 1428933278236 2015-04-13 09:54:40 EDT 5.65 MB 16.00 MB + 1 active + dev 1428862187757 2015-04-12 14:09:50 EDT 5.65 MB 32.00 MB + 2 active + dev 1428768351638 2015-04-11 12:05:54 EDT 5.65 MB 32.00 MB + 2 active + dev 1428684544008 2015-04-10 12:49:06 EDT 5.65 MB 224.00 MB + 14 active + dev 1428590536488 2015-04-09 10:42:18 EDT 5.65 MB 48.00 MB + 3 active + dev 1428502171990 2015-04-08 10:09:34 EDT 5.65 MB 80.00 MB + 5 keep +``` + +Invoke the `MANAGE` subcommand omitting the `-n` option to change and mark the status of the backups as `obsolete`: + +```text +-bash-4.1$ bart MANAGE -s dev +INFO: processing server 'dev', backup '1428933278236' +INFO: processing server 'dev', backup '1428862187757' +INFO: processing server 'dev', backup '1428768351638' +INFO: processing server 'dev', backup '1428684544008' +INFO: marking backup '1428684544008' as obsolete +INFO: 14 WAL file(s) marked obsolete +INFO: 1 Unused WAL file(s) present +INFO: processing server 'dev', backup '1428590536488' +INFO: marking backup '1428590536488' as obsolete +INFO: 3 WAL file(s) marked obsolete +INFO: 1 Unused WAL file(s) present +INFO: processing server 'dev', backup '1428502171990' +``` + +The obsolete backups can be observed in a number of ways. Use the `MANAGE` subcommand with the `-l` option to list the `obsolete` backups: + +```text +-bash-4.1$ bart MANAGE -s dev -l +INFO: 14 WAL file(s) will be removed +INFO: 1 Unused WAL file(s) will be removed +SERVER NAME: dev +BACKUP ID: 1428684544008 +BACKUP STATUS: obsolete +BACKUP TIME: 2015-04-10 12:49:06 EDT +BACKUP SIZE: 5.65 MB +WAL FILE(s): 14 +UNUSED WAL FILE(s): 1 +WAL FILE: 00000001000000000000002E +WAL FILE: 00000001000000000000002D +WAL FILE: 00000001000000000000002C +WAL FILE: 00000001000000000000002B +WAL FILE: 00000001000000000000002A +WAL FILE: 000000010000000000000029 +WAL FILE: 000000010000000000000028 +WAL FILE: 000000010000000000000027 +WAL FILE: 000000010000000000000026 +WAL FILE: 000000010000000000000025 +WAL FILE: 000000010000000000000024 +WAL FILE: 000000010000000000000023 +WAL FILE: 000000010000000000000022 +WAL FILE: 000000010000000000000021 +UNUSED WAL FILE: 00000001000000000000000F.00000028 +INFO: 3 WAL file(s) will be removed +INFO: 1 Unused WAL file(s) will be removed +SERVER NAME: dev +BACKUP ID: 1428590536488 +BACKUP STATUS: obsolete +BACKUP TIME: 2015-04-09 10:42:18 EDT\ +BACKUP SIZE: 5.65 MB +WAL FILE(s): 3 +UNUSED WAL FILE(s): 1 +WAL FILE: 000000010000000000000020 +WAL FILE: 00000001000000000000001F +WAL FILE: 00000001000000000000001E +UNUSED WAL FILE: 00000001000000000000000F.00000028 +``` + +The `STATUS` field of the `SHOW-BACKUPS` subcommand displays the current status: + +```text +-bash-4.1$ bart SHOW-BACKUPS -s dev +SERVER NAME BACKUP ID BACKUP TIME BACKUP SIZE WAL(s) SIZE +WAL FILES STATUS +dev 1428933278236 2015-04-13 09:54:40 EDT 5.65 MB 16.00 MB +1 active +dev 1428862187757 2015-04-12 14:09:50 EDT 5.65 MB 32.00 MB +2 active +dev 1428768351638 2015-04-11 12:05:54 EDT 5.65 MB 32.00 MB +2 active +dev 1428684544008 2015-04-10 12:49:06 EDT 5.65 MB 224.00 MB +14 obsolete +dev 1428590536488 2015-04-09 10:42:18 EDT 5.65 MB 48.00 MB +3 obsolete +dev 1428502171990 2015-04-08 10:09:34 EDT 5.65 MB 80.00 MB +5 keep +``` + +The details of an individual backup can be displayed using the `SHOW-BACKUPS` subcommand with the `-t` option. Note the status in the `BACKUP STATUS` field. + +```text +-bash-4.1$ bart SHOW-BACKUPS -s dev -i 1428684544008 -t +SERVER NAME : dev +BACKUP ID : 1428684544008 +BACKUP NAME : none +BACKUP STATUS : obsolete +BACKUP TIME : 2015-04-10 12:49:06 EDT +BACKUP SIZE : 5.65 MB +WAL(S) SIZE : 224.00 MB +NO. OF WALS : 14 +FIRST WAL FILE : 000000010000000000000021 +CREATION TIME : 2015-04-10 12:49:06 EDT +LAST WAL FILE : 00000001000000000000002E +CREATION TIME : 2015-04-11 12:02:15 EDT +``` + +Use the `MANAGE` subcommand with the `-d` option to physically delete the obsolete backups including the unneeded WAL files. + +```text +-bash-4.1$ bart MANAGE -s dev -d +INFO: removing all obsolete backups of server 'dev' +INFO: removing obsolete backup '1428684544008' +INFO: 14 WAL file(s) will be removed +INFO: 1 Unused WAL file(s) will be removed +INFO: removing WAL file '00000001000000000000002E' +INFO: removing WAL file '00000001000000000000002D' +INFO: removing WAL file '00000001000000000000002C' +INFO: removing WAL file '00000001000000000000002B' +INFO: removing WAL file '00000001000000000000002A' +INFO: removing WAL file '000000010000000000000029' +INFO: removing WAL file '000000010000000000000028' +INFO: removing WAL file '000000010000000000000027' +INFO: removing WAL file '000000010000000000000026' +INFO: removing WAL file '000000010000000000000025' +INFO: removing WAL file '000000010000000000000024' +INFO: removing WAL file '000000010000000000000023' +INFO: removing WAL file '000000010000000000000022' +INFO: removing WAL file '000000010000000000000021' +INFO: removing (unused) WAL file '00000001000000000000000F.00000028' +INFO: removing obsolete backup '1428590536488' +INFO: 3 WAL file(s) will be removed +INFO: removing WAL file '000000010000000000000020' +INFO: removing WAL file '00000001000000000000001F' +INFO: removing WAL file '00000001000000000000001E' +``` + +The `SHOW-BACKUPS` subcommand now displays the remaining backups marked as `active` or `keep`: + +```text +-bash-4.1$ bart SHOW-BACKUPS -s dev +SERVER NAME BACKUP ID BACKUP TIME BACKUP SIZE WAL(s) SIZE +WAL FILES STATUS +dev 1428933278236 2015-04-13 09:54:40 EDT 5.65 MB 16.00 MB +1 active +dev 1428862187757 2015-04-12 14:09:50 EDT 5.65 MB 32.00 MB +2 active +dev 1428768351638 2015-04-11 12:05:54 EDT 5.65 MB 32.00 MB +2 active +dev 1428502171990 2015-04-08 10:09:34 EDT 5.65 MB 80.00 MB +5 keep +``` + +## Managing Incremental Backups + +This section illustrates evaluating, marking, and deleting incremental backups using the `MANAGE` and `DELETE` subcommands utilizing redundancy retention policy and recovery window retention policy. For detailed information about the `MANAGE` and `DELETE` subcommands, as well as the redundancy retention and recovery window retention policy, see the *EDB Backup and Recovery User Guide* available at the [EDB website](/bart/latest/bart_user/). + +- [Using a Redundancy Retention Policy](#redundancy_retention_policy) provides an example of using the `MANAGE` and `DELETE` subcommands when a 3 backup redundancy retention policy is in effect. +- [Using a Recovery Window Retention Policy](#recovery_window_retention_policy) provides an example of using the `MANAGE` and `DELETE` subcommands when a 1-day recovery window retention policy is in effect. + + + +### Using a Redundancy Retention Policy + +The following code sample uses the `MANAGE` and `DELETE` subcommands to evaluate, mark, and delete incremental backups when a 3 backup redundancy retention policy is in effect. The example uses the following server configuration: + +```text +[ACCTG] + +host = 192.168.2.24 +port = 5445 +user = enterprisedb +cluster_owner = enterprisedb +remote_host = enterprisedb@192.168.2.24 +allow_incremental_backups = enabled +retention_policy = 3 BACKUPS +description = "Accounting" +``` + +The example uses the following set of backups. In these code samples, some columns have been omitted from the `SHOW-BACKUPS` output to display the relevant information in a more observable manner. + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME ... STATUS +acctg 1481749696905 ... 1481749673603 2016-12-14 16:08:17 EST ... active +acctg 1481749673603 ... 1481749651927 2016-12-14 16:07:53 EST ... active +acctg 1481749651927 ... 1481749619582 2016-12-14 16:07:32 EST ... active +acctg 1481749619582 ... none 2016-12-14 16:07:00 EST ... active +``` + +There is one backup chain. The first backup is the initial full backup. + +Backup chain: `1481749619582 => 1481749651927 => 1481749673603 => 1481749696905` + +The `MANAGE` subcommand is invoked as shown by the following: + +```text +-bash-4.2$ bart MANAGE -s acctg +INFO: processing server 'acctg', backup '1481749619582' +INFO: 2 Unused WAL file(s) present +INFO: 4 Unused file(s) (WALs included) present, use 'MANAGE -l' for the +list +``` + +The following code sample shows the resulting status of the backups: + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME ... STATUS +acctg 1481749696905 ... 1481749673603 2016-12-14 16:08:17 EST ... active +acctg 1481749673603 ... 1481749651927 2016-12-14 16:07:53 EST ... active +acctg 1481749651927 ... 1481749619582 2016-12-14 16:07:32 EST ... active +acctg 1481749619582 ... none 2016-12-14 16:07:00 EST ... active +``` + +The status remains active for all backups. Even though the total number of backups exceeds the 3 backup redundancy retention policy, it is only the total number of full backups that is used to determine if the redundancy retention policy has been exceeded. Additional full backups are added including a second backup chain. The following example shows the resulting list of backups: + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME ... STATUS +acctg 1481750365397 ... none 2016-12-14 16:19:26 EST ... active +acctg 1481750098924 ... 1481749997807 2016-12-14 16:14:59 EST ... active +acctg 1481749997807 ... none 2016-12-14 16:13:18 EST ... active +acctg 1481749992003 ... none 2016-12-14 16:13:12 EST ... active +acctg 1481749696905 ... 1481749673603 2016-12-14 16:08:17 EST ... active +acctg 1481749673603 ... 1481749651927 2016-12-14 16:07:53 EST ... active +acctg 1481749651927 ... 1481749619582 2016-12-14 16:07:32 EST ... active +acctg 1481749619582 ... none 2016-12-14 16:07:00 EST ... active +``` + +Second backup chain: `1481749997807 => 1481750098924` + +The `MANAGE` subcommand is invoked, but now with a total of four active full backups. + +```text +-bash-4.2$ bart MANAGE -s acctg +INFO: processing server 'acctg', backup '1481750365397' +INFO: processing server 'acctg', backup '1481749997807' +INFO: processing server 'acctg', backup '1481749992003' +INFO: processing server 'acctg', backup '1481749619582' +INFO: marking backup '1481749619582' as obsolete +INFO: 3 incremental(s) of backup '1481749619582' will be marked obsolete +INFO: marking incremental backup '1481749696905' as obsolete +INFO: marking incremental backup '1481749673603' as obsolete +INFO: marking incremental backup '1481749651927' as obsolete +INFO: 4 WAL file(s) marked obsolete +INFO: 2 Unused WAL file(s) present +INFO: 4 Unused file(s) (WALs included) present, use 'MANAGE -l' for the +list +``` + +The oldest full backup and its chain of incremental backups are now marked as obsolete. + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME ... STATUS +acctg 1481750365397 ... none 2016-12-14 16:19:26 EST ... active +acctg 1481750098924 ... 1481749997807 2016-12-14 16:14:59 EST ... active +acctg 1481749997807 ... none 2016-12-14 16:13:18 EST ... active +acctg 1481749992003 ... none 2016-12-14 16:13:12 EST ... active +acctg 1481749696905 ... 1481749673603 2016-12-14 16:08:17 EST ... obsolete +acctg 1481749673603 ... 1481749651927 2016-12-14 16:07:53 EST ... obsolete +acctg 1481749651927 ... 1481749619582 2016-12-14 16:07:32 EST ... obsolete +acctg 1481749619582 ... none 2016-12-14 16:07:00 EST ... obsolete +``` + +Invoking the `MANAGE` subcommand with the `-d` option deletes the entire obsolete backup chain. + +```text +-bash-4.2$ bart MANAGE -s acctg -d +INFO: removing all obsolete backups of server 'acctg' +INFO: removing obsolete backup '1481749619582' +INFO: 4 WAL file(s) will be removed +INFO: 3 incremental(s) of backup '1481749619582' will be removed +INFO: removing obsolete incremental backup '1481749696905' +INFO: removing obsolete incremental backup '1481749673603' +INFO: removing obsolete incremental backup '1481749651927' +INFO: removing WAL file '000000010000000100000000' +INFO: removing WAL file '0000000100000000000000FF' +INFO: removing WAL file '0000000100000000000000FE' +INFO: removing WAL file '0000000100000000000000FD' +INFO: 16 Unused file(s) will be removed +INFO: removing (unused) file '000000010000000100000004.00000028.backup' +. +. +. +INFO: removing (unused) file +'0000000100000000FB00002800000000FC000000.mbm' +``` + +The following code sample shows the remaining full backups and the second backup chain. + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME ... STATUS +acctg 1481750365397 ... none 2016-12-14 16:19:26 EST ... active +acctg 1481750098924 ... 1481749997807 2016-12-14 16:14:59 EST ... active +acctg 1481749997807 ... none 2016-12-14 16:13:18 EST ... active +acctg 1481749992003 ... none 2016-12-14 16:13:12 EST ... active +``` + + + +### Using a Recovery Window Retention Policy + +The following example demonstrates using the `MANAGE` and `DELETE` subcommands to evaluate, mark, and delete incremental backups when a 1-day recovery window retention policy is in effect. The example uses the following server configuration: + +```text +[ACCTG] + +host = 192.168.2.24 +port = 5445 +user = enterprisedb +cluster_owner = enterprisedb +remote_host = enterprisedb@192.168.2.24 +allow_incremental_backups = enabled +retention_policy = 1 DAYS +description = "Accounting" +``` + +The example uses the following set of backups. In the samples, some columns have been omitted from the `SHOW-BACKUPS` output to display the relevant information in a more observable manner. + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME ... STATUS +acctg 1481559303348 ... 1481554203288 2016-12-12 11:15:03 EST ... active +acctg 1481559014359 ... 1481554802918 2016-12-12 11:10:14 EST ... active +acctg 1481554802918 ... 1481553914533 2016-12-12 10:00:03 EST ... active +acctg 1481554203288 ... 1481553651165 2016-12-12 09:50:03 EST ... active +acctg 1481553914533 ... 1481553088053 2016-12-12 09:45:14 EST ... active +acctg 1481553651165 ... none 2016-12-12 09:40:51 EST ... active +acctg 1481553088053 ... 1481552078404 2016-12-12 09:31:28 EST ... active +acctg 1481552078404 ... none 2016-12-12 09:14:39 EST ... active +``` + +There are two backup chains. In each of the following chains, the first backup is the initial full backup. + +First backup chain: `1481552078404 => 1481553088053 => 1481553914533 => 1481554802918 => 1481559014359` + +Second backup chain: `1481553651165 => 1481554203288 => 1481559303348` + +The `MANAGE` subcommand is invoked when the first full backup `1481552078404` falls out of the recovery window. When the `MANAGE` subcommand is invoked, it is `2016-12-13 09:20:03 EST`, thus making the start of the 1-day recovery window at `2016-12-12 09:20:03 EST` exactly one day earlier. This backup was taken at `2016-12-12 09:14:39 EST`, which is about 5 ½ minutes before the start of the recovery window, thus making the backup obsolete. + +```text +-bash-4.2$ date +Tue Dec 13 09:20:03 EST 2016 +-bash-4.2$ bart MANAGE -s acctg +INFO: processing server 'acctg', backup '1481553651165' +INFO: processing server 'acctg', backup '1481552078404' +INFO: marking backup '1481552078404' as obsolete +INFO: 4 incremental(s) of backup '1481552078404' will be marked obsolete +INFO: marking incremental backup '1481559014359' as obsolete +INFO: marking incremental backup '1481554802918' as obsolete +INFO: marking incremental backup '1481553914533' as obsolete +INFO: marking incremental backup '1481553088053' as obsolete +INFO: 7 WAL file(s) marked obsolete +INFO: 1 Unused WAL file(s) present +INFO: 2 Unused file(s) (WALs included) present, use 'MANAGE -l' for the list +``` + +The incremental backup date and time are within the recovery window since they were taken after the start of the recovery window of `2016-12-12 09:20:03 EST`, but all backups in the chain are marked as `obsolete`. + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg\ +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME +... STATUS +acctg 1481559303348 ... 1481554203288 2016-12-12 11:15:03 EST +... active +acctg 1481559014359 ... 1481554802918 2016-12-12 11:10:14 EST +... obsolete +acctg 1481554802918 ... 1481553914533 2016-12-12 10:00:03 EST +... obsolete +acctg 1481554203288 ... 1481553651165 2016-12-12 09:50:03 EST +... active +acctg 1481553914533 ... 1481553088053 2016-12-12 09:45:14 EST +... obsolete +acctg 1481553651165 ... none 2016-12-12 09:40:51 EST +... active +acctg 1481553088053 ... 1481552078404 2016-12-12 09:31:28 EST +... obsolete +acctg 1481552078404 ... none 2016-12-12 09:14:39 EST +... obsolete +``` + +The following code sample shows how the entire backup chain is changed back to active status by invoking the `MANAGE` subcommand with the `-c nokeep` option on the full backup of the chain. + +```text +-bash-4.2$ bart MANAGE -s acctg -c nokeep -i 1481552078404 +INFO: changing status of backup '1481552078404' of server 'acctg' from +'obsolete' to 'active' +INFO: status of 4 incremental(s) of backup '1481552078404' will be +changed +INFO: changing status of incremental backup '1481559014359' of server +'acctg' from 'obsolete' to 'active' +INFO: changing status of incremental backup '1481554802918' of server +'acctg' from 'obsolete' to 'active' +INFO: changing status of incremental backup '1481553914533' of server +'acctg' from 'obsolete' to 'active' +INFO: changing status of incremental backup '1481553088053' of server +'acctg' from 'obsolete' to 'active' +INFO: 7 WAL file(s) changed +``` + +The backup chain has now been reset to active status. + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME ... STATUS +acctg 1481559303348 ... 1481554203288 2016-12-12 11:15:03 EST ... active +acctg 1481559014359 ... 1481554802918 2016-12-12 11:10:14 EST ... active +acctg 1481554802918 ... 1481553914533 2016-12-12 10:00:03 EST ... active +acctg 1481554203288 ... 1481553651165 2016-12-12 09:50:03 EST ... active +acctg 1481553914533 ... 1481553088053 2016-12-12 09:45:14 EST ... active +acctg 1481553651165 ... none 2016-12-12 09:40:51 EST ... active +acctg 1481553088053 ... 1481552078404 2016-12-12 09:31:28 EST ... active +acctg 1481552078404 ... none 2016-12-12 09:14:39 EST ... active +``` + +The following code sample shows usage of the `DELETE` subcommand on an incremental backup. The specified incremental backup `1481554802918` in the first backup chain as well as its successive incremental backup `1481559014359` are deleted. + +```text +-bash-4.2$ bart DELETE -s acctg -i 1481554802918 +INFO: deleting backup '1481554802918' of server 'acctg' +INFO: deleting backup '1481554802918' +INFO: 1 incremental backup(s) will be deleted +INFO: deleting incremental backup '1481559014359' +INFO: WALs of deleted backup(s) will belong to prior backup(if any), or +will be marked unused +INFO: 2 Unused file(s) will be removed +INFO: removing (unused) file '0000000100000000000000BA' +INFO: removing (unused) file +'0000000100000000BA00002800000000BB000000.mbm' +INFO: backup(s) deleted +``` + +The results show that the backups `1481554802918` and `1481559014359` are no longer listed by the `SHOW-BACKUPS` subcommand. + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME ... STATUS +acctg 1481559303348 ... 1481554203288 2016-12-12 11:15:03 EST ... active +acctg 1481554203288 ... 1481553651165 2016-12-12 09:50:03 EST ... active +acctg 1481553914533 ... 1481553088053 2016-12-12 09:45:14 EST ... active +acctg 1481553651165 ... none 2016-12-12 09:40:51 EST ... active +acctg 1481553088053 ... 1481552078404 2016-12-12 09:31:28 EST ... active +acctg 1481552078404 ... none 2016-12-12 09:14:39 EST ... active +``` + +The `MANAGE` subcommand is invoked again. This time both backup chains are marked `obsolete` since the full backups of both chains fall out of the start of the recovery window, which is now `2016-12-12 09:55:03 EST`. + +```text +-bash-4.2$ date +Tue Dec 13 09:55:03 EST 2016 +-bash-4.2$ bart MANAGE -s acctg +INFO: processing server 'acctg', backup '1481553651165' +INFO: marking backup '1481553651165' as obsolete +INFO: 2 incremental(s) of backup '1481553651165' will be marked obsolete +INFO: marking incremental backup '1481559303348' as obsolete +INFO: marking incremental backup '1481554203288' as obsolete +INFO: 38 WAL file(s) marked obsolete +INFO: processing server 'acctg', backup '1481552078404' +INFO: marking backup '1481552078404' as obsolete +INFO: 2 incremental(s) of backup '1481552078404' will be marked obsolete +INFO: marking incremental backup '1481553914533' as obsolete +INFO: marking incremental backup '1481553088053' as obsolete +INFO: 7 WAL file(s) marked obsolete +``` + +The following code sample shows both backup chains marked as `obsolete`. + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME +... STATUS +acctg 1481559303348 ... 1481554203288 2016-12-12 11:15:03 EST +... obsolete +acctg 1481554203288 ... 1481553651165 2016-12-12 09:50:03 EST +... obsolete +acctg 1481553914533 ... 1481553088053 2016-12-12 09:45:14 EST +... obsolete +acctg 1481553651165 ... none 2016-12-12 09:40:51 EST +... obsolete +acctg 1481553088053 ... 1481552078404 2016-12-12 09:31:28 EST +... obsolete +acctg 1481552078404 ... none 2016-12-12 09:14:39 EST +... obsolete +``` + +The following code sample demonstrates using the `MANAGE` subcommand with the `-c keep` option to keep a backup chain indefinitely. The `MANAGE` subcommand with the `-c keep` option must specify the backup identifier or backup name of the full backup of the chain, and not any incremental backup. + +```text +-bash-4.2$ bart MANAGE -s acctg -c keep -i 1481553651165 +INFO: changing status of backup '1481553651165' of server 'acctg' from +'obsolete' to 'keep' +INFO: status of 2 incremental(s) of backup '1481553651165' will be +changed +INFO: changing status of incremental backup '1481559303348' of server +'acctg' from 'obsolete' to 'keep' +INFO: changing status of incremental backup '1481554203288' of server +'acctg' from 'obsolete' to 'keep' +INFO: 38 WAL file(s) changed +``` + +The full backup `1481553651165` and its successive incremental backups `1481554203288` and `1481559303348` have been changed to `keep` status: + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME +... STATUS +acctg 1481559303348 ... 1481554203288 2016-12-12 11:15:03 EST +... keep +acctg 1481554203288 ... 1481553651165 2016-12-12 09:50:03 EST +... keep +acctg 1481553914533 ... 1481553088053 2016-12-12 09:45:14 EST +... obsolete +acctg 1481553651165 ... none 2016-12-12 09:40:51 EST +... keep +acctg 1481553088053 ... 1481552078404 2016-12-12 09:31:28 EST +... obsolete +acctg 1481552078404 ... none 2016-12-12 09:14:39 EST +... obsolete +``` + +Finally, the `MANAGE` subcommand with the `-d` option is used to delete the `obsolete` backup chain: + +```text +-bash-4.2$ bart MANAGE -s acctg -d +INFO: removing all obsolete backups of server 'acctg' +INFO: removing obsolete backup '1481552078404' +INFO: 7 WAL file(s) will be removed +INFO: 2 incremental(s) of backup '1481552078404' will be removed +INFO: removing obsolete incremental backup '1481553914533' +INFO: removing obsolete incremental backup '1481553088053' +INFO: removing WAL file '0000000100000000000000C1' +INFO: removing WAL file '0000000100000000000000C0' +INFO: removing WAL file '0000000100000000000000BF' +INFO: removing WAL file '0000000100000000000000BE' +INFO: removing WAL file '0000000100000000000000BD' +INFO: removing WAL file '0000000100000000000000BC' +INFO: removing WAL file '0000000100000000000000BB' +INFO: 48 Unused file(s) will be removed +INFO: removing (unused) file '0000000100000000000000FA' +. +. +. +INFO: removing (unused) file '0000000100000000000000BB.00000028.backup' +``` + +Only the backup chain with the `keep` status remains as shown below: + +```text +-bash-4.2$ bart SHOW-BACKUPS -s acctg +SERVER NAME BACKUP ID ... BACKUP PARENT BACKUP TIME +... STATUS +acctg 1481559303348 ... 1481554203288 2016-12-12 11:15:03 EST +... keep +acctg 1481554203288 ... 1481553651165 2016-12-12 09:50:03 EST +... keep +acctg 1481553651165 ... none 2016-12-12 09:40:51 EST +... keep +``` diff --git a/product_docs/docs/bart/2.5/bart_ref/03_sample_bart_system_with_local_and_remote_database_servers.mdx b/product_docs/docs/bart/2.5/bart_ref/03_sample_bart_system_with_local_and_remote_database_servers.mdx new file mode 100644 index 00000000000..b1527216806 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_ref/03_sample_bart_system_with_local_and_remote_database_servers.mdx @@ -0,0 +1,1385 @@ +--- +title: "Sample BART System with Local and Remote Database Servers" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/sample_bart_system_with_local_and_remote_database_servers.html" +--- + + + +This section describes a sample BART managed backup and recovery system consisting of both local and remote database servers. The complete steps to configure and operate the system are provided. + +For detailed information about configuring a BART system, see the *EDB Backup and Recovery Installation and Upgrade Guide*. For detailed information about the operational procedures and BART subcommands, see the *EDB Backup and Recovery User Guide*. These guides are available at the [EDB website](/bart/latest/bart_inst/). + +The environment for this sample system is as follows: + +- BART on host `192.168.2.22` running with BART user account `enterprisedb` +- Local Advanced Server on host `192.168.2.22` running with user account `enterprisedb` +- Remote Advanced Server on host `192.168.2.24` running with user account `enterprisedb` +- Remote PostgreSQL server on host `192.168.2.24` running with user account `postgres` + +Passwordless SSH/SCP connections are required between the following: + +- BART on host `192.168.2.22` and the local Advanced Server on the same host `192.168.2.22` +- BART on host `192.168.2.22` and the remote Advanced Server on host `192.168.2.24` +- BART on host `192.168.2.22` and the remote PostgreSQL server on host `192.168.2.24` + +The following sections demonstrate configuring and taking full backups only. To support incremental backups as well, enable the `allow_incremental_backups` parameter for the desired database servers and use the `WAL scanner` program. + +- [The BART Configuration File](#bart_configuration_file) shows the settings used in the BART configuration file. +- [Establishing SSH/SCP Passwordless Connections](#establishing-sshscp-passwordless-connections) provides an example of how to establish an SSH/SCP passwordless connection. +- [Configuring a Replication Database User](#configuring-a-replication-database-user) provides an example of how to configure the replication database user. +- [WAL Archiving Configuration Parameters](#wal-archiving-configuration-parameters) provides an example of how to configure WAL archiving. +- [Creating the BART Backup Catalog](#creating-the-bart-backup-catalog-backup_path) provides information about creating a BART Backup Catalog. +- [Starting the Database Servers with WAL Archiving](#starting-the-database-servers-with-wal-archiving) provides example of starting the database servers with WAL archiving. +- [Taking a Full Backup](#taking-a-full-backup) illustrates taking the first full backup of the database servers. +- [Using Point-In-Time Recovery](#using-point-in-time-recovery) demonstrates the point-in-time recovery operation on the remote PostgreSQL database server. + + + +## The BART Configuration File + +The following code sample shows the settings used in the BART configuration file for the examples that follow: + +```text +[BART] +bart_host= enterprisedb@192.168.2.22 +backup_path = /opt/backup +pg_basebackup_path = /usr/edb/as11/bin/pg_basebackup +retention_policy = 6 BACKUPS +logfile = /tmp/bart.log +scanner_logfile = /tmp/bart_scanner.log + +[ACCTG] +host = 127.0.0.1 +port = 5444 +user = enterprisedb +cluster_owner = enterprisedb +backup_name = acctg_%year-%month-%dayT%hour:%minute +archive_command = 'cp %p %a/%f' +description = "Accounting" + +[MKTG] + +host = 192.168.2.24 +port = 5444 +user = repuser +cluster_owner = enterprisedb +backup_name = mktg_%year-%month-%dayT%hour:%minute +remote_host = enterprisedb@192.168.2.24 +description = "Marketing" + +[HR] + +host = 192.168.2.24 +port = 5432 +user = postgres +cluster_owner = postgres +backup_name = hr_%year-%month-%dayT%hour:%minute +remote_host = postgres@192.168.2.24 +copy_wals_during_restore = enabled +description = "Human Resources" +``` + + + +## Establishing SSH/SCP Passwordless Connections + +This section demonstrates how passwordless SSH/SCP connections are established with the authorized public keys files. + + + +### Generating a Public Key File for the BART User Account + +The BART user account is `enterprisedb` with a home directory of `/opt/PostgresPlus/9.6AS`. + +To generate the public key file, as a root user, first create the `.ssh` subdirectory in the BART user’s home directory and assign ownership of this directory to the `enterprisedb` user, ensuring there are no groups or other users that can access the `.ssh` directory. + +```text +[root@localhost 9.6AS]# pwd +/opt/PostgresPlus/9.6AS +[root@localhost 9.6AS]# mkdir .ssh +[root@localhost 9.6AS]# chown enterprisedb .ssh +[root@localhost 9.6AS]# chgrp enterprisedb .ssh +[root@localhost 9.6AS]# chmod 700 .ssh +[root@localhost 9.6AS]# ls -la | grep ssh +drwx------ 2 enterprisedb enterprisedb 4096 Apr 23 13:02 .ssh +``` + +Generate the public key file: + +```text +[user@localhost ~]$ su - enterprisedb +Password: +-bash-4.1$ pwd +/opt/PostgresPlus/9.6AS +-bash-4.1$ ssh-keygen -t rsa +Generating public/private rsa key pair. +Enter file in which to save the key +(/opt/PostgresPlus/9.6AS/.ssh/id_rsa): +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in +/opt/PostgresPlus/9.6AS/.ssh/id_rsa. +Your public key has been saved in +/opt/PostgresPlus/9.6AS/.ssh/id_rsa.pub. +The key fingerprint is: +de:65:34:d6:b1:d2:32:3c:b0:43:c6:a3:c0:9f:f4:64 +enterprisedb@localhost.localdomain +The key's randomart image is: ++----[ RSA 2048]----+ +| . .+ . | +| o .oE+ o o | +| + * o.X + | +| + .+ * | +| S o | +| . . o | +| . . | +| + | +| | ++-------------------+ +``` + +The following are the resulting files. `id_rsa.pub` is the public key file of BART user account `enterprisedb`. + +```text +-bash-4.1$ ls -l .ssh +total 8 +-rw------- 1 enterprisedb enterprisedb 1675 Apr 23 13:04 id_rsa +-rw-r--r-- 1 enterprisedb enterprisedb 416 Apr 23 13:04 id_rsa.pub +``` + +### Configuring Access between Local Advanced Server and the BART Host + +Even when the Advanced Server database is on the same host as the BART user account, and the Advanced Server database cluster owner is also the BART user account (`enterprisedb` is this case), a passwordless SSH/SCP connection must be established from the same user account to itself. + +On the BART host where the public key file was just generated (as shown in [Generating a Public Key File for the BART User Account](#generating-a-public-key-file-for-the-bart-user-account)), create the authorized keys file by appending the public key file to any existing authorized keys file. + +Log into the BART host as the BART user account and append the public key file, `id_rsa.pub` onto the `authorized_keys` file in the same `.ssh` directory. + +```text +[user@localhost ~]$ su - enterprisedb +Password: +Last login: Thu Mar 23 10:27:35 EDT 2017 on pts/0 +-bash-4.2$ pwd +/opt/PostgresPlus/9.6AS +-bash-4.2$ ls -l .ssh +total 12 +-rw------- 1 enterprisedb enterprisedb 1675 Mar 23 09:54 id_rsa +-rw-r--r-- 1 enterprisedb enterprisedb 416 Mar 23 09:54 id_rsa.pub +-rw-r--r-- 1 enterprisedb enterprisedb 345 Mar 23 10:05 known_hosts +-bash-4.2$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys +-bash-4.2$ ls -l .ssh +total 16 +-rw-rw-r-- 1 enterprisedb enterprisedb 416 Mar 23 10:33 authorized_keys +-rw------- 1 enterprisedb enterprisedb 1675 Mar 23 09:54 id_rsa +-rw-r--r-- 1 enterprisedb enterprisedb 416 Mar 23 09:54 id_rsa.pub +-rw-r--r-- 1 enterprisedb enterprisedb 345 Mar 23 10:05 known_hosts +``` + +The `authorized_keys` file must have file permission `600` as set by the following `chmod 600` command, or the passwordless connection will fail: + +```text +-bash-4.2$ chmod 600 ~/.ssh/authorized_keys +-bash-4.2$ ls -l .ssh +total 16 +-rw------- 1 enterprisedb enterprisedb 416 Mar 23 10:33 authorized_keys +-rw------- 1 enterprisedb enterprisedb 1675 Mar 23 09:54 id_rsa +-rw-r--r-- 1 enterprisedb enterprisedb 416 Mar 23 09:54 id_rsa.pub +-rw-r--r-- 1 enterprisedb enterprisedb 345 Mar 23 10:05 known_hosts +``` + +Test the passwordless connection. Use the `ssh` command to verify that you can access the same user account as you are currently logged in as (`enterprisedb`) without being prompted for a password: + +```text +-bash-4.2$ ssh enterprisedb@127.0.0.1 +Last login: Thu Mar 23 10:27:50 2017 +-bash-4.2$ exit +logout +Connection to 127.0.0.1 closed. +``` + +### Configuring Access from Remote Advanced Server to BART Host + +On the remote host `192.168.2.24`, create the public key file for the remote database server user account, `enterprisedb`, for access to the BART user account, `enterprisedb`, on the BART host 192.168.2.22. + +Create the `.ssh` directory for user account `enterprisedb` on the remote host: + +```text +[root@localhost 9.6AS]# pwd +/opt/PostgresPlus/9.6AS +[root@localhost 9.6AS]# mkdir .ssh +[root@localhost 9.6AS]# chown enterprisedb .ssh +[root@localhost 9.6AS]# chgrp enterprisedb .ssh +[root@localhost 9.6AS]# chmod 700 .ssh +[root@localhost 9.6AS]# ls -la | grep ssh +drwx------ 2 enterprisedb enterprisedb 4096 Apr 23 13:08 .ssh +``` + +Generate the public key file on the remote host for user account `enterprisedb`: + +```text +[user@localhost ~]$ su - enterprisedb +Password: +-bash-4.1$ ssh-keygen -t rsa +Generating public/private rsa key pair. +Enter file in which to save the key +(/opt/PostgresPlus/9.6AS/.ssh/id_rsa): +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in +/opt/PostgresPlus/9.6AS/.ssh/id_rsa. +Your public key has been saved in +/opt/PostgresPlus/9.6AS/.ssh/id_rsa.pub. +The key fingerprint is: +15:27:1e:1e:61:4b:48:66:67:0b:b2:be:fc:ea:ea:e6 +enterprisedb@localhost.localdomain +The key's randomart image is: ++--[ RSA 2048]---+ +| ..=.@.. | +| =.O O | +| . * | +| . . | +| . S | +| . . | +| o | +| . . | +| +Eoo.. | ++----------------+ +``` + +Copy the generated public key file, `id_rsa.pub`, to the BART user account, `enterprisedb`, on the BART host, `192.168.2.22`: + +```text +-bash-4.1$ scp ~/.ssh/id_rsa.pub enterprisedb@192.168.2.22:/tmp/tmp.pub +The authenticity of host '192.168.2.22 (192.168.2.22)' can't be +established. +RSA key fingerprint is b8:a9:97:31:79:16:b8:2b:b0:60:5a:91:38:d7:68:22. +Are you sure you want to continue connecting (yes/no)? yes +Warning: Permanently added '192.168.2.22' (RSA) to the list of known hosts. +enterprisedb@192.168.2.22's password: +id_rsa.pub +``` + +Log into the BART host as the BART user account and append the temporary public key file, `/tmp/tmp.pub` onto the `authorized_keys` file owned by the BART user account. + +```text +-bash-4.1$ ssh enterprisedb@192.168.2.22 +enterprisedb@192.168.2.22's password: +Last login: Tue Apr 21 17:03:24 2015 from 192.168.2.22 +-bash-4.1$ pwd +/opt/PostgresPlus/9.6AS +-bash-4.1$ cat /tmp/tmp.pub >> ~/.ssh/authorized_keys +-bash-4.1$ ls -l .ssh +total 12 +-rw-rw-r-- 1 enterprisedb enterprisedb 416 Apr 23 13:15 authorized_keys +-rw------- 1 enterprisedb enterprisedb 1675 Apr 23 13:04 id_rsa +-rw-r--r-- 1 enterprisedb enterprisedb 416 Apr 23 13:04 id_rsa.pub +``` + +The `authorized_keys` file must have file permission `600` as set by the following `chmod 600` command, otherwise the passwordless connection fails: + +```text +-bash-4.1$ chmod 600 ~/.ssh/authorized_keys +-bash-4.1$ ls -l .ssh +total 12 +-rw------- 1 enterprisedb enterprisedb 416 Apr 23 13:15 authorized_keys +-rw------- 1 enterprisedb enterprisedb 1675 Apr 23 13:04 id_rsa +-rw-r--r-- 1 enterprisedb enterprisedb 416 Apr 23 13:04 id_rsa.pub +-bash-4.1$ rm /tmp/tmp.pub +-bash-4.1$ exit +logout +Connection to 192.168.2.22 closed. +``` + +Test the passwordless connection. From the remote host, verify that you can log into the BART host with the BART user account without being prompted for a password: + +```text +-bash-4.1$ ssh enterprisedb@192.168.2.22 +Last login: Thu Apr 23 13:14:48 2015 from 192.168.2.24 +-bash-4.1$ exit +logout +Connection to 192.168.2.22 closed. +``` + +### Configuring Access from the BART Host to a Remote Advanced Server + +On the BART host `192.168.2.22`, copy the public key file for the BART user account, `enterprisedb`, for access to the remote database server user account, `enterprisedb`, on the remote host `192.168.2.24`. + +The following lists the current SSH keys files in the BART user’s `.ssh` directory on the BART host: + +```text +[user@localhost ~]$ su - enterprisedb +Password: +-bash-4.1$ pwd +/opt/PostgresPlus/9.6AS +-bash-4.1$ ls -l .ssh +total 12 +-rw------- 1 enterprisedb enterprisedb 416 Apr 23 13:15 authorized_keys +-rw------- 1 enterprisedb enterprisedb 1675 Apr 23 13:04 id_rsa +-rw-r--r-- 1 enterprisedb enterprisedb 416 Apr 23 13:04 id_rsa.pub +``` + +The public key file, `id_rsa.pub`, for BART user account `enterprisedb` on the BART host that was earlier generated in [Generating a Public Key File for the BART User Account](#generating-a-public-key-file-for-the-bart-user-account), is now copied to the remote Advanced Server host on `192.168.2.24`: + +```text +-bash-4.1$ scp ~/.ssh/id_rsa.pub enterprisedb@192.168.2.24:/tmp/tmp.pub +The authenticity of host '192.168.2.24 (192.168.2.24)' can't be +established. +RSA key fingerprint is 59:41:fb:0c:ae:64:3d:3f:a2:d9:90:95:cf:2c:99:f2. +Are you sure you want to continue connecting (yes/no)? yes +Warning: Permanently added '192.168.2.24' (RSA) to the list of known +hosts. +enterprisedb@192.168.2.24's password: +id_rsa.pub +``` + +Log into the `enterprisedb` user account on the remote host and copy the public key file onto the `authorized_keys` file of the remote `enterprisedb` user account under its `.ssh` directory: + +```text +-bash-4.1$ ssh enterprisedb@192.168.2.24 +enterprisedb@192.168.2.24's password: +Last login: Tue Apr 21 09:53:18 2015 from 192.168.2.22 +-bash-4.1$ pwd +/opt/PostgresPlus/9.6AS +-bash-4.1$ ls -l .ssh +total 12 +-rw------- 1 enterprisedb enterprisedb 1675 Apr 23 13:11 id_rsa +-rw-r--r-- 1 enterprisedb enterprisedb 416 Apr 23 13:11 id_rsa.pub +-rw-r--r-- 1 enterprisedb enterprisedb 394 Apr 23 13:12 known_hosts +-bash-4.1$ cat /tmp/tmp.pub >> ~/.ssh/authorized_keys +``` + +Adjust the file permission on `authorized_keys`: + +```text +-bash-4.1$ chmod 600 ~/.ssh/authorized_keys +-bash-4.1$ ls -l .ssh +total 16 +-rw------- 1 enterprisedb enterprisedb 416 Apr 23 13:26 authorized_keys +-rw------- 1 enterprisedb enterprisedb 1675 Apr 23 13:11 id_rsa +-rw-r--r-- 1 enterprisedb enterprisedb 416 Apr 23 13:11 id_rsa.pub +-rw-r--r-- 1 enterprisedb enterprisedb 394 Apr 23 13:12 known_hosts +-bash-4.1$ rm /tmp/tmp.pub +-bash-4.1$ exit +logout +Connection to 192.168.2.24 closed. +``` + +While logged into the BART host, test the passwordless connection from the BART host to the remote Advanced Server host: + +```text +-bash-4.1$ ssh enterprisedb@192.168.2.24 +Last login: Thu Apr 23 13:25:53 2015 from 192.168.2.22 +-bash-4.1$ exit +logout +Connection to 192.168.2.24 closed. +``` + +### Configuring Access from a Remote PostgreSQL Server to a BART Host + +On the remote host (192.168.2.24), create a public key file owned by the database server user account (`postgres`), allowing access to the BART user account (`enterprisedb`) on the BART host (192.168.2.22). + +Create the `.ssh` directory for the `postgres` user account on the remote host: + +```text +[root@localhost 9.6]# cd /opt/PostgreSQL/9.6 +[root@localhost 9.6]# mkdir .ssh +[root@localhost 9.6]# chown postgres .ssh +[root@localhost 9.6]# chgrp postgres .ssh +[root@localhost 9.6]# chmod 700 .ssh +[root@localhost 9.6]# ls -la | grep ssh +drwx------ 2 postgres postgres 4096 Apr 23 13:32 .ssh +``` + +Create and copy the generated public key file, `id_rsa.pub`, to the BART user account (`enterprisedb`), on the BART host (`192.168.2.22`): + +```text +[user@localhost ~]$ su - postgres +Password: +-bash-4.1$ pwd +/opt/PostgreSQL/9.6 +-bash-4.1$ ssh-keygen -t rsa +Generating public/private rsa key pair. +Enter file in which to save the key (/opt/PostgreSQL/9.6/.ssh/id_rsa): +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in /opt/PostgreSQL/9.6/.ssh/id_rsa. +Your public key has been saved in /opt/PostgreSQL/9.6/.ssh/id_rsa.pub. +The key fingerprint is: +1f:f8:76:d6:fc:a5:1a:c5:5a:66:66:01:d0:a0:ca:ba +postgres@localhost.localdomain +The key's randomart image is: ++--[ RSA 2048]----+ +| o+. | +| . .. | +| . . | +| . . . . . | +| o S . O | +| . o . @ | +| . + = o .| +| . . o . o.| +| E ... .| ++-----------------+ +-bash-4.1$ ls -l .ssh +total 8 +-rw------- 1 postgres postgres 1671 Apr 23 13:36 id_rsa +-rw-r--r-- 1 postgres postgres 412 Apr 23 13:36 id_rsa.pub +-bash-4.1$ scp ~/.ssh/id_rsa.pub enterprisedb@192.168.2.22:/tmp/tmp.pub +The authenticity of host '192.168.2.22 (192.168.2.22)' can't be +established. +RSA key fingerprint is b8:a9:97:31:79:16:b8:2b:b0:60:5a:91:38:d7:68:22. +Are you sure you want to continue connecting (yes/no)? yes +Warning: Permanently added '192.168.2.22' (RSA) to the list of known +hosts. +enterprisedb@192.168.2.22's password: +id_rsa.pub +``` + +Log into the BART host as the BART user account and append the temporary public key file, `/tmp/tmp.pub`, onto the `authorized_keys` file owned by the BART user account. + +```text +-bash-4.1$ ssh enterprisedb@192.168.2.22 +enterprisedb@192.168.2.22's password: +Last login: Thu Apr 23 13:19:25 2015 from 192.168.2.24 +-bash-4.1$ pwd +/opt/PostgresPlus/9.6AS +-bash-4.1$ cat /tmp/tmp.pub >> ~/.ssh/authorized_keys +-bash-4.1$ ls -l .ssh +total 16 +-rw------- 1 enterprisedb enterprisedb 828 Apr 23 13:40 authorized_keys +-rw------- 1 enterprisedb enterprisedb 1675 Apr 23 13:04 id_rsa +-rw-r--r-- 1 enterprisedb enterprisedb 416 Apr 23 13:04 id_rsa.pub +-rw-r--r-- 1 enterprisedb enterprisedb 394 Apr 23 13:24 known_hosts +-bash-4.1$ rm /tmp/tmp.pub +-bash-4.1$ exit +logout +Connection to 192.168.2.22 closed. +``` + +Make sure the `authorized_keys` file has file permission 600 as shown, or the passwordless connection will fail. Test the passwordless connection; from the remote host, while logged in as user account `postgres`, verify that you can log into the BART host with the BART user account without being prompted for a password: + +```text +-bash-4.1$ pwd +/opt/PostgreSQL/9.6 +-bash-4.1$ ssh enterprisedb@192.168.2.22 +Last login: Thu Apr 23 13:40:10 2015 from 192.168.2.24 +-bash-4.1$ exit +logout +Connection to 192.168.2.22 closed. +``` + +### Configuring Access from the BART Host to Remote PostgreSQL + +Copy the public key file on the BART host that is owned by the BART user account (`enterprisedb`) to the remote database server user account (`postgres`), on the remote host (192.168.2.24). + +The following lists the current SSH keys files in the BART user’s `.ssh` directory on the BART host: + +```text +[user@localhost ~]$ su - enterprisedb +Password: +-bash-4.1$ ls -l .ssh +total 16 +-rw------- 1 enterprisedb enterprisedb 828 Apr 23 13:40 authorized_keys +-rw------- 1 enterprisedb enterprisedb 1675 Apr 23 13:04 id_rsa +-rw-r--r-- 1 enterprisedb enterprisedb 416 Apr 23 13:04 id_rsa.pub +-rw-r--r-- 1 enterprisedb enterprisedb 394 Apr 23 13:24 known_hosts +``` + +The public key file, `id_rsa.pub`, for BART user account `enterprisedb` on the BART host that was earlier generated in [Generating a Public Key File for the BART User Account](#generating-a-public-key-file-for-the-bart-user-account), now resides on the remote PostgreSQL host: + +```text +-bash-4.1$ scp ~/.ssh/id_rsa.pub postgres@192.168.2.24:/tmp/tmp.pub +postgres@192.168.2.24's password: +id_rsa.pub +``` + +Log into the `postgres` user account on the remote host and copy the public key file onto the `authorized_keys` file of `postgres` under its `.ssh` directory: + +```text +-bash-4.1$ ssh postgres@192.168.2.24 +postgres@192.168.2.24's password: +Last login: Mon Jan 26 18:08:36 2015 from 192.168.2.19 +-bash-4.1$ pwd +/opt/PostgreSQL/9.6 +-bash-4.1$ cat /tmp/tmp.pub >> ~/.ssh/authorized_keys +``` + +Adjust the file permissions on `authorized_keys`: + +```text +-bash-4.1$ ls -l .ssh +total 16 +-rw-rw-r-- 1 postgres postgres 416 Apr 23 13:52 authorized_keys +-rw------- 1 postgres postgres 1671 Apr 23 13:36 id_rsa +-rw-r--r-- 1 postgres postgres 412 Apr 23 13:36 id_rsa.pub +-rw-r--r-- 1 postgres postgres 394 Apr 23 13:36 known_hosts +-bash-4.1$ chmod 600 ~/.ssh/authorized_keys +-bash-4.1$ ls -l .ssh +total 16 +-rw------- 1 postgres postgres 416 Apr 23 13:52 authorized_keys +-rw------- 1 postgres postgres 1671 Apr 23 13:36 id_rsa +-rw-r--r-- 1 postgres postgres 412 Apr 23 13:36 id_rsa.pub +-rw-r--r-- 1 postgres postgres 394 Apr 23 13:36 known_hosts +-bash-4.1$ rm /tmp/tmp.pub +-bash-4.1$ exit +logout +Connection to 192.168.2.24 closed. +``` + +Test the passwordless connection from the BART host to the remote PostgreSQL host: + +```text +[user@localhost ~]$ su - enterprisedb +Password: +-bash-4.1$ ssh postgres@192.168.2.24 +Last login: Thu Apr 23 13:52:25 2015 from 192.168.2.22 +-bash-4.1$ exit +logout +Connection to 192.168.2.24 closed. +``` + + + +## Configuring a Replication Database User + +This section demonstrates how a replication database user is established. + +**All database servers must use a superuser as the replication database user.** + +The replication database user for each database server is specified by the `user` parameter in the BART configuration file as shown by the following: + +```text +[ACCTG] + +host = 127.0.0.1 +port = 5444 +user = enterprisedb <=== Replication Database User +cluster_owner = enterprisedb +backup_name = acctg_%year-%month-%dayT%hour:%minute +archive_command = 'cp %p %a/%f' +description = "Accounting" + +[MKTG] +host = 192.168.2.24 +port = 5444 +user = repuser <=== Replication Database User +cluster_owner = enterprisedb +backup_name = mktg_%year-%month-%dayT%hour:%minute +remote_host = enterprisedb@192.168.2.24 +description = "Marketing" + +[HR] + +host = 192.168.2.24 +port = 5432 +user = postgres <=== Replication Database User +cluster_owner = enterprisedb +backup_name = hr_%year-%month-%dayT%hour:%minute +remote_host = postgres@192.168.2.24 +copy_wals_during_restore = enabled +description = "Human Resources" +``` + +Add entries to the `.pgpass` file on each server to allow the BART user account to initiate a backup without being prompted for credentials. The `.pgpass` file is located in `/opt/PostgresPlus/9.6AS/.pgpass`: + +```text +127.0.0.1:5444:*:enterprisedb:password +192.168.2.24:5444:*:repuser:password +192.168.2.24:5432:*:postgres:password +``` + +For more information about using a `.pgpass` file, please see the [PostgreSQL documentation](https://www.postgresql.org/docs/current/libpq-pgpass.html). + +While connected to `MKTG` on 192.168.2.24, execute the following `CREATE ROLE` command to create the replication database superuser: + +```text +CREATE ROLE repuser WITH LOGIN SUPERUSER PASSWORD 'password'; +``` + +Access is granted in the `pg_hba.conf` file for the local Advanced Server: + +```text +# TYPE DATABASE USER ADDRESS METHOD +# "local" is for Unix domain socket connections only +local all all md5 +# IPv4 local connections: +host template1 enterprisedb 127.0.0.1/32 md5 +host edb enterprisedb 127.0.0.1/32 md5 +#host all all 127.0.0.1/32 md5 +# IPv6 local connections: +host all all ::1/128 md5 +# Allow replication connections from localhost, by a user with the +# replication privilege. +#local replication enterprisedb md5 +host replication enterprisedb 127.0.0.1/32 md5 +``` + +Similarly, access is granted in the `pg_hba.conf` file for the remote Advanced Server installation: + +```text +# TYPE DATABASE USER ADDRESS METHOD +# "local" is for Unix domain socket connections only +local all all md5 +# IPv4 local connections: +host template1 repuser 192.168.2.22/32 md5 +host all enterprisedb 127.0.0.1/32 md5 +#host all all 127.0.0.1/32 md5 +# IPv6 local connections: +host all all ::1/128 md5 +# Allow replication connections from localhost, by a user with the +# replication privilege. +#local replication enterprisedb md5 +host replication repuser 192.168.2.22/32 md5 +``` + +Access is also granted in the `pg_hba.conf` file for the remote PostgreSQL server: + +```text +# TYPE DATABASE USER ADDRESS METHOD +# "local" is for Unix domain socket connections only +local all all md5 +# IPv4 local connections: +host template1 postgres 192.168.2.22/32 md5 +host all all 127.0.0.1/32 md5 +# IPv6 local connections: +host all all ::1/128 md5 +# Allow replication connections from localhost, by a user with the +q# replication privilege. +#local replication postgres md5 +host replication postgres 192.168.2.22/32 md5 +``` + + + +## WAL Archiving Configuration Parameters + +Use the following parameters in the `postgresql.conf` file to enable WAL archiving. The `postgresql.conf` file for the local Advanced Server database (`ACCTG`) is set as follows: + +```text +wal_level = archive +archive_mode = on # allows archiving to be done + # (change requires restart) +#archive_command = '' # command to use to archive + a logfile segment + # placeholders: %p = path of + file to archive + # %f = file name only +max_wal_senders = 3 +``` + +When the `INIT` subcommand is invoked, the Postgres `archive_command` configuration parameter in the `postgresql.auto.conf` file will be set based on the BART `archive_command` parameter located in the BART configuration file. + +!!! Note + If the Postgres `archive_command` is already set, invoke the `INIT` subcommand with the `-- no-configure` option to prevent the `archive_command` from being reset. For details, see [INIT](../bart_user/03_using_bart/03_basic_bart_subcommand_usage/02_init/#init). + +```text +[BART] +bart_host= enterprisedb@192.168.2.22 +backup_path = /opt/backup +pg_basebackup_path = /usr/edb/as11/bin/pg_basebackup +retention_policy = 6 BACKUPS +logfile = /tmp/bart.log +scanner_logfile = /tmp/bart_scanner.log + +[ACCTG] +host = 127.0.0.1 +port = 5444 +user = enterprisedb +cluster_owner = enterprisedb +backup_name = acctg_%year-%month-%dayT%hour:%minute +archive_command = 'cp %p %a/%f' +description = "Accounting" +``` + +When the `INIT` subcommand is invoked, the `postgresql.auto.conf` file contains the following: + +```text +# Do not edit this file manually! +# It will be overwritten by ALTER SYSTEM command. +archive_command = 'cp %p /opt/backup/acctg/archived_wals/%f' +``` + +The `archive_command` uses the `cp` command instead of `scp` since the BART backup catalog is local to this database cluster and the BART user account (the account that owns the backup catalog, `enterprisedb`), is the same user account running Advanced Server. The result is that there is no directory permission conflict during the archive operation. + +The `postgresql.conf` file for the remote Advanced Server, `MKTG` is set as follows: + +```text +wal_level = archive +archive_mode = on # allows archiving to be done + # (change requires restart) +archive_command = '' # command to use to archive a + logfile segment + # placeholders: %p = path of + file to archive + # %f = file name only +max_wal_senders = 3 +``` + +When the `INIT` subcommand is invoked, the Postgres `archive_command` configuration parameter in the `postgresql.auto.conf` file will be set by the default BART format of the BART `archive_command` parameter (since it is not explicitly set for this database server in the BART configuration file). + +```text +[BART] +bart_host= enterprisedb@192.168.2.22 +backup_path = /opt/backup +pg_basebackup_path = /usr/edb/as11/bin/pg_basebackup +retention_policy = 6 BACKUPS +logfile = /tmp/bart.log +scanner_logfile = /tmp/bart_scanner.log +. +. +. +[MKTG] + +host = 192.168.2.24 +port = 5444 +user = repuser +cluster_owner = enterprisedb +backup_name = mktg_%year-%month-%dayT%hour:%minute +remote_host = enterprisedb@192.168.2.24 +description = "Marketing" +``` + +The default BART `archive_command` format is: + +```text +archive_command = 'scp %p %h:%a/%f' +``` + +The `postgresql.auto.conf` file contains the following after the `INIT` subcommand is invoked: + +```text +# Do not edit this file manually! +# It will be overwritten by ALTER SYSTEM command. +archive_command = 'scp %p +enterprisedb@192.168.2.22:/opt/backup/hr/archived_wals/%f' +``` + +The `archive_command` uses the `scp` command since the BART backup catalog is remote relative to this database cluster. The BART user account, `enterprisedb`, is specified on the `scp` command since this is the user account owning the BART backup catalog where the archived WAL files are to be copied. The result is that there is no directory permission conflict during the archive operation. + +The `postgresql.conf` file for the remote PostgreSQL server (`HR`) is set as follows: + +```text +wal_level = archive +archive_mode = on # allows archiving to be done + # (change requires restart) +#archive_command = '' # command to use to archive a + logfile segment + # placeholders: %p = path of + file to archive + # %f = file name only +max_wal_senders = 3 +``` + +When the `INIT` subcommand is invoked, the Postgres `archive_command` configuration parameter in the `postgresql.auto.conf` file will be set by the default BART format of the BART `archive_command` parameter (since it is not explicitly set for this database server in the BART configuration file): + +```text +[BART] + +bart_host= enterprisedb@192.168.2.22 +backup_path = /opt/backup +pg_basebackup_path = /usr/edb/as11/bin/pg_basebackup +retention_policy = 6 BACKUPS +logfile = /tmp/bart.log +scanner_logfile = /tmp/bart_scanner.log +. +. +. +[HR] + +host = 192.168.2.24 +port = 5432 +user = postgres +cluster_owner = postgres +backup_name = hr_%year-%month-%dayT%hour:%minute +remote_host = postgres@192.168.2.24 +copy_wals_during_restore = enabled +description = "Human Resources" +``` + +The default BART `archive_command` format is: + +```text +archive_command = 'scp %p %h:%a/%f' +``` + +The `postgresql.auto.conf` file contains the following after the `INIT` subcommand is invoked: + +```text +# Do not edit this file manually! +# It will be overwritten by ALTER SYSTEM command. +archive_command = 'scp %p +enterprisedb@192.168.2.22:/opt/backup/hr/archived_wals/%f' +``` + +The `archive_command` uses the `scp` command since the BART backup catalog is remote relative to this database cluster. The BART user account, `enterprisedb`, is specified on the `scp` command since this is the user account owning the BART backup catalog where the archived WAL files are to be copied. The result is that there is no directory permission conflict during the archive operation. + + + +## Creating the BART Backup Catalog (backup_path) + +Create the directory specified by the `backup_path` configuration parameter. + +```text +[BART] + +bart_host= enterprisedb@192.168.2.22 +backup_path = /opt/backup +pg_basebackup_path = /usr/edb/as11/bin/pg_basebackup +retention_policy = 6 BACKUPS +logfile = /tmp/bart.log +scanner_logfile = /tmp/bart_scanner.log +``` + +Ensure that the directory is owned by the BART user account: + +```text +[root@localhost opt]# pwd +/opt +[root@localhost opt]# mkdir backup +[root@localhost opt]# chown enterprisedb backup +[root@localhost opt]# chgrp enterprisedb backup +[root@localhost opt]# chmod 700 backup +[root@localhost opt]# ls -l | grep backup +drwx------ 2 enterprisedb enterprisedb 4096 Apr 23 15:36 backup +``` + +Use the BART `INIT` subcommand to complete the directory structure and set the Postgres `archive_command` configuration parameter. + +Before invoking any BART subcommands, set up a profile under the BART user account’s home directory to set the `LD_LIBRARY_PATH` and `PATH` environment variables. For more information regarding setting this variable, see the EDB Backup and Recovery Installation and Upgrade Guide available at the [EDB website](/bart/latest/bart_inst/). + +The `-o` option is specified with the `INIT` subcommand to force the setting of the Postgres `archive_command` configuration parameter when `archive_mode` is `off` or if the Postgres `archive_command` parameter is already set and needs to be overridden. + +```text +[user@localhost ~]$ su - enterprisedb +Password: +-bash-4.1$ bart INIT -o +INFO: setting archive_command for server 'acctg' +WARNING: archive_command is set. server restart is required +INFO: setting archive_command for server 'hr' +WARNING: archive_command is set. server restart is required +INFO: setting archive_command for server 'mktg' +WARNING: archive_command is set. server restart is required +``` + +The BART `SHOW-SERVERS` subcommand displays the following: + +```text +-bash-4.1$ bart SHOW-SERVERS +SERVER NAME : acctg +BACKUP FRIENDLY NAME: acctg_%year-%month-%dayT%hour:%minute +HOST NAME : 127.0.0.1 +USER NAME : enterprisedb +PORT : 5444 +REMOTE HOST : +RETENTION POLICY : 6 Backups +DISK UTILIZATION : 0.00 bytes +NUMBER OF ARCHIVES : 0 +ARCHIVE PATH : /opt/backup/acctg/archived_wals +ARCHIVE COMMAND : (disabled) +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +INCREMENTAL BACKUP : DISABLED +DESCRIPTION : "Accounting" +SERVER NAME : hr +BACKUP FRIENDLY NAME: hr_%year-%month-%dayT%hour:%minute +HOST NAME : 192.168.2.24 +USER NAME : postgres +PORT : 5432 +REMOTE HOST : postgres@192.168.2.24 +RETENTION POLICY : 6 Backups +DISK UTILIZATION : 0.00 bytes +NUMBER OF ARCHIVES : 0 +ARCHIVE PATH : /opt/backup/hr/archived_wals +ARCHIVE COMMAND : (disabled) +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +INCREMENTAL BACKUP : DISABLED +DESCRIPTION : "Human Resources" +SERVER NAME : mktg +BACKUP FRIENDLY NAME: mktg_%year-%month-%dayT%hour:%minute +HOST NAME : 192.168.2.24 +USER NAME : repuser +PORT : 5444 +REMOTE HOST : enterprisedb@192.168.2.24 +RETENTION POLICY : 6 Backups +DISK UTILIZATION : 0.00 bytes +NUMBER OF ARCHIVES : 0 +ARCHIVE PATH : /opt/backup/mktg/archived_wals +ARCHIVE COMMAND : (disabled) +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +INCREMENTAL BACKUP : DISABLED +DESCRIPTION : "Marketing" +-bash-4.1$ cd /opt/backup +-bash-4.1$ pwd +/opt/backup +-bash-4.1$ ls -l +total 12 +drwxrwxr-x 3 enterprisedb enterprisedb 4096 Mar 29 13:16 acctg +drwxrwxr-x 3 enterprisedb enterprisedb 4096 Mar 29 13:16 hr +drwxrwxr-x 3 enterprisedb enterprisedb 4096 Mar 29 13:16 mktg +-bash-4.1$ ls -l acctg +total 4 +drwxrwxr-x 2 enterprisedb enterprisedb 4096 Mar 29 13:16 archived_wals +-bash-4.1$ ls -l hr +total 4 +drwxrwxr-x 2 enterprisedb enterprisedb 4096 Mar 29 13:16 archived_wals +-bash-4.1$ ls -l mktg +total 4 +drwxrwxr-x 2 enterprisedb enterprisedb 4096 Mar 29 13:16 archived_wals +``` + +The `ARCHIVE PATH` field displays the full directory path to where the WAL files are copied. This directory path must match the directory path specified in the Postgres `archive_command` parameter of the `postgresql.conf` file or the `postgresql.auto.conf` file of each database server. + + + +### Starting the Database Servers with WAL Archiving + +After the BART backup catalog directory structure has been configured, start the archiving of WAL files from the database servers by restarting each database server. + +On BART host 192.168.2.22: + +```text +[root@localhost data]# service ppas-9.6 restart +``` + +On remote host 192.168.2.24: + +```text +[root@localhost data]# service ppas-9.6 restart + +[root@localhost data]# service postgresql-9.6 restart +``` + +In the BART backup catalog, verify that the WAL files are archiving. + +Archived WAL files may not appear very frequently depending upon how often WAL archiving is set to switch to a new segment file with the `archive_timeout` parameter in your database server configuration settings. + +Verify that there are no archiving-related errors in the database server log files. + +## Taking a Full Backup + +The following code sample shows the first full backup of the database servers. + +```text +-bash-4.1$ bart BACKUP -s acctg -z +INFO: creating backup for server 'acctg' +INFO: backup identifier: '1490809695281' +60776/60776 kB (100%), 1/1 tablespace + +INFO: backup completed successfully +INFO: backup checksum: 37f3defb98ca88dcf05079815555dfc2 of base.tar.gz +INFO: +BACKUP DETAILS: +BACKUP STATUS: active +BACKUP IDENTIFIER: 1490809695281 +BACKUP NAME: acctg_2017-03-29T13:48 +BACKUP PARENT: none +BACKUP LOCATION: /opt/backup/acctg/1490809695281 +BACKUP SIZE: 6.10 MB +BACKUP FORMAT: tar.gz +BACKUP TIMEZONE: US/Eastern +XLOG METHOD: fetch +BACKUP CHECKSUM(s): 1 +ChkSum File +37f3defb98ca88dcf05079815555dfc2 base.tar.gz + +TABLESPACE(s): 0 +START WAL LOCATION: 000000010000000000000004 +STOP WAL LOCATION: 000000010000000000000004 +BACKUP METHOD: streamed +BACKUP FROM: primary +START TIME: 2017-03-29 13:48:15 EDT +STOP TIME: 2017-03-29 13:48:17 EDT +TOTAL DURATION: 2 sec(s) + +-bash-4.1$ bart BACKUP -s mktg -z +INFO: creating backup for server 'mktg' +INFO: backup identifier: '1490809751193' +61016/61016 kB (100%), 1/1 tablespace + +INFO: backup completed successfully +INFO: backup checksum: 8b010e130a105e76d01346bb56dfcf14 of base.tar.gz +INFO: +BACKUP DETAILS: +BACKUP STATUS: active +BACKUP IDENTIFIER: 1490809751193 +BACKUP NAME: mktg_2017-03-29T13:49 +BACKUP PARENT: none +BACKUP LOCATION: /opt/backup/mktg/1490809751193 +BACKUP SIZE: 6.13 MB +BACKUP FORMAT: tar.gz +BACKUP TIMEZONE: US/Eastern +XLOG METHOD: fetch +BACKUP CHECKSUM(s): 1 +ChkSum File +8b010e130a105e76d01346bb56dfcf14 base.tar.gz + +TABLESPACE(s): 0 +START WAL LOCATION: 000000010000000100000085 +BACKUP METHOD: streamed +BACKUP FROM: primary +START TIME: 2017-03-29 13:49:11 EDT +STOP TIME: 2017-03-29 13:49:14 EDT +TOTAL DURATION: 3 sec(s) + +-bash-4.1$ bart BACKUP -s hr -z +INFO: creating backup for server 'hr' +INFO: backup identifier: '1490809824946' +38991/38991 kB (100%), 1/1 tablespace +INFO: backup completed successfully +INFO: backup checksum: 277e8a1a80ba3474f541eb316a417c9a of base.tar.gz +INFO: +BACKUP DETAILS: +BACKUP STATUS: active +BACKUP IDENTIFIER: 1490809824946 +BACKUP NAME: hr_2017-03-29T13:50 +BACKUP PARENT: none +BACKUP LOCATION: /opt/backup/hr/1490809824946 +BACKUP SIZE: 2.59 MB +BACKUP FORMAT: tar.gz +BACKUP TIMEZONE: US/Eastern +XLOG METHOD: fetch +BACKUP CHECKSUM(s): 1 +ChkSum File +277e8a1a80ba3474f541eb316a417c9a base.tar.gz + +TABLESPACE(s): 0 +START WAL LOCATION: 000000010000000000000002 +BACKUP METHOD: streamed +BACKUP FROM: primary +START TIME: 2017-03-29 13:50:25 EDT +STOP TIME: 2017-03-29 13:50:26 EDT +TOTAL DURATION: 1 sec(s) +``` + +The following code sample shows the backup directories created for each backup of each database server. The backup ID is used as the backup directory name. + +```text +-bash-4.1$ cd /opt/backup +-bash-4.1$ ls -l +total 12 +drwxrwxr-x 4 enterprisedb enterprisedb 4096 Mar 29 13:48 acctg +drwxrwxr-x 4 enterprisedb enterprisedb 4096 Mar 29 13:50 hr +drwxrwxr-x 4 enterprisedb enterprisedb 4096 Mar 29 13:49 mktg +-bash-4.1$ ls -l acctg +total 8 +drwx------ 2 enterprisedb enterprisedb 4096 Mar 29 13:48 1490809695281 +drwxrwxr-x 2 enterprisedb enterprisedb 4096 Mar 29 13:48 archived_wals +-bash-4.1$ ls -l hr +total 8 +drwx------ 2 enterprisedb enterprisedb 4096 Mar 29 13:50 1490809824946 +drwxrwxr-x 2 enterprisedb enterprisedb 4096 Mar 29 13:50 archived_wals +-bash-4.1$ ls -l mktg +total 8 +drwx------ 2 enterprisedb enterprisedb 4096 Mar 29 13:49 1490809751193 +drwxrwxr-x 2 enterprisedb enterprisedb 4096 Mar 29 13:49 archived_wals +``` + + + +## Using Point-In-Time Recovery + +This section demonstrates using the point-in-time recovery operation on the remote PostgreSQL database server. + +The following tables were created about two minutes apart with WAL archiving enabled: + +```text +postgres=# \dt + + List of relations +Schema | Name | Type | Owner + +--------+----------------+---------+--------- +public | hr_rmt_t1_1356 | table | postgres +public | hr_rmt_t1_1358 | table | postgres +public | hr_rmt_t1_1400 | table | postgres +public | hr_rmt_t1_1402 | table | postgres +public | hr_rmt_t1_1404 | table | postgres +public | hr_rmt_t1_1406 | table | postgres +(6 rows) +``` + +In the table name `hr_rmt_t_, n` represents the active timeline. `` is the approximate time the table was created. For example, `hr_rmt_t1_1356` was created at approximately 1:56 PM while timeline #1 is active. + +The PostgreSQL database server was then stopped. WAL files that have been created, but not yet archived must be identified, and then saved. The following archived WAL files are in the BART backup catalog: + +```text +-bash-4.1$ ls -l hr/archived_wals +total 49156 +-rw------- 1 enterprisedb enterprisedb 16777216 Mar 29 13:50 +000000010000000000000001 +-rw------- 1 enterprisedb enterprisedb 16777216 Mar 29 13:50 +000000010000000000000002 +-rw------- 1 enterprisedb enterprisedb 302 Mar 29 13:50 +000000010000000000000002.00000028.backup +-rw------- 1 enterprisedb enterprisedb 16777216 Mar 29 14:07 +000000010000000000000003 +``` + +The following sample lists the current PostgreSQL server WAL files. The unarchived WAL files are marked with two stars (\*\*). + +```text +-bash-4.1$ cd /opt/PostgreSQL/9.6/data/pg_xlog +-bash-4.1$ pwd +/opt/PostgreSQL/9.6/data/pg_xlog +-bash-4.1$ ls -l +total 49160 +-rw------- 1 postgres postgres 302 Mar 29 13:50 +000000010000000000000002.00000028.backup +-rw------- 1 postgres postgres 16777216 Mar 29 14:07 +000000010000000000000003 +-rw------- 1 postgres postgres 16777216 Mar 29 14:07 +**000000010000000000000004** +-rw------- 1 postgres postgres 16777216 Mar 29 13:50 +**000000010000000000000005** +drwx------ 2 postgres postgres 4096 Mar 29 14:07 archive_status +``` + +Copies of the unarchived WAL files are saved to a temporary location: + +```text +-bash-4.1$ mkdir /tmp/unarchived_pg96_wals +-bash-4.1$ pwd +/opt/PostgreSQL/9.6/data/pg_xlog +bash-4.1$ cp -p 000000010000000000000004 /tmp/unarchived_pg96_wals +bash-4.1$ cp -p 000000010000000000000005 /tmp/unarchived_pg96_wals +bash-4.1$ ls -l /tmp/unarchived_pg96_wals +total 32768 +-rw------- 1 postgres postgres 16777216 Mar 29 14:07 000000010000000000000004 +-rw------- 1 postgres postgres 16777216 Mar 29 13:50 000000010000000000000005 +``` + +On the remote host, a directory is created to which the PostgreSQL database cluster is to be restored. This restore path is named `/opt/restore_pg96` and is owned by user account `postgres`. + +```text +[user@localhost ~]$ su root +Password: +[root@localhost user]# cd /opt +[root@localhost opt]# mkdir restore_pg96 +[root@localhost opt]# chown postgres restore_pg96 +[root@localhost opt]# chgrp postgres restore_pg96 +[root@localhost opt]# chmod 700 restore_pg96 +[root@localhost opt]# ls -l +total 16 +drwxr-xr-x 4 root daemon 4096 Mar 29 12:10 PostgresPlus +drwxr-xr-x 3 root daemon 4096 Mar 29 12:25 PostgreSQL +drwx------ 2 postgres postgres 4096 Mar 29 14:15 restore_pg96 +drwxr-xr-x. 2 root root 4096 Nov 22 2013 rh +``` + +In the BART configuration file, the remote user and remote host IP address, `postgres@192.168.2.24`, have been set with the `remote_host` parameter. If not given in the BART configuration file, this information must then be specified by the `--remote-host` option when giving the `RESTORE` subcommand (for example, `bart RESTORE --remote-host postgres@192.168.2.24 …`). + +```text +[HR] + +host = 192.168.2.24 +port = 5432 +user = postgres +cluster_owner = postgres +backup_name = hr_%year-%month-%dayT%hour:%minute +remote_host = postgres@192.168.2.24 +copy_wals_during_restore = enabled +description = "Human Resources" +``` + +Use the `SHOW-BACKUPS` subcommand to identify the backup to use with the `RESTORE` subcommand. + +```text +SERVER NAME BACKUP ID BACKUP NAME BACKUP PARENT +BACKUP TIME +BACKUP SIZE WAL(s) SIZE WAL FILES STATUS +acctg 1490809695281 acctg_2017-03-29T13:48 none +2017-03-29 13:48:17 EDT +6.10 MB 32.00 MB 2 active +hr 1490809824946 hr_2017-03-29T13:50 none +2017-03-29 13:50:26 EDT +2.59 MB 32.00 MB 2 active +mktg 1490809751193 mktg_2017-03-29T13:49 none +2017-03-29 13:49:14 EDT +6.13 MB 64.00 MB 4 active +``` + +The `-t` option with the `SHOW-BACKUPS` subcommand displays additional backup information: + +```text +-bash-4.1$ bart SHOW-BACKUPS -s hr -i 1490809824946 -t +SERVER NAME : hr +BACKUP ID : 1490809824946 +BACKUP NAME : hr_2017-03-29T13:50 +BACKUP PARENT : none +BACKUP STATUS : active +BACKUP TIME : 2017-03-29 13:50:26 EDT +BACKUP SIZE : 2.59 MB +WAL(S) SIZE : 32.00 MB +NO. OF WALS : 2 +FIRST WAL FILE : 000000010000000000000002 +CREATION TIME : 2017-03-29 13:50:31 EDT +LAST WAL FILE : 000000010000000000000003 +CREATION TIME : 2017-03-29 14:07:35 EDT +``` + +A recovery is made using timeline `1` to `2017-03-29 14:01:00`. + +```text +-bash-4.1$ bart RESTORE -s hr -i hr_2017-03-29T13:50 -p +/opt/restore_pg96 -t 1 -g '2017-03-29 14:01:00' +INFO: restoring backup 'hr_2017-03-29T13:50' of server 'hr' +INFO: base backup restored +INFO: copying WAL file(s) to +postgres@192.168.2.24:/opt/restore_pg96/archived_wals +INFO: writing recovery settings to postgresql.auto.conf file +INFO: archiving is disabled +INFO: permissions set on $PGDATA +INFO: restore completed successfully +``` + +The following example shows the restored backup files in the restore path directory, `/opt/restore_pg96`: + +```text +-bash-4.1$ pwd +/opt/restore_pg96 +-bash-4.1$ ls -l +total 128 +drwxr-xr-x 2 postgres postgres 4096 Mar 29 14:27 archived_wals +-rw------- 1 postgres postgres 206 Mar 29 13:50 backup_label +drwx------ 5 postgres postgres 4096 Mar 29 12:25 base +drwx------ 2 postgres postgres 4096 Mar 29 14:27 global +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_clog +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_commit_ts +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_dynshmem +-rw------- 1 postgres postgres 4212 Mar 29 13:18 pg_hba.conf +-rw------- 1 postgres postgres 1636 Mar 29 12:25 pg_ident.conf +drwxr-xr-x 2 postgres postgres 4096 Mar 29 13:45 pg_log +drwx------ 4 postgres postgres 4096 Mar 29 12:25 pg_logical +drwx------ 4 postgres postgres 4096 Mar 29 12:25 pg_multixact +drwx------ 2 postgres postgres 4096 Mar 29 13:43 pg_notify +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_replslot +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_serial +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_snapshots +drwx------ 2 postgres postgres 4096 Mar 29 13:43 pg_stat +drwx------ 2 postgres postgres 4096 Mar 29 13:50 pg_stat_tmp +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_subtrans +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_tblspc +drwx------ 2 postgres postgres 4096 Mar 29 12:25 pg_twophase +-rw------- 1 postgres postgres 4 Mar 29 12:25 PG_VERSION +drwx------ 3 postgres postgres 4096 Mar 29 14:27 pg_xlog +-rw------- 1 postgres postgres 169 Mar 29 13:24 postgresql.auto.conf +-rw-r--r-- 1 postgres postgres 21458 Mar 29 14:27 postgresql.conf +-rw-r--r-- 1 postgres postgres 118 Mar 29 14:27 postgresql.auto.conf +``` + +Copy the saved, unarchived WAL files to the restore path `pg_xlog` subdirectory (`/opt/restore_pg96/pg_xlog`): + +```text +-bash-4.1$ pwd +/opt/restore_pg96/pg_xlog +-bash-4.1$ ls -l +total 16388 +-rw------- 1 postgres postgres 16777216 Mar 29 13:50 +000000010000000000000002 +drwx------ 2 postgres postgres 4096 Mar 29 14:27 archive_status +-bash-4.1$ ls -l /tmp/unarchived_pg96_wals +total 32768 +-rw------- 1 postgres postgres 16777216 Mar 29 14:07 +000000010000000000000004 +-rw------- 1 postgres postgres 16777216 Mar 29 13:50 +000000010000000000000005 +-bash-4.1$ cp -p /tmp/unarchived_pg96_wals/* . +-bash-4.1$ ls -l +total 49156 +-rw------- 1 postgres postgres 16777216 Mar 29 13:50 +000000010000000000000002 +-rw------- 1 postgres postgres 16777216 Mar 29 14:07 +000000010000000000000004 +-rw------- 1 postgres postgres 16777216 Mar 29 13:50 +000000010000000000000005 +drwx------ 2 postgres postgres 4096 Mar 29 14:27 archive_status +``` + +Inspect the `/opt/restore_pg96/postgresql.auto.conf` file to verify that it contains the correct recovery settings: + +```text +restore_command = 'cp archived_wals/%f %p' +recovery_target_time = '2017-03-29 14:01:00' +recovery_target_timeline = 1 +``` + +Note that the command restores from the `archived_wals` subdirectory of `/opt/restore_pg96` since the `copy_wals_during_restore` parameter in the BART configuration file is set to `enabled` for database server `hr`. + +Start the database server to initiate the point-in-time recovery operation: + +```text +[user@localhost ~]$ su postgres +Password: +bash-4.1$ cd /opt/restore_pg96 +bash-4.1$ /opt/PostgreSQL/9.6/bin/pg_ctl start -D /opt/restore_pg96 -l +/opt/restore_pg96/pg_log/logfile +server starting +``` + +Inspect the database server log file to ensure the operation did not result in any errors: + +```text +2017-03-29 14:33:23 EDT LOG: database system was interrupted; last known +up at 2017-03-29 13:50:25 EDT +2017-03-29 14:33:23 EDT LOG: starting point-in-time recovery to +2017-03-29 14:01:00-04 +2017-03-29 14:33:23 EDT LOG: restored log file +"000000010000000000000002" from archive +2017-03-29 14:33:23 EDT LOG: redo starts at 0/2000098 +2017-03-29 14:33:23 EDT LOG: consistent recovery state reached at +0/20000C0 +2017-03-29 14:33:23 EDT LOG: restored log file +"000000010000000000000003" from archive +2017-03-29 14:33:23 EDT LOG: recovery stopping before commit of +transaction 1762, time 2017-03-29 14:02:28.100072-04 +2017-03-29 14:33:23 EDT LOG: redo done at 0/303F390 +2017-03-29 14:33:23 EDT LOG: last completed transaction was at log time +2017-03-29 14:00:43.351333-04 +cp: cannot stat `archived_wals/00000002.history': No such file or +directory +2017-03-29 14:33:23 EDT LOG: selected new timeline ID: 2 +cp: cannot stat `archived_wals/00000001.history': No such file or +directory +2017-03-29 14:33:23 EDT LOG: archive recovery complete +2017-03-29 14:33:23 EDT LOG: MultiXact member wraparound protections are +now enabled +2017-03-29 14:33:23 EDT LOG: database system is ready to accept +connections +2017-03-29 14:33:23 EDT LOG: autovacuum launcher started +``` + +The tables that exist in the recovered database cluster are: + +```text +postgres=# \dt + List of relations +Schema | Name | Type | Owner +--------+----------------+-------+---------- +public | hr_rmt_t1_1356 | table | postgres +public | hr_rmt_t1_1358 | table | postgres +public | hr_rmt_t1_1400 | table | postgres +(3 rows) +``` + +Since recovery was up to and including 2017-03-29 14:01:00, the following tables created after 14:01 are not present: + +```text +public | hr_rmt_t1_1402 | table | postgres +public | hr_rmt_t1_1404 | table | postgres +public | hr_rmt_t1_1406 | table | postgres +``` + +The BART `RESTORE` operation stops WAL archiving by adding an `archive_mode = off` parameter at the very end of the `postgresql.conf` file. This last parameter in the file overrides any other previous setting of the same parameter in the file. Delete the last setting and restart the database server to start WAL archiving. + +```text +# Add settings for extensions here +archive_mode = off +``` diff --git a/product_docs/docs/bart/2.5/bart_ref/images/EDB_logo.png b/product_docs/docs/bart/2.5/bart_ref/images/EDB_logo.png new file mode 100755 index 00000000000..39a54822d85 Binary files /dev/null and b/product_docs/docs/bart/2.5/bart_ref/images/EDB_logo.png differ diff --git a/product_docs/docs/bart/2.5/bart_ref/images/edb.png b/product_docs/docs/bart/2.5/bart_ref/images/edb.png new file mode 100755 index 00000000000..71e5bdde787 Binary files /dev/null and b/product_docs/docs/bart/2.5/bart_ref/images/edb.png differ diff --git a/product_docs/docs/bart/2.5/bart_ref/images/edb_logo.svg b/product_docs/docs/bart/2.5/bart_ref/images/edb_logo.svg new file mode 100755 index 00000000000..f24d1dfefee --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_ref/images/edb_logo.svg @@ -0,0 +1,19 @@ + + + edb-logo-disc-dark + + + + \ No newline at end of file diff --git a/product_docs/docs/bart/2.5/bart_ref/images/image2.png b/product_docs/docs/bart/2.5/bart_ref/images/image2.png new file mode 100755 index 00000000000..4eba2e7efa7 Binary files /dev/null and b/product_docs/docs/bart/2.5/bart_ref/images/image2.png differ diff --git a/product_docs/docs/bart/2.5/bart_ref/index.mdx b/product_docs/docs/bart/2.5/bart_ref/index.mdx new file mode 100644 index 00000000000..6a8817bd039 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_ref/index.mdx @@ -0,0 +1,33 @@ +--- +navTitle: Reference Guide +title: "EDB Postgres Backup and Recovery Reference Guide" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/genindex.html" + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/conclusion.html" + - "/edb-docs/d/edb-backup-and-recovery-tool/reference/reference-guide/2.6.1/index.html" +--- + +This guide acts as a quick reference for BART subcommands and provides comprehensive examples of the following BART operations: + +- Performing a full backup of database servers +- Performing a point-in-time recovery (PITR) on a remote PostgreSQL database server +- Restoring an incremental backup +- Restoring a database cluster with tablespaces +- Evaluating, marking, and deleting backups and incremental backups +- Configuring and operating local and remote database servers + +For detailed information about BART subcommands and operations, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). + +The document is organized as follows: + +- See [Subcommands](01_bart_subcommands_examples/#using_bart_subcommands) to view BART subcommand examples. +- See [Examples](02_additional_examples/#examples) to view BART operations examples. +- See [Sample BART System](03_sample_bart_system_with_local_and_remote_database_servers/#a_sample_bart_system_with_local_and_remote_database_servers) to view examples of both local and remote database server configuration and operation. + +
+ +bart_subcommands_examples additional_examples sample_bart_system_with_local_and_remote_database_servers conclusion + +
diff --git a/product_docs/docs/bart/2.5/bart_user/01_introduction.mdx b/product_docs/docs/bart/2.5/bart_user/01_introduction.mdx new file mode 100644 index 00000000000..1212b2847bf --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/01_introduction.mdx @@ -0,0 +1,55 @@ +--- +title: "Introduction" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/introduction.html" +--- + +The EDB Backup and Recovery Tool (BART) is an administrative utility that provides simplified backup and recovery management for multiple local or remote EDB Advanced Server and PostgreSQL database servers. + +BART provides the following features: + +- Support for complete, hot, physical backups of multiple Advanced Servers and PostgreSQL database servers +- Support for two types of backups – full base backups and block-level incremental backups +- Backup and recovery management of database servers on local or remote hosts +- A single, centralized catalog for backup data +- Retention policy support for defining and managing how long backups should be kept +- The capability to store the backup data in compressed format +- Verified backup data with checksums +- Backup information displayed in an easy-to-read format +- A simplified point-in-time recovery process + +This guide provides the following information about using BART: + +- an [overview](02_overview/#overview) of the BART components and concepts. +- [backup and recovery management process](03_using_bart/#using_bart). +- [using tablespaces](04_using_tablespaces/#using_tablespaces). + +For information about installing BART, see the *EDB Backup and Recovery Installation and Upgrade Guide*; for examples of BART operations and subcommand usage, see the *EDB Backup and Recovery Reference Guide*. These guides are available at the [EDB website](/bart/latest/bart_inst/). + + + +## Conventions Used in this Guide + +The following is a list of conventions used throughout this document. + +- Much of the information in this document applies interchangeably to the PostgreSQL and EDB Advanced Server database systems. The term *Advanced Server* is used to refer to EDB Advanced Server. The term *Postgres* is used to generically refer to both PostgreSQL and Advanced Server. When a distinction needs to be made between these two database systems, the specific names, PostgreSQL or Advanced Server are used. + +- The installation directory of the PostgreSQL or Advanced Server products is referred to as `POSTGRES_INSTALL_HOME`: + + - For PostgreSQL Linux installations, this defaults to `/opt/PostgreSQL/` for version 10 and earlier. For later versions, the installation directory is `/var/lib/pgsql/`. + - For Advanced Server Linux installations performed using the interactive installer for version 10 and earlier, this defaults to `/opt/PostgresPlus/AS` or `/opt/edb/as`. For Advanced Server Linux installations performed with an RPM package, this defaults to `/usr/ppas-` or `/usr/edb/as`. For Advanced Server Linux installations performed with an RPM package for version 11 or later, this defaults to `/usr/edb/as`. + +## Restrictions on pg_basebackup + +BART takes full backups using the `pg_basebackup` utility program under the following conditions: + +- The backup is taken on a standby server. +- The `--with-pg_basebackup` option is specified with the `BACKUP` subcommand (see [Backup](03_using_bart/03_basic_bart_subcommand_usage/03_backup/#backup)). +- The number of thread count in effect is 1, and the `with-pg_basebackup` option is not specified with the `BACKUP` subcommand. +- Database servers can only be backed up using `pg_basebackup` utility program of the same or later version than the database server version. + +In the global section of the BART configuration file, the `pg_basebackup_path` parameter specifies the complete directory path to the `pg_basebackup` program. For information about the `pg_basebackup_path` parameter and the `thread_count`, see the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/). + +For information about `pg_basebackup`, see the [PostgreSQL Core Documentation](https://postgresql.org/docs/current/static/app-pgbasebackup.html). diff --git a/product_docs/docs/bart/2.5/bart_user/02_overview/01_block-level_incremental_backup/01_incremental_backup_limitations_and_requirements.mdx b/product_docs/docs/bart/2.5/bart_user/02_overview/01_block-level_incremental_backup/01_incremental_backup_limitations_and_requirements.mdx new file mode 100644 index 00000000000..a3fe8894d09 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/02_overview/01_block-level_incremental_backup/01_incremental_backup_limitations_and_requirements.mdx @@ -0,0 +1,42 @@ +--- +title: "Incremental Backup Limitations and Requirements" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/incremental_backup_limitations_and_requirements.html" +--- + + + +The following limitations apply to incremental backup: + +- If you have restored a full or incremental backup, you must take a full backup before enabling incremental backup. +- If a standby node has been promoted to the role of a primary node, you must take a full backup before enabling incremental backup on the cluster. +- On a standby database server, you cannot take an incremental backup. + +You must meet the following requirements before implementing incremental backup: + +- You must create or select an operating system account to be used as the BART user account. + +- You must create or select the replication database user, which must be a superuser. + +- In the BART configuration file: + + - You must set the `cluster_owner` parameter to the Linux operating system user account that owns the database cluster directory from which incremental backups are to be taken. + - You must enable the `allow_incremental_backups` parameter. + +- A passwordless SSH/SCP connection must be established between the BART user account on the BART host and the `cluster_owner` user account on the database server. + + It must be noted that a passwordless SSH/SCP connection must be established even if BART and the database server are running on the same host and the BART user account and the `cluster_owner` user account are the same account. + +- In addition to the BART host (where the BART backup catalog resides), the BART package must also be installed on every remote database server on which incremental backups are to be restored. To restore an incremental backup, the `bart` program must be executable on the remote host by the remote user (the remote user is specified by the `remote_host` parameter in the BART configuration file or by the `-r` option when using the `RESTORE` subcommand to restore the incremental backup). + +- When [restoring incremental backups on a remote database server](05_restoring_an_incremental_backup/#restoring-an-incremental-backup-on-a-remote-host), a passwordless SSH/SCP connection must be established from the BART user account on the BART host to the remote user on the remote host (the remote user is specified by the `remote_host` parameter in the BART configuration file or by the `-r` option when using the `RESTORE` subcommand to restore the incremental backup). + +- Compression of archived WAL files in the BART backup catalog is not permitted for database servers on which incremental backups are to be taken. The `wal_compression` setting in the BART configuration file must be disabled for those database servers. + +- The incremental backup must be on the same timeline as the parent backup. The timeline changes after each recovery operation so an incremental backup cannot use a parent backup from an earlier timeline. + +For information about configuring these requirements, see the EDB Backup and Recovery Installation and Upgrade Guide available at the [EDB website](/bart/latest/bart_inst/). + +The following section provides an overview of the basic incremental backup concepts. diff --git a/product_docs/docs/bart/2.5/bart_user/02_overview/01_block-level_incremental_backup/02_concept_overview.mdx b/product_docs/docs/bart/2.5/bart_user/02_overview/01_block-level_incremental_backup/02_concept_overview.mdx new file mode 100644 index 00000000000..8183d4802bd --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/02_overview/01_block-level_incremental_backup/02_concept_overview.mdx @@ -0,0 +1,33 @@ +--- +title: "Concept Overview" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/concept_overview.html" +--- + + + +Using incremental backups involves the following sequence of steps: + +1. Configure BART, and enable and initiate archiving of WAL files to the `archive_path` in the same manner as done for full backups. + + The default `archive_path` is the BART backup catalog (`//archived_wals`). Using the `` parameter in the server section of the BART configuration file, you can specify the location where WAL files will be archived. + + For more information about the `archive_path` parameter and configuring BART, see the EDB Backup and Recovery Installation and Upgrade Guide available at the [EDB website](/bart/latest/bart_inst/). + +2. Take an initial full backup with the `BACKUP` subcommand. This full backup establishes the parent of the first incremental backup. + +3. Scan all WAL files produced by database servers on which incremental backups are to be taken. These WAL files are scanned once they have been archived to the `archive_path`. + + Each scanned WAL file results in a modified block map (MBM) file that records the location of modified blocks obtained from the corresponding WAL file. The BART WAL scanner program `bart-scanner` performs this process. + +4. Take incremental backups using the `BACKUP` subcommand with the `--parent` option to specify the backup identifier or name of a previous, full backup or an incremental backup. Any previous backup may be chosen as the parent as long as all backups belong to the same timeline. + +5. The incremental backup process identifies which WAL files may contain changes from when the parent backup was taken to the starting point of the incremental backup. The corresponding MBM files are used to locate and copy the modified blocks to the incremental backup directory along with other database cluster directories and files. Instead of backing up all, full relation files, only the modified blocks are copied and saved. In addition, the relevant MBM files are condensed into one consolidated block map (CBM) file that is stored with the incremental backup. + + Multiple block copier threads can be used to copy the modified blocks to the incremental backup directory. See the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/) for information about setting the `thread_count` parameter in the BART configuration file. See [Backup](../../03_using_bart/03_basic_bart_subcommand_usage/03_backup/#backup) for information about using the `--thread-count` option with the `BACKUP` subcommand. + +6. Invoke the restore process for an incremental backup using the `RESTORE` subcommand in the same manner as restoring a full backup. The `-i` option specifies the backup identifier or name of the incremental backup to restore. The restore process begins by going back through the chain of past, parent incremental backups until the initial full backup starting the chain is identified. This full backup provides the initial set of directories and files to be restored to the location specified with the `-p` option. Each subsequent incremental backup in the chain is then restored. Restoration of an incremental backup uses its CBM file to restore the modified blocks from the incremental backup. + +The following sections provide some additional information on these procedures. diff --git a/product_docs/docs/bart/2.5/bart_user/02_overview/01_block-level_incremental_backup/03_wal_scanning_preparation_for_an_incremental_backup.mdx b/product_docs/docs/bart/2.5/bart_user/02_overview/01_block-level_incremental_backup/03_wal_scanning_preparation_for_an_incremental_backup.mdx new file mode 100644 index 00000000000..5264499e13e --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/02_overview/01_block-level_incremental_backup/03_wal_scanning_preparation_for_an_incremental_backup.mdx @@ -0,0 +1,54 @@ +--- +title: "WAL Scanning – Preparation for an Incremental Backup" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/wal_scanning_preparation_for_an_incremental_backup.html" +--- + + + +The WAL scanner program (`bart-scanner`) scans the WAL files created from the time of the parent backup up to the start of the incremental backup to determine which blocks have modified since the parent backup, and records the information in a file called the *modified block map (MBM) file*. One MBM file is created for each WAL file. + +The MBM file is stored in the directory where archived_wals will be stored, as specified in the `archive_path` parameter in the `bart.cfg` file. If the `archive_path` is not specified, the default `archived_wals` directory is: + +`//` + +Where: + +`` is the BART backup catalog parent directory specified in the global section of the BART configuration file. + +`` is the lowercase conversion of the database server name specified in the server section of the BART configuration file. + +The following code snippet is the content of the archive path showing the MBM files created for the WAL files. (The user name and group name of the files have been removed from the example to list the WAL files and MBM files in a more comparable manner): + +```text +[root@localhost archived_wals]# pwd +/opt/backup/acctg/archived_wals +[root@localhost archived_wals]# ls -l +total 131104 +-rw------- 1 ... ... 16777216 Oct 12 09:38 000000010000000100000078 +-rw------- 1 ... ... 16777216 Oct 12 09:38 000000010000000100000079 +-rw------- 1 ... ... 16777216 Oct 12 09:38 00000001000000010000007A +-rw------- 1 ... ... 16777216 Oct 12 09:35 00000001000000010000007B +-rw------- 1 ... ... 16777216 Oct 12 09:38 00000001000000010000007C +-rw------- 1 ... ... 16777216 Oct 12 09:39 00000001000000010000007D +-rw------- 1 ... ... 16777216 Oct 12 09:42 00000001000000010000007E +-rw------- 1 ... ... 16777216 Oct 12 09:47 00000001000000010000007F +-rw-rw-r-- 1 ... ... 161 Oct 12 09:49 0000000100000001780000280000000179000000.mbm +-rw-rw-r-- 1 ... ... 684 Oct 12 09:49 000000010000000179000028000000017A000000.mbm +-rw-rw-r-- 1 ... ... 161 Oct 12 09:49 00000001000000017A000028000000017B000000.mbm +-rw-rw-r-- 1 ... ... 161 Oct 12 09:49 00000001000000017B000028000000017C000000.mbm +-rw-rw-r-- 1 ... ...1524 Oct 12 09:49 00000001000000017C000028000000017D000000.mbm +-rw-rw-r-- 1 ... ... 161 Oct 12 09:49 00000001000000017D000028000000017E000000.mbm +-rw-rw-r-- 1 ... ... 161 Oct 12 09:49 00000001000000017E000028000000017F000000.mbm +-rw-rw-r-- 1 ... ... 161 Oct 12 09:49 00000001000000017F0000280000000180000000.mbm +``` + +MBM files have the suffix, `.mbm`. + +In preparation for any incremental backup, the WAL files should be scanned as soon as they are copied to the `archive_path`. Thus, the WAL scanner should be running as soon as the WAL files from the database cluster are archived to the `archive_path`. If the `archive_path` contains WAL files that have not yet been scanned, starting the WAL scanner begins scanning these files. If WAL file fails to be scanned (resulting in a missing MBM file), you can use the WAL scanner to specify an individual WAL file. + +Under certain conditions such as when the Network File System (NFS) is used to copy WAL files to the `archive_path`, the WAL files may have been missed by the WAL scanner program for scanning and creation of MBM files. Use the `scan_interval` parameter in the BART configuration file to initiate force scanning of WAL files in the `archive_path` to ensure MBM files are generated. See the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/) for more information about the `scan_interval` parameter. + +See [Running the BART WAL Scanner](../../03_using_bart/04_running_the_bart_wal_scanner/#running_the_bart_wal_scanner) for information about using the WAL scanner. diff --git a/product_docs/docs/bart/2.5/bart_user/02_overview/01_block-level_incremental_backup/04_performing_an_incremental_backup.mdx b/product_docs/docs/bart/2.5/bart_user/02_overview/01_block-level_incremental_backup/04_performing_an_incremental_backup.mdx new file mode 100644 index 00000000000..7cd01990da6 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/02_overview/01_block-level_incremental_backup/04_performing_an_incremental_backup.mdx @@ -0,0 +1,76 @@ +--- +title: "Performing an Incremental Backup" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/performing_an_incremental_backup.html" +--- + + + +The WAL files produced at the time of the parent backup up to the start of the incremental backup contain information about which blocks were modified during that time interval. That information is consolidated into an MBM file for each WAL file by the WAL scanner. + +The MBM files for the relevant WAL files are read, and the information is used to copy the modified blocks from the database cluster to the `archived_wals` directory as specified in the `archive_path` parameter in the `bart.cfg` file. When compared to a full backup, the number and sizes of relation files can be significantly less for an incremental backup. + +For comparison, the following is an abbreviated list of the files copied to the archived `base` subdirectory of a full backup for one database: + +```text +[root@localhost 14845]# pwd +/opt/backup/acctg/1476301238969/base/base/14845 +[root@localhost 14845]# ls +112 13182_vm 14740 16467 16615 2608_vm 2655 2699 2995 ... +113 13184 14742 16471 174 2609 2656 2701 2995_vm ... +1247 13186 14745 16473 175 2609_fsm 2657 2702 2996 ... +1247_fsm 13187 14747 16474 2187 2609_vm 2658 2703 2998 ... +1247_vm 13187_fsm 14748 16476 2328 2610 2659 2704 2998_vm ... +1249 13187_vm 14749 16477 2328_fsm 2610_fsm 2660 2753 2999 ... +1249_fsm 13189 14752 16479 2328_vm 2610_vm 2661 2753_fsm 2999_vm ... +1249_vm 13191 14754 16488 2336 2611 2662 2753_vm 3079 ... +1255 13192 14755 16490 2336_vm 2611_vm 2663 2754 3079_fsm ... + . + . + . +13182_fsm 14739 16465 16603 2608_fsm 2654 2696 2893_vm 3501_vm ... +``` + +In contrast, the following is the content of the archived `base` subdirectory of the same database from a subsequent incremental backup: + +```text +[root@localhost 14845]# pwd +/opt/backup/acctg/1476301835391/base/base/14845 +[root@localhost 14845]# ls +1247 1249 1259 16384 17006 2608 2610 2658 2663 2678 ... +1247_fsm 1249_fsm 1259_fsm 16387 17009 2608_fsm 2610_fsm 2659 2673 2679 ... +1247_vm 1249_vm 1259_vm 16389 17011 2608_vm 2610_vm 2662 2674 2703 ... +``` + +The information from the MBM files are consolidated into one file called a *consolidated block map* (CBM) file. During the restore operation for the incremental backup, the CBM file is used to identify the modified blocks to be restored for that backup. In addition, the incremental backup also stores other required subdirectories and files from the database cluster as is done for full backups. + +Before taking an incremental backup, an initial full backup must be taken with the `BACKUP` subcommand. This full backup establishes the parent of the first incremental backup. + +The syntax for taking a full backup is: + +```text +bart BACKUP –s { | all } [ -F { p | t } ] + [ -z ] [ –c ] + [ --backup-name ] + [ --thread-count ] + [ { --with-pg_basebackup | --no-pg_basebackup } ] +``` + +The syntax for taking an incremental backup is: + +```text +bart BACKUP –s { | all } [ -F p] + [ --parent { | } ] + [ --backup-name ] + [ --thread-count ] + [ --check ] +``` + +You must specify the following before taking an incremental backup: + +- `-Fp` option for plain text format as incremental backup can only be taken in the plain text format. +- `--check` option to verify if the required MBM files are present in the `archived_wals` directory. The `--parent` option must be specified when the `--check` option is used. + +See [BACKUP](../../03_using_bart/03_basic_bart_subcommand_usage/03_backup/#backup) for more information about using the `BACKUP` subcommand. diff --git a/product_docs/docs/bart/2.5/bart_user/02_overview/01_block-level_incremental_backup/05_restoring_an_incremental_backup.mdx b/product_docs/docs/bart/2.5/bart_user/02_overview/01_block-level_incremental_backup/05_restoring_an_incremental_backup.mdx new file mode 100644 index 00000000000..c86914aa329 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/02_overview/01_block-level_incremental_backup/05_restoring_an_incremental_backup.mdx @@ -0,0 +1,42 @@ +--- +title: "Restoring an Incremental Backup" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/restoring_an_incremental_backup.html" +--- + + + +Restoring an incremental backup may require additional steps depending upon the host on which the incremental backup is to be restored: + +- [Restoring an Incremental Backup on a BART Host](#restoring-an-incremental-backup-on-a-bart-host) - This section outlines restoring an incremental backup onto the same host where BART has been installed. +- [Restoring an Incremental Backup on a Remote Host](#restoring-an-incremental-backup-on-a-remote-host) - This section outlines restoring an incremental backup onto a remote host where BART has not been installed. + + + +## Restoring an Incremental Backup on a BART Host + +Specify a backup identifier or name, and include the `-i` option when invoking the `RESTORE` subcommand to restore an incremental backup. All `RESTORE` options may be used in the same manner as when restoring a full backup. See [RESTORE](../../03_using_bart/03_basic_bart_subcommand_usage/08_restore/#restore) command for more details. + +First, all files from the full backup from the beginning of the backup chain are restored. For each incremental backup, the CBM file is used to identify and restore blocks from the incremental backup. If there are new relations or databases identified in the CBM file, then relevant relation files are copied. If consolidated block map information is found indicating the drop of a relation or a database, then the relevant files are removed from the restore directory. Similarly, if there is any indication of a table truncation, then the related files are truncated. + +Also note that you can use the `-w` option of the `RESTORE` subcommand to specify a multiple number of parallel worker processes to stream the modified blocks to the restore host. + + + +## Restoring an Incremental Backup on a Remote Host + +Ensure the `bart` program is available on the remote host when restoring an incremental backup on a remote host; the invocation of the `RESTORE` subcommand for an incremental backup results in the execution of the `bart` program on the remote host to restore the modified blocks to their proper location. + +To restore an incremental backup onto a remote host where BART has not been installed, perform the following steps: + +**Step 1:** Install `BART` on the remote host to which an incremental backup is to be restored. + +No editing is needed in the `bart.cfg` file installed on the remote host. + +**Step 2:** Determine the Linux operating system user account on the remote host to be used as the remote user. This user is specified by the `remote_host` parameter in the BART configuration file or by the `-r` option when using the `RESTORE` subcommand to restore the incremental backup. The remote user must be the owner of the directory where the incremental backup is to be restored on the remote host. By default, the user account is `enterprisedb` for Advanced Server or `postgres` for PostgreSQL. + +**Step 3:** Ensure a passwordless SSH/SCP connection is established from the BART user on the BART host to the remote user on the remote host. For information about creating a passwordless SSH/SCP connection, see the *EDB Backup and Recovery Installation and Upgrade Guide*, available at the [EDB website](/bart/latest/bart_inst/). + +When restoring an incremental backup, specify the backup identifier or name of the incremental backup that will be restored. See the [RESTORE](../../03_using_bart/03_basic_bart_subcommand_usage/08_restore/#restore) documentation for more details. To view an example of restoring an incremental backup, see the *EDB Backup and Recovery Reference Guide* available at the [EDB website](/bart/latest/bart_ref/). diff --git a/product_docs/docs/bart/2.5/bart_user/02_overview/01_block-level_incremental_backup/index.mdx b/product_docs/docs/bart/2.5/bart_user/02_overview/01_block-level_incremental_backup/index.mdx new file mode 100644 index 00000000000..3e65e3b0056 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/02_overview/01_block-level_incremental_backup/index.mdx @@ -0,0 +1,24 @@ +--- +title: "Block-Level Incremental Backup" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/block-level_incremental_backup.html" +--- + + + +This section describes the basic concepts of a block-level incremental backup (referred to as an incremental backup). An incremental backup is a unique functionality of BART. + +An incremental backup provides a number of advantages when compared to using a full backup: + +- The amount of time required to produce an incremental backup is generally less than a full backup, as modified relation blocks are saved instead of all full relation files of the database cluster. +- An incremental backup uses less disk space than a full backup. + +Generally, all BART features (such as retention policy management) apply to incremental backups and full backups. See [Managing Incremental Backups](../../03_using_bart/02_managing_backups_using_a_retention_policy/05_managing_incremental_backups/#managing_incremental_backups) for more information. + +
+ +incremental_backup_limitations_and_requirements concept_overview wal_scanning_preparation_for_an_incremental_backup performing_an_incremental_backup restoring_an_incremental_backup + +
diff --git a/product_docs/docs/bart/2.5/bart_user/02_overview/02_creating_a_backup_chain.mdx b/product_docs/docs/bart/2.5/bart_user/02_overview/02_creating_a_backup_chain.mdx new file mode 100644 index 00000000000..644040d87f1 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/02_overview/02_creating_a_backup_chain.mdx @@ -0,0 +1,22 @@ +--- +title: "Creating a Backup Chain" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/creating_a_backup_chain.html" +--- + + + +A *backup chain* is the set of backups consisting of a full backup and all of its successive incremental backups. Tracing back on the parent backups of all incremental backups in the chain eventually leads back to that single, full backup. + +It is possible to have a *multi-forked* backup chain, which is two or more successive lines of incremental backups, all of which begin with the same, full backup. Thus, within the chain there is a backup that serves as the parent of more than one incremental backup. + +Since restoration of an incremental backup is dependent upon first restoring the full backup, then all successive incremental backups up to, and including the incremental backup specified by the `RESTORE` subcommand, it is crucial to note the following: + +- Deletion or corruption of the full backup destroys the entire backup chain. It is not possible to restore any of the incremental backups that were part of that chain. +- Deletion or corruption of an incremental backup within the chain results in the inability to restore any incremental backup that was added to that successive line of backups following the deleted or corrupted backup. The full backup and incremental backups prior to the deleted or corrupted backup can still be restored. + +The actions of retention policy management are applied to the full backup and all of its successive incremental backups within the chain in an identical manner as if they were one backup. Thus, use of retention policy management does not result in the breakup of a backup chain. + +See the *EDB Backup and Recovery Reference Guide*, available at the [EDB website](/bart/latest/bart_ref/) for examples of creating a backup chain and restoring an incremental backup. diff --git a/product_docs/docs/bart/2.5/bart_user/02_overview/index.mdx b/product_docs/docs/bart/2.5/bart_user/02_overview/index.mdx new file mode 100644 index 00000000000..7b5b7e92fb3 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/02_overview/index.mdx @@ -0,0 +1,97 @@ +--- +title: "Overview" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/overview.html" +--- + + + +BART provides a simplified interface for the continuous archiving and point-in-time recovery method provided with Postgres database servers. This consists of the following processes: + +- Capturing a complete image of a database cluster as a full base backup or referred to simply as a *full backup*. +- Capturing a modified image of a database cluster called a *block-level incremental backup* or referred as *incremental backup*, which is similar to a full backup, but contains the modified blocks of the relation files that have been changed since a previous backup. +- Archiving the `Write-Ahead Log segments` (WAL files), which continuously record changes to be made to the database files. +- Performing *Point-In-Time Recovery* (PITR) to a specified transaction ID or timestamp with respect to a timeline using a full backup along with successive, [block-level incremental backups](01_block-level_incremental_backup/#block-level_incremental_backup) that reside in the same backup chain, and the WAL files. + +Detailed information regarding WAL files and point-in-time recovery is documented in the [PostgreSQL Core Documentation](https://www.postgresql.org/docs/current/static/continuous-archiving.html). + +The general term *backup* refers to both full backups and incremental backups. + +When taking a full backup of a standby server, BART uses the PostgreSQL `pg_basebackup` utility program. However, it must be noted that for standby servers, you can only take a full backup, but cannot take an incremental or parallel backups. For information about standby servers, see the [PostgreSQL Documentation](https://www.postgresql.org/docs/current/static/high-availability.html). + +BART uses a centralized backup catalog, a single configuration file, and a command line interface controlling the necessary operations to simplify the management process. Reasonable defaults are automatically used for various backup and restore options. BART also performs the necessary recovery file configuration required for point-in-time recovery using its command line interface. + +BART also provides the following features to enhance backup management: + +- Automation of the WAL archiving command configuration. +- Usage of retention policies to evaluate, categorize, and delete obsolete backups. +- Compression of WAL files to conserve disk space. +- Customizable naming of backups to ease their usage. +- Easy access to comprehensive information about each backup. + +The key components of a BART installation are: + +- **BART Host.** The host system on which BART is installed. BART operations are invoked from this host system. The database server backups and archived WAL files are stored on this host as well. +- **BART User Account.** Linux operating system user account you choose to run BART. The BART user account owns the BART backup catalog directory. +- **BART Configuration File.** File in editable text format containing the configuration information that BART uses. +- **BART Backup Catalog.** File system directory structure containing all of the backups for the database servers that BART manages. It is also the default `archive_path` to store archived WAL files. +- **BART Backupinfo File.** File in text format containing information for a BART backup. A `backupinfo` file resides in each backup subdirectory within the BART backup catalog. +- **BART Command Line Utility Program.** Single, executable file named `bart`, which is used to manage all BART operations. +- **BART WAL Scanner Program.** Single, executable file named `bart-scanner`, which is used to scan WAL files to locate and record the modified blocks for incremental backups. + +Other concepts and terms referred to in this document include the following: + +- **Postgres Database Cluster.** Also commonly called the *data directory*, this is the file system directory where all of the data files related to a particular Postgres database server instance are stored. (Each specific running instance is identified by its host and port number when connecting to a database.) The database cluster is identified by the `–D` option when it is created, started, stopped, etc. by the `Postgres initdb` and `pg_ctl` commands. A full backup is a copy of a database cluster. + + The terms database cluster and database server are used somewhat interchangeably throughout this document, though a single database server can run multiple database clusters. + +- **Postgres User Account.** Linux operating system user account that runs the Advanced Server or PostgreSQL database server and owns the database cluster directory. + + - By default, the database user account is `enterprisedb` when Advanced Server is installed to support compatibility with Oracle databases. + + - By default, the database user account is `postgres` when Advanced Server is installed in PostgreSQL compatible mode. For a PostgreSQL database server, the default database user account is also `postgres`. + + The BART configuration parameter `cluster_owner` must be set to the database user account for each database server. + +- **Replication Database User.** For each database server that BART manages, a database superuser must be selected to act as the replication database user. This database user is used to connect to the database server when backups are taken. The database superusers created with an initial Postgres database server installation (`enterprisedb` or `postgres`) may be used for this purpose. The BART configuration parameter `user` must be set to this replication database user for each database server. + +- **Secure Shell (SSH)/Secure Copy (SCP).** Linux utility programs used to log into hosts (SSH) and copy files (SCP) between hosts. A valid user account must be specified that exists on the target host and in fact is the user account under which the SSH or SCP operations occur. + +For information on how all of these components are configured and used with BART, see the EDB Backup and Recovery Installation and Upgrade Guide available at the [EDB website](/bart/latest/bart_inst/). + +**Supported BART Operations** + +The following tables are not a conclusive list of the scenarios supported by BART, but instead provides an overview of some of the most common scenarios in both `pg_basebackup` (thread count=1) as well as parallel backup mode (thread count greater than 1). + +| | -Fp-xlog-method=fetch | -Fp-xlog-method=stream | -Ft-xlog-method=fetch | -Ft-xlog-method=stream | +| -------------------------------------------- | --------------------- | ---------------------- | --------------------- | ---------------------- | +| `Primary Database Server/Full backup` | Supported | Supported | Supported | Supported | +| `Primary Database Server/Incremental backup` | Supported | Supported | Not Supported | Not Supported | +| `Standby Database Server/Full backup` | Supported | Supported | Supported | Supported | +| `Standby Database Server/Incremental backup` | Not Supported | Not Supported | Not Supported | Not Supported | + +Backup + +| | Wal compression by BART | WAL scanner | +| -------------------------------------------- | ----------------------- | ----------- | +| `Primary Database Server/Full backup` | Supported | N/A | +| `Primary Database Server/Incremental backup` | Not Supported | N/A | +| `Standby Database Server/Full backup` | Supported | N/A | +| `Standby Database Server/Incremental backup` | Not Supported | N/A | + +Wal Archiving + +| | Wal compression = enabled | Wal compression = disabled | +| ------------------ | ------------------------- | -------------------------- | +| `Restore` | Supported | Supported | +| `Parallel restore` | Supported | Supported | + +Restore + +
+ +block-level_incremental_backup creating_a_backup_chain + +
diff --git a/product_docs/docs/bart/2.5/bart_user/03_using_bart/01_bart_management_overview/01_performing_a_restore_operation.mdx b/product_docs/docs/bart/2.5/bart_user/03_using_bart/01_bart_management_overview/01_performing_a_restore_operation.mdx new file mode 100644 index 00000000000..8b5fdec0c09 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/03_using_bart/01_bart_management_overview/01_performing_a_restore_operation.mdx @@ -0,0 +1,57 @@ +--- +title: "Performing a Restore Operation" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/performing_a_restore_operation.html" +--- + + + +The following steps describe the process of restoring a backup: + +**Step 1:** Use your system-specific command to shut down the database server. + +**Step 2:** Inspect the `pg_wal` subdirectory (inspect the `pg_xlog` subdirectory if you are using server version 9.6) of the data directory and save any WAL files that have not yet been archived to the `archive_path`. If there are files that have not been archived, save them to a temporary location. + +**Step 3:** If you want to restore to current data directory, it is recommended to make a copy of the current data directory and then delete all files and subdirectories under the data directory if you have enough extra space. If there is not enough space, then make a copy of `pg_wal` directory (or `pg_xlog` if you are using server version 9.6) until the server is successfully restored. + +If you want to restore to a new, empty directory, create the directory on which you want to restore the backed up database cluster. Ensure the data directory can be written to by the BART user account or by the user account specified by the `remote_host` configuration parameter, or by the `--remote-host` option of the `RESTORE` subcommand (if these are to be used). + +**Step 4:** Perform the same process for tablespaces as described in Step 3. The `tablespace_path` parameter in the BART configuration file must contain the tablespace directory paths to which the tablespace data files are to be restored. See the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/) for more information about this parameter. + +**Step 5:** Identify the backup to use for the restore operation and obtain the backup ID or backup name. + +To use the latest backup, omit the `-i` option; the `RESTORE` subcommand uses that backup by default. The backups can be listed with the `SHOW-BACKUPS` subcommand. + +**Step 6:** Run the BART `RESTORE` subcommand. + +- Minimal recovery settings will be saved in the `postgresql.auto.conf` file and archive recovery will proceed only until consistency is reached, with no restoration of files from the archive. See [Restore](../03_basic_bart_subcommand_usage/08_restore/#restore) for detailed information about `Restore` subcommand. + +- If the `-c` option is specified or if the `copy_wals_during_restore` BART configuration parameter is enabled for this database server, then the following actions occur: + + - In addition to restoring the database cluster to the directory specified by the `-p restore_path` option, the archived WAL files of the backup are copied from the BART backup catalog to the subdirectory `restore_path/archived_wals`. + - If recovery settings are saved in the `postgresql.auto.conf` file, the command string set in the `restore_command` parameter retrieves the WAL files from this `archived_wals` subdirectory relative to the `restore_path` parent directory as: `restore_command = cp archived_wals/%f %p` + +You must ensure that valid options are specified when using the `RESTORE` subcommand. BART will not generate an error message if invalid option values or invalid option combinations are provided. BART will accept the invalid options and pass them to the `postgresql.auto.conf` file, which will then be processed by the database server when it is restarted. + +**Step 7:** Copy any saved WAL files from Step 2 to the `restore_path/pg_xlog` subdirectory. + +**Step 8:** Inspect the restored directories and data files of the restored database cluster in directory `restore_path`. + +All files and directories must be owned by the user account that you intend to use to start the database server. Recursively change the user and group ownership of the `restore_path` directory, its files, and its subdirectories if necessary. There must only be directory access privileges for the user account that will start the database server. No other groups or users can have access to the directory. + +**Step 9:** The `postgresql.auto.conf` file should be configured to recover only until the cluster reaches consistency. In either case, the settings may be modified as desired. + +**Step 10:** Disable WAL archiving at this point. The BART `RESTORE` subcommand adds `archive_mode = off` to the end of the `postgresql.conf` file. + +- If you want to restart the database server with WAL archiving enabled, ensure that this additional parameter is deleted. +- The original `archive_mode` parameter still resides in the `postgresql.conf` file in its initial location with its last setting. + +**Step 11:** Start the database server to initiate recovery. After completion, check the database server log file to ensure the recovery was successful. + +If the backup is restored to a different location than where the original database cluster resided, operations dependent upon the database cluster location may fail if supporting service scripts are not updated to reflect the location where the backup has been restored. For information about the use and modification of service scripts, see the EDB Advanced Server Installation Guide available at the [EDB website](/epas/latest/). + +See [Restore](../03_basic_bart_subcommand_usage/08_restore/#restore) for more information about using the BART `Restore` subcommand. + +An example of a restore operation is documented in the EDB Backup and Recovery Reference Guide available at the [EDB website](/bart/latest/bart_ref/). diff --git a/product_docs/docs/bart/2.5/bart_user/03_using_bart/01_bart_management_overview/02_point_in_time_recovery_operation.mdx b/product_docs/docs/bart/2.5/bart_user/03_using_bart/01_bart_management_overview/02_point_in_time_recovery_operation.mdx new file mode 100644 index 00000000000..caaaa89e7c0 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/03_using_bart/01_bart_management_overview/02_point_in_time_recovery_operation.mdx @@ -0,0 +1,51 @@ +--- +title: "Point-In-Time Recovery Operation" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/point_in_time_recovery_operation.html" +--- + + + +The following steps outline how to perform a point-in-time recovery operation for a database cluster: + +1. Use your system-specific command to shut down the database server. + +2. If you want to: + a. restore the database cluster and tablespace files to new, empty directories, create the new directories with the appropriate directory ownership and permissions. + b. reuse the existing database cluster directories, delete all the files and subdirectories in the existing directories. We strongly recommend that you make a copy of this data before deleting it. Be sure to save any recent WAL files in the `pg_wal` subdirectory ( `pg_xlog` subdirectory if you are using server version 9.6) that have not been archived to `archive_path`. + +3. Run the BART `SHOW-BACKUPS -s ` subcommand to list the backup IDs and backup names of the backups for the database server. You will need to provide the appropriate backup ID or backup name with the BART `RESTORE` subcommand, unless you intend to restore the latest backup in which case the `-i` option of the `RESTORE` subcommand for specifying the backup ID or backup name may be omitted. + +4. Run the BART `RESTORE` subcommand with the appropriate options. + + - The backup is restored to the directory specified by the `-p restore_path` option. + + - In addition, if the `RESTORE` subcommand `-c` option is specified or if the enabled setting of the `copy_wals_during_restore` BART configuration parameter is applicable to the database server, then the required archived WAL files from the `archive_path` are copied to the `restore_path/archived_wals` subdirectory. + + - Ensure the `restore_path` directory and all subdirectories and files in the `restore_path` are owned by the proper Postgres user account (for example, `enterprisedb` or `postgres`). Also ensure that only the Postgres user account has access permission to the `restore_path` directory. + + Use the `chown` command to make the appropriate adjustments to file permissions; for example, the following command changes the ownership of `restore_path` to `enterprisedb`: + + `chown -R enterprisedb:enterprisedb restore_path` + + The following command restricts access to `restore_path`: + + `chmod 700 restore_path` + +5. Copy any saved WAL files from Step 2 that were not archived to the BART backup catalog to the `restore_path/pg_wal` subdirectory (`pg_xlog` subdirectory if you are using server version 9.6). + +6. Identify the timeline ID you wish to use to perform the restore operation. + + The available timeline IDs can be identified by the first non-zero digit of the WAL file names reading from left to right. + +7. Verify that the `postgresql.auto.conf` file created in the directory specified with the `RESTORE` subcommand’s `-p ` option was generated with the correct recovery parameter settings. + + If the `RESTORE` subcommand `-c` option is specified or if the enabled setting of the `copy_wals_during_restore` BART configuration parameter is applicable to the database server, then the `restore_command` parameter retrieves the archived WAL files from the `/archived_wals` subdirectory that was created by the `RESTORE` subcommand, otherwise the `restore_command` retrieves the archived WAL files from the BART backup catalog. + +8. The BART `RESTORE` subcommand disables WAL archiving in the restored database cluster. If you want to immediately enable WAL archiving, modify the `postgresql.conf` file by deleting the `archive_mode = off` parameter that BART appends to the end of the file. + +9. Start the database server, which will then perform the point-in-time recovery operation if recovery settings are saved in the `postgresql.auto.conf` file. + +For a detailed description of the `RESTORE` subcommand, see [Basic BART Subcommand Usage](../03_basic_bart_subcommand_usage/#basic_bart_subcommand_usage). An example of a Point-in-Time Recovery operation is documented in the *EDB Backup and Recovery Reference Guide* available at the [EDB website](/bart/latest/bart_ref/). See [Restore](../03_basic_bart_subcommand_usage/08_restore/#restore) for more information about using the `Restore` subcommand. diff --git a/product_docs/docs/bart/2.5/bart_user/03_using_bart/01_bart_management_overview/index.mdx b/product_docs/docs/bart/2.5/bart_user/03_using_bart/01_bart_management_overview/index.mdx new file mode 100644 index 00000000000..4cb9c779397 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/03_using_bart/01_bart_management_overview/index.mdx @@ -0,0 +1,34 @@ +--- +title: "BART Management Overview" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/bart_management_overview.html" +--- + + + +After configuring BART, you can begin the backup and recovery management process. The following steps will help you get started: + +1. Run the `CHECK-CONFIG` subcommand without the `-s` option. When the `CHECK-CONFIG` subcommand is used without specifying the `-s` option, it checks the parameters in the global section of the BART configuration file. +2. Run the `INIT` subcommand (if you have not already done so) to finish creation of the BART backup catalog, which results in the complete directory structure to which backups and WAL files are saved. This step must be done before restarting the database servers with enabled WAL archiving, otherwise the copy operation in the `archive_command` parameter of the `postgresql.conf` file or the `postgresql.auto.conf` file fails due to the absence of the target archive directory. When the directory structure is complete, the `archived_wals` subdirectory should exist for each database server. +3. Start the Postgres database servers with archiving enabled. Verify that the WAL files are appearing in the `archive_path`. The archiving frequency is dependent upon other `postgresql.conf` configuration parameters. Check the Postgres database server log files to ensure there are no archiving errors. Archiving should be operational before taking a backup in order to ensure that the WAL files that may be created during the backup process are archived. +4. Start the WAL scanner if you intend to take incremental backups. Since the WAL scanner processes the WAL files copied to the `archive path`, it is advantageous to commence the WAL scanning as soon as the WAL files begin to appear in the `archive_path` in order to keep the scanning in pace with the WAL archiving. +5. Run the BART `CHECK-CONFIG` subcommand for each database server with the `-s` option specifying the server name. This ensures the database server is properly configured for taking backups. +6. Create a full backup for each database server. The full backup establishes the starting point of when point-in-time recovery can begin and also establishes the initial parent backup for any incremental backups to be taken. + +There are now a number of other BART management processes you may perform: + +- Execute the `BACKUP` subcommand to create additional full backups or incremental backups. +- Use the `VERIFY-CHKSUM` subcommand to verify the checksum of the full backups. +- Display database server information with the `SHOW-SERVERS` subcommand. +- Display backup information with the `SHOW-BACKUPS` subcommand. +- Compress the archived WAL files in the `archive_path` by enabling WAL compression in the BART configuration file and then invoking the `MANAGE` subcommand. +- Determine and set the retention policy for backups in the BART configuration file. +- Establish the procedure for using the `MANAGE` subcommand to enforce the retention policy for backups. This may include using `cron` jobs to schedule the `MANAGE` subcommand. + +
+ +performing_a_restore_operation point_in_time_recovery_operation + +
diff --git a/product_docs/docs/bart/2.5/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/01_overview_managing_backups_using_a_retention_policy.mdx b/product_docs/docs/bart/2.5/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/01_overview_managing_backups_using_a_retention_policy.mdx new file mode 100644 index 00000000000..7169d6f7bb6 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/01_overview_managing_backups_using_a_retention_policy.mdx @@ -0,0 +1,23 @@ +--- +title: "Overview - Managing Backups Using a Retention Policy" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/overview_managing_backups_using_a_retention_policy.html" +--- + + + +The BART retention policy results in the categorization of each backup in one of three statuses – *active*, *obsolete*, and *keep*. + +- **Active.** The backup satisfies the retention policy applicable to its server. Such backups would be considered necessary to ensure the recovery safety for the server and thus should be retained. +- **Obsolete.** The backup does not satisfy the retention policy applicable to its server. The backup is no longer considered necessary for the recovery safety of the server and thus can be deleted. +- **Keep.** The backup is to be retained regardless of the retention policy applicable to its server. The backup is considered vital to the recovery safety for the server and thus should not be deleted for an indefinite period of time. + +There are two types of retention policies - redundancy retention policy and recovery window retention policy. + +- **Redundancy Retention Policy** - The [redundancy retention policy](03_setting_the_retention_policy/#redundancy-retention-policy) relies on a specified, maximum number of most recent backups to retain for a given server. When the number of backups exceeds that maximum number, the oldest backups are considered obsolete (except for backups marked as keep). +- **Recovery Window Retention Policy** - The [recovery window retention policy](03_setting_the_retention_policy/#recovery-window-retention-policy) relies on a time frame (the recovery window) for when a backup should be considered active. The boundaries defining the recovery window are the current date/time (the ending boundary of the recovery window) and the date/time going back in the past for a specified length of time (the starting boundary of the recovery window). + - If the date/time the backup was taken is within the recovery window (that is, the backup date/time is on or after the starting date/time of the recovery window), then the backup is considered active, otherwise it is considered obsolete (except for backups marked as keep). + - Thus, for the recovery window retention policy, the recovery window time frame dynamically shifts, so the end of the recovery window is always the current date/time when the `MANAGE` subcommand is run. As you run the `MANAGE` subcommand at future points in time, the starting boundary of the recovery window moves forward in time. At some future point, the date/time of when a backup was taken will be earlier than the starting boundary of the recovery window. This is when an active backup’s status will be considered obsolete. + - You can see the starting boundary of the recovery window at any point in time by running the `SHOW-SERVERS` subcommand. The `RETENTION POLICY` field of the `SHOW-SERVERS` subcommand displays the starting boundary of the recovery window. diff --git a/product_docs/docs/bart/2.5/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/02_marking_the_backup_status.mdx b/product_docs/docs/bart/2.5/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/02_marking_the_backup_status.mdx new file mode 100644 index 00000000000..047552d0a9e --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/02_marking_the_backup_status.mdx @@ -0,0 +1,25 @@ +--- +title: "Marking the Backup Status" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/marking_the_backup_status.html" +--- + + + +When a backup is initially created with the `BACKUP` subcommand, it is always recorded with active status. Use the `MANAGE` subcommand to evaluate if the backup status should be changed to obsolete in accordance with the retention policy. You can review the current status of your backups with the `SHOW-BACKUPS` subcommand. + +Active backups are evaluated and also marked (that is, internally recorded by BART) as obsolete only when the `MANAGE` subcommand is invoked either with no options or with only the `-s` option. + +Once a backup has been marked as obsolete, you cannot change it back to active unless you perform the following steps: + +- Use the `MANAGE` subcommand with the `-c` option along with the backup identifier or name with the `-i` option. To keep this particular backup indefinitely, use `-c keep`, otherwise use `-c nokeep`. +- If you use the `-c nokeep` option, the backup status is changed back to active. When the `MANAGE` subcommand is used the next time, the backup is re-evaluated to determine if its status needs to be changed back to obsolete based on the current retention policy in the BART configuration file. + +After setting the `retention_policy` parameter and running the `MANAGE` subcommand if you change the `retention_policy` parameter, the current, marked status of the backups are probably inconsistent with the new `retention_policy` setting. To modify the backup status to be consistent with the new `retention_policy` setting, you need to run the `MANAGE` subcommand with: + +- the `-c nokeep` option to change the obsolete status to active status if there are backups currently marked as obsolete that would no longer be considered obsolete under a new retention policy. You can also specify the `-i all` option to change all backups back to active status, including those currently marked as keep. +- no options or with only the `-s` option to reset the marked status based on the new `retention_policy` setting in the BART configuration file. + +See [MANAGE](../03_basic_bart_subcommand_usage/07_manage/#manage) for usage information for the `MANAGE` subcommand. diff --git a/product_docs/docs/bart/2.5/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/03_setting_the_retention_policy.mdx b/product_docs/docs/bart/2.5/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/03_setting_the_retention_policy.mdx new file mode 100644 index 00000000000..a4396239bfe --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/03_setting_the_retention_policy.mdx @@ -0,0 +1,82 @@ +--- +title: "Setting the Retention Policy" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/setting_the_retention_policy.html" +--- + + + +The retention policy is determined by the `retention_policy` parameter in the BART configuration file. It can be applied globally to all servers, but each server can override the global retention policy with its own. For information about creating a global retention policy and an individual database server retention policy, see the EDB Backup and Recovery Installation and Upgrade Guide available at the [EDB website](/bart/latest/bart_inst/). + +There are two types of retention policies - redundancy retention policy and the recovery window retention policy as described in the following sections. + + + +## Redundancy Retention Policy + +To use the redundancy retention policy, set `retention_policy = max_number BACKUPS` where `max_number` is a positive integer designating the maximum number of most recent backups. + +**Additional Restrictions:** + +- The keyword `BACKUPS` must always be specified in plural form (for example, `1 BACKUPS`). +- BART will accept a maximum integer value of 2,147,483,647 for `max_number`; however, you should use a realistic, practical value based on your system environment. + +The redundancy retention policy is the default type of retention policy if all keywords `BACKUPS`, `DAYS`, `WEEKS`, and `MONTHS` following the `max_number` integer are omitted as shown by the following example: + +`retention_policy = 3` + +In the following example, the redundancy retention policy setting considers the three most recent backups as the active backups. Any older backups, except those marked as `keep`, are considered obsolete: + +```text +[ACCTG] +host = 127.0.0.1 +port = 5444 +user = enterprisedb +archive_command = 'cp %p %a/%f' +retention_policy = 3 BACKUPS +description = "Accounting" +``` + +The `SHOW-SERVERS` subcommand displays the `3 Backups` redundancy retention policy in the `RETENTION POLICY` field: + +```bash +-bash-4.1$ bart SHOW-SERVERS -s acctg +SERVER NAME : acctg +HOST NAME : 127.0.0.1 +USER NAME : enterprisedb +PORT : 5444 +REMOTE HOST : +RETENTION POLICY : 3 Backups +DISK UTILIZATION : 627.04 MB +NUMBER OF ARCHIVES : 25 +ARCHIVE PATH : /opt/backup/acctg/archived_wals +ARCHIVE COMMAND : cp %p /opt/backup/acctg/archived_wals/%f +XLOG METHOD : fetch +WAL COMPRESSION : disabled +TABLESPACE PATH(s) : +DESCRIPTION : "Accounting" +``` + + + +## Recovery Window Retention Policy + +To use the recovery window retention policy, set the `retention_policy` parameter to the desired length of time for the recovery window in one of the following ways: + +- Set to `max_number DAYS` to define the start date/time recovery window boundary as the number of days specified by `max_number` going back in time from the current date/time. +- Set to `max_number WEEKS` to define the start date/time recovery window boundary as the number of weeks specified by `max_number` going back in time from the current date/time. +- Set to `max_number MONTHS` to define the start date/time recovery window boundary as the number of months specified by `max_number` going back in time from the current date/time. + +**Additional Restrictions:** + +- The keywords `DAYS`, `WEEKS`, and `MONTHS` must always be specified in plural form (for example, `1 DAYS`, `1 WEEKS`, or `1 MONTHS`). +- BART will accept a maximum integer value of `2,147,483,647` for `max_number`, however, a realistic, practical value based on your system environment must always be used. + +A backup is considered active if the date/time of the backup is equal to or greater than the start of the recovery window date/time. + +You can view the actual, calculated recovery window by: + +- Invoking the `MANAGE` subcommand in debug mode, along with the `-n` option. +- Using the `SHOW-SERVERS` subcommand. diff --git a/product_docs/docs/bart/2.5/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/04_managing_the_backups_based_on_the_retention_policy.mdx b/product_docs/docs/bart/2.5/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/04_managing_the_backups_based_on_the_retention_policy.mdx new file mode 100644 index 00000000000..def779a4026 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/04_managing_the_backups_based_on_the_retention_policy.mdx @@ -0,0 +1,147 @@ +--- +title: "Managing the Backups Based on the Retention Policy" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/managing_the_backups_based_on_the_retention_policy.html" +--- + + + +The [MANAGE](../03_basic_bart_subcommand_usage/07_manage/#manage) subcommand is used to evaluate and categorize backups according to the retention policy set in the BART configuration file. When a backup is first created with the `BACKUP` subcommand, it is `active`. You can use the `MANAGE` subcommand to change the status of an active backup to `obsolete`. Obsolete backups can then be deleted. + +This section covers following aspects of backup management: + +- The rules for [deleting backups](#deletions_permitted_under_retention_policy) depending upon the backup status and the subcommand used. +- The process to retain a backup indefinitely by [marking it as keep](#marking-backups-for-indefinite-keep-status). This section also provides information about resetting backups status (that are marked as `obsolete` and `keep`) back to active status. +- The general process for [evaluating, marking, and then deleting obsolete backups](#evaluating-marking-and-deleting-obsolete-backups). + + + +## Deletions Permitted Under a Retention Policy + +This section describes how and under what conditions backups may be deleted under a retention policy. + +You must use the `MANAGE` subcommand to delete obsolete backups. Use the `DELETE` subcommand only for special administrative purposes. + +The deletion behavior of the `MANAGE` subcommand and the `DELETE` subcommand are based on different aspects of the retention policy. + +- The `MANAGE` subcommand deletion relies solely upon how a backup status is currently marked (that is, internally recorded by BART). The current setting of the `retention_policy` parameter in the BART configuration file is ignored. +- The `DELETE` subcommand relies solely upon the current setting of the `retention_policy` parameter in the BART configuration file. The current active, obsolete, or keep status of a backup is ignored. + +The specific deletion rules for the `MANAGE` and `DELETE` subcommands are as follows: + +- `MANAGE` subcommand: The `MANAGE` subcommand with the `-d` option can only delete backups marked as obsolete. This deletion occurs regardless of the current `retention_policy` setting in the BART configuration file. The deletion of backups relies on the last occasion when the backups have been marked. +- `DELETE` subcommand: + + - Under a redundancy retention policy currently set with the `retention_policy` parameter in the BART configuration file, any backup regardless of its marked status, can be deleted with the `DELETE` subcommand when the backup identifier or name is specified with the `-i` option and if the current total number of backups for the specified database server is greater than the maximum number of redundancy backups currently specified with the `retention_policy` parameter. + + If the total number of backups is less than or equal to the specified, maximum number of redundancy backups, then no additional backups can be deleted using `DELETE` with the `-i backup` option. + + - Under a recovery window retention policy currently set with the `retention_policy` parameter in the BART configuration file, any backup regardless of its marked status, can be deleted with the `DELETE` subcommand when the backup identifier or name is specified with the `-i` option, and if the backup date/time is not within the recovery window currently specified with the `retention_policy` parameter. If the backup date/time is within the recovery window, then it cannot be deleted using `DELETE` with the `-i backup` option. + + - Invoking the `DELETE` subcommand with the `-i all` option results in the deletion of all backups regardless of the retention policy and regardless of whether the status is marked as active, obsolete, or keep. + +The following table summarizes the deletion rules of backups according to their marked status. An entry of `Yes` indicates the backup may be deleted under the specified circumstances. An entry of `No` indicates that the backup may not be deleted. + + ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OperationRedundancy Retention PolicyRecovery Window Retention Policy
ActiveObsoleteKeepActiveObsoleteKeep
MANAGE –dNoYesNoNoYesNo
DELETE –i *backup* +

Yes

+

(see Note 1)

+
+

Yes

+

(see Note 1)

+
+

Yes

+

(see Note 1_)

+
+

Yes

+

(see Note 2

+
+

Yes

(see Note 2 +
+

Yes

(see Note 2) +
DELETE –i allYesYesYesYesYesYes
+ + + +!!! Note + Redundancy Retention Policy (Note 1) : Deletion occurs only if the total number of backups for the specified database server is greater than the specified, maximum number of redundancy backups currently set with the `redundancy_policy` parameter in the BART configuration file. + + + +!!! Note + Recovery Window Retention Policy (Note 2): Deletion occurs only if the backup is not within the recovery window currently set with the `redundancy_policy` parameter in the BART configuration file. + + + +## Marking Backups for Indefinite Keep Status + +There may be certain backups that you wish to keep for an indefinite period of time and do not wish to delete based upon the retention policy applied to the database server. Such backups can be marked as `keep` to exclude them from being marked as obsolete. Use the `MANAGE` subcommand with the `-c keep` option to retain such backups indefinitely. + + + +## Evaluating, Marking, and Deleting Obsolete Backups + +When the `MANAGE` subcommand is invoked, BART evaluates active backups: + +- If you include the `-s` option when invoking the `MANAGE` subcommand, BART evaluates backups for the database server. +- If you include the `-s all` option when invoking the `MANAGE` subcommand, BART evaluates backups for all database servers. +- If the `-s` option is omitted, the command evaluates the current number of backups for the database server based on the redundancy retention policy or the current date/time for a recovery window retention policy. + +!!! Note + The status of backups currently marked as `obsolete` or `keep` is not changed. To re-evaluate such backups and then classify them, their status must first be reset to `active` with the `MANAGE -c nokeep` option. See [Marking the Backup Status](02_marking_the_backup_status/#marking_the_backup_status) for more information. + +See the *EDB Backup and Recovery Reference Guide* available at the [EDB website](/bart/latest/bart_ref/) to review examples of how to evaluate, mark, and delete backups using a redundancy retention policy and recovery window retention policy, as well as examples of `MANAGE` subcommand. diff --git a/product_docs/docs/bart/2.5/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/05_managing_incremental_backups.mdx b/product_docs/docs/bart/2.5/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/05_managing_incremental_backups.mdx new file mode 100644 index 00000000000..c69f6b09086 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/05_managing_incremental_backups.mdx @@ -0,0 +1,51 @@ +--- +title: "Managing Incremental Backups" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/managing_incremental_backups.html" +--- + + + +The following section summarizes how retention policy management affects incremental backups. + +- The retention policy rules are applied to full backups. + - A redundancy retention policy uses the number of full backups to determine if a backup is obsolete. Incremental backups are excluded from the comparison count against the `retention_policy` setting for the maximum number of backups. + - A recovery window retention policy uses the backup date/time of any full backups to determine if a backup is obsolete. The backup date/time of any successive incremental backups in the chain are ignored when comparing with the recovery window. +- The retention status of all incremental backups in a chain is set to the same status applied to the full backup of the chain. +- The actions applied by the `MANAGE` and `DELETE` subcommands on a full backup are applied to all incremental backups in the chain in the same manner. +- Thus, a backup chain (that is, the full backup and all its successive incremental backups) are treated by retention policy management as if they are all one, single backup. + - The status setting applied to the full backup is also applied to all incremental backups in its chain. + - If a full backup is marked as obsolete and then deleted according to the retention policy, all incremental backups in the chain are also marked obsolete and then deleted as well. + +The following are some specific points regarding the `MANAGE` and `DELETE` subcommands on incremental backups. + +- `MANAGE` subcommand: + - When the `MANAGE` subcommand is invoked, the status applied to the full backup is also applied to all successive incremental backups in the chain. + - The `MANAGE` subcommand with the `-c { keep | nokeep}` option cannot specify the backup identifier or backup name of an incremental backup with `-i` backup option. The `-i` backup option can only specify the backup identifier or backup name of a full backup. + - You can also use the `-i` all option to take a backup of all backups. When the `MANAGE` subcommand with the `-c { keep | nokeep }` option is applied to a full backup, the same status change is made to all incremental backups in the chain. +- `DELETE` subcommand: + - The `DELETE` subcommand with the `-s server -i` backup option specifies the backup identifier or backup name of an incremental backup in which case that incremental backup along with all its successive incremental backups are deleted, thus shortening that backup chain. + +## Using a Redundancy Retention Policy with Incremental Backups + +When a [redundancy retention policy](03_setting_the_retention_policy/#redundancy-retention-policy) is used and the `MANAGE` subcommand is invoked, the status of the oldest `active` full backup is changed to `obsolete` if the number of full backups exceeds the maximum number specified by the `retention_policy` parameter in the BART configuration file. + +!!! Note + When a full backup is changed from `active` to `obsolete`, all successive incremental backups in the chain of the full backup are also changed from `active` to `obsolete`. + +When determining the number of backups that exceeds the number specified by the `retention_policy` parameter, only full backups are counted for the comparison. Incremental backups are not included in the count for the comparison against the `retention_policy` parameter setting. + +See the *EDB Backup and Recovery Reference Guide* available at the [EDB website](/bart/latest/bart_ref/) for examples demonstrating use of the `MANAGE` and `DELETE` subcommands when a redundancy retention policy is in effect. + +## Using a Recovery Window Retention Policy with Incremental Backups + +If the `MANAGE` command is invoked when BART is configured to use a [recovery window retention policy](03_setting_the_retention_policy/#recovery-window-retention-policy), the status of `active` full backups are changed to `obsolete` if the date/time of the full backup is outside of the recovery window. + +!!! Note + If a full backup is changed from `active` to `obsolete`, all successive incremental backups in the chain of the full backup are also changed from `active` to `obsolete`. + +The status of an incremental backup is changed to `obsolete` regardless of whether or not the date/time of when the incremental backup was taken still lies within the recovery window. + +See the *EDB Backup and Recovery Reference Guide* available at the [EDB website](/bart/latest/bart_ref/) for examples demonstrating use of the `MANAGE` and `DELETE` subcommands when a recovery window retention policy is in effect. diff --git a/product_docs/docs/bart/2.5/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/index.mdx b/product_docs/docs/bart/2.5/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/index.mdx new file mode 100644 index 00000000000..aff92bbd6a5 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/03_using_bart/02_managing_backups_using_a_retention_policy/index.mdx @@ -0,0 +1,27 @@ +--- +title: "Managing Backups Using a Retention Policy" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/managing_backups_using_a_retention_policy.html" +--- + + + +Over the course of time when using BART, the number of backups can grow significantly. This ultimately leads to a large consumption of disk space unless an administrator periodically performs the process of deleting the oldest backups that are no longer needed. This process of determining when a backup is old enough to be deleted and then actually deleting such backups can be done and automated with the following basic steps: + +1. Determine and set a retention policy in the BART configuration file. A *retention policy* is a rule that determines when a backup is considered obsolete. The retention policy can be applied globally to all servers, but each server can override the global retention policy with its own. + +2. Use the `MANAGE` subcommand to categorize and manage backups according to the retention policy. + +3. Create a cron job to periodically run the `MANAGE` subcommand to evaluate the backups and then list and/or delete the obsolete backups. + + Retention policy management applies differently to incremental backups than to full backups. See [Managing Incremental Backups](05_managing_incremental_backups/#managing_incremental_backups) for information about how retention policy management is applied to each backup type. + + The following sections describe how retention policy management generally applies to backups, and its specific usage and effect on full backups. + +
+ +overview_managing_backups_using_a_retention_policy marking_the_backup_status setting_the_retention_policy managing_the_backups_based_on_the_retention_policy managing_incremental_backups + +
diff --git a/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/01_check_config.mdx b/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/01_check_config.mdx new file mode 100644 index 00000000000..f12dd038edd --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/01_check_config.mdx @@ -0,0 +1,35 @@ +--- +title: "CHECK-CONFIG" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/check_config.html" +--- + + + +The `CHECK-CONFIG` subcommand checks the parameter settings in the BART configuration file as well as the database server configuration for which the `-s` option is specified. + +**Syntax:** + +`bart CHECK-CONFIG [ –s server_name ]` + +The following table describes the option. + +| Options | Description | +| ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s ` or `--server ` | `server_name` is the name of the database server to be checked for proper configuration. If the option is omitted, the settings of the global section of the BART configuration file are checked. | + +- When the `-s` option is omitted, the global section \[BART] parameters including `bart_host`, `backup_path`, and `pg_basebackup_path` are checked. +- When the `-s` option is specified, the server section parameters are checked. In addition, certain database server `postgresql.conf` parameters are also checked, which include the following: + - The `cluster_owner` parameter must be set to the user account owning the database cluster directory. + - A passwordless SSH/SCP connection must be set between the BART user and the user account specified by the `cluster_owner` parameter. + - A database superuser must be specified by the BART `user` parameter. + - The `pg_hba.conf` file must contain a replication entry for the database superuser specified by the BART `user` parameter. + - The `archive_mode` parameter in the `postgresql.conf` file must be enabled. + - The `archive_command` parameter in the `postgresql.auto.conf` or the `postgresql.conf` file must be set. + - The `allow_incremental_backups` parameter in the BART configuration file must be enabled for database servers for which incremental backups are to be taken. + - Archiving of WAL files to the `archive_path` must be in process. + - The WAL scanner program must be running. + +The `CHECK-CONFIG` subcommand displays an error message if the required configuration is not properly set. diff --git a/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/02_init.mdx b/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/02_init.mdx new file mode 100644 index 00000000000..d8cdeed8126 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/02_init.mdx @@ -0,0 +1,41 @@ +--- +title: "INIT" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/init.html" +--- + + + +The `INIT` subcommand is used to create the BART backup catalog directory, rebuild the BART `backupinfo` file, and set the `archive_command` in the PostgreSQL server based on the `archive_command` setting in the `bart.cfg` file. + +!!! Note + If the `archive_mode` configuration parameter is set to `off`, then the `-o` option must be used to set the Postgres `archive_command` using the BART `archive_command` parameter in the BART configuration file even if the `archive_command` is not currently set in `postgresql.conf` nor in `postgresql.auto.conf` file. + +**Syntax:** + +```text +bart INIT [ –s { | all } ] [ -o ] + [ -r [ -i { | | all } ] ] + [--no-configure] +``` + +All subcommand options are generally specified in lowercase. The following table describes the command options: + +| Options | Description | +| ------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s { \| all }`

`--server { \| all }` | `server_name` is the name of the database server to which the `INIT` actions are to be applied. If `all` is specified or if the option is omitted, the actions are applied to all servers. | +| `-o`

`--override` | Overrides the existing, active Postgres `archive_command` configuration parameter setting in the `postgresql.conf` file or the `postgresql.auto.conf` file using the BART `archive_command` parameter in the BART configuration file. The `INIT` generated archive command string is written to the `postgresql.auto.conf` file. | +| `-r`

`--rebuild` | Rebuilds the backupinfo file (a text file named `backupinfo`) located in each backup subdirectory. This option is only intended for recovering from a situation where the backupinfo file has become corrupt.
If the backup was initially created with a user-defined backup name, and then the `INIT -r` option is invoked to rebuild that `backupinfo` file, the user-defined backup name is no longer available. Thus, future references to the backup must use the backup identifier. | +| `-i { \| \| all }`

`--backupid { \| \| all }` | `` is an integer, backup identifier and `` is the user-defined alphanumeric name for the backup. If `all` is specified or if the option is omitted, the backupinfo files of all backups for the database servers specified by the `-s` option are recreated. The `-i` option can only be used with the `-r` option. | +| `--no-configure` | Prevents the `archive_command` from being set in the PostgreSQL server. | + +**Archive Command Setting** + +After the `archive_command` is set, you need to either restart the PostgreSQL server or reload the configuration file in the PostgreSQL server based on the following conditions. + +- If the `archive_mode` is set to `off` and `archive_command` is not set in the PostgreSQL server, the `archive_command` is set based on the `archive_command` setting in the `bart.cfg` and also sets the `archive_mode` to `on`. In this case, you need to restart the PostgreSQL server using `pg_ctl restart` +- If the `archive_mode` is set to `on` and `archive_command` is not set in the PostgreSQL server, the `archive_command` is set based on the `archive_command` setting in the `bart.cfg`. In this case, you need to reload the configuration in the PostgreSQL server using `pg_reload_conf()` or `pg_ctl reload`. +- If the `archive_mode` is set to `off` and `archive_command` is already set in the PostgreSQL server, the `archive_mode` is set to on. In this case, you need to restart the PostgreSQL server using `pg_ctl restart` +- If the `archive_mode` is set to `on` and `archive_command` is already set in the PostgreSQL server, then the `archive_command` is not set unless `-o` option is specified. diff --git a/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/03_backup.mdx b/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/03_backup.mdx new file mode 100644 index 00000000000..aa12cd957e2 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/03_backup.mdx @@ -0,0 +1,104 @@ +--- +title: "BACKUP" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/backup.html" +--- + + + +The `BACKUP` subcommand is used to create a full backup or an incremental backup. + +**Syntax for full backup:** + +```text +bart BACKUP –s { | all } [ -F { p | t } ] + [ -z ] [ –c ] + [ --backup-name ] + [ --thread-count ] + [ { --with-pg_basebackup | --no-pg_basebackup } ] +``` + +!!! Note + While taking a backup, if a file (for example, database server log file) exceeding 1 GB size is stored in the `$PGDATA` directory, the backup will fail. To avoid such backup failure, you need to store large files (exceeding 1 GB) outside the `$PGDATA` directory. + +**Syntax for incremental Backup:** + +```text +bart BACKUP –s { | all } [ -F p] + [ --parent { | } ] + [ --backup-name ] + [ --thread-count ] + [ --check ] +``` + +!!! Note + To take an [incremental backup](../../02_overview/01_block-level_incremental_backup/#block-level_incremental_backup), you must take a full backup first followed by incremental backup. + +**Please Note:** + +- While a `BACKUP` subcommand is in progress, no other subcommands must be invoked. Any subcommands invoked while a backup is in progress will skip and ignore the backups. + +- For full backup, the target default format is a tar file, whereas for incremental backup, only plain format must be specified. + +- The backup is saved in the `//` directory, where `` is the value assigned to the `` parameter in the BART configuration file, `` is the lowercase name of the database server as listed in the configuration file, and `` is a backup identifier assigned by BART to the particular backup. + +- MD5 checksums of the full backup and any user-defined tablespaces are saved as well for tar backups. + +- Before performing the backup, BART checks to ensure if there is enough disk space to completely store the backup in the BART backup catalog. + +- In the `postgresql.conf` file, ensure the `wal_keep_segments` configuration parameter is set to a sufficiently large value. A low setting of the `wal_keep_segments` configuration parameter may result in the deletion of some WAL files before the BART `BACKUP` subcommand saves them to the `archive_path`. For information about the `wal_keep_segments` parameter, see the [PostgreSQL Core Documentation](https://www.postgresql.org/docs/current/static/runtime-config-replication.html). + +- In the BART configuration file, setting `xlog_method=stream` will instruct the server to stream the transaction log in parallel with creation of the backup for a specific database server; otherwise the transaction log files are collected upon completion of the backup. See the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/) for details about database server setting. + + !!! Note + If the transaction log streaming method is used, the `-Fp` option for a plain text backup format must be specified with the `BACKUP` subcommand. + +- When you use BART to take a backup of PostgreSQL server, multiple backups can be taken simultaneously and if a backup is interrupted, the backup mode is terminated automatically without the need to run `pg_stop_backup()` command manually to terminate the backup. + +**Options** + +Along with the `BACKUP` subcommand, specify the following option: + +| Options | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s { server_name \| all }`
`--server { server_name \| all }` | `server_name` is the database server name to be backed up as specified in the BART configuration file. If `all` is specified, all servers are backed up. This option is mandatory.
If `all` is specified, and a connection to a database server listed in the BART configuration file cannot be opened, the backup for that database server is skipped, but the backup operation continues for the other database servers. | + +Specify the following options as required. If you do not specify any of the following options, the backup is created using default settings. + +| Options | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-F { p \| t }`
`--format { p \| t }` | Specify this option to provide the backup file format. Use `p` for plain text or `t` for tar. If the option is omitted, the default is tar format.
For taking incremental backups, the option `-Fp` must be specified. | +| `-z`
`--gzip` | This is applicable only for full backup. Specify this option to use gzip compression on the tar file output using the default compression level. This option is applicable only for the tar format. | +| `-c `
`--compress-level ` | This is applicable only for full backup. Specify this option to use the gzip compression level on the tar file output. `compression_level` is a digit from 1 through 9, with 9 being the best compression. This option is applicable only for the tar format. | +| `--parent { backup_id \| backup_name }` | Specify this option to take an incremental backup. `` is the backup identifier of a parent backup. `` is the user-defined alphanumeric name of a parent backup.
The parent is a backup taken prior to the incremental backup. The parent backup can be either a full backup or an incremental backup.
The option `–Fp` must be specified since an incremental backup can only be taken in plain text format.
An incremental backup cannot be taken on a standby database server. See [Block-Level Incremental Backup](../../02_overview/01_block-level_incremental_backup/#block-level_incremental_backup) for additional information on incremental backups. | +| `--backup-name ` | Specify this option to assign a user-defined, alphanumeric friendly name to the backup. The maximum permitted length of backup name is 49 characters.
The backup name may include the following variables to be substituted by the timestamp values when the backup is taken: 1) `%year` – 4-digit year, 2) `%month` – 2-digit month, 3) `%day` – 2-digit day, 4) `%hour` 2-digit hour, 5) `%minute` – 2-digit minute, and 6) `%second` – 2-digit second.
To include the percent sign (`%`) as a character in the backup name, specify `%%` in the alphanumeric string.
If the backup name contains space characters (i.e. more than one word) or when referenced with the option `-i` by other subcommands (such as `restore`), enclose the string in single quotes or double quotes. See [backup name examples](#backup_name_examples).
If the `--backup-name` option is not specified, and the `backup_name` parameter is not set for this database server in the BART configuration file, then the backup can only be referenced in other BART subcommands by the BART assigned backup identifier. | +| `--thread-count ` | Use this option to use the number of worker threads to run in parallel to copy blocks for a backup.
If the option `--thread-count` is omitted, then the `thread_count` parameter in the BART configuration file applicable to this database server is used.
If the option `--thread-count` is not enabled for this database server, then the `thread_count` setting in the global section of the BART configuration file is used.
If the option `--thread-count` is not set in the global section as well, the default number of threads is 1.
If parallel backup is run with N number of worker threads, then it will initiate N+ 1 concurrent connections with the server.
Thread count will not be effective if backup is taken on a standby server.
For more information about the `--thread-count` parameter, see the EDB Backup and Recovery Installation and Upgrade Guide available at the [EDB website](/bart/latest/bart_inst/) | +| `--with-pg_basebackup` | This is applicable only for full backup. Specify this option to use `pg_basebackup` to take a full backup. The number of thread counts in effect is ignored as given by the `thread_count` parameter in the BART configuration file.
When taking a full backup, if the thread count in effect is greater than `1`, then the `pg_basebackup` utility is not used to take the full backup (parallel worker threads are used) unless the option `--with-pg_basebackup` is specified with the `BACKUP` subcommand. | +| `--no-pg_basebackup` | This is applicable only for full backup. Specify this option if you do not want `pg_basebackup` to be used to take a full backup.
When taking a full backup, if the thread count in effect is only `1`, then the `pg_basebackup` utility is used to take the full backup unless the option `--no-pg_basebackup` is specified with the `BACKUP` subcommand. | +| `--check` | This is applicable only for incremental backup. Specify this option to verify if the required MBM files are present in the `archived_wals` directory as specified in the `archive_path` parameter in the `bart.cfg` file before taking an incremental backup. The option `--parent` must be specified when the option `--check` is used. An actual incremental backup is not taken when the option `--check` is specified. | + + + +**Backup Name Examples** + +The following examples demonstrate using the `--backup-name` clause: + +```text +./bart backup -s ppas12 -Ft --backup-name "YEAR = %year +MONTH = %month DAY = %day" +./bart backup -s ppas12 -Ft --backup-name "YEAR = %year +MONTH = %month DAY = %day %%" +./bart show-backups -s ppas12 -i "test backup" +``` + +**Error messages** + +The following table lists the error messages that may be encountered when using the `BACKUP` subcommand: + +| error message | Cause | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `edb@localhost bin]$ ./bart backup -s mktg -Ft`

`WARNING: xlog_method is empty, defaulting to global policy`

`ERROR: backup failed for server 'mktg'`

`free disk space is not enough to backup the server 'mktg'`

`space available 13.35 GB, approximately required 14.65 GB` | Insufficient free disk space. | +| `ERROR: backup failed for server 'mktg'`

`command failed with exit code 1`

`pg_basebackup: could not get transaction log end position from server: ERROR: requested WAL segment 00000001000000D50000006B has already been removed` | The wal_keep_segments configuration parameter is not set to a sufficiently large value in the postgresql.conf file. | +| `ERROR: backup failed for server 'mktg'`

`connection to the server failed: could not connect to server: Connection refused`

`Is the server running on host "172.16.114.132" and accepting`

`TCP/IP connections on port 5444?` | A connection to a database server listed in the BART configuration file fails. As a result the backup for that database server is skipped, but the backup operation continues for other database servers | diff --git a/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/04_show_servers.mdx b/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/04_show_servers.mdx new file mode 100644 index 00000000000..778efd3d4d6 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/04_show_servers.mdx @@ -0,0 +1,21 @@ +--- +title: "SHOW-SERVERS" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/show_servers.html" +--- + + + +The `SHOW-SERVERS` subcommand displays the information for the managed database servers listed in the BART configuration file. + +**Syntax:** + +`bart SHOW-SERVERS [ –s { | all } ]` + +The following table describes the command options. + +| Options | Description | +| ---------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s { \| all }`
`--server { \| all }` | `` is the name of the database server whose BART configuration information is to be displayed. If `all` is specified or if the option is omitted, information for all database servers is displayed. | diff --git a/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/05_show_backups.mdx b/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/05_show_backups.mdx new file mode 100644 index 00000000000..d006df69db1 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/05_show_backups.mdx @@ -0,0 +1,25 @@ +--- +title: "SHOW-BACKUPS" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/show_backups.html" +--- + +The `SHOW-BACKUPS` subcommand displays the backup information for the managed database servers. + +**Syntax:** + +```text +bart SHOW-BACKUPS [ –s { | all } ] + [ -i { | | all } ] + [ -t ] +``` + +The following table describes the command options: + +| Options | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s { \| all }`
`--server { \| all }` | `` is the name of the database server whose backup information is to be displayed.
If `all` is specified or if the option is omitted, the backup information for all database servers is displayed with the exception as described by the following note:
If `SHOW-BACKUPS` is invoked while the BART `BACKUP` subcommand is in progress, backups affected by the backup process are shown in progress status in the displayed backup information. | +| `-i { \| \| all }`
`--backupid { \| \| all }` | `` is a backup identifier and `` is the user-defined alphanumeric name for the backup.
If `all` is specified or if the option is omitted, all backup information for the relevant database server is displayed. | +| `-t`
`--toggle` | Displays more backup information in a list format. If the option is omitted, the default is a tabular format. | diff --git a/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/06_verify_chksum.mdx b/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/06_verify_chksum.mdx new file mode 100644 index 00000000000..4ec79d52d62 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/06_verify_chksum.mdx @@ -0,0 +1,29 @@ +--- +title: "VERIFY-CHKSUM" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/verify_chksum.html" +--- + + + +The `VERIFY-CHKSUM` subcommand verifies the MD5 checksums of the full backups and any user-defined tablespaces for the specified database server or for all database servers. The checksum is verified by comparing the current checksum of the backup against the checksum when the backup was taken. + +!!! Note + The `VERIFY-CHKSUM` subcommand is only used for tar format backups. It is not applicable to plain format backups. + +**Syntax:** + +```text +bart VERIFY-CHKSUM + [ -s { | all } ] + [ -i { | | all } ] +``` + +The following table describes the command options: + +| Options | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s { \| all }`

`--server { \| all }` | `` is the name of the database server whose tar backup checksums are to be verified. If `all` is specified or if the `-s` option is omitted, the checksums are verified for all database servers. | +| `-i { \| \| all }`

`--backupid { \| \| all }` | `` is the backup identifier of a tar format full backup whose checksum is to be verified along with any user-defined tablespaces.
`` is the user-defined alphanumeric name for the full backup.
If `all` is specified or if the `-i` option is omitted, the checksums of all tar backups for the relevant database server are verified. | diff --git a/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/07_manage.mdx b/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/07_manage.mdx new file mode 100644 index 00000000000..52a74badaa7 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/07_manage.mdx @@ -0,0 +1,62 @@ +--- +title: "MANAGE" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/manage.html" +--- + + + +The `MANAGE` subcommand can be invoked to: + +- Evaluate backups, mark their status, and delete obsolete backups based on the `retention_policy` parameter in the BART configuration file (See [Managing Backups Using a Retention Policy](../02_managing_backups_using_a_retention_policy/#managing_backups_using_a_retention_policy) for information about retention policy management). + +- Compress the archived WAL files based on the `wal_compression` parameter in the BART configuration file (See the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/) for information about setting this parameter). + + **Syntax:** + + ```text + bart MANAGE [ –s { | all} ] + [ -l ] [ -d ] + [ -c { keep | nokeep } + -i { | | all } ] + [ -n ] + ``` + +The following summarizes the actions performed when the `MANAGE` subcommand is invoked: + +- When the `MANAGE` subcommand is invoked with no options or with only the `-s ` or `-s all` option, the following actions are performed: + - For the server specified by the `-s` option, or for all servers (if `-s all` is specified or the `-s` option is omitted), active backups are marked as `obsolete` in accordance with the retention policy. + - All backups that were marked `obsolete` or `keep` prior to invoking the `MANAGE` subcommand remain marked with the same prior status. + - If WAL compression is enabled for the database server, then any uncompressed, archived WAL files in the BART backup catalog of the database server are compressed with gzip. +- When the `MANAGE` subcommand is invoked with any other option besides the `-s` option, the following actions are performed: + - For the server specified by the `-s` option, or for all servers, the action performed is determined by the other specified options (that is, `-l` to list obsolete backups, `-d` to delete obsolete backups, `-c` to keep or to return backups to `active` status, or `-n` to perform a dry run of any action). + - No marking of `active` backups to `obsolete` status is performed regardless of the retention policy. + - All backups that were marked `obsolete` or `keep` prior to invoking the `MANAGE` subcommand remain marked with the same prior status unless the `-c` option (without the `-n` option) is specified to change the backup status of the particular backup or all backups referenced with the `-i` option. + - No compression is applied to any uncompressed, archived WAL file in the BART backup catalog regardless of whether or not WAL compression is enabled. + +The following are additional considerations when using WAL compression: + +- Compression of archived WAL files is not permitted for database servers on which incremental backups are to be taken. +- The gzip compression program must be installed on the BART host and be accessible in the `PATH` of the BART user account. +- When the `RESTORE` subcommand is invoked, if the `-c` option is specified or if the `copy_wals_during_restore` BART configuration parameter is enabled for the database server, then the following actions occur: + + - If compressed, archived WAL files are stored in the BART backup catalog and the location to which the WAL files are to be restored is on a remote host relative to the BART host: + + - the archived WAL files are transmitted across the network to the remote host in compressed format only if the gzip compression program is accessible in the `PATH` of the remote user account that is used to log into the remote host when performing the `RESTORE` operation. + - This remote user is specified with either the `remote_host` parameter in the BART configuration file or the `RESTORE -r` option (see [RESTORE](08_restore/#restore)). + - Transmission of compressed WAL files results in less network traffic. After the compressed WAL files are transmitted across the network, the `RESTORE` subcommand uncompresses the files for the point-in-time recovery operation. + - If the gzip program is not accessible on the remote host in the manner described in the previous bullet point, then the compressed, archived WAL files are first uncompressed while on the BART host, then transmitted across the network to the remote host in uncompressed format. +- When the `RESTORE` subcommand is invoked without the `-c` option and the `copy_wals_during_restore` BART configuration parameter is disabled for the database server, then any compressed, archived WAL files needed for the `RESTORE` operation are uncompressed in the BART backup catalog. The uncompressed WAL files can then be saved to the remote host by the `restore_command` in the `postgresql.auto.conf` file when the database server archive recovery begins. + +The following table describes the command options: + +| Options | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `s { \| all }`
`--server { \| all }` | `` is the name of the database server to which the actions are to be applied. If `all` is specified or if the `-s` option is omitted, the actions are applied to all database servers. | +| `-l`
`--list-obsolete` | Lists the backups marked as obsolete. | +| `-d`
`--delete-obsolete` | Delete the backups marked as `obsolete`. This action physically deletes the backup along with its archived WAL files and any MBM files for incremental backups. | +| `-c { keep \| nokeep }`

`--change-status { keep \| nokeep }` | Specify `keep` to change the status of a backup to `keep` to retain it indefinitely.
Specify `nokeep` to change the status of any backup back to active status. The backup can then be re-evaluated and possibly be marked to `obsolete` according to the retention policy by subsequent usage of the `MANAGE` subcommand.
The `–i` option must be included when using the `-c` option. | +| `-i { \| \| all }`

`--backupid { \| \| all }` | `` is a backup identifier and `` is the user-defined alphanumeric name for the backup.
If `all` is specified, then actions are applied to all backups.
The `–c` option must be included when using the `-i` option. | +| `-n`
`--dry-run` | Performs the test run and displays the results prior to actually implementing the actions as if the operation was performed, however, no changes are actually made.
If `-n` is specified with the `-d` option, it displays which backups would be deleted, but does not actually delete the backups.
If `-n` is specified with the `-c` option, it displays the keep or nokeep action, but does not actually change the backup from its current status.
If `-n` is specified alone with no other options, or with only the `-s` option, it displays which active backups would be marked as obsolete, but does not actually change the backup status. In addition, no compression is performed on uncompressed, archived WAL files even if WAL compression is enabled for the database server. | diff --git a/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/08_restore.mdx b/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/08_restore.mdx new file mode 100644 index 00000000000..d74a4d1f5d6 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/08_restore.mdx @@ -0,0 +1,46 @@ +--- +title: "RESTORE" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/restore.html" +--- + + + +The `RESTORE` subcommand restores a backup and its archived WAL files for the designated database server to the specified directory location. If the appropriate `RESTORE` options are specified, all recovery settings will be saved in the `postgresql.auto.conf` file. + +**Syntax:** + +```text +bart RESTORE –s -p + [ –i { | } ] + [ -r ] + [ -w ] + [ -t ] + [ { -x | -g } ] + [ -c ] +``` + +For information about using a continuous archive backup for recovery, see the [PostgreSQL Core Documentation](https://www.postgresql.org/docs/13/static/continuous-archiving.html). This reference material provides detailed information about the underlying point-in-time recovery process and the meaning and usage of the restore options that are generated into the `postgresql.auto.conf` file by BART. + +**Please note**: + +- For special requirements when restoring an incremental backup to a remote database server, see [Restoring an Incremental Backup on a Remote Host](../../02_overview/01_block-level_incremental_backup/05_restoring_an_incremental_backup/#restoring_an_incremental_backup_on_a_remote_host). +- Check to ensure that the host where the backup is to be restored contains enough disk space for the backup and its archived WAL files. The `RESTORE` subcommand may result in an error while copying files if there is not enough disk space available. +- See [Performing a Restore Operation](../01_bart_management_overview/01_performing_a_restore_operation/#performing_a_restore_operation) to view steps on how to perform a restore operation and see [Point-In-Time Recovery Operation](../01_bart_management_overview/02_point_in_time_recovery_operation/#point_in_time_recovery_operation) to view steps on how to perform a point-in-time recovery operation. +- If the backup is restored to a different database cluster directory than where the original database cluster resided, certain operations dependent upon the database cluster location may fail. This happens if their supporting service scripts are not updated to reflect the new directory location of restored backup. For information about the usage and modification of service scripts, see the *EDB Advanced Server Installation Guide* available at the [EDB website](/epas/latest/). + +The following table describes the command options: + +| Options | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s `
`--server ` | `` is the name of the database server to be restored. | +| `-p `
`--restore-path ` | `` is the directory path where the backup of the database server is to be restored. The directory must be empty and have the proper ownership and privileges assigned to it. | +| `-i { \| }`

`--backupid { \| }` | `` is the backup identifier of the backup to be used for the restoration and `` is the user-defined alphanumeric name for the backup.
If the option is omitted, the default is to use the latest backup. | +| `-r or --remote-host ` | `` is the user account on the remote database server host that accepts a passwordless SSH/SCP login connection and is the owner of the directory where the backup is to be restored and `` is the IP address of the remote host to which the backup is to be restored. This option must be specified if the `` parameter for this database server is not set in the BART configuration file.
If the BART user account is not the same as the operating system account owning the `` directory given with the `-p` option, use the `` BART configuration parameter or the `RESTORE` subcommand `-r` option to specify the `` directory owner even when restoring to a directory on the same host as the BART host.
See the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/) for information about the `` parameter. | +| `-w `
`--workers ` | `` is the specification of the number of worker processes to run in parallel to stream the modified blocks of an incremental backup to the restore location.
For example, if 4 worker processes are specified, 4 receiver processes on the restore host and 4 streamer processes on the BART host are used. The output of each streamer process is connected to the input of a receiver process. When the receiver gets to the point where it needs a modified block file, it obtains those modified blocks from its input. With this method, the modified block files are never written to the restore host disk. If the `-w` option is omitted, the default is `1` \| worker process. | +| `-t `
`--target-tli ` | `` is the integer identifier of the timeline to be used for replaying the archived WAL files for point-in-time recovery. | +| `-x `
`--target-xid ` | `` is the integer identifier of the transaction ID that determines the transaction up to and including, which point-in-time recovery encompasses. Include either the `-x ` or the `--target-xid ` option if point-in-time recovery is desired. | +| `-g `

`--target-timestamp ` | `` is the timestamp that determines the point in time up to and including, which point-in-time recovery encompasses. Include either the `--target-timestamp ` or the `-g ` option if point-in-time recovery is desired. | +| `-c`
`--copy-wals` | Specify this option to copy archived WAL files from the BART backup catalog to `/archived_wals` directory.
If recovery settings are saved in the `postgresql.auto.conf` file for point-in-time recovery, the `restore_command` retrieves the WAL files from `/archived_wals` for the database server archive recovery.
If the `-c` option is omitted and the `copy_wals_during_restore` parameter in the BART configuration file is not enabled in a manner applicable to this database server, the `restore_command` in the `postgresql.auto.conf` file is generated by default to retrieve the archived WAL files directly from the BART backup catalog. See the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/) for information about the `copy_wals_during_restore` parameter. | \ No newline at end of file diff --git a/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/09_delete.mdx b/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/09_delete.mdx new file mode 100644 index 00000000000..7f9836ad724 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/09_delete.mdx @@ -0,0 +1,34 @@ +--- +title: "DELETE" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/delete.html" +--- + + + +The `DELETE` subcommand removes the subdirectory and data files from the BART backup catalog for the specified backups along with its archived WAL files. + +**Syntax:** + +```text +bart DELETE –s + -i { all | + [']{ | },... }['] + } + [ -n ] +``` + +!!! Note + While invoking the `DELETE` subcommand, you must specify a specific database server. + +For database servers under a retention policy, there are conditions where certain backups may not be deleted. See [Deletions Permitted Under a Retention Policy](../02_managing_backups_using_a_retention_policy/04_managing_the_backups_based_on_the_retention_policy/#deletions_permitted_under_retention_policy) for information about permitted backup deletions. + +The following table describes the command options: + +| Options | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-s `

`--server ` | `` is the name of the database server whose backups are to be deleted. | +| `-i { all \| [']{ \| },... }['] }`

`--backupid { all \| [']{ \| },... }['] }` | `` is the backup identifier of the backup to be deleted and `` is the user-defined alphanumeric name for the backup.
Multiple backup identifiers and backup names may be specified in a comma-separated list. The list must be enclosed within single quotes if there is any white space appearing before or after each comma.
If `all` is specified, all of the backups and their archived WAL files for the specified database server are deleted. | +| `-n`
`--dry-run` | Displays the results as if the deletions were done, however, no physical removal of the files are actually performed. In other words, a test run is performed so that you can see the potential results prior to actually initiating the action.
After the deletion, the BART backup catalog for the database server no longer contains the corresponding directory for the deleted backup ID. The `archived_wals` subdirectory no longer contains the WAL files of the backup. | diff --git a/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/index.mdx b/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/index.mdx new file mode 100644 index 00000000000..379dd137082 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/03_using_bart/03_basic_bart_subcommand_usage/index.mdx @@ -0,0 +1,50 @@ +--- +title: "Basic BART Subcommand Usage" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/basic_bart_subcommand_usage.html" +--- + + + +This section briefly describes the BART subcommands and options. You can invoke the `bart` program (located in the `/bin` directory) with the desired options and subcommands to manage your BART installation. + +To view examples of BART subcommands, see the *EDB Backup and Recovery Reference Guide* available at the [EDB website](/bart/latest/bart_ref/). + +**Syntax for invoking BART**: + + `bart [ general_option ]... [ subcommand ] [subcommand_option ]...` + +- When invoking a subcommand, the subcommand name is not case-sensitive (that is, the subcommand can be specified in uppercase, lowercase, or mixed case). +- Each subcommand has a number of its own applicable options that are specified following the subcommand. All options are available in both single-character and multi-character forms. +- Keywords are case-sensitive; options are generally specified in lowercase unless specified otherwise in this section. +- When invoking BART, the current user must be the BART user account (operating system user account used to run the BART command line program). For example, enterprisedb or postgres can be selected as the BART user account when the managed database servers are Advanced Server or PostgreSQL respectively. +- The chosen operating system user account must own the BART backup catalog directory, be able to run the `bart` program and the `bart scanner` program, and have a passwordless SSH/SCP connection established between database servers managed by BART. + +You can specify one or more of the following general options: + +| Options | Description | +| ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-h` or `--help` | Displays general syntax and information on BART usage. All subcommands support a help option (`-h`, `--help`). If the help option is specified, information is displayed regarding that particular subcommand. The subcommand, itself, is not executed. | +| `-v` or `--version` | Displays the BART version information. | +| `-d` or `--debug` | Displays debugging output while executing BART subcommands. | +| `-c `or `--config-path ` | Specifies `config_file_path` as the full directory path to a BART configuration file. Use this option if you do not want to use the default BART configuration file `/etc/bart.cfg`. | + +**Troubleshooting: Setting Path Environment Variable** + +If execution of BART subcommands fails with the following error message, then you need to set the `LD_LIBRARY_PATH` to include the `libpq` library directory: + + `./bart: symbol lookup error: ./bart: undefined symbol: PQping` + +**Workaround:** Set the `LD_LIBRARY_PATH` environment variable for the BART user account to include the directory containing the `libpq` library. This directory is `POSTGRES_INSTALL_HOME/lib`. + +It is suggested that the `PATH` and the `LD_LIBRARY_PATH` environment variable settings be placed in the BART user account’s profile. See the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/) for details. + +In the following sections, the `help` option is omitted from the syntax diagrams for the purpose of providing readability for the subcommand options. + +
+ +check_config init backup show_servers show_backups verify_chksum manage restore delete + +
diff --git a/product_docs/docs/bart/2.5/bart_user/03_using_bart/04_running_the_bart_wal_scanner.mdx b/product_docs/docs/bart/2.5/bart_user/03_using_bart/04_running_the_bart_wal_scanner.mdx new file mode 100644 index 00000000000..b047505556e --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/03_using_bart/04_running_the_bart_wal_scanner.mdx @@ -0,0 +1,56 @@ +--- +title: "Running the BART WAL Scanner" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/running_the_bart_wal_scanner.html" +--- + + + +Use the BART WAL scanner to invoke the `bart-scanner` program located in the `BART_HOME/bin` directory. When invoking the WAL scanner, the current user must be the BART user account. + +**Syntax:** + +```text +bart-scanner + [ -d ] + [ -c ] + { –h | + -v | + --daemon | + -p | + | + RELOAD | + STOP +``` + +!!! Note + For clarity, the syntax diagram shows only the single-character option form (for example, `-d`), but the multi-character option form (for example, `--debug`) is supported as well. + +The WAL scanner processes each WAL file to find and record modified blocks in a corresponding modified block map (MBM) file. The default approach is that the WAL scanner gets notified whenever a new WAL file is added to the `archived_wals` directory specified in the `archive_path` parameter of the configuration file. It then scans the WAL file and produces the MBM file. + +The default approach does not work in some cases; for example when the WAL files are shipped to the `archive_path` using the Network File System (NFS) and also in case of some specific platforms. This results in the WAL files being copied to the `archived_wals` directory, but the WAL scanner does not scan them (as WAL scanner is not aware of WAL file) and produce the MBM files. This results in the failure of an incremental backup. This can be avoided by using the timer-based WAL scanning approach, which is done by using the `scan_interval` parameter in the BART configuration file. The value for `scan_interval` is the number of seconds after which the WAL scanner will initiate force scanning of the new WAL files. See the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/) for more information about `scan_interval` parameter. + +When the `bart-scanner` program is invoked, it forks a separate process for each database server enabled with the `allow_incremental_backups` parameter. + +The WAL scanner processes can run in either the foreground or background depending upon usage of the `--daemon` option. Use the `--daemon` option to run the WAL scanner process in the background so that all output messages can be viewed in the BART log file. If the `--daemon` option is omitted, the WAL scanner process runs in the foreground and all output messages can be viewed from the terminal running the program as well as in the BART log file. + +See the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/) for additional information about WAL scanning, `allow_incremental_backups`, and `logfile` parameters. + +!!! Note + The BART user account’s `LD_LIBRARY_PATH` environment variable may need to be set to include the directory containing the `libpq` library if invocation of the WAL scanner program fails. See [Basic BART Subcommand Usage](03_basic_bart_subcommand_usage/#basic_bart_subcommand_usage) for information about setting the `LD_LIBRARY_PATH` environment variable. + +The following table describes the scanner options: + +| Options | Description | +| ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-h` `--help` | Displays general syntax and information on WAL scanner usage. | +| `-v` `--version` | Displays the WAL scanner version information. | +| `-d` `--debug` | Displays debugging output while executing the WAL scanner with any of its options. | +| `-c ` `--config-path ` | Use this option to specify the `config_file_path` of a BART configuration file if you do not want to use the default BART configuration file path `BART_HOME/etc/bart.cfg`. | +| `--daemon` | Runs the WAL scanner as a background process. | +| `-p ` `--print ` | Use this option to specify the full directory path to an MBM file whose content is to be printed. The directory specified in the `archive_path` parameter in the `bart.cfg` file contains the MBM files. | +| `` | Specify the full directory path to a WAL file to be scanned. The directory specified in the `archive_path` parameter in the `bart.cfg` file contains the WAL files. Use this option if a WAL file in the archive path is missing its MBM file. This option is to be used for assisting the EnterpriseDB support team for debugging problems that may have been encountered. | +| `RELOAD` | Reloads the BART configuration file. The keyword `RELOAD` is not case-sensitive. The `RELOAD` option is useful if you make changes to the configuration file after the WAL scanner has been started. It will reload the configuration file and adjust the WAL scanners accordingly. For example, if a server section allowing incremental backups is removed from the BART configuration file, then the process attached to that server will stop. Similarly, if a server allowing incremental backups is added, a new WAL scanner process will be launched to scan the WAL files of that server. | +| `STOP` | Stops the WAL scanner. The keyword `STOP` is not case-sensitive. | diff --git a/product_docs/docs/bart/2.5/bart_user/03_using_bart/index.mdx b/product_docs/docs/bart/2.5/bart_user/03_using_bart/index.mdx new file mode 100644 index 00000000000..a076b82b5e9 --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/03_using_bart/index.mdx @@ -0,0 +1,19 @@ +--- +title: "Using BART" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/using_bart.html" +--- + + + +After installing and configuring the BART host and the database servers, you can start using BART. + +This section describes how to perform backup and recovery management operations using BART. Review the sections that follow before proceeding with any BART operation. + +
+ +bart_management_overview managing_backups_using_a_retention_policy basic_bart_subcommand_usage running_the_bart_wal_scanner + +
diff --git a/product_docs/docs/bart/2.5/bart_user/04_using_tablespaces.mdx b/product_docs/docs/bart/2.5/bart_user/04_using_tablespaces.mdx new file mode 100644 index 00000000000..94d5450778a --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/04_using_tablespaces.mdx @@ -0,0 +1,59 @@ +--- +title: "Using Tablespaces" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/using_tablespaces.html" +--- + + + +If the database cluster contains user-defined tablespaces (that is, tablespaces created with the `CREATE TABLESPACE` command): + +- You can take full backups with the `BACKUP` subcommand in either tar (`-Ft`) or plain text (`-Fp`) backup file format. +- You must take incremental backups in the plain text (`-Fp`) backup file format. +- You can take full backups using the transaction log streaming method (xlog_method = stream in the BART configuration file) `--with-pg_basebackup` and the `BACKUP` subcommand in either tar (`-Ft`) or plain text (`-Fp`) backup file format. + +!!! Note + If the particular database cluster you plan to back up contains tablespaces created by the `CREATE TABLESPACE` command, then you must set the `tablespace_path` parameter in the BART configuration file before you perform a BART `RESTORE` operation. + +The `tablespace_path` parameter specifies the directory paths to which you want the tablespaces to be restored. It takes the following format: + + `OID_1=tablespace_path_1;OID_2=tablespace_path_2 ...` + +Where `OID_1`, `OID_2`, … are the Object Identifiers of the tablespaces. You can find the OIDs of the tablespaces and their corresponding soft links to the directories by listing the contents of the `POSTGRES_INSTALL_HOME/data/pg_tblspc` subdirectory as shown in the following example: + +```text +[root@localhost pg_tblspc ]# pwd +/opt/PostgresPlus/9.6AS/data/pg_tblspc +[root@localhost pg_tblspc]# ls -l +total 0 +lrwxrwxrwx 1 enterprisedb enterprisedb 17 Aug 22 16:38 16644 -> /mnt/tablespace_1 +lrwxrwxrwx 1 enterprisedb enterprisedb 17 Aug 22 16:38 16645 -> /mnt/tablespace_2 +``` + +The OIDs are `16644` and `16645` to directories `/mnt/tablespace_1` and `/mnt/tablespace_2`, respectively. + +If you later wish to restore the tablespaces to the same locations as indicated in the preceding example, the BART configuration file must contain the following entry: + +```text +[ACCTG] +host = 127.0.0.1 +port = 5444 +user = enterprisedb +cluster_owner = enterprisedb +tablespace_path = 16644=/mnt/tablespace_1;16645=/mnt/tablespace_2 +description = "Accounting" +``` + +If you later wish to restore the tablespaces to different locations, specify the new directory locations in the `tablespace_path` parameter. + +In either case, the directories specified in the `tablespace_path` parameter must exist and be empty at the time you perform the `BART RESTORE` operation. + +If the database server is running on a remote host (in other words you are also using the `remote_host` configuration parameter or will specify the `--remote-host` option with the `RESTORE` subcommand), the specified tablespace directories must exist on the specified remote host. + +To view example of backing up and restoring a database cluster on a remote host containing tablespaces, see the *EDB Backup and Recovery Reference Guide* available at the [EDB website](/bart/latest/bart_ref/). + +The directories must be owned by the user account with which you intend to start the database server (typically the Postgres user account) with no access by other users or groups as is required for the directory path to which the main full backup is to be restored. + +To view a sample BART managed backup and recovery system consisting of both local and remote database servers, see the *EDB Backup and Recovery Reference Guide* available at the [EDB website](/bart/latest/bart_ref/). diff --git a/product_docs/docs/bart/2.5/bart_user/images/EDB_logo.png b/product_docs/docs/bart/2.5/bart_user/images/EDB_logo.png new file mode 100644 index 00000000000..39a54822d85 Binary files /dev/null and b/product_docs/docs/bart/2.5/bart_user/images/EDB_logo.png differ diff --git a/product_docs/docs/bart/2.5/bart_user/images/copy_1.png b/product_docs/docs/bart/2.5/bart_user/images/copy_1.png new file mode 100644 index 00000000000..b15833dc37d Binary files /dev/null and b/product_docs/docs/bart/2.5/bart_user/images/copy_1.png differ diff --git a/product_docs/docs/bart/2.5/bart_user/images/edb.png b/product_docs/docs/bart/2.5/bart_user/images/edb.png new file mode 100644 index 00000000000..71e5bdde787 Binary files /dev/null and b/product_docs/docs/bart/2.5/bart_user/images/edb.png differ diff --git a/product_docs/docs/bart/2.5/bart_user/images/edb_logo.svg b/product_docs/docs/bart/2.5/bart_user/images/edb_logo.svg new file mode 100644 index 00000000000..f24d1dfefee --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/images/edb_logo.svg @@ -0,0 +1,19 @@ + + + edb-logo-disc-dark + + + + \ No newline at end of file diff --git a/product_docs/docs/bart/2.5/bart_user/index.mdx b/product_docs/docs/bart/2.5/bart_user/index.mdx new file mode 100644 index 00000000000..50504d9e3db --- /dev/null +++ b/product_docs/docs/bart/2.5/bart_user/index.mdx @@ -0,0 +1,17 @@ +--- +navTitle: Backup and Recovery Guide +title: "EDB Postgres Backup and Recovery User Guide" + +legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/genindex.html" + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/introduction.html" + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/conclusion.html" + - "/edb-docs/d/edb-backup-and-recovery-tool/user-guides/backup-recovery-guide/2.6.1/index.html" +--- + +
+ +introduction overview using_bart using_tablespaces conclusion + +
diff --git a/product_docs/docs/bart/2.5/index.mdx b/product_docs/docs/bart/2.5/index.mdx new file mode 100644 index 00000000000..478643cec40 --- /dev/null +++ b/product_docs/docs/bart/2.5/index.mdx @@ -0,0 +1,18 @@ +--- +title: Backup and Recovery Tool +directoryDefaults: + description: "EDB Backup and Recovery Tool Version 2.5 Documentation and release notes. A tool to manage and configure PostgreSQL backups and disaster recovery." +navigation: + - "#Getting Started" + - bart_inst + - bart_qs_7 + - bart_qs_8 + - "#Guides" + - bart_user + - bart_ref +#legacyRedirectsGenerated: + # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. + - "/edb-docs/p/edb-backup-and-recovery-tool/2.5" +--- + + diff --git a/product_docs/docs/bart/2.6/bart_inst/04_upgrading_bart.mdx b/product_docs/docs/bart/2.6/bart_inst/04_upgrading_bart.mdx index 452011c8283..7ea815ecd15 100644 --- a/product_docs/docs/bart/2.6/bart_inst/04_upgrading_bart.mdx +++ b/product_docs/docs/bart/2.6/bart_inst/04_upgrading_bart.mdx @@ -42,9 +42,11 @@ bart-scanner STOP You can also use a downloaded RPM package file to upgrade. To use a downloaded BART RPM package file to upgrade, use the `yum` command, specifying the complete RPM package file name: ```text - yum upgrade edb-bart-2.6.2 rhel7.x86_64.rpm + yum upgrade edb-bart-x.y.z rhel7.x86_64.rpm ``` + Where x denotes the major version of BART, and y and z denotes the minor version. + On a Debian or Ubuntu Host: ```text @@ -61,12 +63,12 @@ bart-scanner STOP For additional information about restoration of incremental backups on remote hosts, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). -**Step 4:** If the `bart --version` command returns an error stating the `PATH` is not available after switching from `root` user to another BART user account, adjust the setting of the `PATH` environment variable to include the location of the BART 2.6.2 executable (the `bin` subdirectory) in the `~/.bashrc` or `~/.bash_profile` files of the following user accounts: +**Step 4:** If the `bart --version` command returns an error stating the `PATH` is not available after switching from `root` user to another BART user account, adjust the setting of the `PATH` environment variable to include the location of the BART x.y.z (x denotes the major version of BART, and y and z denotes the minor version) executable (the `bin` subdirectory) in the `~/.bashrc` or `~/.bash_profile` files of the following user accounts: - The BART user account on the BART host. - The remote user account on the remote host to which incremental backups are to be restored. For details, see the EDB Backup and Recovery User Guide available at the [EDB website](/bart/latest/bart_user/). -The `PATH` setting should be the same as set for BART 2.6.2 since all versions use `/usr/edb/bart/bin`. +The `PATH` setting should be the same as set for BART x.y.z since all versions use `/usr/edb/bart/bin`. !!! Note After upgrading to the latest BART version, you must take a new full backup of your system before performing an incremental backup. diff --git a/product_docs/docs/bart/2.6/bart_inst/index.mdx b/product_docs/docs/bart/2.6/bart_inst/index.mdx index f184329968d..3f2963a4f4d 100644 --- a/product_docs/docs/bart/2.6/bart_inst/index.mdx +++ b/product_docs/docs/bart/2.6/bart_inst/index.mdx @@ -11,7 +11,7 @@ legacyRedirectsGenerated: - "/edb-docs/d/edb-backup-and-recovery-tool/installation-getting-started/installation-upgrade-guide/2.6.1/index.html" --- -This guide provides information about how to install and configure the EDB Backup and Recovery Tool (BART) 2.6.2. +This guide provides information about how to install and configure the EDB Backup and Recovery Tool (BART) 2.6. @@ -22,7 +22,7 @@ This guide provides information about how to install and configure the EDB Backu - To view a complete list of supported platforms, visit the [EDB website.](https://www.enterprisedb.com/services-support/edb-supported-products-and-platforms) !!! Note - BART 2.6.2 is no longer supported on CentOS/RHEL/OEL 6.x platforms. It is strongly recommended that EDB products running on these platforms be migrated to a supported platform. + BART 2.6 does not support CentOS/RHEL/OEL 6.x platforms. It is strongly recommended that EDB products running on these platforms be migrated to a supported platform. - BART supports the following database versions: diff --git a/product_docs/docs/bart/2.6/bart_qs_7/index.mdx b/product_docs/docs/bart/2.6/bart_qs_7/index.mdx index c6cb0084765..204cd9ebc2a 100644 --- a/product_docs/docs/bart/2.6/bart_qs_7/index.mdx +++ b/product_docs/docs/bart/2.6/bart_qs_7/index.mdx @@ -7,7 +7,7 @@ legacyRedirectsGenerated: - "/edb-docs/d/edb-backup-and-recovery-tool/quick-start/quick-start-guide-for-rhelcentos-7/2.6.1/index.html" --- -This tutorial demonstrates using `yum` to [install](#installing) and [configure](../bart_qs_8/#configuring) Backup and Recovery Tool (BART) 2.6.2 on a CentOS 7 host with minimal configuration settings.  The tutorial assumes that the user has some knowledge of installation and system administration procedures, and has administrative privileges on the host. +This tutorial demonstrates using `yum` to [install](#installing) and [configure](../bart_qs_8/#configuring) Backup and Recovery Tool (BART) 2.6 on a CentOS 7 host with minimal configuration settings.  The tutorial assumes that the user has some knowledge of installation and system administration procedures, and has administrative privileges on the host. For detailed information about BART installation and configuration, see the *BART Installation and Upgrade Guide*, available at the [EDB website](/bart/latest/bart_inst/). diff --git a/product_docs/docs/bart/2.6/bart_qs_8/index.mdx b/product_docs/docs/bart/2.6/bart_qs_8/index.mdx index 68dc03df110..66f1039827d 100644 --- a/product_docs/docs/bart/2.6/bart_qs_8/index.mdx +++ b/product_docs/docs/bart/2.6/bart_qs_8/index.mdx @@ -7,7 +7,7 @@ legacyRedirectsGenerated: - "/edb-docs/d/edb-backup-and-recovery-tool/quick-start/quick-start-guide-for-rhelcentos-8/2.6.1/index.html" --- -This tutorial demonstrates using the `dnf` command to install and configure the EDB Backup and Recovery Tool (BART) 2.6.2 on a CentOS 8 host with minimal configuration settings.  The tutorial assumes that the user has some knowledge of installation and system administration procedures and has administrative privileges on the host. +This tutorial demonstrates using the `dnf` command to install and configure the EDB Backup and Recovery Tool (BART) 2.6 on a CentOS 8 host with minimal configuration settings.  The tutorial assumes that the user has some knowledge of installation and system administration procedures and has administrative privileges on the host. For detailed information about BART installation and configuration, see the *BART Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/). diff --git a/product_docs/docs/bart/2.6/bart_user/03_using_bart/04_running_the_bart_wal_scanner.mdx b/product_docs/docs/bart/2.6/bart_user/03_using_bart/04_running_the_bart_wal_scanner.mdx index e8ea4c4787b..f4a4a6e5cbd 100644 --- a/product_docs/docs/bart/2.6/bart_user/03_using_bart/04_running_the_bart_wal_scanner.mdx +++ b/product_docs/docs/bart/2.6/bart_user/03_using_bart/04_running_the_bart_wal_scanner.mdx @@ -34,7 +34,7 @@ The WAL scanner processes each WAL file to find and record modified blocks in a The default approach does not work in some cases; for example when the WAL files are shipped to the `archive_path` using the Network File System (NFS) and also in case of some specific platforms. This results in the WAL files being copied to the `archived_wals` directory, but the WAL scanner does not scan them (as WAL scanner is not aware of WAL file) and produce the MBM files. This results in the failure of an incremental backup. This can be avoided by using the timer-based WAL scanning approach, which is done by using the `scan_interval` parameter in the BART configuration file. The value for `scan_interval` is the number of seconds after which the WAL scanner will initiate force scanning of the new WAL files. See the *EDB Backup and Recovery Installation and Upgrade Guide* available at the [EDB website](/bart/latest/bart_inst/) for more information about `scan_interval` parameter. !!! Note - After upgrading to BART 2.6.2, users who have set this parameter to a non-default value may see increased CPU consumption on the part of bart-scanner. If this is an issue, consider increasing the configured value of scan_interval parameter, or removing the setting if it is not required. + After upgrading to BART 2.6, users who have set this parameter to a non-default value may see increased CPU consumption on the part of bart-scanner. If this is an issue, consider increasing the configured value of scan_interval parameter, or removing the setting if it is not required. When the `bart-scanner` program is invoked, it forks a separate process for each database server enabled with the `allow_incremental_backups` parameter. diff --git a/product_docs/docs/bart/2.6/index.mdx b/product_docs/docs/bart/2.6/index.mdx index 98d5425839c..245dc0e42ef 100644 --- a/product_docs/docs/bart/2.6/index.mdx +++ b/product_docs/docs/bart/2.6/index.mdx @@ -1,7 +1,6 @@ --- title: Backup and Recovery Tool -productStub: true -#directoryDefaults: +directoryDefaults: description: "EDB Backup and Recovery Tool Version 2.6 Documentation and release notes. A tool to manage and configure PostgreSQL backups and disaster recovery." navigation: - "#Getting Started" @@ -11,9 +10,4 @@ navigation: - "#Guides" - bart_user - bart_ref -#legacyRedirectsGenerated: - # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. - - "/edb-docs/p/edb-backup-and-recovery-tool/2.6" ---- - - +--- \ No newline at end of file diff --git a/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/EDB_logo.png b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/EDB_logo.png new file mode 100755 index 00000000000..739c43dccc4 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/EDB_logo.png differ diff --git a/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/EFM_PgPool_Azure.png b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/EFM_PgPool_Azure.png new file mode 100644 index 00000000000..6a183c39450 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/EFM_PgPool_Azure.png differ diff --git a/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/backend_pools.png b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/backend_pools.png new file mode 100644 index 00000000000..9ec8e018a7b Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/backend_pools.png differ diff --git a/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/edb_ha_architecture.png b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/edb_ha_architecture.png new file mode 100644 index 00000000000..fe4ff379e29 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/edb_ha_architecture.png differ diff --git a/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/edb_ha_architecture1.png b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/edb_ha_architecture1.png new file mode 100755 index 00000000000..a496f59b161 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/edb_ha_architecture1.png differ diff --git a/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/edb_ha_architecture_separate_VM.png b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/edb_ha_architecture_separate_VM.png new file mode 100644 index 00000000000..117ff2973b8 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/edb_ha_architecture_separate_VM.png differ diff --git a/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/edb_logo.svg b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/edb_logo.svg new file mode 100755 index 00000000000..74babf2f8da --- /dev/null +++ b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/edb_logo.svg @@ -0,0 +1,56 @@ + + + + +logo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/failover_manager_overview.png b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/failover_manager_overview.png new file mode 100755 index 00000000000..9c79c7bdfc9 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/failover_manager_overview.png differ diff --git a/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/health_probes.png b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/health_probes.png new file mode 100644 index 00000000000..567f71828b3 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/health_probes.png differ diff --git a/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/load_balancing_rules.png b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/load_balancing_rules.png new file mode 100644 index 00000000000..41ca798f440 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/load_balancing_rules.png differ diff --git a/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/placeholder.png b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/placeholder.png new file mode 100755 index 00000000000..b83a03f80c5 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/placeholder.png differ diff --git a/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/rule_port_9898.png b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/rule_port_9898.png new file mode 100644 index 00000000000..a69326a55f3 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/rule_port_9898.png differ diff --git a/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/rule_port_9999.png b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/rule_port_9999.png new file mode 100644 index 00000000000..aebd897f798 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_pgpool_ha_guide/images/rule_port_9999.png differ diff --git a/product_docs/docs/efm/4.1/efm_quick_start/images/edb_logo.png b/product_docs/docs/efm/4.1/efm_quick_start/images/edb_logo.png new file mode 100755 index 00000000000..b83a03f80c5 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_quick_start/images/edb_logo.png differ diff --git a/product_docs/docs/efm/4.1/efm_quick_start/images/edb_logo.svg b/product_docs/docs/efm/4.1/efm_quick_start/images/edb_logo.svg new file mode 100755 index 00000000000..74babf2f8da --- /dev/null +++ b/product_docs/docs/efm/4.1/efm_quick_start/images/edb_logo.svg @@ -0,0 +1,56 @@ + + + + +logo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/product_docs/docs/efm/4.1/efm_quick_start/images/failover_manager_overview.png b/product_docs/docs/efm/4.1/efm_quick_start/images/failover_manager_overview.png new file mode 100755 index 00000000000..9c79c7bdfc9 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_quick_start/images/failover_manager_overview.png differ diff --git a/product_docs/docs/efm/4.1/efm_quick_start/images/placeholder.png b/product_docs/docs/efm/4.1/efm_quick_start/images/placeholder.png new file mode 100755 index 00000000000..b83a03f80c5 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_quick_start/images/placeholder.png differ diff --git a/product_docs/docs/efm/4.1/efm_user/images/cascading_replication.png b/product_docs/docs/efm/4.1/efm_user/images/cascading_replication.png new file mode 100644 index 00000000000..41e86182b03 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_user/images/cascading_replication.png differ diff --git a/product_docs/docs/efm/4.1/efm_user/images/cascading_replication1.png b/product_docs/docs/efm/4.1/efm_user/images/cascading_replication1.png new file mode 100644 index 00000000000..f606c9ee850 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_user/images/cascading_replication1.png differ diff --git a/product_docs/docs/efm/4.1/efm_user/images/edb_logo.png b/product_docs/docs/efm/4.1/efm_user/images/edb_logo.png new file mode 100755 index 00000000000..b83a03f80c5 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_user/images/edb_logo.png differ diff --git a/product_docs/docs/efm/4.1/efm_user/images/failover_manager_overview.png b/product_docs/docs/efm/4.1/efm_user/images/failover_manager_overview.png new file mode 100644 index 00000000000..0a511e05ab0 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_user/images/failover_manager_overview.png differ diff --git a/product_docs/docs/efm/4.1/efm_user/images/placeholder.png b/product_docs/docs/efm/4.1/efm_user/images/placeholder.png new file mode 100755 index 00000000000..b83a03f80c5 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_user/images/placeholder.png differ diff --git a/product_docs/docs/efm/4.1/efm_user/images/str_replication_dashboard_master.png b/product_docs/docs/efm/4.1/efm_user/images/str_replication_dashboard_master.png new file mode 100644 index 00000000000..dc843892554 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_user/images/str_replication_dashboard_master.png differ diff --git a/product_docs/docs/efm/4.1/efm_user/images/str_replication_dashboard_standby.png b/product_docs/docs/efm/4.1/efm_user/images/str_replication_dashboard_standby.png new file mode 100644 index 00000000000..aef1e17ad33 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_user/images/str_replication_dashboard_standby.png differ diff --git a/product_docs/docs/efm/4.1/efm_user/images/supported_scenarios_master_agent_exits.png b/product_docs/docs/efm/4.1/efm_user/images/supported_scenarios_master_agent_exits.png new file mode 100644 index 00000000000..ac9726da488 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_user/images/supported_scenarios_master_agent_exits.png differ diff --git a/product_docs/docs/efm/4.1/efm_user/images/supported_scenarios_master_db_down.png b/product_docs/docs/efm/4.1/efm_user/images/supported_scenarios_master_db_down.png new file mode 100644 index 00000000000..0eac0491e89 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_user/images/supported_scenarios_master_db_down.png differ diff --git a/product_docs/docs/efm/4.1/efm_user/images/supported_scenarios_node_becomes_isolated.png b/product_docs/docs/efm/4.1/efm_user/images/supported_scenarios_node_becomes_isolated.png new file mode 100644 index 00000000000..ac591153eef Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_user/images/supported_scenarios_node_becomes_isolated.png differ diff --git a/product_docs/docs/efm/4.1/efm_user/images/supported_scenarios_standby_agent_exits.png b/product_docs/docs/efm/4.1/efm_user/images/supported_scenarios_standby_agent_exits.png new file mode 100644 index 00000000000..1997c09fdf6 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_user/images/supported_scenarios_standby_agent_exits.png differ diff --git a/product_docs/docs/efm/4.1/efm_user/images/supported_scenarios_standby_db_down.png b/product_docs/docs/efm/4.1/efm_user/images/supported_scenarios_standby_db_down.png new file mode 100644 index 00000000000..dc9abefcead Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_user/images/supported_scenarios_standby_db_down.png differ diff --git a/product_docs/docs/efm/4.1/efm_user/images/supported_scenarios_witness_agent_exits.png b/product_docs/docs/efm/4.1/efm_user/images/supported_scenarios_witness_agent_exits.png new file mode 100644 index 00000000000..1c02dc66805 Binary files /dev/null and b/product_docs/docs/efm/4.1/efm_user/images/supported_scenarios_witness_agent_exits.png differ diff --git a/product_docs/docs/epas/12/ecpgplus_guide/02_overview.mdx b/product_docs/docs/epas/12/ecpgplus_guide/02_overview.mdx index 06f0d675567..28d802902ce 100644 --- a/product_docs/docs/epas/12/ecpgplus_guide/02_overview.mdx +++ b/product_docs/docs/epas/12/ecpgplus_guide/02_overview.mdx @@ -8,7 +8,7 @@ legacyRedirectsGenerated: -EDB has enhanced ECPG (the PostgreSQL pre-compiler) to create ECPGPlus. ECPGPlus is a Pro\*C-compatible version of the PostgreSQL C pre-compiler. ECPGPlus translates a program that combines C code and embedded SQL statements into an equivalent C program. As it performs the translation, ECPGPlus verifies that the syntax of each SQL construct is correct. +EnterpriseDB has enhanced ECPG (the PostgreSQL pre-compiler) to create ECPGPlus. ECPGPlus is a Pro\*C-compatible version of the PostgreSQL C pre-compiler. ECPGPlus translates a program that combines C code and embedded SQL statements into an equivalent C program. As it performs the translation, ECPGPlus verifies that the syntax of each SQL construct is correct. The following diagram charts the path of a program containing embedded SQL statements as it is compiled into an executable: @@ -121,13 +121,13 @@ On Windows, ECPGPlus is installed by the Advanced Server installation wizard as On Windows: ```text -C:\Program Files\edb\as13\bin +C:\Program Files\edb\as12\bin ``` On Linux: ```text -/usr/edb/as13/bin +/usr/edb/as12/bin ``` When invoking the ECPGPlus compiler, the executable must be in your search path (`%PATH%` on Windows, `$PATH` on Linux). For example, the following commands set the search path to include the directory that holds the ECPGPlus executable file `ecpg`. @@ -135,14 +135,14 @@ When invoking the ECPGPlus compiler, the executable must be in your search path On Windows: ```text -set EDB_PATH=C:\Program Files\edb\as13\bin +set EDB_PATH=C:\Program Files\edb\as12\bin set PATH=%EDB_PATH%;%PATH% ``` On Linux: ```text -export EDB_PATH==/usr/edb/as13/bin +export EDB_PATH==/usr/edb/as12/bin export PATH=$EDB_PATH:$PATH ``` @@ -221,7 +221,7 @@ In the sample `makefile` shown above, `make` includes the `-C` option when invok If you include the `-C` `PROC` keywords on the command line, in addition to the ECPG syntax, you may use Pro\*C command line syntax; for example: ```text -$ ecpg -C PROC INCLUDE=/usr/edb/as13/include acct_update.c +$ ecpg -C PROC INCLUDE=/usr/edb/as12/include acct_update.c ``` To display a complete list of the other ECPGPlus options available, navigate to the ECPGPlus installation directory, and enter: @@ -232,21 +232,21 @@ To display a complete list of the other ECPGPlus options available, navigate to The command line options are: -| **Option** | **Description** | -| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| -c | Automatically generate C code from embedded SQL code. | -| -C *mode* | Use the `-C` option to specify a compatibility mode:

`INFORMIX`

`INFORMIX_SE`

`PROC` | -| -D *symbol* | Define a preprocessor *symbol*.

The *-D* keyword is not supported when compiling in *PROC mode.* Instead, use the Oracle-style *‘DEFINE=’* clause. | -| -h | Parse a header file, this option includes option `-c`. | -| -i | Parse system, include files as well. | -| -I directory | Search *directory* for `include` files. | -| -o *outfile* | Write the result to *outfile*. | -| -r *option* | Specify run-time behavior; *option* can be:

`no_indicator` - Do not use indicators, but instead use special values to represent NULL values.

`prepare` - Prepare all statements before using them.

`questionmarks` - Allow use of a question mark as a placeholder.

`usebulk` - Enable bulk processing for INSERT, UPDATE and DELETE statements that operate on host variable arrays. | -| --regression | Run in regression testing mode. | -| -t | Turn on `autocommit` of transactions. | -| -l | Disable `#line` directives. | -| --help | Display the help options. | -| --version | Output version information. | +| **Option** | **Description** | +| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| -c | Automatically generate C code from embedded SQL code. | +| -C *mode* | Use the `-C` option to specify a compatibility mode:

`INFORMIX`

`INFORMIX_SE`

`PROC` | +| -D *symbol* | Define a preprocessor *symbol*.

The *-D* keyword is not supported when compiling in *PROC mode.* Instead, use the Oracle-style *‘DEFINE=’* clause. | +| -h | Parse a header file, this option includes option `'-c'`. | +| -i | Parse system, include files as well. | +| -I directory | Search *directory* for `include` files. | +| -o *outfile* | Write the result to *outfile*. | +| -r *option* | Specify run-time behavior; *option* can be:

`no_indicator` - Do not use indicators, but instead use special values to represent NULL values.

`prepare` - Prepare all statements before using them.

`questionmarks` - Allow use of a question mark as a placeholder.

`usebulk` - Enable bulk processing for `INSERT`, `UPDATE`, and `DELETE` statements that operate on host variable arrays. | +| --regression | Run in regression testing mode. | +| -t | Turn on `autocommit` of transactions. | +| -l | Disable `#line` directives. | +| --help | Display the help options. | +| --version | Output version information. | !!! Note If you do not specify an output file name when invoking ECPGPlus, the output file name is created by stripping off the `.pgc` filename extension, and appending `.c` to the file name. diff --git a/product_docs/docs/epas/12/ecpgplus_guide/04_using_descriptors.mdx b/product_docs/docs/epas/12/ecpgplus_guide/04_using_descriptors.mdx index b6a1d8a78dd..aface5c6517 100644 --- a/product_docs/docs/epas/12/ecpgplus_guide/04_using_descriptors.mdx +++ b/product_docs/docs/epas/12/ecpgplus_guide/04_using_descriptors.mdx @@ -82,74 +82,74 @@ char *md3 = "--- -------------------- ----------------- ---"; int main( int argc, char *argv[] ) { -EXEC SQL BEGIN DECLARE SECTION; -char *db = argv[1]; -char *stmt = argv[2]; -int col_count; -EXEC SQL END DECLARE SECTION; + EXEC SQL BEGIN DECLARE SECTION; + char *db = argv[1]; + char *stmt = argv[2]; + int col_count; + EXEC SQL END DECLARE SECTION; -EXEC SQL CONNECT TO :db; + EXEC SQL CONNECT TO :db; -EXEC SQL ALLOCATE DESCRIPTOR parse_desc; -EXEC SQL PREPARE query FROM :stmt; -EXEC SQL DESCRIBE query INTO SQL DESCRIPTOR parse_desc; -EXEC SQL GET DESCRIPTOR 'parse_desc' :col_count = COUNT; + EXEC SQL ALLOCATE DESCRIPTOR parse_desc; + EXEC SQL PREPARE query FROM :stmt; + EXEC SQL DESCRIBE query INTO SQL DESCRIPTOR parse_desc; + EXEC SQL GET DESCRIPTOR 'parse_desc' :col_count = COUNT; if( col_count == 0 ) { - EXEC SQL EXECUTE IMMEDIATE :stmt; + EXEC SQL EXECUTE IMMEDIATE :stmt; - if( sqlca.sqlcode >= 0 ) - EXEC SQL COMMIT; + if( sqlca.sqlcode >= 0 ) + EXEC SQL COMMIT; } else { - int row; - - EXEC SQL ALLOCATE DESCRIPTOR row_desc; - EXEC SQL DECLARE my_cursor CURSOR FOR query; - EXEC SQL OPEN my_cursor; - - for( row = 0; ; row++ ) - { - EXEC SQL BEGIN DECLARE SECTION; - int col; - EXEC SQL END DECLARE SECTION; - EXEC SQL FETCH IN my_cursor - INTO SQL DESCRIPTOR row_desc; - - if( sqlca.sqlcode != 0 ) - break; - - if( row == 0 ) - print_meta_data( "row_desc" ); - - printf("[RECORD %d]\n", row+1); - - for( col = 1; col <= col_count; col++ ) - { - EXEC SQL BEGIN DECLARE SECTION; - short ind; - varchar val[40+1]; - varchar name[20+1]; - EXEC SQL END DECLARE SECTION; - - EXEC SQL GET DESCRIPTOR 'row_desc' - VALUE :col - :val = DATA, :ind = INDICATOR, :name = NAME; - - if( ind == -1 ) - printf( " %-20s : \n", name.arr ); - else if( ind > 0 ) - printf( " %-20s : \n", name.arr ); - else - printf( " %-20s : %s\n", name.arr, val.arr ); - } - - printf( "\n" ); - - } - printf( "%d rows\n", row ); + int row; + + EXEC SQL ALLOCATE DESCRIPTOR row_desc; + EXEC SQL DECLARE my_cursor CURSOR FOR query; + EXEC SQL OPEN my_cursor; + + for( row = 0; ; row++ ) + { + EXEC SQL BEGIN DECLARE SECTION; + int col; + EXEC SQL END DECLARE SECTION; + EXEC SQL FETCH IN my_cursor + INTO SQL DESCRIPTOR row_desc; + + if( sqlca.sqlcode != 0 ) + break; + + if( row == 0 ) + print_meta_data( "row_desc" ); + + printf("[RECORD %d]\n", row+1); + + for( col = 1; col <= col_count; col++ ) + { + EXEC SQL BEGIN DECLARE SECTION; + short ind; + varchar val[40+1]; + varchar name[20+1]; + EXEC SQL END DECLARE SECTION; + + EXEC SQL GET DESCRIPTOR 'row_desc' + VALUE :col + :val = DATA, :ind = INDICATOR, :name = NAME; + + if( ind == -1 ) + printf( " %-20s : \n", name.arr ); + else if( ind > 0 ) + printf( " %-20s : \n", name.arr ); + else + printf( " %-20s : %s\n", name.arr, val.arr ); + } + + printf( "\n" ); + + } + printf( "%d rows\n", row ); } exit( 0 ); @@ -157,32 +157,32 @@ exit( 0 ); static void print_meta_data( char *desc_name ) { -EXEC SQL BEGIN DECLARE SECTION; -char *desc = desc_name; -int col_count; -int col; -EXEC SQL END DECLARE SECTION; + EXEC SQL BEGIN DECLARE SECTION; + char *desc = desc_name; + int col_count; + int col; + EXEC SQL END DECLARE SECTION; static char *types[] = { -"unused ", -"CHARACTER ", -"NUMERIC ", -"DECIMAL ", -"INTEGER ", -"SMALLINT ", -"FLOAT ", -"REAL ", -"DOUBLE ", -"DATE_TIME ", -"INTERVAL ", -"unused ", -"CHARACTER_VARYING", -"ENUMERATED ", -"BIT ", -"BIT_VARYING ", -"BOOLEAN ", -"abstract " + "unused ", + "CHARACTER ", + "NUMERIC ", + "DECIMAL ", + "INTEGER ", + "SMALLINT ", + "FLOAT ", + "REAL ", + "DOUBLE ", + "DATE_TIME ", + "INTERVAL ", + "unused ", + "CHARACTER_VARYING", + "ENUMERATED ", + "BIT ", + "BIT_VARYING ", + "BOOLEAN ", + "abstract " }; EXEC SQL GET DESCRIPTOR :desc :col_count = count; @@ -195,26 +195,26 @@ printf( "%s\n", md3 ); for( col = 1; col <= col_count; col++ ) { -EXEC SQL BEGIN DECLARE SECTION; - int type; - int ret_len; - varchar name[21]; -EXEC SQL END DECLARE SECTION; -char *type_name; + EXEC SQL BEGIN DECLARE SECTION; + int type; + int ret_len; + varchar name[21]; + EXEC SQL END DECLARE SECTION; + char *type_name; -EXEC SQL GET DESCRIPTOR :desc - VALUE :col - :name = NAME, - :type = TYPE, - :ret_len = RETURNED_OCTET_LENGTH; + EXEC SQL GET DESCRIPTOR :desc + VALUE :col + :name = NAME, + :type = TYPE, + :ret_len = RETURNED_OCTET_LENGTH; -if( type > 0 && type < SQL3_abstract ) - type_name = types[type]; -else - type_name = "unknown"; + if( type > 0 && type < SQL3_abstract ) + type_name = types[type]; + else + type_name = "unknown"; -printf( "%02d: %-20s %-17s %04d\n", - col, name.arr, type_name, ret_len ); + printf( "%02d: %-20s %-17s %04d\n", + col, name.arr, type_name, ret_len ); } printf( "\n" ); } @@ -405,8 +405,8 @@ printf( "\n" ); When the loop terminates, the application prints the number of rows fetched, and exits: ```text -printf( "%d rows\n", row ); -} + printf( "%d rows\n", row ); + } exit( 0 ); } @@ -504,10 +504,10 @@ else and prints the column number, name, type name, and length: ```text -printf( "%02d: %-20s %-17s %04d\n", - col, name.arr, type_name, ret_len ); -} -printf( "\n" ); + printf( "%02d: %-20s %-17s %04d\n", + col, name.arr, type_name, ret_len ); + } + printf( "\n" ); } ``` diff --git a/product_docs/docs/epas/12/ecpgplus_guide/05_building_executing_dynamic_sql_statements.mdx b/product_docs/docs/epas/12/ecpgplus_guide/05_building_executing_dynamic_sql_statements.mdx index 431a6565960..caf7707262c 100644 --- a/product_docs/docs/epas/12/ecpgplus_guide/05_building_executing_dynamic_sql_statements.mdx +++ b/product_docs/docs/epas/12/ecpgplus_guide/05_building_executing_dynamic_sql_statements.mdx @@ -98,11 +98,11 @@ EXEC SQL EXECUTE IMMEDIATE :insertStmt; If the `EXECUTE IMMEDIATE` command fails for any reason, ECPGPlus will invoke the `handle_error()` function (which terminates the application after displaying an error message to the user). If the `EXECUTE IMMEDIATE` command succeeds, the application displays a message `(ok)` to the user, commits the changes, disconnects from the server, and terminates the application. ```text -fprintf(stderr, "ok\n"); + fprintf(stderr, "ok\n"); -EXEC SQL COMMIT RELEASE; + EXEC SQL COMMIT RELEASE; -exit(EXIT_SUCCESS); + exit(EXIT_SUCCESS); } ``` @@ -213,11 +213,11 @@ EXEC SQL EXECUTE stmtHandle USING :argv[2], :argv[3], :argv[4]; If the `EXECUTE` command fails for any reason, ECPGPlus will invoke the `handle_error()` function (which terminates the application after displaying an error message to the user). If the `EXECUTE` command succeeds, the application displays a message `(ok)` to the user, commits the changes, disconnects from the server, and terminates the application. ```text -fprintf(stderr, "ok\n"); + fprintf(stderr, "ok\n"); -EXEC SQL COMMIT RELEASE; + EXEC SQL COMMIT RELEASE; -exit(EXIT_SUCCESS); + exit(EXIT_SUCCESS); } ``` @@ -346,20 +346,20 @@ while(true) The program iterates through the cursor, and prints the employee number and name of each employee in the selected department: ```text -EXEC SQL FETCH empCursor INTO :empno, :ename; + EXEC SQL FETCH empCursor INTO :empno, :ename; -printf("%-10s %s\n", empno.arr, ename.arr); + printf("%-10s %s\n", empno.arr, ename.arr); } ``` The program then closes the cursor, commits any changes, disconnects from the server, and terminates the application. ```text -EXEC SQL CLOSE empCursor; + EXEC SQL CLOSE empCursor; -EXEC SQL COMMIT RELEASE; + EXEC SQL COMMIT RELEASE; -exit(EXIT_SUCCESS); + exit(EXIT_SUCCESS); } ``` @@ -611,9 +611,9 @@ bindParams(); Finally, the program opens the cursor (using the parameter values supplied by the user, if any) and calls the `displayResultSet()` function to print the result set produced by the query. ```text -EXEC SQL OPEN dynCursor USING DESCRIPTOR params; + EXEC SQL OPEN dynCursor USING DESCRIPTOR params; -displayResultSet(); + displayResultSet(); } ``` @@ -655,11 +655,11 @@ for (i = 0; i < params->F; i++) After prompting the user for a value for a given parameter, the program *binds* that value to the parameter by setting `params->T[i]` to indicate the data type of the value (see `Type Codes` for a list of type codes), `params->L[i]` to the length of the value (we subtract one to trim off the trailing new-line character added by `fgets()`), and `params->V[i]` to point to a copy of the NULL-terminated string provided by the user. ```text -params->T[i] = 1; /* Data type = Character (1) */ -params->L[i] = strlen(paramValue) + 1; -params->V[i] = strdup(paramValue); -} -} + params->T[i] = 1; /* Data type = Character (1) */ + params->L[i] = strlen(paramValue) + 1; + params->V[i] = strdup(paramValue); + } + } } ``` @@ -696,8 +696,8 @@ for (col = 0; col < results->F; col++) To decode the type code found in `results->T`, the program invokes the `sqlnul()` function (see the description of the `T` member of the SQLDA structure in the [The SQLDA Structure](07_reference/#sqlda_structure)). This call to `sqlnul()` modifies `results->T[col]` to contain only the type code (the nullability flag is copied to `null_permitted`). This step is necessary because the `DESCRIBE SELECT LIST` statement encodes the type of each column and the nullability of each column into the `T` array. ```text -sqlnul(&results->T[col - &results->T[col +sqlnul(&results->T[col], + &results->T[col], &null_permitted); ``` @@ -734,20 +734,20 @@ case 12: /* DATE */ For a value of any type other than date or numeric, `displayResultSet()` starts with the maximum column width reported by `DESCRIBE SELECT LIST` and adds one extra byte for the NULL terminator. Again, in a real-world application you may want to include more careful calculations for other data types. ```text -default: /* Others */ -{ - length = results->L[col] + 1; - break; -} + default: /* Others */ + { + length = results->L[col] + 1; + break; + } } ``` After computing the amount of space required to hold a given column, the program allocates enough memory to hold the value, sets `results->L[col]` to indicate the number of bytes found at `results->V[col]`, and set the type code for the column `(results->T[col])` to `1` to instruct the upcoming `FETCH` statement to return the value in the form of a NULL-terminated string. ```text -results->V[col] = malloc(length); -results->L[col] = length; -results->T[col] = 1; + results->V[col] = malloc(length); + results->L[col] = length; + results->T[col] = 1; } ``` @@ -776,18 +776,18 @@ The `FETCH` statement will populate the following members of the results descrip Finally, `displayResultSet()` iterates through each column in the result set, examines the corresponding NULL indicator, and prints the value. The result set is not aligned - instead, each value is separated from the previous value by a comma. ```text -for (col = 0; col < results->F; col++) -{ - if (*results->I[col] == -1) - printf("%s%s", delimiter, ""); - else - printf("%s%s", delimiter, results->V[col]); - delimiter = ", "; -} + for (col = 0; col < results->F; col++) + { + if (*results->I[col] == -1) + printf("%s%s", delimiter, ""); + else + printf("%s%s", delimiter, results->V[col]); + delimiter = ", "; + } -printf("\n"); -} -} + printf("\n"); + } + } } /***********************************************************/ ``` diff --git a/product_docs/docs/epas/12/ecpgplus_guide/07_reference.mdx b/product_docs/docs/epas/12/ecpgplus_guide/07_reference.mdx index fd3546320b0..dcfa346f20b 100644 --- a/product_docs/docs/epas/12/ecpgplus_guide/07_reference.mdx +++ b/product_docs/docs/epas/12/ecpgplus_guide/07_reference.mdx @@ -248,7 +248,7 @@ struct SQLDA - For a `SELECT`-list descriptor, `V` points to an array of values returned by a `FETCH` statement (each member in the array corresponds to a column in the result set). - For a bind descriptor, `V` points to an array of parameter values (you must populate the values in this array before opening a cursor that uses the descriptor). -Your application must allocate the space required to hold each value. Refer to [displayResultSet](05_building_executing_dynamic_sql_statements/#executing_query_with_unknown_number_of_variables) function for an example of how to allocate space for `SELECT`-list values. +Your application must allocate the space required to hold each value. Refer to [displayResultSet ()](05_building_executing_dynamic_sql_statements/#executing_query_with_unknown_number_of_variables) function for an example of how to allocate space for `SELECT`-list values. `L - length of each data value` @@ -342,7 +342,7 @@ Where `sql_command_body` represents a standard SQL statement. You can use a host ECPGPlus extends the PostgreSQL server-side syntax for some statements; for those statements, syntax differences are outlined in the following reference sections. For a complete reference to the supported syntax of other SQL commands, refer to the *PostgreSQL* *Core* *Documentation* available at: - + ### ALLOCATE DESCRIPTOR @@ -661,7 +661,7 @@ Use the `DELETE` statement to delete one or more rows from a table. The syntax f [FOR ] DELETE FROM [ONLY] [[AS] ] [USING ] [WHERE | WHERE CURRENT OF ] - [{RETURNING|RETURN} * | [[ AS] ] + [{RETURNING|RETURN} * | [[AS] ] [, ...] INTO ] ``` @@ -695,7 +695,7 @@ DELETE FROM emp WHERE sal > :max_sal; For more information about using the `DELETE` statement, see the PostgreSQL Core documentation available at: - + ### DESCRIBE @@ -704,8 +704,7 @@ Use the `DESCRIBE` statement to find the number of input values required by a pr The `DESCRIBE` statement populates an `SQLDA` descriptor; to populate a SQL descriptor, use the `ALLOCATE DESCRIPTOR` and `DESCRIBE...DESCRIPTOR` statements. ```text -EXEC SQL DESCRIBE BIND VARIABLES FOR INTO -; +EXEC SQL DESCRIBE BIND VARIABLES FOR INTO ; ``` or @@ -1010,8 +1009,8 @@ for( row = 0; ; row++ ) { EXEC SQL BEGIN DECLARE SECTION; int col; -EXEC SQL END DECLARE SECTION; -EXEC SQL FETCH my_cursor INTO SQL DESCRIPTOR 'row_desc'; + EXEC SQL END DECLARE SECTION; + EXEC SQL FETCH my_cursor INTO SQL DESCRIPTOR 'row_desc'; ``` ### GET DESCRIPTOR @@ -1108,7 +1107,7 @@ INSERT INTO emp (empno, ename, job, hiredate) For more information about using the `INSERT` statement, see the PostgreSQL Core documentation available at: - + ### OPEN @@ -1132,7 +1131,7 @@ or Where: -`array_*size` is an integer value or a host variable that contains an integer value specifying the number of rows to fetch. If you omit the `FOR` clause, the statement is executed once for each member of the array. +`array_size` is an integer value or a host variable that contains an integer value specifying the number of rows to fetch. If you omit the `FOR` clause, the statement is executed once for each member of the array. `cursor` is the name of the cursor being opened. @@ -1143,13 +1142,13 @@ The `OPEN` statement initializes a cursor using the values provided in `paramete The following example declares a cursor named `employees`, that queries the `emp` table, returning the `employee number`, `name`, `salary` and `commission` of an employee whose name matches a user-supplied value (stored in the host variable, `:emp_name`). ```text -EXEC SQL DECLARE employees CURSOR FOR - SELECT - empno, ename, sal, comm  - FROM  - emp - WHERE ename = :emp_name; -EXEC SQL OPEN employees; + EXEC SQL DECLARE employees CURSOR FOR + SELECT + empno, ename, sal, comm  + FROM  + emp + WHERE ename = :emp_name; + EXEC SQL OPEN employees; ... ``` @@ -1289,6 +1288,7 @@ SELECT [ ] [ ALL | DISTINCT [ ON( , ...) ]] select_list INTO + [ FROM from_item [, from_item ]...] [ WHERE condition ] [ hierarchical_query_clause ] @@ -1310,7 +1310,7 @@ Where: ECPGPlus provides support for the additional clauses of the SQL `SELECT` statement as documented in the PostgreSQL Core documentation available at: - + To use the `INTO` `host_variables` clause, include the names of defined host variables when specifying the `SELECT` statement. For example, the following `SELECT` statement populates the `:emp_name` and `:emp_sal` host variables with a list of `employee names` and `salaries`: @@ -1522,7 +1522,7 @@ Include the `FOR exec_count` clause to specify the number of times the statement ECPGPlus provides support for the additional clauses of the SQL `UPDATE` statement as documented in the PostgreSQL Core documentation available at: - + A host variable can be used in any clause that specifies a value. To use a host variable, simply substitute a defined variable for any value associated with any of the documented `UPDATE` clauses. diff --git a/product_docs/docs/epas/12/ecpgplus_guide/index.mdx b/product_docs/docs/epas/12/ecpgplus_guide/index.mdx index e00044751ad..89311ae0fa3 100644 --- a/product_docs/docs/epas/12/ecpgplus_guide/index.mdx +++ b/product_docs/docs/epas/12/ecpgplus_guide/index.mdx @@ -9,7 +9,7 @@ legacyRedirectsGenerated: - "/edb-docs/d/edb-postgres-advanced-server/user-guides/ecpgplus-guide/13/introduction.html" --- -EDB has enhanced ECPG (the PostgreSQL pre-compiler) to create ECPGPlus. ECPGPlus allows you to include Pro\*C compatible embedded SQL commands in C applications when connected to an EDB Postgres Advanced Server (Advanced Server) database. When you use ECPGPlus to compile an application, the SQL code is syntax-checked and translated into C. +EnterpriseDB has enhanced ECPG (the PostgreSQL pre-compiler) to create ECPGPlus. ECPGPlus allows you to include Pro\*C compatible embedded SQL commands in C applications when connected to an EDB Postgres Advanced Server (Advanced Server) database. When you use ECPGPlus to compile an application, the SQL code is syntax-checked and translated into C. ECPGPlus supports: diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/01_dbms_alert.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/01_dbms_alert.mdx index 99811af28c7..44bca71f7dc 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/01_dbms_alert.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/01_dbms_alert.mdx @@ -21,7 +21,7 @@ Advanced Server's implementation of `DBMS_ALERT` is a partial implementation whe Advanced Server allows a maximum of `500` concurrent alerts. You can use the `dbms_alert.max_alerts` GUC variable (located in the `postgresql.conf` file) to specify the maximum number of concurrent alerts allowed on a system. -To set a value for the `dbms_alert.max_alerts` variable, open the `postgresql.conf` file (located by default in `/opt/PostgresPlus/13AS/data`) with your choice of editor, and edit the `dbms_alert.max_alerts` parameter as shown: +To set a value for the `dbms_alert.max_alerts` variable, open the `postgresql.conf` file (located by default in `/opt/PostgresPlus/12AS/data`) with your choice of editor, and edit the `dbms_alert.max_alerts` parameter as shown: ```text dbms_alert.max_alerts = alert_count @@ -250,7 +250,6 @@ DECLARE v_timeout NUMBER(3) := 120; BEGIN DBMS_ALERT.REGISTER(v_name); - DBMS_OUTPUT.PUT_ DBMS_ALERT.REGISTER(v_name); DBMS_OUTPUT.PUT_LINE('Registered for alert ' || v_name); DBMS_OUTPUT.PUT_LINE('Waiting for signal...'); DBMS_ALERT.WAITONE(v_name,v_msg,v_status,v_timeout); @@ -258,13 +257,6 @@ BEGIN DBMS_OUTPUT.PUT_LINE('Alert msg : ' || v_msg); DBMS_OUTPUT.PUT_LINE('Alert status : ' || v_status); DBMS_OUTPUT.PUT_LINE('Alert timeout: ' || v_timeout || ' seconds'); - DBMS_ALERT.REMOVE(v_name);LINE('Registered for alert ' || v_name); - DBMS_OUTPUT.PUT_LINE('Waiting for signal...'); - DBMS_ALERT.WAITONE(v_name,v_msg,v_status,v_timeout); - DBMS_OUTPUT.PUT_LINE('Alert name : ' || v_name); - DBMS_OUTPUT.PUT_LINE('Alert msg : ' || v_msg); - DBMS_OUTPUT.PUT_LINE('Alert status : ' || v_status); - DBMS_OUTPUT.PUT_LINE('Alert timeout: ' || v_timeout || ' seconds'); DBMS_ALERT.REMOVE(v_name); END; diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/01_enqueue.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/01_enqueue.mdx index 4a65e21acf7..7487f87c635 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/01_enqueue.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/01_enqueue.mdx @@ -27,7 +27,7 @@ ENQUEUE( `enqueue_options` -`enqueue_options` is a value of the type, `enqueue_options_t`: + `enqueue_options` is a value of the type, `enqueue_options_t`: ```text DBMS_AQ.ENQUEUE_OPTIONS_T IS RECORD( @@ -38,6 +38,8 @@ DBMS_AQ.ENQUEUE_OPTIONS_T IS RECORD( delivery_mode PLS_INTEGER NOT NULL DEFAULT PERSISTENT); ``` +Currently, the only supported parameter values for `enqueue_options_t` are: + | `visibility` | `ON_COMMIT`. | | -------------------- | ------------ | | `delivery_mode` | `PERSISTENT` | diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/02_dequeue.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/02_dequeue.mdx index 44235345508..4a45c6c09e5 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/02_dequeue.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/02_dequeue.mdx @@ -52,7 +52,7 @@ Currently, the supported parameter values for `dequeue_options_t` are: | `wait` | Must be a number larger than 0, or:

`DBMS_AQ.FOREVER` – Wait indefinitely.

`DBMS_AQ.NO_WAIT` – Do not wait. | | `msgid` | The message ID of the message that will be dequeued. | | `correlation` | Accepted for compatibility, and ignored. | -| `deq_condition` | A `VARCHAR2` expression that evaluates to a `BOOLEAN` value indicating if the message should be dequeued | +| `deq_condition` | A `VARCHAR2` expression that evaluates to a `BOOLEAN` value indicating if the message should be dequeued. | | `transformation` | Accepted for compatibility, and ignored. | | `delivery_mode` | Must be `PERSISTENT`; buffered messages are not supported at this time. | diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/03_register.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/03_register.mdx index a4daf8ed9f2..ac2bcd2df1d 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/03_register.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/03_register.mdx @@ -22,12 +22,12 @@ REGISTER( -| Attribute | Type | Description | -| ----------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `name` | VARCHAR2 (128) | The (optionally schema-qualified) name of the subscription. | -| `namespace` | NUMERIC | The only supported value is `DBMS_AQ.NAMESPACE_AQ (0)` | -| `callback` | VARCHAR2 (4000) | Describes the action that will be performed upon notification. Currently, only calls to PL/SQL procedures are supported. The call should take the form:

`plsql://schema.procedure`<>

Where:

schema specifies the schema in which the procedure resides.

procedure specifies the name of the procedure that will be notified. | -| `context` | RAW (16) | Any user-defined value required by the procedure. | +| Attribute | Type | Description | +| ----------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | VARCHAR2 (128) | The (optionally schema-qualified) name of the subscription. | +| `namespace` | NUMERIC | The only supported value is `DBMS_AQ.NAMESPACE_AQ (0)` | +| `callback` | VARCHAR2 (4000) | Describes the action that will be performed upon notification. Currently, only calls to PL/SQL procedures are supported. The call should take the form:

`plsql://schema.procedure`

Where:

schema specifies the schema in which the procedure resides.

procedure specifies the name of the procedure that will be notified. | +| `context` | RAW (16) | Any user-defined value required by the procedure. | `count` @@ -55,7 +55,6 @@ BEGIN subscription2, subscription3); dbms_aq.register(subscriptionlist, 3); commit; - END; / ``` diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/04_unregister.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/04_unregister.mdx index 709cb2b27f8..762b412c003 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/04_unregister.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/04_unregister.mdx @@ -24,12 +24,12 @@ UNREGISTER( -| Attribute | Type | Description | -| ----------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `name` | VARCHAR2 (128) | The (optionally schema-qualified) name of the subscription. | -| `namespace` | NUMERIC | The only supported value is `DBMS_AQ.NAMESPACE_AQ (0)` | -| `callback` | VARCHAR2 (4000) | Describes the action that will be performed upon notification. Currently, only calls to PL/SQL procedures are supported. The call should take the form:

`plsql://schema.procedure`<>

Where:

schema specifies the schema in which the procedure resides.

procedure specifies the name of the procedure that will be notified. | -| `context` | RAW (16) | Any user-defined value required by the procedure. | +| Attribute | Type | Description | +| ----------- | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | VARCHAR2 (128) | The (optionally schema-qualified) name of the subscription. | +| `namespace` | NUMERIC | The only supported value is `DBMS_AQ.NAMESPACE_AQ (0)` | +| `callback` | VARCHAR2 (4000) | Describes the action that will be performed upon notification. Currently, only calls to PL/SQL procedures are supported. The call should take the form:

`plsql://schema.procedure`

Where:

schema specifies the schema in which the procedure resides.

procedure specifies the name of the procedure that will be notified. | +| `context` | RAW (16) | Any user-defined value required by the procedure. | `count` diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/04_dbms_crypto/01_decrypt.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/04_dbms_crypto/01_decrypt.mdx index a9972458e00..2a822fc109b 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/04_dbms_crypto/01_decrypt.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/04_dbms_crypto/01_decrypt.mdx @@ -52,8 +52,6 @@ When invoked as a procedure, `DECRYPT` returns `BLOB` or `CLOB` data to a user-s | `ENCRYPT_3DES` | `CONSTANT INTEGER := 3;` | | `ENCRYPT_AES` | `CONSTANT INTEGER := 4;` | | `ENCRYPT_AES128` | `CONSTANT INTEGER := 6;` | -| `ENCRYPT_AES192` | `CONSTANT INTEGER := 192;` | -| `ENCRYPT_AES256` | `CONSTANT INTEGER := 256;` | | **Block Cipher Modifiers** | | | `CHAIN_CBC` | `CONSTANT INTEGER := 256;` | | `CHAIN_ECB` | `CONSTANT INTEGER := 768;` | diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/04_dbms_crypto/02_encrypt.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/04_dbms_crypto/02_encrypt.mdx index f6851126fd1..6152bf1f3f3 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/04_dbms_crypto/02_encrypt.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/04_dbms_crypto/02_encrypt.mdx @@ -52,8 +52,6 @@ When invoked as a procedure, `ENCRYPT` returns `BLOB` or `CLOB` data to a user-s | `ENCRYPT_3DES` | `CONSTANT INTEGER := 3;` | | `ENCRYPT_AES` | `CONSTANT INTEGER := 4;` | | `ENCRYPT_AES128` | `CONSTANT INTEGER := 6;` | -| `ENCRYPT_AES192` | `CONSTANT INTEGER := 192;` | -| `ENCRYPT_AES256` | `CONSTANT INTEGER := 256;` | | **Block Cipher Modifiers** | | | `CHAIN_CBC` | `CONSTANT INTEGER := 256;` | | `CHAIN_ECB` | `CONSTANT INTEGER := 768;` | diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/09_dbms_output.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/09_dbms_output.mdx index fb3d7fe33b6..6aae5df5c95 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/09_dbms_output.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/09_dbms_output.mdx @@ -392,8 +392,6 @@ The default setting of `SERVEROUTPUT` is implementation dependent. For example, SERVEROUTPUT( BOOLEAN) ``` -To get an Oracle-style display output, you can set the `dbms_output.serveroutput` to `FALSE` in the `postgresql.conf` file; this disables the message output. The default is `TRUE`, which enables the message output. - **Parameter** `stdout` diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/12_dbms_random.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/12_dbms_random.mdx index 6432c9bc41a..2a237c8fc29 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/12_dbms_random.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/12_dbms_random.mdx @@ -8,17 +8,17 @@ legacyRedirectsGenerated: The `DBMS_RANDOM` package provides a number of methods to generate random values. The procedures and functions available in the `DBMS_RANDOM` package are listed in the following table. -| Function/Procedure | Return Type | Description | -| ------------------ | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | -| `INITIALIZE(val)` | n/a | Initializes the `DBMS_RANDOM` package with the specified seed `value`. Deprecated, but supported for backward compatibility. | -| `NORMAL()` | `NUMBER` | Returns a random `NUMBER`. | -| `RANDOM` | `INTEGER` | Returns a random `INTEGER` with a value greater than or equal to -2^31 and less than 2^31. Deprecated, but supported for backward compatibility | -| `SEED(val)` | n/a | Resets the seed with the specified `value`. | -| `SEED(val)` | n/a | Resets the seed with the specified `value`. | -| `STRING(opt, len)` | `VARCHAR2` | Returns a random string. | -| `TERMINATE` | n/a | `TERMINATE` has no effect. Deprecated, but supported for backward compatibility. | -| `VALUE` | `NUMBER` | Returns a random number with a value greater than or equal to `0` and less than `1`, with 38 digit precision. | -| `VALUE(low, high)` | `NUMBER` | Returns a random number with a value greater than or equal to `low` and less than `high`. | +| Function/Procedure | Return Type | Description | +| ------------------ | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| `INITIALIZE(val)` | n/a | Initializes the `DBMS_RANDOM` package with the specified seed `value`. Deprecated, but supported for backward compatibility. | +| `NORMAL()` | `NUMBER` | Returns a random `NUMBER`. | +| `RANDOM` | `INTEGER` | Returns a random `INTEGER` with a value greater than or equal to -2^31 and less than 2^31. Deprecated, but supported for backward compatibility. | +| `SEED(val)` | n/a | Resets the seed with the specified `value`. | +| `SEED(val)` | n/a | Resets the seed with the specified `value`. | +| `STRING(opt, len)` | `VARCHAR2` | Returns a random string. | +| `TERMINATE` | n/a | `TERMINATE` has no effect. Deprecated, but supported for backward compatibility. | +| `VALUE` | `NUMBER` | Returns a random number with a value greater than or equal to `0` and less than `1`, with 38 digit precision. | +| `VALUE(low, high)` | `NUMBER` | Returns a random number with a value greater than or equal to `low` and less than `high`. | ## INITIALIZE diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/13_dbms_redact.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/13_dbms_redact.mdx index d99bbec7fc5..90c94f8c993 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/13_dbms_redact.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/13_dbms_redact.mdx @@ -86,7 +86,7 @@ The following table represents `function_parameters` values that can be used in | `REDACT_NUM_ZIP_CODE` | `VARCHAR2` | `'9,1,5'` | Redacts a 5 digit zip code when the column is a number datatype. **Example:** `12345`becomes `99999`. | | `REDACT_CCN16_F12` | `VARCHAR2` | `'VVVVFVVVVFVVVVFVVVV,VVVV-VVVV-VVVV-VVVV,*,1,12'` | Redacts a 16 digit credit card number and displays only 4 digits. **Example:** `1234 5678 9000 2358` becomes `****-****-****-2358`. | | `REDACT_DATE_MILLENNIUM` | `VARCHAR2` | `'m1d1y2000'` | Redacts a date that is in the `DD-MM-YY` format. **Example:** Redacts all date to `01-JAN-2000`. | -| `REDACT_DATE_EPOCH` | `VARCHAR2` | `'m1d1y1970'` | Redacts a11 dates to `01-JAN-70`. | +| `REDACT_DATE_EPOCH` | `VARCHAR2` | `'m1d1y1970'` | Redacts all dates to `01-JAN-70`. | | `REDACT_AMEX_CCN_FORMATTED` | `VARCHAR2` | `'VVVVFVVVVVVFVVVVV,VVVV-VVVVVV-VVVVV,*,1,10'` | Redacts the Amercian Express credit card number and replaces the digit with `*` except for the last 5 digits. **Example:** The credit card number `1234 567890 34500` becomes `**** ****** 34500`. | | `REDACT_AMEX_CCN_NUMBER` | `VARCHAR2` | `'0,1,10'` | Redacts the Amercian Express credit card number and replaces the digit with `0` except for the last 5 digits. **Example:** The credit card number `1234 567890 34500` becomes `0000 000000 34500`. | | `REDACT_SIN_FORMATTED` | `VARCHAR2` | `'VVVFVVVFVVV,VVV-VVV-VVV,*,1,6'` | Redacts the Social Insurance Number by replacing the first 6 digits by `*`. **Example:** `123-456-789` becomes `***-***-789`. | @@ -98,21 +98,21 @@ The following table represents `function_parameters` values that can be used in | `REDACT_NA_PHONE_NUMBER` | `VARCHAR2` | `'0,4,10'` | Redacts the North American phone number by `0` leaving the area code. **Example:** `1234567890` becomes `1230000000`. | | `REDACT_NA_PHONE_UNFORMATTED` | `VARCHAR2` | `'VVVVVVVVVV,VVVVVVVVVV,X,4,10'` | Redacts the North American phone number by `X` leaving the area code. **Example:** `1234567890` becomes `123XXXXXXX`. | | `REDACT_UK_NIN_FORMATTED` | `VARCHAR2` | `'VVFVVFVVFVVFV,VV VV VV VV V,X,3,8'` | Redacts the UK National Insurance Number by `X` but leaving the alphabetic characters. **Example:** `NY 22 01 34 D` becomes `NY XX XX XX D`. | -| `REDACT_UK_NIN_UNFORMATTED` | `VARCHAR2` | `'VVVVVVVVV,VVVVVVVVV,X,3,8'` | Redacts the UK National Insurance Number by `X` but leaving the alphabetic characters. **Example:** `NY220134D` becomes `NYXXXXXXD` | +| `REDACT_UK_NIN_UNFORMATTED` | `VARCHAR2` | `'VVVVVVVVV,VVVVVVVVV,X,3,8'` | Redacts the UK National Insurance Number by `X` but leaving the alphabetic characters. **Example:** `NY220134D` becomes `NYXXXXXXD`. | A regular expression-based redaction searches for patterns of data to redact. The `regexp_pattern` search the values in order for the `regexp_replace_string` to change the value. The following table illustrates the `regexp_pattern` values that you can use during `REGEXP` based redaction. -| Function Parameter and Description | Data Type | Value | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------: | :----------------------------------------------------: | -| `RE_PATTERN_CC_L6_T4`: Searches for the middle digits of a credit card number that includes 6 leading digits and 4 trailing digits.
The `regexp_replace_string` setting to use with the format is `RE_REDACT_CC_MIDDLE_DIGITS` that replaces the identified pattern with the characters specified by the `RE_REDACT_CC_MIDDLE_DIGITS` parameter. | `VARCHAR2` | `'(\d\d\d\d\d\d)(\d\d\d*)(\d\d\d\d)'` | -| `RE_PATTERN_ANY_DIGIT`: Searches for any digit and replaces the identified pattern with the characters specified by the following values of the `regexp_replace_string` parameter.
`regexp_replace_string=> RE_REDACT_WITH_SINGLE_X`
(replaces any matched digit with the `X` character).
`regexp_replace_string=> RE_REDACT_WITH_SINGLE_1`
(replaces any matched digit with the `1` character). | `VARCHAR2` | `'\d'` | -| `RE_PATTERN_US_PHONE`: Searches for the U.S phone number and replaces the identified pattern with the characters specified by the `regexp_replace_string` parameter.
`regexp_replace_string=> RE_REDACT_US_PHONE_L7`
(searches the phone number and then replaces the last 7 digits). | `VARCHAR2` | `'(\(\d\d\d\)\|\d\d\d)-(\d\d\d)-(\d\d\d\d)'` | -| `RE_PATTERN_EMAIL_ADDRESS`: Searches for the email address and replaces the identified pattern with the characters specified by the following values of the `regexp_replace_string` parameter.
`regexp_replace_string=> RE_REDACT_EMAIL_NAME`
(finds the email address and redacts the email username).
`regexp_replace_string=> RE_REDACT_EMAIL_DOMAIN`
(finds the email address and redacts the email domain).
`regexp_replace_string=> RE_REDACT_EMAIL_ENTIRE`
(finds the email address and redacts the entire email address). | `VARCHAR2` | `'([A-Za-z0-9._%+-]+)@([A-Za-z0-9.-]+.[A-Za-z]{2,4})'` | -| `RE_PATTERN_IP_ADDRESS`: Searches for an IP address and replaces the identified pattern with the characters specified by the `regexp_replace_string` parameter. The `regexp_replace_string` parameter to be used is `RE_REDACT_IP_L3` that replaces the last section of an IP address with `999` and indicates it is redacted. | `VARCHAR2` | `'(\d{1,3}\.\d{1,3}\.\d{1,3})\.\d{1,3}'` | -| `RE_PATTERN_AMEX_CCN`: Searches for the American Express credit card number. The `regexp_replace_string` parameter to be used is `RE_REDACT_AMEX_CCN` that redacts all of the digits except the last 5. | `VARCHAR2` | `'.*(\d\d\d\d\d)$'` | -| `RE_PATTERN_CCN`: Searches for the credit card number other than American Express credit cards. The `regexp_replace_string` parameter to be used is `RE_REDACT_CCN` that redacts all of the digits except the last 4. | `VARCHAR2` | `'.*(\d\d\d\d)$'` | -| `RE_PATTERN_US_SSN`: Searches the SSN number and replaces the identified pattern with the characters specified by the `regexp_replace_string` parameter.
`'\1-XXX-XXXX'` or `'XXX-XXX-\3'` will return `123-XXX-XXXX` or `XXX-XXX-6789` for the value `'123-45-6789'` respectively. | `VARCHAR2` | `'(\d\d\d)-(\d\d)-(\d\d\d\d)'` | -| | | | +| Function Parameter and Description | Data Type | Value | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------: | :----------------------------------------------------: | +| `RE_PATTERN_CC_L6_T4`: Searches for the middle digits of a credit card number that includes 6 leading digits and 4 trailing digits.
The `regexp_replace_string` setting to use with the format is `RE_REDACT_CC_MIDDLE_DIGITS` that replaces the identified pattern with the characters specified by the `RE_REDACT_CC_MIDDLE_DIGITS` parameter. | `VARCHAR2` | `'(\d\d\d\d\d\d)(\d\d\d*)(\d\d\d\d)'` | +| `RE_PATTERN_ANY_DIGIT`: Searches for any digit and replaces the identified pattern with the characters specified by the following values of the `regexp_replace_string` parameter.
`regexp_replace_string=> RE_REDACT_WITH_SINGLE_X`
(replaces any matched digit with the `X` character).
`regexp_replace_string=> RE_REDACT_WITH_SINGLE_1`
(replaces any matched digit with the `1` character). | `VARCHAR2` | `'\d'` | +| `RE_PATTERN_US_PHONE`: Searches for the U.S phone number and replaces the identified pattern with the characters specified by the `regexp_replace_string` parameter.
`regexp_replace_string=> RE_REDACT_US_PHONE_L7`
(searches the phone number and then replaces the last 7 digits). | `VARCHAR2` | `'(\(\d\d\d\)\|\d\d\d)-(\d\d\d)-(\d\d\d\d)'` | +| `RE_PATTERN_EMAIL_ADDRESS`: Searches for the email address and replaces the identified pattern with the characters specified by the following values of the `regexp_replace_string` parameter.
`regexp_replace_string=> RE_REDACT_EMAIL_NAME`
(finds the email address and redacts the email username).
`regexp_replace_string=> RE_REDACT_EMAIL_DOMAIN`
(finds the email address and redacts the email domain).
`regexp_replace_string=> RE_REDACT_EMAIL_ENTIRE`
(finds the email address and redacts the entire email address). | `VARCHAR2` | `'([A-Za-z0-9._%+-]+)@([A-Za-z0-9.-]+\.[A-Za-z]{2,4})'` | +| `RE_PATTERN_IP_ADDRESS`: Searches for an IP address and replaces the identified pattern with the characters specified by the `regexp_replace_string` parameter. The `regexp_replace_string` parameter to be used is `RE_REDACT_IP_L3` that replaces the last section of an IP address with `999` and indicates it is redacted. | `VARCHAR2` | `'(\d{1,3}\.\d{1,3}\.\d{1,3})\.\d{1,3}'` | +| `RE_PATTERN_AMEX_CCN`: Searches for the American Express credit card number. The `regexp_replace_string` parameter to be used is `RE_REDACT_AMEX_CCN` that redacts all of the digits except the last 5. | `VARCHAR2` | `'.*(\d\d\d\d\d)$'` | +| `RE_PATTERN_CCN`: Searches for the credit card number other than American Express credit cards. The `regexp_replace_string` parameter to be used is `RE_REDACT_CCN` that redacts all of the digits except the last 4. | `VARCHAR2` | `'.*(\d\d\d\d)$'` | +| `RE_PATTERN_US_SSN`: Searches the SSN number and replaces the identified pattern with the characters specified by the `regexp_replace_string` parameter.
`'\1-XXX-XXXX'` or `'XXX-XXX-\3'` will return `123-XXX-XXXX` or `XXX-XXX-6789` for the value `'123-45-6789'` respectively. | `VARCHAR2` | `'(\d\d\d)-(\d\d)-(\d\d\d\d)'` | +| | | | The below table illustrates the `regexp_replace_string` values that you can use during `REGEXP` based redaction. @@ -175,7 +175,7 @@ PROCEDURE add_policy ( IN VARCHAR2 DEFAULT NULL, IN VARCHAR2 DEFAULT NULL, IN INTEGER DEFAULT DBMS_REDACT.RE_BEGINNING, - IN INTEGER DEFAULT DBMS_REDACT.RE_ALL, + IN INTEGER DEFAULT DBMS_REDACT.RE_ALL, IN VARCHAR2 DEFAULT NULL, IN VARCHAR2 DEFAULT NULL ) @@ -396,7 +396,7 @@ PROCEDURE alter_policy ( **Example** -The following example illustrates to alter a policy partial redaction for values in the `payment_details_tab` table `card_string` (usually a credit card number) column. +The following example illustrates to alter a policy using partial redaction for values in the `payment_details_tab` table `card_string` (usually a credit card number) column. ```text \c edb base _user @@ -550,7 +550,7 @@ BEGIN object_schema => 'public', object_name => 'payment_details_tab', policy_name => 'redactPolicy_001'); -END +END; ``` Redacted Result: The server drops the specified policy. diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/15_dbms_scheduler/01_using_calendar_syntax_to_specify_a_repeating_interval.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/15_dbms_scheduler/01_using_calendar_syntax_to_specify_a_repeating_interval.mdx index 3441e1bbfc5..ab386d98016 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/15_dbms_scheduler/01_using_calendar_syntax_to_specify_a_repeating_interval.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/15_dbms_scheduler/01_using_calendar_syntax_to_specify_a_repeating_interval.mdx @@ -32,7 +32,7 @@ The token types and syntax described in the table below are supported by Advance | | | `Friday` \| `FRI` \| `5` \| | | | | `Saturday` \| `SAT` \| `6` \| | | | | `Sunday` \| `SUN` \| `7` \| | -| `BYDATE` | `BYDATE=date (, date)...` | Where date is `YYYYMMDD`.

`YYYY` is a four-digit year representation of the year,
`MM` is a two-digit representation of the month,
and `DD` is a two-digit day representation of the day. | -| `BYDATE` | `BYDATE=date (, date)...` | Where date is `MMDD`.

`MM` is a two-digit representation of the month,
and `DD` is a two-digit day representation of the day | +| `BYDATE` | `BYDATE=date(, date)...` | Where date is `YYYYMMDD`.

`YYYY` is a four-digit year representation of the year,
`MM` is a two-digit representation of the month,
and `DD` is a two-digit day representation of the day. | +| `BYDATE` | `BYDATE=date(, date)...` | Where date is `MMDD`.

`MM` is a two-digit representation of the month,
and `DD` is a two-digit day representation of the day | | `BYHOUR` | `BYHOUR=hour` | Where `hour` is a value from `0` through `23`. | | `BYMINUTE` | `BYMINUTE=minute` | Where `minute` is a value from `0` through `59`. | diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/15_dbms_scheduler/index.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/15_dbms_scheduler/index.mdx index 3b4dd73b526..7c9a17bf0e5 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/15_dbms_scheduler/index.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/15_dbms_scheduler/index.mdx @@ -13,20 +13,20 @@ The `DBMS_SCHEDULER` package provides a way to create and manage Oracle-styled j | `CREATE_JOB(job_name, job_type, job_action, number_of_arguments, start_date, repeat_interval, end_date, job_class, enabled, auto_drop, comments)` | n/a | Use the first form of the `CREATE_JOB` procedure to create a job, specifying program and schedule details by means of parameters. | | `CREATE_JOB(job_name, program_name, schedule_name, job_class, enabled, auto_drop, comments)` | n/a | Use the second form of `CREATE_JOB` to create a job that uses a named program and named schedule. | | `CREATE_PROGRAM(program_name, program_type, program_action, number_of_arguments, enabled, comments)` | n/a | Use `CREATE_PROGRAM` to create a program. | -| `CREATE_SCHEDULE( schedule_name, start_date, repeat_interval, end_date, comments)` | n/a | Use the `CREATE_SCHEDULE` procedure to create a schedule. | -| `DEFINE_PROGRAM_ARGUMENT( program_name, argument_position, argument_name, argument_type, default_value, out_argument)` | n/a | Use the first form of the `DEFINE_PROGRAM_ARGUMENT` procedure to define a program argument that has a default value. | -| `DEFINE_PROGRAM_ARGUMENT( program_name, argument_position, argument_name, argument_type, out_argument)` | n/a | Use the first form of the `DEFINE_PROGRAM_ARGUMENT` procedure to define a program argument that does not have a default value. | +| `CREATE_SCHEDULE(schedule_name, start_date, repeat_interval, end_date, comments)` | n/a | Use the `CREATE_SCHEDULE` procedure to create a schedule. | +| `DEFINE_PROGRAM_ARGUMENT(program_name, argument_position, argument_name, argument_type, default_value, out_argument)` | n/a | Use the first form of the `DEFINE_PROGRAM_ARGUMENT` procedure to define a program argument that has a default value. | +| `DEFINE_PROGRAM_ARGUMENT(program_name, argument_position, argument_name, argument_type, out_argument)` | n/a | Use the first form of the `DEFINE_PROGRAM_ARGUMENT` procedure to define a program argument that does not have a default value. | | `DISABLE(name, force, commit_semantics)` | n/a | Use the `DISABLE` procedure to disable a job or program. | | `DROP_JOB(job_name, force, defer, commit_semantics)` | n/a | Use the `DROP_JOB` procedure to drop a job. | | `DROP_PROGRAM(program_name, force)` | n/a | Use the `DROP_PROGRAM` procedure to drop a program. | -| `DROP_PROGRAM_ARGUMENT( program_name, argument_position)` | n/a | Use the first form of `DROP_PROGRAM_ARGUMENT` to drop a program argument by specifying the argument position. | -| `DROP_PROGRAM_ARGUMENT( program_name, argument_name)` | n/a | Use the second form of `DROP_PROGRAM_ARGUMENT` to drop a program argument by specifying the argument name. | +| `DROP_PROGRAM_ARGUMENT(program_name, argument_position)` | n/a | Use the first form of `DROP_PROGRAM_ARGUMENT` to drop a program argument by specifying the argument position. | +| `DROP_PROGRAM_ARGUMENT(program_name, argument_name)` | n/a | Use the second form of `DROP_PROGRAM_ARGUMENT` to drop a program argument by specifying the argument name. | | `DROP_SCHEDULE(schedule_name, force)` | n/a | Use the `DROP SCHEDULE` procedure to drop a schedule. | | `ENABLE(name, commit_semantics)` | n/a | Use the `ENABLE` command to enable a program or job. | -| `EVALUATE_CALENDAR_STRING( calendar_string, start_date, return_date_after, next_run_date)` | n/a | Use `EVALUATE_CALENDAR_STRING` to review the execution date described by a user-defined calendar schedule. | +| `EVALUATE_CALENDAR_STRING(calendar_string, start_date, return_date_after, next_run_date)` | n/a | Use `EVALUATE_CALENDAR_STRING` to review the execution date described by a user-defined calendar schedule. | | `RUN_JOB(job_name, use_current_session, manually)` | n/a | Use the `RUN_JOB` procedure to execute a job immediately. | -| `SET_JOB_ARGUMENT_VALUE( job_name, argument_position, argument_value)` | n/a | Use the first form of `SET_JOB_ARGUMENT` value to set the value of a job argument described by the argument's position. | -| `SET_JOB_ARGUMENT_VALUE( job_name, argument_name, argument_value)` | n/a | Use the second form of `SET_JOB_ARGUMENT` value to set the value of a job argument described by the argument's name. | +| `SET_JOB_ARGUMENT_VALUE(job_name, argument_position, argument_value)` | n/a | Use the first form of `SET_JOB_ARGUMENT` value to set the value of a job argument described by the argument's position. | +| `SET_JOB_ARGUMENT_VALUE(job_name, argument_name, argument_value)` | n/a | Use the second form of `SET_JOB_ARGUMENT` value to set the value of a job argument described by the argument's name. | Advanced Server's implementation of `DBMS_SCHEDULER` is a partial implementation when compared to Oracle's version. Only those functions and procedures listed in the table above are supported. diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/01_bind_variable.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/01_bind_variable.mdx index e87e1763f89..624e43d670b 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/01_bind_variable.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/01_bind_variable.mdx @@ -10,8 +10,7 @@ The `BIND_VARIABLE` procedure provides the capability to associate a value with ```text BIND_VARIABLE( INTEGER, VARCHAR2, - { BLOB | CLOB | DATE | FLOAT | INTEGER | NUMBER | - TIMESTAMP | VARCHAR2 } + { BLOB | CLOB | DATE | FLOAT | INTEGER | NUMBER | TIMESTAMP | VARCHAR2 } [, INTEGER ]) ``` diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/07_column_value_raw.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/07_column_value_raw.mdx index 01675662a1f..90fcefa99b7 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/07_column_value_raw.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/07_column_value_raw.mdx @@ -35,39 +35,3 @@ COLUMN_VALUE_RAW( INTEGER, INTEGER, OUT RAW Actual length of the data prior to any truncation. -## COLUMN_VALUE_LONG - -The `COLUMN_VALUE_LONG` procedure returns a part of the value of a `LONG` column. - -```text -COLUMN_VALUE_LONG( INTEGER, INTEGER, INTEGER, - INTEGER, OUT VARCHAR2, OUT INTEGER) -``` - -**Parameters** - -`c` - - Cursor id of the cursor from which to get a value. - -`position` - - Position of the column of which to get a value. - -`length` - - Number of bytes of the long value to fetch. - -`offset` - - Offset into the long field for start of fetch. - -`value` - - Value of the column. - -`value_length` - - Number of bytes returned in value. - -To refer example, see [DEFINE_COLUMN_LONG](10_define_column_raw/#define_column_long). diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/10_define_column_raw.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/10_define_column_raw.mdx index e0f8f062a56..5882316926a 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/10_define_column_raw.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/10_define_column_raw.mdx @@ -31,48 +31,4 @@ DEFINE_COLUMN_RAW( INTEGER, INTEGER, RAW, The maximum length of the returned data. Returned data exceeding `column_size` is truncated to `column_size` characters. -## DEFINE_COLUMN_LONG - - -The `DEFINE_COLUMN_LONG` procedure defines a long column for a `SELECT` cursor. - -```text -DEFINE_COLUMN_LONG( INTEGER, INTEGER) -``` - -**Parameters** - -`c` - - Cursor id of the cursor for a row defined to be selected. - -`position` - - Position of the column in a row that is being defined. - -**Examples** - -The following example shows an anonymous block that defines a long column in the `SELECT` list using `DEFINE_COLUMN_LONG` procedure and returns a part of the `LONG` column value into a variable using procedure `COLUMN_VALUE_LONG`. - -```text -DECLARE - curid INTEGER; - v_ename VARCHAR(20); - sql_stmt VARCHAR2(50) := 'SELECT ename ' || ' FROM emp WHERE empno - = 7844'; - v_status INTEGER; - v_length INTEGER; -BEGIN - curid := DBMS_SQL.OPEN_CURSOR; - DBMS_SQL.PARSE(curid, sql_stmt, DBMS_SQL.native); - DBMS_SQL.DEFINE_COLUMN_LONG(curid, 1); - v_status := DBMS_SQL.EXECUTE(curid); - v_status := DBMS_SQL.FETCH_ROWS(curid); - DBMS_SQL.COLUMN_VALUE_LONG(curid, 1, 7, 0, v_ename, v_length); - DBMS_OUTPUT.PUT_LINE('ename: ' || v_ename || ' & length: ' || v_length); - DBMS_SQL.CLOSE_CURSOR(curid); -END; - -ename: TURNER & length: 6 -``` diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/11_describe_columns.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/11_describe_columns.mdx index cb247376790..2497f5296d6 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/11_describe_columns.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/11_describe_columns.mdx @@ -1,5 +1,5 @@ --- -title: "DESCRIBE COLUMNS" +title: "DESCRIBE_COLUMNS" legacyRedirectsGenerated: # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/13_execute_and_fetch.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/13_execute_and_fetch.mdx index 177f2c5b5bc..a5ae0eb400a 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/13_execute_and_fetch.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/13_execute_and_fetch.mdx @@ -9,8 +9,7 @@ legacyRedirectsGenerated: Function `EXECUTE_AND_FETCH` executes a parsed `SELECT` command and fetches one row. ```text - INTEGER EXECUTE_AND_FETCH( INTEGER - [, BOOLEAN ]) + INTEGER EXECUTE_AND_FETCH( INTEGER [, BOOLEAN ]) ``` **Parameters** diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/16_last_row_count.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/16_last_row_count.mdx index c007b1d3196..50614bab0e2 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/16_last_row_count.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/16_last_row_count.mdx @@ -83,31 +83,4 @@ EMPNO ENAME HIREDATE SAL COMM Number of rows: 14 ``` -## LAST_ERROR_POSITION -The `LAST_ERROR_POSITION` function returns an `INTEGER` value indicating the byte offset in the SQL statement text where the error occurred. The error position of the first character in the SQL statement is at `1`. - -```text -LAST_ERROR_POSITION RETURN INTEGER; -``` - -**Examples** - -The following example demonstrates an anonymous block that returns an error position with the `LAST_ERROR_POSITION` function. - -```text -DECLARE - curid INTEGER; - sql_stmt VARCHAR2(50) := 'SELECT empno FROM not_exist_table'; - v_position INTEGER; -BEGIN - curid := DBMS_SQL.OPEN_CURSOR; - DBMS_SQL.PARSE(curid, sql_stmt, DBMS_SQL.native); -EXCEPTION WHEN OTHERS THEN - v_position := DBMS_SQL.LAST_ERROR_POSITION; - DBMS_OUTPUT.PUT_LINE('error position = ' || v_position); - DBMS_SQL.CLOSE_CURSOR(curid); -END; - -error position = 19 -``` diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/18_parse.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/18_parse.mdx index 9b0b9ea9f3b..84b004c4d1f 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/18_parse.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/18_parse.mdx @@ -24,7 +24,7 @@ PARSE( INTEGER, VARCHAR2, INTEGER) `language_flag` - Language flag provided for compatibility with Oracle syntax. Use `DBMS_SQL.V6, DBMS_SQL.V7` or `DBMS_SQL.native`. This flag is ignored, and all syntax is assumed to be in EDB Advanced Server form. + Language flag provided for compatibility with Oracle syntax. Use `DBMS_SQL.V6, DBMS_SQL.V7` or `DBMS_SQL.native`. This flag is ignored, and all syntax is assumed to be in EnterpriseDB Advanced Server form. **Examples** diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/index.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/index.mdx index 4140e7135c9..67be14f4d83 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/index.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/index.mdx @@ -6,7 +6,7 @@ legacyRedirectsGenerated: - "/edb-docs/d/edb-postgres-advanced-server/reference/database-compatibility-for-oracle-developers-built-in-package-guide/13/dbms_sql.html" --- -The `DBMS_SQL` package provides an application interface compatible with Oracle databases to the EDB dynamic SQL functionality. With `DBMS_SQL` you can construct queries and other commands at run time (rather than when you write the application). EDB Advanced Server offers native support for dynamic SQL; `DBMS_SQL` provides a way to use dynamic SQL in a fashion compatible with Oracle databases without modifying your application. +The `DBMS_SQL` package provides an application interface compatible with Oracle databases to the EnterpriseDB dynamic SQL functionality. With `DBMS_SQL` you can construct queries and other commands at run time (rather than when you write the application). EnterpriseDB Advanced Server offers native support for dynamic SQL; `DBMS_SQL` provides a way to use dynamic SQL in a fashion compatible with Oracle databases without modifying your application. `DBMS_SQL` assumes the privileges of the current user when executing dynamic SQL statements. @@ -14,23 +14,20 @@ The `DBMS_SQL` package provides an application interface compatible with Oracle | --------------------------------------------------------------------------------------- | --------------------- | ----------- | ---------------------------------------------------------------------- | | `BIND_VARIABLE(c, name, value [, out_value_size ])` | Procedure | n/a | Bind a value to a variable. | | `BIND_VARIABLE_CHAR(c, name, value [, out_value_size ])` | Procedure | n/a | Bind a `CHAR` value to a variable. | -| `BIND_VARIABLE_RAW(c, name, value [, out_value_size])` | Procedure | n/a | Bind a `RAW` value to a variable. | +| `BIND_VARIABLE_RAW(c, name, value [, out_value_size ])` | Procedure | n/a | Bind a `RAW` value to a variable. | | `CLOSE_CURSOR(c IN OUT)` | Procedure | n/a | Close a cursor. | | `COLUMN_VALUE(c, position, value OUT [, column_error OUT [, actual_length OUT ]])` | Procedure | n/a | Return a column value into a variable. | | `COLUMN_VALUE_CHAR(c, position, value OUT [, column_error OUT [, actual_length OUT ]])` | Procedure | n/a | Return a `CHAR` column value into a variable. | | `COLUMN_VALUE_RAW(c, position, value OUT [, column_error OUT [, actual_length OUT ]])` | Procedure | n/a | Return a `RAW` column value into a variable. | -| `COLUMN_VALUE_LONG(c, position, length, offset, value OUT, value_length OUT` | Procedure | n/a | Return a part of the `LONG` column value into a variable. | | `DEFINE_COLUMN(c, position, column [, column_size ])` | Procedure | n/a | Define a column in the `SELECT` list. | | `DEFINE_COLUMN_CHAR(c, position, column, column_size)` | Procedure | n/a | Define a `CHAR` column in the `SELECT` list. | | `DEFINE_COLUMN_RAW(c, position, column, column_size)` | Procedure | n/a | Define a `RAW` column in the `SELECT` list. | -| `DEFINE_COLUMN_LONG(c, position)` | Procedure | n/a | Define a `LONG` column in the `SELECT` list. | | `DESCRIBE_COLUMNS` | Procedure | n/a | Defines columns to hold a cursor result set. | | `EXECUTE(c)` | Function | `INTEGER` | Execute a cursor. | | `EXECUTE_AND_FETCH(c [, exact ])` | Function | `INTEGER` | Execute a cursor and fetch a single row. | | `FETCH_ROWS(c)` | Function | `INTEGER` | Fetch rows from the cursor. | | `IS_OPEN(c)` | Function | `BOOLEAN` | Check if a cursor is open. | | `LAST_ROW_COUNT` | Function | `INTEGER` | Return cumulative number of rows fetched. | -| `LAST_ERROR_POSITION` | Function | `INTEGER` | Return byte offset in the SQL statement text where the error occurred. | | `OPEN_CURSOR` | Function | `INTEGER` | Open a cursor. | | `PARSE(c, statement, language_flag)` | Procedure | n/a | Parse a statement. | diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/18_dbms_utility.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/18_dbms_utility.mdx index 05eeec8f3a7..9bde984ee0a 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/18_dbms_utility.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/18_dbms_utility.mdx @@ -326,9 +326,9 @@ BEGIN DBMS_OUTPUT.PUT_LINE('Compatibility: ' || v_compat); END; -Version: EnterpriseDB 10.0.0 on i686-pc-linux-gnu, compiled by GCC gcc +Version: EnterpriseDB 12.0.0 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-48), 32-bit -Compatibility: EnterpriseDB 10.0.0 on i686-pc-linux-gnu, compiled by GCC +Compatibility: EnterpriseDB 12.0.0 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 4.1.220080704 (Red Hat 4.1.2-48), 32-bit ``` @@ -520,7 +520,7 @@ The `GET_PARAMETER_VALUE` procedure provides the capability to retrieve database ```text BINARY_INTEGER GET_PARAMETER_VALUE( VARCHAR2, - OUT INTEGER, OUT VARCHAR2)`` + OUT INTEGER, OUT VARCHAR2) ``` **Parameters** @@ -685,7 +685,7 @@ dblink : nextpos: 12 ``` -Tokenize the name, `"edb"."Emp_Admin".update_emp_sal :` +Tokenize the name, `"edb"."Emp_Admin".update_emp_sal:` ```text BEGIN diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/01_base64_decode.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/01_base64_decode.mdx index f4da5f5f5dc..8f1d8c99afd 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/01_base64_decode.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/01_base64_decode.mdx @@ -30,7 +30,7 @@ SET bytea_output = escape; This command instructs the server to escape any non-printable characters, and to display `BYTEA` or `RAW` values onscreen in readable form. For more information, refer to the Postgres Core Documentation available at: - + The following example first encodes (using `BASE64_ENCODE`), and then decodes (using `BASE64_DECODE`) a string that contains the text `abc:` diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/02_base64_encode.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/02_base64_encode.mdx index 5953b34d335..293f2e74bdd 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/02_base64_encode.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/02_base64_encode.mdx @@ -40,7 +40,7 @@ SET bytea_output = escape; This command instructs the server to escape any non-printable characters, and to display `BYTEA` or `RAW` values onscreen in readable form. For more information, refer to the Postgres Core Documentation available at: - + The following example first encodes (using `BASE64_ENCODE`), and then decodes (using `BASE64_DECODE`) a string that contains the text `abc:` diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/05_quoted_printable_decode.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/05_quoted_printable_decode.mdx index b0ab47de3bb..8794f09e9ee 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/05_quoted_printable_decode.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/05_quoted_printable_decode.mdx @@ -32,7 +32,7 @@ SET bytea_output = escape; This command instructs the server to escape any non-printable characters, and to display `BYTEA` or `RAW` values onscreen in readable form. For more information, refer to the Postgres Core Documentation available at: - + The following example first encodes and then decodes a string: diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/06_quoted_printable_encode.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/06_quoted_printable_encode.mdx index fd290ff1d42..bc1eb941d5c 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/06_quoted_printable_encode.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/06_quoted_printable_encode.mdx @@ -30,7 +30,7 @@ SET bytea_output = escape; This command instructs the server to escape any non-printable characters, and to display `BYTEA` or `RAW` values onscreen in readable form. For more information, refer to the Postgres Core Documentation available at: - + The following example first encodes and then decodes a string: diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/09_uudecode.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/09_uudecode.mdx index f8fcb6db712..db107fc61df 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/09_uudecode.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/09_uudecode.mdx @@ -36,7 +36,7 @@ SET bytea_output = escape; This command instructs the server to escape any non-printable characters, and to display `BYTEA` or `RAW` values onscreen in readable form. For more information, refer to the Postgres Core Documentation available at: - + The following example uses `UUENCODE` and `UUDECODE` to first encode and then decode a string: diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/10_uuencode.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/10_uuencode.mdx index 2f12ceb5e2d..a804669bcdc 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/10_uuencode.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/19_utl_encode/10_uuencode.mdx @@ -50,7 +50,7 @@ SET bytea_output = escape; This command instructs the server to escape any non-printable characters, and to display `BYTEA` or `RAW` values onscreen in readable form. For more information, refer to the Postgres Core Documentation available at: - + The following example uses `UUENCODE` and `UUDECODE` to first encode and then decode a string: diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/20_utl_file.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/20_utl_file.mdx index 1a3e48a1fa5..0648bf54fc0 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/20_utl_file.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/20_utl_file.mdx @@ -612,8 +612,7 @@ C:\TEMP\EMPDIR>TYPE empfile.csv The `PUT` procedure writes a string to the given file. No end-of-line character sequence is written at the end of the string. Use the `NEW_LINE` procedure to add an end-of-line character sequence. ```text -PUT( FILE_TYPE, { DATE | NUMBER | TIMESTAMP | - VARCHAR2 }) +PUT( FILE_TYPE, { DATE | NUMBER | TIMESTAMP | VARCHAR2 }) ``` **Parameters** @@ -754,8 +753,7 @@ C:\TEMP\EMPDIR>TYPE empfile.csv The `PUTF` procedure writes a formatted string to the given file. ```text -PUTF( FILE_TYPE, VARCHAR2 [, VARCHAR2] - [, ...]) +PUTF( FILE_TYPE, VARCHAR2 [, VARCHAR2] [, ...]) ``` **Parameters** diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/21_utl_http.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/21_utl_http.mdx index 05abc371f07..c2c9f9999a3 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/21_utl_http.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/21_utl_http.mdx @@ -13,7 +13,6 @@ The `UTL_HTTP` package provides a way to use the HTTP or HTTPS protocol to retri | `BEGIN_REQUEST(url, method, http_version)` | `UTL_HTTP.REQ` | Initiates a new HTTP request. | | `END_REQUEST(r IN OUT)` | n/a | Ends an HTTP request before allowing it to complete. | | `END_RESPONSE(r IN OUT)` | n/a | Ends the HTTP response. | -| `END_OF_BODY(r IN OUT)` | n/a | Ends package body | | `GET_BODY_CHARSET` | `VARCHAR2` | Returns the default character set of the body of future HTTP requests. | | `GET_BODY_CHARSET(charset OUT)` | n/a | Returns the default character set of the body of future HTTP requests. | | `GET_FOLLOW_REDIRECT(max_redirects OUT)` | n/a | Current setting for the maximum number of redirections allowed. | @@ -50,16 +49,6 @@ Advanced Server ignores all cookies it receives. The `UTL_HTTP` exceptions that can be raised in Oracle are not recognized by Advanced Server. In addition, the error codes returned by Advanced Server are not the same as those returned by Oracle. -**UTL_HTTP Exception Codes** - -If a call to a `UTL_HTTP` procedure or function raises an exception, you can use the condition name to catch the exception. The `UTL_HTTP` package reports the following exception codes compatible with Oracle databases: - -| **Exception Code** | **Condition Name** | **Description** | **Raised Where** | -| ------------------ | ------------------ | ---------------------------------------- | ------------------------------------------------ | -| `-29266` | `END_OF_BODY` | The end of HTTP response body is reached | `READ_LINE, READ_RAW`, and `READ_TEXT` functions | - -To use the `UTL_HTTP.END_OF_BODY` exception, first you need to run the `utl_http_public.sql` file from the `contrib/utl_http` directory of your installation directory. - There are various public constants available with `UTL_HTTP`. These are listed in the following tables. The following table contains `UTL_HTTP` public constants defining HTTP versions and port assignments. @@ -699,7 +688,7 @@ If the data found at the given URL is longer than 2000 bytes, the remainder will **Example** -The following command returns the first 2000 bytes retrieved from the EDB website: +The following command returns the first 2000 bytes retrieved from the EnterpriseDB website: ```text SELECT UTL_HTTP.REQUEST('http://www.enterprisedb.com/') FROM DUAL; @@ -726,14 +715,14 @@ DEFAULT 32767) RETURN UTL_HTTP.HTML_PIECES **Example** -The following example returns the first four 2000 byte segments retrieved from the EDB website: +The following example returns the first four 2000 byte segments retrieved from the EnterpriseDB website: ```text DECLARE result UTL_HTTP.HTML_PIECES; BEGIN result := UTL_HTTP.REQUEST_PIECES('http://www.enterprisedb.com/', 4); -END +END; ``` ## SET_BODY_CHARSET @@ -762,7 +751,7 @@ and ```text SET_FOLLOW_REDIRECT( IN OUT UTL_HTTP.REQ, -IN INTEGER DEFAULT 3)`` +IN INTEGER DEFAULT 3) ``` Use the second form to change the maximum number of redirections for an individual request that a request inherits from the session default settings. @@ -978,37 +967,3 @@ Assuming the web application successfully processed the `POST` method, the follo Status Code: 200 Reason Phrase: OK ``` - -## END_OF_BODY - -The `END_OF_BODY` exception will be raised when it reaches the end of the HTTP response body. - -**Example** - -The following example handles the exception and writes `Exception caught` in text form to the request body to be sent using the HTTP `POST` method. The data is sent to a hypothetical web application (`post.php`) that accepts and processes data. - -```text -DECLARE - req UTL_HTTP.REQ; - resp UTL_HTTP.RESP; - value VARCHAR2(32768); -BEGIN - req := UTL_HTTP.BEGIN_REQUEST('https://www.google.com/'); - resp := UTL_HTTP.GET_RESPONSE(req); -LOOP - UTL_HTTP.READ_LINE(resp, value, TRUE); -END LOOP; - UTL_HTTP.END_RESPONSE(resp); -EXCEPTION - WHEN UTL_HTTP.END_OF_BODY THEN - DBMS_OUTPUT.PUT_LINE('Exception caught'); - UTL_HTTP.END_RESPONSE(resp); -END; -``` - -Assuming the web application successfully processed the `POST` method, the following output will be displayed: - -```text -Output is: -Exception caught -``` diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/23_utl_raw.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/23_utl_raw.mdx index 9c5e6088d13..f51b30f3c59 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/23_utl_raw.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/23_utl_raw.mdx @@ -214,7 +214,7 @@ SELECT UTL_RAW.LENGTH(UTL_RAW.CAST_TO_RAW('Accounts')) FROM DUAL; The following example uses the `LENGTH` function to return the length of a `RAW` value that includes multi-byte characters: ```text -SELECT UTL_RAW.LENGTH(UTL_RAW.CAST_TO_RAW('hello')); +SELECT UTL_RAW.LENGTH(UTL_RAW.CAST_TO_RAW('独孤求败')); length -------- 12 diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/24_utl_smtp.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/24_utl_smtp.mdx index 861cf760fef..9a280683278 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/24_utl_smtp.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/24_utl_smtp.mdx @@ -161,7 +161,7 @@ DATA( IN OUT CONNECTION, VARCHAR2) ## EHLO -The `EHLO` procedure performs initial handshaking with the SMTP server after establishing the connection. The `EHLO` procedure allows the client to identify itself to the SMTP server according to RFC 821. RFC 1869 specifies the format of the information returned in the server’s reply. The *HELO* procedure performs the equivalent functionality, but returns less information about the server. +The `EHLO` procedure performs initial handshaking with the SMTP server after establishing the connection. The `EHLO` procedure allows the client to identify itself to the SMTP server according to RFC 821. RFC 1869 specifies the format of the information returned in the server’s reply. The `HELO` procedure performs the equivalent functionality, but returns less information about the server. ```text EHLO( IN OUT CONNECTION, VARCHAR2) @@ -179,10 +179,10 @@ EHLO( IN OUT CONNECTION, VARCHAR2) ## HELO -The `HELO` procedure performs initial handshaking with the SMTP server after establishing the connection. The `HELO` procedure allows the client to identify itself to the SMTP server according to RFC 821. The *EHLO* procedure performs the equivalent functionality, but returns more information about the server. +The `HELO` procedure performs initial handshaking with the SMTP server after establishing the connection. The `HELO` procedure allows the client to identify itself to the SMTP server according to RFC 821. The `EHLO` procedure performs the equivalent functionality, but returns more information about the server. ```text -HELO( IN OUT, VARCHAR2) +HELO( IN OUT, VARCHAR2) ``` **Parameters** @@ -222,8 +222,7 @@ The `HELP` function provides the capability to send the `HELP` command to the SM The `MAIL` procedure initiates a mail transaction. ```text -MAIL( IN OUT CONNECTION, VARCHAR2 - [, VARCHAR2 ]) +MAIL( IN OUT CONNECTION, VARCHAR2 [, VARCHAR2 ]) ``` **Parameters** @@ -320,8 +319,7 @@ QUIT( IN OUT CONNECTION) The `RCPT` procedure provides the e-mail address of the recipient. To schedule multiple recipients, invoke `RCPT` multiple times. ```text -RCPT( IN OUT CONNECTION, VARCHAR2 - [, VARCHAR2 ]) +RCPT( IN OUT CONNECTION, VARCHAR2 [, VARCHAR2 ]) ``` **Parameters** diff --git a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/25_utl_url.mdx b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/25_utl_url.mdx index 6838823168c..3c44b2adc12 100644 --- a/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/25_utl_url.mdx +++ b/product_docs/docs/epas/12/epas_compat_bip_guide/03_built-in_packages/25_utl_url.mdx @@ -142,8 +142,8 @@ The following anonymous block uses the `ESCAPE` function to escape the blank spa DECLARE result varchar2(400); BEGIN - result := UTL_URL.UNESCAPE('http://www.example.com -Using%20the%20UNESCAPE%20function.html'); + result := +UTL_URL.UNESCAPE('http://www.example.com/Using%20the%20UNESCAPE%20function.html'); DBMS_OUTPUT.PUT_LINE(result); END; ``` diff --git a/product_docs/docs/epas/12/epas_rel_notes/index.mdx b/product_docs/docs/epas/12/epas_rel_notes/index.mdx index 254f0438167..b1688971515 100644 --- a/product_docs/docs/epas/12/epas_rel_notes/index.mdx +++ b/product_docs/docs/epas/12/epas_rel_notes/index.mdx @@ -1,31 +1,31 @@ --- navTitle: Release Notes -title: "EDB Postgres Advanced Server 13 Release Notes" +title: "EDB Postgres Advanced Server 12 Release Notes" legacyRedirectsGenerated: # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. - "/edb-docs/d/edb-postgres-advanced-server/installation-getting-started/release-notes/13/index.html" --- -With this release of EDB Postgres Advanced Server 13, EnterpriseDB continues to lead as the only worldwide company to deliver innovative and low cost open-source-derived database solutions with commercial quality, ease of use, compatibility, scalability, and performance for small or large-scale enterprises. +With this release of EDB Postgres Advanced Server 12, EnterpriseDB continues to lead as the only worldwide company to deliver innovative and low cost open-source-derived database solutions with commercial quality, ease of use, compatibility, scalability, and performance for small or large-scale enterprises. -EDB Postgres Advanced Server 13 is built on open-source PostgreSQL 13, which introduces myriad enhancements that enable databases to scale up and scale out in more efficient ways. PostgreSQL 13 has significant performance improvements, which includes an improved indexing and lookup system, a level up on query planning when using extended statistics, improved performance for queries that use aggregates or partitioned tables, and providing more ways to monitor activity within a PostgreSQL database. And along with highly requested features like parallelized vacuuming, incremental sorting, PostgreSQL 13 has a multitude of other new features and capabilities. +EDB Postgres Advanced Server 12 is built on open-source PostgreSQL 12, which introduces myriad enhancements that enable databases to scale up and scale out in more efficient ways. -EDB Postgres Advanced Server 13 adds a number of new features that will delight developers and DBAs alike, including: +EDB Postgres Advanced Server 12 adds a number of new outstanding features, including: -- Automatic LIST Partitioning -- `PARTITION number` or `SUBPARTITION number` clauses while creating a HASH partition table -- Forward declarations in the package body -- `CREATE INDEX` syntax contains column name and constant -- `USING INDEX` clause in `CREATE TABLE` and `ALTER TABLE` -- EDB Loader handles unique constraint violations -- `STATS_MODE` aggregate function -- Support for `utl_http.end_of_body` exception -- EDB Loader supports any connection parameters with the `-c` or `CONNSTR` option +- Interval Partition +- Logical decoding on standby +- `COMPOUND TRIGGER` +- `MEDIAN` and `LISTAGG` +- `CAST_MULTISET` + +For more information about EnterpriseDB software, visit: + + ## Installers and Documentation -EDB Postgres Advanced Server v13 is packaged and delivered as interactive installers for Windows; visit the EnterpriseDB website: +EDB Postgres Advanced Server v12 is packaged and delivered as interactive installers for Windows; visit the EnterpriseDB website: @@ -41,85 +41,76 @@ To request the credentials required to access EDB repositories, visit: -Documentation is provided on the EDB website, visit: +Please note: The EnterpriseDB repository structure has changed; for detailed installation instructions, see the EDB Postgres Advanced Server Linux Installation Guide. + +Documentation is provided on the EnterpriseDB website, visit: ## Supported Platforms -EDB Postgres Advanced Server v13 installers support 64 bit Linux and Windows server platforms. The Advanced Server 13 RPM packages are supported on the following 64-bit Linux platforms: +EDB Postgres Advanced Server v12 installers support 64 bit Linux and Windows server platforms. The Advanced Server 12 RPM packages are supported on the following 64-bit Linux platforms: - Red Hat Enterprise Linux (x86_64) 7.x and 8.x - CentOS (x86_64) 7.x and 8.x - OEL (x86_64) 7.x and 8.x - PPC64LE 8 running CentOS/RHEL 7.x -The EDB Postgres Advanced Server 13 native packages are supported on the following 64-bit Linux platforms: +The EDB Postgres Advanced Server 12 native packages are supported on the following 64-bit Linux platforms: - Debian 9.x and 10.x -- Ubuntu 18.04 and 20.04 +- Ubuntu 18.04 LTS Graphical installers are supported on the following 64-bit Windows platforms: - Windows 2019 - Windows Server 2016 +- Windows Server 2012 R2 Server -Additional information about supported platforms is available on the EDB website: +Additional information about supported platforms is available on the EnterpriseDB website: ## Component Certification -The following components are included in the EDB Postgres Advanced Server v13 release: - -- EPAS 13.1.4 -- BART 2.6 -- Cloneschema 1.14 -- Connectors JDBC 42.2.12.3, ODBC 12.02.0000.02, .NET 4.1.5.1, OCL 13.1.4.1 -- Edb-Modules 1.0 -- EDBPlus 39.0.0 -- EFM 4.0 -- Hdfs_fdw 2.0.7 -- Mongo_fdw 5.2.8 -- MySQL_fdw 2.5.5 -- MTK 54.0.0 -- Parallel Clone 1.8 -- PEM 7.16 -- PgAdmin 4.27 -- PgAgent 4.2.0 -- PgBouncer 1.14 -- PgPool 4.1.2 -- PostGIS 3.0.2 +The following components are included in the EDB Postgres Advanced Server v12 release: + - Procedural Language Packs – PL/Perl 5.26, PL/Python 3.7, PL/TCL 8.6 +- CloneSchema 1.10 +- Parallel Clone 1.5 +- pgAgent 4.15 - Slony 2.2.8 +- Connectors JDBC 42.2.8, ODBC 12.00.0000 .NET 4.0.10.1, OCI 11.0.3.1 +- pgAdmin 4.15 +- pgBouncer 1.12.0 +- pgPool-II & pgPool-IIExtensions 4.0.6 +- MTK 53.0.0 +- EDBPlus 38.0.0 +- PostGIS-JDBC 2.2.1 -## EDB Postgres Advanced Server v13 Features +## EDB Postgres Advanced Server v12 Features The major highlights of this release are : -- Automatic LIST Partitioning is an extension to LIST partitioning that allows a database to automatically create a partition for any new distinct value of the LIST partitioning key. A new partition is created when data is inserted into the LIST partitioned table and the inserted value does not match any of the existing table partitions. -- Additional `smallint`, `int`, `bigint`, and `numeric` variants in the `MEDIAN` aggregate function. -- Added support for `CREATE INDEX` syntax that contains a column name and number, i.e. `(col_name,1)`. -- Added support to alter the owner of the directory - `ALTER DIRECTORY OWNER TO `. -- CSV and XML audit logs have been made consistent. It has been observed that there is a difference in terms of number of fields in the CSV and XML formatted audit logs. Now the audit log is consistent across both formats. -- Default behaviour for `dbms_output` made compatible with Redwood. By default, the `dbms_output` behaviour is `off` in Oracle; in EPAS it is always `on`. In this release, EPAS adds a GUC to control the default behaviour for `DBMS_OUTPUT` package. -- You can log the number of processed statements with `edb_log_every_bulk_value`. Currently, during bulk execution EPAS did not identify the number of rows processed when `edb_log_every_bulk_value` was `off`. This feature allows EPAS to log it both in the audit log file and server log file. This will help you analyze the logs for such cases. -- Previously, EDB Loader would abort the whole operation if any record insertion fails due to a unique constraint violation. This is fixed by using speculative insertion to insert rows. This behavior is enforced if `handle_conflicts` (a new parameter) is `true` and indexes are present. -- `SYSDATE` now behaves in a more compatible manner. `SYSDATE` output changes at every nesting level, so multiple copies of SYSDATE in the same SQL query will return the same value each time. `SYSDATE` changes on successive statements in the same procedure, or within a nested function call. -- `PARALLEL [n] | NOPARALLEL` option for `CREATE TABLE` and `INDEX`. Advanced Server now supports the `PARALLEL [n] | NOPARALLEL` clause in the `CREATE TABLE`, `ALTER TABLE`, `CREATE INDEX`, and `ALTER INDEX` commands to enable or disable parallelism on an index or a table. -- `PARTITION [n]` or `SUBPARTITION [n]` while creating a table. This feature allows you to automatically create `[n]` hash partitions at a subpartition level. -- EDB Loader supports any connection parameters. You can use the EDB Loader `-c` or `CONNSTR` options to specify any connection parameters supported by libpq. This includes SSL connection parameters. -- The `STATS_MODE` function takes a set of values as an argument and returns the value that occurs with the highest frequency. If multiple values appear with the same frequency, the `STATS_MODE` function arbitrarily chooses the first value and returns only that one value. -- Added support for DBMS_SQL function/procedures (`DEFINE_COLUMN_LONG`, `COLUMN_VALUE_LONG` and `LAST_ERROR_POSITION`). -- Added support for function `to_timestamp_tz()`. -- Added support for function/procedure specification inside package body. -- Added support for FM format in `to_number` function. -- Added support for `AES192` and `AES256` in the `DBMS_CRYPTO` package. -- Added support for the spell mode in `to_char(timestamptz, text)` function. -- Allow creating a compound trigger having `WHEN` clause with `NEW/OLD` variables and `STATEMENT` level triggering events. Enhanced Redwood compatible view. -- Log matched line of `pg_hba.conf` on successful client authentication. Enhanced `pg_catcheck` to test for and raise an error if a relation's `relfilenode` is missing from the `data` directory. -- Added support for `utl_http.end_of_body` exception. This feature declares the `end_of_body` exception into `utl_http` package and throws the same from `read_line`, `read_text`, and `read_raw` package procedures when no data is left in the response body. -- The `UNIQUE` and `PRIMARY KEY` constraint clauses now have a `CREATE INDEX` statement. This new syntax allows users to specify explicit index details like fillfactor, etc. Columns specified in the constraint and the columns specified in the index must be the same. +- Advanced Server now supports interval partitioning. Interval partitioning is an extension to range partitioning where the system automatically creates the partition if a new tuple doesn't fit into existing partitions. +- For better Redwood compatibility, Advanced Server now treats the `SELECT UNIQUE` clause synonymous to `SELECT DISTINCT` clause (i.e. they can be used interchangeably in all places). +- Advanced Server now supports `COMPOUND TRIGGERS`. This provides a way to define a single trigger on a table that enables the user to specify actions for different DML event points. It allows defining `BEFORE STATEMENT`, `AFTER STATEMENT`, `BEFORE EACH ROW`, `AFTER EACH ROW` timing events in a single trigger. +- Advanced Server allows logical decoding on a standby server. With this feature, the user can now create a logical replication slot on standby server. +- Advanced Server now provides `CAST(MULTISET..)`. `CAST(MULTISET)` is an extension to the redwood style casting function `CAST(.. AS ..)` where the subquery result is like a table output `CAST` to a collection type. +- Advanced Server now supports two aggregate functions: `LISTAGG` and `MEDIAN`. +- The `LISTAGG` function supports string aggregation that concatenates data from multiple rows into a single row in an ordered fashion. +- The `MEDIAN` function calculates a median value from the set of provided values. The aggregate function can be used with numeric, date/time and interval types and much like other aggregate functions, it can be used with window function as well. +- In addition to supporting `%type` and `%rowtype` variables for functions and procedures, Advanced Server now supports the same inside a package as well. +- Advanced Server now supports a Redwood compatible `to_timestamp` implementation, which facilitates stricter input string parsing for timestamp columns for EDB Loader. +- Advanced Server has re-implemented `ROWIDs` using identity data type after PG v12 PostgreSQL community removed support for `OIDs` (to which `ROWIDs` were mapped). +- Advanced Server has added the `SYS_GUID` function to generate and return a globally unique identifier in the form of 16-bytes of RAW data. +- Advanced Server now offers new view that provide information which is compatible with the Oracle data dictionary views: + + `{USER|ALL|DBA}_TAB_PRIVS` + + `{USER|ALL|DBA}_COL_PRIVS` + + `{USER|ALL|DBA}_TAB_DEPENDENCIES` For information about Advanced Server features that are compatible with Oracle databases, see the following guides: @@ -127,24 +118,548 @@ For information about Advanced Server features that are compatible with Oracle d - *Database Compatibility for Oracle Developer's Reference Guide* - *Database Compatibility for Oracle Developer's Built-in Package Guide* - *Database Compatibility for Oracle Developer's Tools and Utilities Guide* -- *Database Compatibility Table Partitioning Guide* -- *Database Compatibility Stored Procedural Language Guide* -### Community PostgreSQL 13 Updates +### Community PostgreSQL 12 Updates + +Advanced Server 12 integrates all of the community PostgreSQL 12 features. To review a complete list of changes to the community PostgreSQL project and the contributors names, see the PostgreSQL 12 Release Notes at: + + + +The following updates are available in PostgreSQL 12: + +### Partitioning Updates + +Improve performance of many operations on partitioned tables. + +Allow tables with thousands of child partitions to be processed efficiently by operations that only affect a small number of partitions. + +Allow foreign keys to reference partitioned tables. + +Improve speed of `COPY` into partitioned tables. + +Allow partition bounds to be any expression. + +Such expressions are evaluated at partitioned-table creation time. Previously, only simple constants were allowed as partition bounds. + +Allow `CREATE TABLE's` tablespace specification for a partitioned table to affect the tablespace of its children. + +Avoid sorting when partitions are already being scanned in the necessary order. + +`ALTER TABLE ATTACH PARTITION` is now performed with reduced locking requirements. + +Add partition introspection functions. + +The new function `pg_partition_root()` returns the top-most parent of a partition tree, `pg_partition_ancestors()` reports all ancestors of a partition, and `pg_partition_tree()` displays information about partitions. + +Include partitioned indexes in the system view `pg_indexes`. + +Add psql command `\dP` to list partitioned tables and indexes. + +Improve psql `\d` and `\z` display of partitioned tables. + +Fix bugs that could cause `ALTER TABLE DETACH PARTITION` to leave behind incorrect dependency state, allowing subsequent operations to misbehave, for example by not dropping a former partition child index when its table is dropped. + +### Indexes + +Improve performance and space utilization of btree indexes with many duplicates. + +Previously, duplicate index entries were stored unordered within their duplicate groups. This caused overhead during index inserts, wasted space due to excessive page splits, and it reduced `VACUUM's` ability to recycle entire pages. Duplicate index entries are now sorted in heap-storage order. + +Indexes `pg_upgrade'd` from previous releases will not have these benefits. + +Allow multi-column btree indexes to be smaller. + +Internal pages and min/max leaf page indicators now only store index keys until the change key, rather than all indexed keys. This also improves the locality of index access. + +Improve speed of btree index insertions by reducing locking overhead. + +Support `INCLUDE` columns in `GiST` indexes. + +Add support for nearest-neighbor `(KNN)` searches of `SP-GiST` indexes. + +Reduce the WAL write overhead of `GiST`, `GIN`, and `SP-GiST` index creation. + +Allow index-only scans to be more efficient on indexes with many columns. + +Improve the performance of vacuum scans of `GiST` indexes. + +Delete empty leaf pages during `GiST VACUUM`. + +Reduce locking requirements for index renaming. + +### Optimizer + +Allow `CREATE STATISTICS` to create most-common-value statistics for multiple columns. + +This improves optimization for queries that test several columns, requiring an estimate of the combined effect of several `WHERE` clauses. If the columns are correlated and have non-uniform distributions then multi-column statistics will allow much better estimates. + +Allow common table expressions (CTEs) to be inlined into the outer query. + +Specifically, CTEs are automatically inlined if they have no side-effects, are not recursive, and are referenced only once in the query. Inlining can be prevented by specifying `MATERIALIZED`, or forced for multiply-referenced CTEs by specifying `NOT MATERIALIZED`. Previously, CTEs were never inlined and were always evaluated before the rest of the query. + +Allow control over when generic plans are used for prepared statements. + +This is controlled by the `plan_cache_mode` server parameter. + +Improve optimization of partition and `UNION ALL` queries that have only a single child. + +Improve processing of domains that have no check constraints. + +Domains that are being used purely as type aliases no longer cause optimization difficulties. + +Pre-evaluate calls of `LEAST` and `GREATEST` when their arguments are constants. + +Improve optimizer's ability to verify that partial indexes with IS `NOT NULL` conditions are usable in queries. + +Usability can now be recognized in more cases where the calling query involves casts or large `x IN (array)` clauses. + +Compute `ANALYZE` statistics using the collation defined for each column. + +Previously, the database's default collation was used for all statistics. This potentially gives better optimizer behavior for columns with non-default collations. + +Improve selectivity estimates for inequality comparisons on `ctid` columns. + +Improve optimization of joins on columns of type `tid`. + +These changes primarily improve the efficiency of self-joins on `ctid` columns. + +Fix the leakproofness designations of some btree comparison operators and support functions. + +This allows some optimizations that previously would not have been applied in the presence of security barrier views or row-level security. + +### General Performance + +Enable Just-in-Time (JIT) compilation by default, if the server has been built with support for it. + +Note that this support is not built by default, but has to be selected explicitly while configuring the build. + +Speed up keyword lookup. + +Improve search performance for multi-byte characters in `position()` and related functions. + +Allow toasted values to be minimally decompressed. + +This is useful for routines that only need to examine the initial portion of a toasted field. + +Allow `ALTER TABLE ... SET NOT NULL` to avoid unnecessary table scans. + +This can be optimized when the table's column constraints can be recognized as disallowing nulls. + +Allow `ALTER TABLE ... SET DATA TYPE` changing between timestamp and timestamptz to avoid a table rewrite when the session time zone is UTC. + +In the UTC time zone, these two data types are binary compatible. + +Improve speed in converting strings to `int2` or `int4` integers. + +Allow parallelized queries when in `SERIALIZABLE` isolation mode. + +Previously, parallelism was disabled when in this mode. + +Use `pread()` and `pwrite()` for random I/O. + +This reduces the number of system calls required for I/O. + +Improve the speed of setting the process title on FreeBSD. + +### Monitoring + +Allow logging of statements from only a percentage of transactions. + +The parameter `log_transaction_sample_rate` controls this. + +Add progress reporting to `CREATE INDEX` and `REINDEX` operations. + +Progress is reported in the `pg_stat_progress_create_index` system view. + +Add progress reporting to `CLUSTER` and `VACUUM FULL`. + +Progress is reported in the `pg_stat_progress_cluster` system view. + +Add progress reporting to `pg_checksums`. + +This is enabled with the option `--progress`. + +Add counter of checksum failures to `pg_stat_database`. + +Add tracking of global objects in system view `pg_stat_database`. + +Global objects are shown with a `pg_stat_database.datid` value of zero. + +Add the ability to list the contents of the archive directory. + +The function is `pg_ls_archive_statusdir()`. + +Add the ability to list the contents of temporary directories. + +The function, `pg_ls_tmpdir()`, optionally allows specification of a tablespace. + +Add information about the client certificate to the system view `pg_stat_ssl`. + +The new columns are `client_serial` and `issuer_dn`. Column `clientdn` has been renamed to `client_dn` for clarity. + +Restrict visibility of rows in `pg_stat_ssl` for unprivileged users. + +At server start, emit a log message including the server version number. + +Prevent logging "incomplete startup packet" if a new connection is immediately closed. + +This avoids log spam from certain forms of monitoring. + +Include the `application_name`, if set, in `log_connections` log messages. + +Make the walreceiver set its application name to the cluster name, if set. + +Add the timestamp of the last received standby message to `pg_stat_replication`. + +Add a wait event for `fsync` of WAL segments. + +### Authentication + +Add GSSAPI encryption support. + +This feature allows TCP/IP connections to be encrypted when using GSSAPI authentication, without having to set up a separate encryption facility such as SSL. In support of this, add hostgssenc and hostnogssenc record types in `pg_hba.conf` for selecting connections that do or do not use GSSAPI encryption, corresponding to the existing hostssl and hostnossl record types. There is also a new `gssencmode` libpq option, and a `pg_stat_gssapi` system view. + +Allow the clientcert `pg_hba.conf` option to check that the database user name matches the client certificate's common name. + +This new check is enabled with `clientcert=verify-full`. + +Allow discovery of an LDAP server using DNS SRV records. + +This avoids the requirement of specifying ldapserver. It is only supported if PostgreSQL is compiled with OpenLDAP. + +### Server Configuration + +Add ability to enable/disable cluster checksums using `pg_checksums`. + +The cluster must be shut down for these operations. + +Reduce the default value of `autovacuum_vacuum_cost_delay` to 2ms. + +This allows autovacuum operations to proceed faster by default. + +Allow `vacuum_cost_delay` to specify sub-millisecond delays, by accepting fractional values. + +Allow time-based server parameters to use units of microseconds (us). + +Allow fractional input for integer server parameters. + +For example, `SET work_mem = '30.1GB'` is now allowed, even though `work_mem` is an integer parameter. The value will be rounded to an integer after any required units conversion. + +Allow units to be defined for floating-point server parameters. + +Add `wal_recycle` and `wal_init_zero` server parameters to control WAL file recycling. + +Avoiding file recycling can be beneficial on copy-on-write file systems like ZFS. + +Add server parameter `tcp_user_timeout` to control the server's TCP timeout. + +Allow control of the minimum and maximum SSL protocol versions. + +The server parameters are `ssl_min_protocol_version` and `ssl_max_protocol_version`. + +Add server parameter `ssl_library` to report the SSL library version used by the server. + +Add server parameter `shared_memory_type` to control the type of shared memory to use. + +This allows selection of System V shared memory, if desired. + +### Streaming Replication And Recovery + +Allow some recovery parameters to be changed with reload. + +These parameters are `archive_cleanup_command`, `promote_trigger_file`, `recovery_end_command`, and `recovery_min_apply_delay`. + +Allow the streaming replication timeout `(wal_sender_timeout)` to be set per connection. + +Previously, this could only be set cluster-wide. + +Add function `pg_promote()` to promote standbys to primaries. + +Previously, this operation was only possible by using `pg_ctl` or creating a trigger file. + +Allow replication slots to be copied. + +The functions for this are `pg_copy_physical_replication_slot()` and `pg_copy_logical_replication_slot()`. + +Make `max_wal_senders` not count as part of `max_connections`. + +Add an explicit value of current for `recovery_target_timeline`. + +Make recovery fail if a two-phase transaction status file is corrupt. + +Previously, a warning was logged and recovery continued, allowing the transaction to be lost. + +### Utility Commands + +Add `REINDEX CONCURRENTLY` option to allow reindexing without locking out writes. + +This is also controlled by the reindexdb application's --concurrently option. + +Add support for generated columns. + +The content of generated columns are computed from expressions (including references to other columns in the same table) rather than being specified by `INSERT` or `UPDATE` commands. + +Add a `WHERE` clause to `COPY FROM` to control which rows are accepted. + +This provides a simple way to filter incoming data. + +Allow enumerated values to be added more flexibly. + +Previously, `ALTER TYPE ... ADD VALUE` could not be called in a transaction block, unless it was part of the same transaction that created the enumerated type. Now it can be called in a later transaction, so long as the new enumerated value is not referenced until after it is committed. + +Add commands to end a transaction and start a new one. + +The commands are `COMMIT AND CHAIN` and `ROLLBACK AND CHAIN`. + +Add `VACUUM` and `CREATE TABLE` options to prevent `VACUUM` from truncating trailing empty pages. + +These options are `vacuum_truncate` and `toast.vacuum_truncate`. Use of these options reduces `VACUUM's` locking requirements, but prevents returning disk space to the operating system. + +Allow `VACUUM` to skip index cleanup. + +This change adds a `VACUUM` command option `INDEX_CLEANUP` as well as a table storage option `vacuum_index_cleanup`. Use of this option reduces the ability to reclaim space and can lead to index bloat, but it is helpful when the main goal is to freeze old tuples. + +Add the ability to skip `VACUUM` and `ANALYZE` operations on tables that cannot be locked immediately. + +This option is called `SKIP_LOCKED`. + +Allow `VACUUM` and `ANALYZE` to take optional Boolean argument specifications. + +Prevent `TRUNCATE`, `VACUUM`, and `ANALYZE` from requesting a lock on tables for which the user lacks permission. + +This prevents unauthorized locking, which could interfere with user queries. + +Add `EXPLAIN` option `SETTINGS` to output non-default optimizer settings. + +This output can also be obtained when using `auto_explain` by setting `auto_explain.log_settings`. + +Add `OR REPLACE` option to `CREATE AGGREGATE`. + +Allow modifications of system catalogs' options using `ALTER TABLE`. + +Modifications of catalogs' reloptions and autovacuum settings are now supported. (Setting `allow_system_table_mods` is still required.) + +Use all key columns' names when selecting default constraint names for foreign keys. + +Previously, only the first column name was included in the constraint name, resulting in ambiguity for multi-column foreign keys. + +### Data Types + +Update assorted knowledge about Unicode to match Unicode 12.1.0. + +This fixes, for example, cases where psql would misformat output involving combining characters. + +Update Snowball stemmer dictionaries with support for new languages. + +This adds word stemming support for Arabic, Indonesian, Irish, Lithuanian, Nepali, and Tamil to full text search. + +Allow creation of collations that report string equality for strings that are not bitwise equal. + +This feature supports "nondeterministic" collations that can define case- and accent-agnostic equality comparisons. Thus, for example, a case-insensitive uniqueness constraint on a text column can be made more easily than before. This is only supported for ICU collations. + +Add support for ICU collation attributes on older ICU versions. + +This allows customization of the collation rules in a consistent way across all ICU versions. + +Allow data type name to more seamlessly be compared to other text types. + +Type name now behaves much like a domain over type text that has default collation "C". This allows cross-type comparisons to be processed more efficiently. + +### Functions + +Add support for the SQL/JSON path language. + +This allows execution of complex queries on JSON values using an SQL-standard language. + +Add support for hyperbolic functions. + +Also add `log10()` as an alias for `log()`, for standards compliance. + +Improve the accuracy of statistical aggregates like variance() by using more precise algorithms. + +Allow `date_trunc()` to have an additional argument to control the time zone. + +This is faster and simpler than using the `AT TIME ZONE` clause. + +Adjust `to_timestamp()`/`to_date()` functions to be more forgiving of template mismatches. + +This new behavior more closely matches the Oracle functions of the same name. + +### Fix assorted bugs in XML functions + +Specifically, in `XMLTABLE`, `xpath()`, and `xmlexists()`, fix some cases where nothing was output for a node, or an unexpected error was thrown, or necessary escaping of XML special characters was omitted. + +Allow the `BY VALUE` clause in `XMLEXISTS` and `XMLTABLE`. + +This SQL-standard clause has no effect in PostgreSQL's implementation, but it was unnecessarily being rejected. + +Prevent `current_schema()` and `current_schemas()` from being run by parallel workers, as they are not parallel-safe. + +Allow `RECORD` and `RECORD[]` to be used as column types in a query's column definition list for a table function that is declared to return `RECORD`. + +### PL/PgSQL + +Allow SQL commands and variables with the same names as those commands to be used in the same PL/pgSQL function. + +For example, allow a variable called comment to exist in a function that calls the `COMMENT SQL` command. Previously this combination caused a parse error. + +Add new optional warning and error checks to PL/pgSQL. + +The new checks allow for run-time validation of `INTO` column counts and single-row results. + +### Client Interfaces + +Add connection parameter `tcp_user_timeout` to control libpq's TCP timeout. + +Allow libpq (and thus psql) to report only the SQLSTATE value in error messages. + +Add libpq function `PQresultMemorySize()` to report the memory used by a query result. + +Remove the no-display/debug flag from libpq's options connection parameter. + +This allows this parameter to be set by `postgres_fdw`. + +Allow ecpg to create variables of data type bytea. + +This allows ECPG clients to interact with bytea data directly, rather than using an encoded form. + +Add `PREPARE AS` support to ECPG. + +### Client Applications + +Allow vacuumdb to select tables for vacuum based on their wraparound horizon. + +The options are `--min-xid-age` and `--min-mxid-age`. + +Allow vacuumdb to disable waiting for locks or skipping all-visible pages. + +The options are `--skip-locked` and `--disable-page-skipping`. + +Add colorization to the output of command-line utilities. + +This is enabled by setting the environment variable `PG_COLOR` to always or auto. The specific colors used can be adjusted by setting the environment variable `PG_COLORS`, using ANSI escape codes for colors. For example, the default behavior is equivalent to `PG_COLORS="error=01;31:warning=01;35:locus=01"`. + +### psql + +Add CSV table output mode in psql. + +This is controlled by `\pset` format csv or the command-line `--csv` option. + +Show the manual page URL in psql's `\help` output for a SQL command. + +Display the IP address in psql's `\conninfo` (Fabien Coelho). + +Improve tab completion of `CREATE TABLE`, `CREATE TRIGGER`, `CREATE EVENT TRIGGER`, `ANALYZE`, `EXPLAIN`, `VACUUM`, `ALTER TABLE`, `ALTER INDEX`, `ALTER DATABASE`, and `ALTER INDEX ALTER COLUMN`. + +### pgbench + +Allow values produced by queries to be assigned to pgbench variables. + +The command for this is `\gset`. + +Improve precision of pgbench's `--rate` option. + +Improve pgbench's error reporting with clearer messages and return codes. + +### Server Applications + +Allow control of log file rotation via `pg_ctl`. + +Previously, this was only possible via an SQL function or a process signal. + +Properly detach the new server process during `pg_ctl` start. + +This prevents the server from being shut down if the shell script that invoked `pg_ctl` is interrupted later. + +Allow `pg_upgrade` to use the file system's cloning feature, if there is one. + +The `--clone` option has the advantages of `--link`, while preventing the old cluster from being changed after the new cluster has started. + +Allow specification of the socket directory to use in `pg_upgrade`. + +This is controlled by `--socketdir`; the default is the current directory. + +Allow `pg_checksums` to disable `fsync` operations. + +This is controlled by the `--no-sync` option. + +Allow `pg_rewind` to disable `fsync` operations. + +Fix `pg_test_fsync` to report accurate `open_datasync` durations on Windows. + +### pg_dump, pg_dumpall, pg_restore + +When `pg_dump` emits data with `INSERT` commands rather than `COPY`, allow more than one data row to be included in each `INSERT`. + +The option controlling this is `--rows-per-insert`. + +Allow `pg_dump` to emit `INSERT ... ON CONFLICT DO NOTHING`. + +This avoids conflict failures during restore. The option is `--on-conflict-do-nothing`. + +Decouple the order of operations in a parallel `pg_dump` from the order used by a subsequent parallel `pg_restore`. + +This allows `pg_restore` to perform more-fully-parallelized parallel restores, especially in cases where the original dump was not done in parallel. Scheduling of a parallel `pg_dump` is also somewhat improved. + +Allow the `extra_float_digits` setting to be specified for `pg_dump` and `pg_dumpall`. + +This is primarily useful for making dumps that are exactly comparable across different source server versions. It is not recommended for normal use, as it may result in loss of precision when the dump is restored. + +Add `--exclude-database` option to `pg_dumpall`. + +### Source Code + +Add `CREATE ACCESS METHOD` command to create new table types. + +This enables the development of new table access methods, which can optimize storage for different use cases. The existing heap access method remains the default. + +Add planner support function interfaces to improve optimizer estimates, inlining, and indexing for functions. + +This allows extensions to create planner support functions that can provide function-specific selectivity, cost, and row-count estimates that can depend on the function's arguments. Support functions can also supply simplified representations and index conditions, greatly expanding optimization possibilities. + +Simplify renumbering manually-assigned `OIDs`, and establish a new project policy for management of such `OIDs`. + +Patches that manually assign `OIDs` for new built-in objects (such as new functions) should now randomly choose `OIDs` in the range 8000—9999. At the end of a development cycle, the OIDs used by committed patches will be renumbered down to lower numbers, currently somewhere in the 4xxx range, using the new `renumber_oids.pl` script. This approach should greatly reduce the odds of `OID` collisions between different in-process patches. + +While there is no specific policy reserving any `OIDs` for external use, it is recommended that forks and other projects needing private manually-assigned `OIDs` use numbers in the high 7xxx range. This will avoid conflicts with recently-merged patches, and it should be a long time before the core project reaches that range. + +Build Cygwin binaries using dynamic instead of static libraries. + +Remove configure switch `--disable-strong-random`. + +A strong random-number source is now required. + +printf-family functions, as well as `strerror` and `strerror_r`, now behave uniformly across platforms within Postgres code. + +Notably, `printf` understands `%m` everywhere; on Windows, `strerror` copes with Winsock error codes (it used to do so in backend but not frontend code); and `strerror_r` always follows the GNU return convention. + +Require a C99-compliant compiler, and MSVC 2013 or later on Windows. + +Use pandoc, not lynx, for generating plain-text documentation output files. + +This affects only the `INSTALL file` generated during make dist and the seldom-used plain-text `postgres.txt` output file. Pandoc produces better output than lynx and avoids some locale/encoding issues. Pandoc version 1.13 or later is required. + +Support use of images in the PostgreSQL documentation. + +### Additional Modules + +Allow `ORDER BY` sorts and `LIMIT` clauses to be pushed to `postgres_fdw` foreign servers in more cases. + +Improve optimizer cost accounting for `postgres_fdw` queries. + +Properly honor `WITH CHECK OPTION` on views that reference `postgres_fdw` tables. -EDB Postgres Advanced Server 13 integrates all of the community PostgreSQL 13 features. To review a complete list of changes to the community PostgreSQL project and the contributors names, see the PostgreSQL 13 Release Notes at: +While `CHECK OPTIONs` on `postgres_fdw` tables are ignored (because the reference is foreign), views on such tables are considered local, so this change enforces `CHECK OPTIONs` on them. - ### How to Report Problems -If you experience any problems installing the new software please contact Technical Support at: +To report any issues you are having please contact EnterpriseDB’s technical support staff: - Email: [support@enterprisedb.com](mailto:support@enterprisedb.com) - Phone: US: +1-732-331-1320 or 1-800-235-5891 - UK: +44-2033719820 - Brazil: +55-2139581371 - India: +91-20-66449612 + + \ No newline at end of file diff --git a/product_docs/docs/epas/12/language_pack/01_supported_database_server_versions.mdx b/product_docs/docs/epas/12/language_pack/01_supported_database_server_versions.mdx index ca058e9b8a3..2621a7454e5 100644 --- a/product_docs/docs/epas/12/language_pack/01_supported_database_server_versions.mdx +++ b/product_docs/docs/epas/12/language_pack/01_supported_database_server_versions.mdx @@ -16,9 +16,9 @@ Language Pack installers are version and platform specific. Select the Language | ----------------- | ----------------------------------------------------- | ----------------------| ------------------------------------ | | Linux (64-bit) | EDB Postgres Advanced Server `9.6`,`10` | 1.0 | Perl `5.26`, Python `3.7`, Tcl `8.6` | | Linux (32-bit/64-bit)| PostgreSQL `9.6`, `10` | 1.0 | Perl `5.26`, Python `3.7`, Tcl `8.6` | -| MacOS | PostgreSQL `9.6`,`10`,`11`,`12`,`13` | 1.0 | Perl `5.26`, Python `3.7`, Tcl `8.6` | +| MacOS | PostgreSQL `9.6`,`10`,`11`,`12` | 1.0 | Perl `5.26`, Python `3.7`, Tcl `8.6` | | Windows (32-bit) | PostgreSQL `9.6`,`10` | 1.0 | Perl `5.26`, Python `3.7`, Tcl `8.6` | -| Windows (64-bit) | PostgreSQL `9.6`,`10`,`11`,`12`,`13` | 1.0 | Perl `5.26`, Python `3.7`, Tcl `8.8` | -| Windows (64-bit) | EDB Postgres Advanced Server `9.6`,`10`,`11`,`12`,`13`| 1.0 | Perl `5.26`, Python `3.7`, Tcl `8.6` | +| Windows (64-bit) | PostgreSQL `9.6`,`10`,`11`,`12` | 1.0 | Perl `5.26`, Python `3.7`, Tcl `8.8` | +| Windows (64-bit) | EDB Postgres Advanced Server `9.6`,`10`,`11`,`12` | 1.0 | Perl `5.26`, Python `3.7`, Tcl `8.6` | For detailed information, please see the EDB Postgres Advanced Server Installation Guide for Linux, available at the [EDB website](/epas/latest/). diff --git a/product_docs/docs/epas/12/language_pack/02_installing_language_pack.mdx b/product_docs/docs/epas/12/language_pack/02_installing_language_pack.mdx index debb3deeb88..cdceb2f03f1 100644 --- a/product_docs/docs/epas/12/language_pack/02_installing_language_pack.mdx +++ b/product_docs/docs/epas/12/language_pack/02_installing_language_pack.mdx @@ -28,7 +28,7 @@ Fig. 1: The Language Selection Window The Language Pack setup wizard welcome window opens. -![The Language Pack Welcome Window](images/language_pack_welcome.png) +![The Language Pack Welcome Window](images/Welcome.png) Fig. 2: The Language Pack Welcome Window @@ -40,7 +40,7 @@ The Ready to Install window displays the Language Pack installation directory: On OSX: `/Library/edb/languagepack/v1` -![The Ready to Install dialog](images/lp.2_aug6.png) +![The Ready to Install dialog](images/ready_to_install_1.png) Fig. 3: The Ready to Install dialog @@ -48,7 +48,7 @@ You cannot modify the installation directory. Click `Next` to continue. A progress bar marks installation progress. -![The Installing dialog](images/lp3_aug6.png) +![The Installing dialog](images/the_installing_dialog1.png) Fig. 4: The Installing dialog @@ -56,7 +56,7 @@ Click `Next` to continue. The installer will inform you that the Language Pack installation has completed; click `Finish` to exit the installer. -![The Language Pack Setup Complete dialog](images/complete1.png) +![The Language Pack Setup Complete dialog](images/completed.png) Fig. 5: The Language Pack Setup Complete dialog @@ -70,32 +70,20 @@ The Stack Builder utility provides a graphical interface that simplifies the pro Stack Builder requires Internet access; if your installation of PostgreSQL resides behind a firewall (with restricted Internet access), Stack Builder can download program installers through a proxy server. The module provider deter-mines if the module can be accessed through an HTTP proxy or an FTP proxy; currently, all updates are transferred via an HTTP proxy and the FTP proxy information is not used. -You can invoke Stack Builder at any time after the installation has completed by selecting the `Application Stack Builder` menu option from the `PostgreSQL 13` menu. +You can invoke Stack Builder at any time after the installation has completed by selecting the `Application Stack Builder` menu option from the `PostgreSQL 12` menu. Select your server from the drop-down menu on the Stack Builder Welcome window and click `Next` to continue. -![The Stack Builder Welcome Window](images/stackbuilder_welcome.png) +![The Stack Builder Welcome Window](images/stackbuilder.png) Fig. 6: The Stack Builder Welcome Window -Expand the `Add-ons, tools and utilities` node of the `Categories` tree control, and check the box next to `EDB Language Pack v1.0-5`. Click `Next` to continue. - -![The Language Pack Selection Window](images/language_pack_versions_selection.png) - -Fig. 7: The Language Pack Selection Window +Expand the `Add-ons, tools and utilities` node of the `Categories` tree control, and check the box next to EDB Language Pack version. Click `Next` to continue. Stack Builder will confirm your package selection before downloading the installer. Click `Next` to continue. - ![The Selected Packages Window](images/language_pack_selected_pacakges.png) - -Fig. 8: The Selected Packages Window - When the download completes, Stack Builder will offer to invoke the installer for you, or will delay the installation until a more convenient time. To invoke the installer, click `Next` and follow the steps provided in the [Invoking the Graphical Installer section](#invoking-the-graphical-installer). -![The Selected Packages Window](images/stackbuilder_installation_complete.png) - -Fig. 9: The Selected Packages Window - ## Configuring Language Pack This section walks you through configuring Language Pack on an Advanced Server and PostgreSQL hosts. diff --git a/product_docs/docs/epas/12/language_pack/images/Ready_to_install.png b/product_docs/docs/epas/12/language_pack/images/Ready_to_install.png new file mode 100755 index 00000000000..7a037d8b420 Binary files /dev/null and b/product_docs/docs/epas/12/language_pack/images/Ready_to_install.png differ diff --git a/product_docs/docs/epas/12/language_pack/images/Welcome.png b/product_docs/docs/epas/12/language_pack/images/Welcome.png new file mode 100755 index 00000000000..d95ac19e282 Binary files /dev/null and b/product_docs/docs/epas/12/language_pack/images/Welcome.png differ diff --git a/product_docs/docs/epas/12/language_pack/images/completed.png b/product_docs/docs/epas/12/language_pack/images/completed.png new file mode 100755 index 00000000000..4bca943132f Binary files /dev/null and b/product_docs/docs/epas/12/language_pack/images/completed.png differ diff --git a/product_docs/docs/epas/12/language_pack/images/ready_to_install_1.png b/product_docs/docs/epas/12/language_pack/images/ready_to_install_1.png new file mode 100644 index 00000000000..dfd0b3fa42f Binary files /dev/null and b/product_docs/docs/epas/12/language_pack/images/ready_to_install_1.png differ diff --git a/product_docs/docs/epas/12/language_pack/images/stackbuilder.png b/product_docs/docs/epas/12/language_pack/images/stackbuilder.png new file mode 100755 index 00000000000..4dd14296753 Binary files /dev/null and b/product_docs/docs/epas/12/language_pack/images/stackbuilder.png differ diff --git a/product_docs/docs/epas/12/language_pack/images/the_installing_dialog.png b/product_docs/docs/epas/12/language_pack/images/the_installing_dialog.png index 5b320cff68b..f3a0dfc1c10 100755 Binary files a/product_docs/docs/epas/12/language_pack/images/the_installing_dialog.png and b/product_docs/docs/epas/12/language_pack/images/the_installing_dialog.png differ diff --git a/product_docs/docs/epas/12/language_pack/images/the_installing_dialog1.png b/product_docs/docs/epas/12/language_pack/images/the_installing_dialog1.png new file mode 100755 index 00000000000..0ad60fef61b Binary files /dev/null and b/product_docs/docs/epas/12/language_pack/images/the_installing_dialog1.png differ diff --git a/product_docs/docs/epas/13/ecpgplus_guide/02_overview.mdx b/product_docs/docs/epas/13/ecpgplus_guide/02_overview.mdx index 06f0d675567..c8684b32dd4 100644 --- a/product_docs/docs/epas/13/ecpgplus_guide/02_overview.mdx +++ b/product_docs/docs/epas/13/ecpgplus_guide/02_overview.mdx @@ -232,21 +232,21 @@ To display a complete list of the other ECPGPlus options available, navigate to The command line options are: -| **Option** | **Description** | -| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| -c | Automatically generate C code from embedded SQL code. | -| -C *mode* | Use the `-C` option to specify a compatibility mode:

`INFORMIX`

`INFORMIX_SE`

`PROC` | -| -D *symbol* | Define a preprocessor *symbol*.

The *-D* keyword is not supported when compiling in *PROC mode.* Instead, use the Oracle-style *‘DEFINE=’* clause. | -| -h | Parse a header file, this option includes option `-c`. | -| -i | Parse system, include files as well. | -| -I directory | Search *directory* for `include` files. | -| -o *outfile* | Write the result to *outfile*. | -| -r *option* | Specify run-time behavior; *option* can be:

`no_indicator` - Do not use indicators, but instead use special values to represent NULL values.

`prepare` - Prepare all statements before using them.

`questionmarks` - Allow use of a question mark as a placeholder.

`usebulk` - Enable bulk processing for INSERT, UPDATE and DELETE statements that operate on host variable arrays. | -| --regression | Run in regression testing mode. | -| -t | Turn on `autocommit` of transactions. | -| -l | Disable `#line` directives. | -| --help | Display the help options. | -| --version | Output version information. | +| **Option** | **Description** | +| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| -c | Automatically generate C code from embedded SQL code. | +| -C *mode* | Use the `-C` option to specify a compatibility mode:

`INFORMIX`

`INFORMIX_SE`

`PROC` | +| -D *symbol* | Define a preprocessor *symbol*.

The *-D* keyword is not supported when compiling in *PROC mode.* Instead, use the Oracle-style *‘DEFINE=’* clause. | +| -h | Parse a header file, this option includes option `'-c'`. | +| -i | Parse system, include files as well. | +| -I directory | Search *directory* for `include` files. | +| -o *outfile* | Write the result to *outfile*. | +| -r *option* | Specify run-time behavior; *option* can be:

`no_indicator` - Do not use indicators, but instead use special values to represent NULL values.

`prepare` - Prepare all statements before using them.

`questionmarks` - Allow use of a question mark as a placeholder.

`usebulk` - Enable bulk processing for `INSERT`, `UPDATE` and `DELETE` statements that operate on host variable arrays. | +| --regression | Run in regression testing mode. | +| -t | Turn on `autocommit` of transactions. | +| -l | Disable `#line` directives. | +| --help | Display the help options. | +| --version | Output version information. | !!! Note If you do not specify an output file name when invoking ECPGPlus, the output file name is created by stripping off the `.pgc` filename extension, and appending `.c` to the file name. diff --git a/product_docs/docs/epas/13/ecpgplus_guide/04_using_descriptors.mdx b/product_docs/docs/epas/13/ecpgplus_guide/04_using_descriptors.mdx index b6a1d8a78dd..74d7135626d 100644 --- a/product_docs/docs/epas/13/ecpgplus_guide/04_using_descriptors.mdx +++ b/product_docs/docs/epas/13/ecpgplus_guide/04_using_descriptors.mdx @@ -82,74 +82,74 @@ char *md3 = "--- -------------------- ----------------- ---"; int main( int argc, char *argv[] ) { -EXEC SQL BEGIN DECLARE SECTION; -char *db = argv[1]; -char *stmt = argv[2]; -int col_count; -EXEC SQL END DECLARE SECTION; + EXEC SQL BEGIN DECLARE SECTION; + char *db = argv[1]; + char *stmt = argv[2]; + int col_count; + EXEC SQL END DECLARE SECTION; -EXEC SQL CONNECT TO :db; + EXEC SQL CONNECT TO :db; -EXEC SQL ALLOCATE DESCRIPTOR parse_desc; -EXEC SQL PREPARE query FROM :stmt; -EXEC SQL DESCRIBE query INTO SQL DESCRIPTOR parse_desc; -EXEC SQL GET DESCRIPTOR 'parse_desc' :col_count = COUNT; + EXEC SQL ALLOCATE DESCRIPTOR parse_desc; + EXEC SQL PREPARE query FROM :stmt; + EXEC SQL DESCRIBE query INTO SQL DESCRIPTOR parse_desc; + EXEC SQL GET DESCRIPTOR 'parse_desc' :col_count = COUNT; if( col_count == 0 ) { - EXEC SQL EXECUTE IMMEDIATE :stmt; + EXEC SQL EXECUTE IMMEDIATE :stmt; - if( sqlca.sqlcode >= 0 ) - EXEC SQL COMMIT; + if( sqlca.sqlcode >= 0 ) + EXEC SQL COMMIT; } else { - int row; - - EXEC SQL ALLOCATE DESCRIPTOR row_desc; - EXEC SQL DECLARE my_cursor CURSOR FOR query; - EXEC SQL OPEN my_cursor; - - for( row = 0; ; row++ ) - { - EXEC SQL BEGIN DECLARE SECTION; - int col; - EXEC SQL END DECLARE SECTION; - EXEC SQL FETCH IN my_cursor - INTO SQL DESCRIPTOR row_desc; - - if( sqlca.sqlcode != 0 ) - break; - - if( row == 0 ) - print_meta_data( "row_desc" ); - - printf("[RECORD %d]\n", row+1); - - for( col = 1; col <= col_count; col++ ) - { - EXEC SQL BEGIN DECLARE SECTION; - short ind; - varchar val[40+1]; - varchar name[20+1]; - EXEC SQL END DECLARE SECTION; - - EXEC SQL GET DESCRIPTOR 'row_desc' - VALUE :col - :val = DATA, :ind = INDICATOR, :name = NAME; - - if( ind == -1 ) - printf( " %-20s : \n", name.arr ); - else if( ind > 0 ) - printf( " %-20s : \n", name.arr ); - else - printf( " %-20s : %s\n", name.arr, val.arr ); - } - - printf( "\n" ); - - } - printf( "%d rows\n", row ); + int row; + + EXEC SQL ALLOCATE DESCRIPTOR row_desc; + EXEC SQL DECLARE my_cursor CURSOR FOR query; + EXEC SQL OPEN my_cursor; + + for( row = 0; ; row++ ) + { + EXEC SQL BEGIN DECLARE SECTION; + int col; + EXEC SQL END DECLARE SECTION; + EXEC SQL FETCH IN my_cursor + INTO SQL DESCRIPTOR row_desc; + + if( sqlca.sqlcode != 0 ) + break; + + if( row == 0 ) + print_meta_data( "row_desc" ); + + printf("[RECORD %d]\n", row+1); + + for( col = 1; col <= col_count; col++ ) + { + EXEC SQL BEGIN DECLARE SECTION; + short ind; + varchar val[40+1]; + varchar name[20+1]; + EXEC SQL END DECLARE SECTION; + + EXEC SQL GET DESCRIPTOR 'row_desc' + VALUE :col + :val = DATA, :ind = INDICATOR, :name = NAME; + + if( ind == -1 ) + printf( " %-20s : \n", name.arr ); + else if( ind > 0 ) + printf( " %-20s : \n", name.arr ); + else + printf( " %-20s : %s\n", name.arr, val.arr ); + } + + printf( "\n" ); + + } + printf( "%d rows\n", row ); } exit( 0 ); @@ -157,32 +157,32 @@ exit( 0 ); static void print_meta_data( char *desc_name ) { -EXEC SQL BEGIN DECLARE SECTION; -char *desc = desc_name; -int col_count; -int col; -EXEC SQL END DECLARE SECTION; + EXEC SQL BEGIN DECLARE SECTION; + char *desc = desc_name; + int col_count; + int col; + EXEC SQL END DECLARE SECTION; static char *types[] = { -"unused ", -"CHARACTER ", -"NUMERIC ", -"DECIMAL ", -"INTEGER ", -"SMALLINT ", -"FLOAT ", -"REAL ", -"DOUBLE ", -"DATE_TIME ", -"INTERVAL ", -"unused ", -"CHARACTER_VARYING", -"ENUMERATED ", -"BIT ", -"BIT_VARYING ", -"BOOLEAN ", -"abstract " + "unused ", + "CHARACTER ", + "NUMERIC ", + "DECIMAL ", + "INTEGER ", + "SMALLINT ", + "FLOAT ", + "REAL ", + "DOUBLE ", + "DATE_TIME ", + "INTERVAL ", + "unused ", + "CHARACTER_VARYING", + "ENUMERATED ", + "BIT ", + "BIT_VARYING ", + "BOOLEAN ", + "abstract " }; EXEC SQL GET DESCRIPTOR :desc :col_count = count; @@ -195,26 +195,26 @@ printf( "%s\n", md3 ); for( col = 1; col <= col_count; col++ ) { -EXEC SQL BEGIN DECLARE SECTION; - int type; - int ret_len; - varchar name[21]; -EXEC SQL END DECLARE SECTION; -char *type_name; + EXEC SQL BEGIN DECLARE SECTION; + int type; + int ret_len; + varchar name[21]; + EXEC SQL END DECLARE SECTION; + char *type_name; -EXEC SQL GET DESCRIPTOR :desc - VALUE :col - :name = NAME, - :type = TYPE, - :ret_len = RETURNED_OCTET_LENGTH; + EXEC SQL GET DESCRIPTOR :desc + VALUE :col + :name = NAME, + :type = TYPE, + :ret_len = RETURNED_OCTET_LENGTH; -if( type > 0 && type < SQL3_abstract ) - type_name = types[type]; -else - type_name = "unknown"; + if( type > 0 && type < SQL3_abstract ) + type_name = types[type]; + else + type_name = "unknown"; -printf( "%02d: %-20s %-17s %04d\n", - col, name.arr, type_name, ret_len ); + printf( "%02d: %-20s %-17s %04d\n", + col, name.arr, type_name, ret_len ); } printf( "\n" ); } @@ -405,8 +405,8 @@ printf( "\n" ); When the loop terminates, the application prints the number of rows fetched, and exits: ```text -printf( "%d rows\n", row ); -} + printf( "%d rows\n", row ); + } exit( 0 ); } @@ -504,10 +504,10 @@ else and prints the column number, name, type name, and length: ```text -printf( "%02d: %-20s %-17s %04d\n", - col, name.arr, type_name, ret_len ); -} -printf( "\n" ); + printf( "%02d: %-20s %-17s %04d\n", + col, name.arr, type_name, ret_len ); + } + printf( "\n" ); } ``` diff --git a/product_docs/docs/epas/13/ecpgplus_guide/05_building_executing_dynamic_sql_statements.mdx b/product_docs/docs/epas/13/ecpgplus_guide/05_building_executing_dynamic_sql_statements.mdx index 431a6565960..caf7707262c 100644 --- a/product_docs/docs/epas/13/ecpgplus_guide/05_building_executing_dynamic_sql_statements.mdx +++ b/product_docs/docs/epas/13/ecpgplus_guide/05_building_executing_dynamic_sql_statements.mdx @@ -98,11 +98,11 @@ EXEC SQL EXECUTE IMMEDIATE :insertStmt; If the `EXECUTE IMMEDIATE` command fails for any reason, ECPGPlus will invoke the `handle_error()` function (which terminates the application after displaying an error message to the user). If the `EXECUTE IMMEDIATE` command succeeds, the application displays a message `(ok)` to the user, commits the changes, disconnects from the server, and terminates the application. ```text -fprintf(stderr, "ok\n"); + fprintf(stderr, "ok\n"); -EXEC SQL COMMIT RELEASE; + EXEC SQL COMMIT RELEASE; -exit(EXIT_SUCCESS); + exit(EXIT_SUCCESS); } ``` @@ -213,11 +213,11 @@ EXEC SQL EXECUTE stmtHandle USING :argv[2], :argv[3], :argv[4]; If the `EXECUTE` command fails for any reason, ECPGPlus will invoke the `handle_error()` function (which terminates the application after displaying an error message to the user). If the `EXECUTE` command succeeds, the application displays a message `(ok)` to the user, commits the changes, disconnects from the server, and terminates the application. ```text -fprintf(stderr, "ok\n"); + fprintf(stderr, "ok\n"); -EXEC SQL COMMIT RELEASE; + EXEC SQL COMMIT RELEASE; -exit(EXIT_SUCCESS); + exit(EXIT_SUCCESS); } ``` @@ -346,20 +346,20 @@ while(true) The program iterates through the cursor, and prints the employee number and name of each employee in the selected department: ```text -EXEC SQL FETCH empCursor INTO :empno, :ename; + EXEC SQL FETCH empCursor INTO :empno, :ename; -printf("%-10s %s\n", empno.arr, ename.arr); + printf("%-10s %s\n", empno.arr, ename.arr); } ``` The program then closes the cursor, commits any changes, disconnects from the server, and terminates the application. ```text -EXEC SQL CLOSE empCursor; + EXEC SQL CLOSE empCursor; -EXEC SQL COMMIT RELEASE; + EXEC SQL COMMIT RELEASE; -exit(EXIT_SUCCESS); + exit(EXIT_SUCCESS); } ``` @@ -611,9 +611,9 @@ bindParams(); Finally, the program opens the cursor (using the parameter values supplied by the user, if any) and calls the `displayResultSet()` function to print the result set produced by the query. ```text -EXEC SQL OPEN dynCursor USING DESCRIPTOR params; + EXEC SQL OPEN dynCursor USING DESCRIPTOR params; -displayResultSet(); + displayResultSet(); } ``` @@ -655,11 +655,11 @@ for (i = 0; i < params->F; i++) After prompting the user for a value for a given parameter, the program *binds* that value to the parameter by setting `params->T[i]` to indicate the data type of the value (see `Type Codes` for a list of type codes), `params->L[i]` to the length of the value (we subtract one to trim off the trailing new-line character added by `fgets()`), and `params->V[i]` to point to a copy of the NULL-terminated string provided by the user. ```text -params->T[i] = 1; /* Data type = Character (1) */ -params->L[i] = strlen(paramValue) + 1; -params->V[i] = strdup(paramValue); -} -} + params->T[i] = 1; /* Data type = Character (1) */ + params->L[i] = strlen(paramValue) + 1; + params->V[i] = strdup(paramValue); + } + } } ``` @@ -696,8 +696,8 @@ for (col = 0; col < results->F; col++) To decode the type code found in `results->T`, the program invokes the `sqlnul()` function (see the description of the `T` member of the SQLDA structure in the [The SQLDA Structure](07_reference/#sqlda_structure)). This call to `sqlnul()` modifies `results->T[col]` to contain only the type code (the nullability flag is copied to `null_permitted`). This step is necessary because the `DESCRIBE SELECT LIST` statement encodes the type of each column and the nullability of each column into the `T` array. ```text -sqlnul(&results->T[col - &results->T[col +sqlnul(&results->T[col], + &results->T[col], &null_permitted); ``` @@ -734,20 +734,20 @@ case 12: /* DATE */ For a value of any type other than date or numeric, `displayResultSet()` starts with the maximum column width reported by `DESCRIBE SELECT LIST` and adds one extra byte for the NULL terminator. Again, in a real-world application you may want to include more careful calculations for other data types. ```text -default: /* Others */ -{ - length = results->L[col] + 1; - break; -} + default: /* Others */ + { + length = results->L[col] + 1; + break; + } } ``` After computing the amount of space required to hold a given column, the program allocates enough memory to hold the value, sets `results->L[col]` to indicate the number of bytes found at `results->V[col]`, and set the type code for the column `(results->T[col])` to `1` to instruct the upcoming `FETCH` statement to return the value in the form of a NULL-terminated string. ```text -results->V[col] = malloc(length); -results->L[col] = length; -results->T[col] = 1; + results->V[col] = malloc(length); + results->L[col] = length; + results->T[col] = 1; } ``` @@ -776,18 +776,18 @@ The `FETCH` statement will populate the following members of the results descrip Finally, `displayResultSet()` iterates through each column in the result set, examines the corresponding NULL indicator, and prints the value. The result set is not aligned - instead, each value is separated from the previous value by a comma. ```text -for (col = 0; col < results->F; col++) -{ - if (*results->I[col] == -1) - printf("%s%s", delimiter, ""); - else - printf("%s%s", delimiter, results->V[col]); - delimiter = ", "; -} + for (col = 0; col < results->F; col++) + { + if (*results->I[col] == -1) + printf("%s%s", delimiter, ""); + else + printf("%s%s", delimiter, results->V[col]); + delimiter = ", "; + } -printf("\n"); -} -} + printf("\n"); + } + } } /***********************************************************/ ``` diff --git a/product_docs/docs/epas/13/ecpgplus_guide/07_reference.mdx b/product_docs/docs/epas/13/ecpgplus_guide/07_reference.mdx index fd3546320b0..5245a009a38 100644 --- a/product_docs/docs/epas/13/ecpgplus_guide/07_reference.mdx +++ b/product_docs/docs/epas/13/ecpgplus_guide/07_reference.mdx @@ -248,7 +248,7 @@ struct SQLDA - For a `SELECT`-list descriptor, `V` points to an array of values returned by a `FETCH` statement (each member in the array corresponds to a column in the result set). - For a bind descriptor, `V` points to an array of parameter values (you must populate the values in this array before opening a cursor that uses the descriptor). -Your application must allocate the space required to hold each value. Refer to [displayResultSet](05_building_executing_dynamic_sql_statements/#executing_query_with_unknown_number_of_variables) function for an example of how to allocate space for `SELECT`-list values. +Your application must allocate the space required to hold each value. Refer to [displayResultSet ()](05_building_executing_dynamic_sql_statements/#executing_query_with_unknown_number_of_variables) function for an example of how to allocate space for `SELECT`-list values. `L - length of each data value` @@ -661,7 +661,7 @@ Use the `DELETE` statement to delete one or more rows from a table. The syntax f [FOR ] DELETE FROM [ONLY]
[[AS] ] [USING ] [WHERE | WHERE CURRENT OF ] - [{RETURNING|RETURN} * | [[ AS] ] + [{RETURNING|RETURN} * | [[AS] ] [, ...] INTO ] ``` @@ -704,8 +704,7 @@ Use the `DESCRIBE` statement to find the number of input values required by a pr The `DESCRIBE` statement populates an `SQLDA` descriptor; to populate a SQL descriptor, use the `ALLOCATE DESCRIPTOR` and `DESCRIBE...DESCRIPTOR` statements. ```text -EXEC SQL DESCRIBE BIND VARIABLES FOR INTO -; +EXEC SQL DESCRIBE BIND VARIABLES FOR INTO ; ``` or @@ -1010,8 +1009,8 @@ for( row = 0; ; row++ ) { EXEC SQL BEGIN DECLARE SECTION; int col; -EXEC SQL END DECLARE SECTION; -EXEC SQL FETCH my_cursor INTO SQL DESCRIPTOR 'row_desc'; + EXEC SQL END DECLARE SECTION; + EXEC SQL FETCH my_cursor INTO SQL DESCRIPTOR 'row_desc'; ``` ### GET DESCRIPTOR @@ -1132,7 +1131,7 @@ or Where: -`array_*size` is an integer value or a host variable that contains an integer value specifying the number of rows to fetch. If you omit the `FOR` clause, the statement is executed once for each member of the array. +`array_size` is an integer value or a host variable that contains an integer value specifying the number of rows to fetch. If you omit the `FOR` clause, the statement is executed once for each member of the array. `cursor` is the name of the cursor being opened. @@ -1143,13 +1142,13 @@ The `OPEN` statement initializes a cursor using the values provided in `paramete The following example declares a cursor named `employees`, that queries the `emp` table, returning the `employee number`, `name`, `salary` and `commission` of an employee whose name matches a user-supplied value (stored in the host variable, `:emp_name`). ```text -EXEC SQL DECLARE employees CURSOR FOR - SELECT - empno, ename, sal, comm  - FROM  - emp - WHERE ename = :emp_name; -EXEC SQL OPEN employees; + EXEC SQL DECLARE employees CURSOR FOR + SELECT + empno, ename, sal, comm  + FROM  + emp + WHERE ename = :emp_name; + EXEC SQL OPEN employees; ... ``` @@ -1289,6 +1288,7 @@ SELECT [ ] [ ALL | DISTINCT [ ON( , ...) ]] select_list INTO + [ FROM from_item [, from_item ]...] [ WHERE condition ] [ hierarchical_query_clause ] diff --git a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/01_dbms_alert.mdx b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/01_dbms_alert.mdx index 99811af28c7..1d73943f0f8 100644 --- a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/01_dbms_alert.mdx +++ b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/01_dbms_alert.mdx @@ -250,7 +250,6 @@ DECLARE v_timeout NUMBER(3) := 120; BEGIN DBMS_ALERT.REGISTER(v_name); - DBMS_OUTPUT.PUT_ DBMS_ALERT.REGISTER(v_name); DBMS_OUTPUT.PUT_LINE('Registered for alert ' || v_name); DBMS_OUTPUT.PUT_LINE('Waiting for signal...'); DBMS_ALERT.WAITONE(v_name,v_msg,v_status,v_timeout); @@ -258,13 +257,6 @@ BEGIN DBMS_OUTPUT.PUT_LINE('Alert msg : ' || v_msg); DBMS_OUTPUT.PUT_LINE('Alert status : ' || v_status); DBMS_OUTPUT.PUT_LINE('Alert timeout: ' || v_timeout || ' seconds'); - DBMS_ALERT.REMOVE(v_name);LINE('Registered for alert ' || v_name); - DBMS_OUTPUT.PUT_LINE('Waiting for signal...'); - DBMS_ALERT.WAITONE(v_name,v_msg,v_status,v_timeout); - DBMS_OUTPUT.PUT_LINE('Alert name : ' || v_name); - DBMS_OUTPUT.PUT_LINE('Alert msg : ' || v_msg); - DBMS_OUTPUT.PUT_LINE('Alert status : ' || v_status); - DBMS_OUTPUT.PUT_LINE('Alert timeout: ' || v_timeout || ' seconds'); DBMS_ALERT.REMOVE(v_name); END; diff --git a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/01_enqueue.mdx b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/01_enqueue.mdx index 4a65e21acf7..7487f87c635 100644 --- a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/01_enqueue.mdx +++ b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/01_enqueue.mdx @@ -27,7 +27,7 @@ ENQUEUE( `enqueue_options` -`enqueue_options` is a value of the type, `enqueue_options_t`: + `enqueue_options` is a value of the type, `enqueue_options_t`: ```text DBMS_AQ.ENQUEUE_OPTIONS_T IS RECORD( @@ -38,6 +38,8 @@ DBMS_AQ.ENQUEUE_OPTIONS_T IS RECORD( delivery_mode PLS_INTEGER NOT NULL DEFAULT PERSISTENT); ``` +Currently, the only supported parameter values for `enqueue_options_t` are: + | `visibility` | `ON_COMMIT`. | | -------------------- | ------------ | | `delivery_mode` | `PERSISTENT` | diff --git a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/02_dequeue.mdx b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/02_dequeue.mdx index 44235345508..4a45c6c09e5 100644 --- a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/02_dequeue.mdx +++ b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/02_dequeue.mdx @@ -52,7 +52,7 @@ Currently, the supported parameter values for `dequeue_options_t` are: | `wait` | Must be a number larger than 0, or:

`DBMS_AQ.FOREVER` – Wait indefinitely.

`DBMS_AQ.NO_WAIT` – Do not wait. | | `msgid` | The message ID of the message that will be dequeued. | | `correlation` | Accepted for compatibility, and ignored. | -| `deq_condition` | A `VARCHAR2` expression that evaluates to a `BOOLEAN` value indicating if the message should be dequeued | +| `deq_condition` | A `VARCHAR2` expression that evaluates to a `BOOLEAN` value indicating if the message should be dequeued. | | `transformation` | Accepted for compatibility, and ignored. | | `delivery_mode` | Must be `PERSISTENT`; buffered messages are not supported at this time. | diff --git a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/03_register.mdx b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/03_register.mdx index a4daf8ed9f2..32fd7b9734c 100644 --- a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/03_register.mdx +++ b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/03_register.mdx @@ -22,12 +22,12 @@ REGISTER( -| Attribute | Type | Description | -| ----------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `name` | VARCHAR2 (128) | The (optionally schema-qualified) name of the subscription. | -| `namespace` | NUMERIC | The only supported value is `DBMS_AQ.NAMESPACE_AQ (0)` | -| `callback` | VARCHAR2 (4000) | Describes the action that will be performed upon notification. Currently, only calls to PL/SQL procedures are supported. The call should take the form:

`plsql://schema.procedure`<>

Where:

schema specifies the schema in which the procedure resides.

procedure specifies the name of the procedure that will be notified. | -| `context` | RAW (16) | Any user-defined value required by the procedure. | +| Attribute | Type | Description | +| ----------- | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | VARCHAR2 (128) | The (optionally schema-qualified) name of the subscription. | +| `namespace` | NUMERIC | The only supported value is `DBMS_AQ.NAMESPACE_AQ (0)` | +| `callback` | VARCHAR2 (4000) | Describes the action that will be performed upon notification. Currently, only calls to PL/SQL procedures are supported. The call should take the form:

`plsql://schema.procedure`

Where:

schema specifies the schema in which the procedure resides.

procedure specifies the name of the procedure that will be notified. | +| `context` | RAW (16) | Any user-defined value required by the procedure. | `count` @@ -55,7 +55,6 @@ BEGIN subscription2, subscription3); dbms_aq.register(subscriptionlist, 3); commit; - END; / ``` diff --git a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/04_unregister.mdx b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/04_unregister.mdx index 709cb2b27f8..762b412c003 100644 --- a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/04_unregister.mdx +++ b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/04_unregister.mdx @@ -24,12 +24,12 @@ UNREGISTER( -| Attribute | Type | Description | -| ----------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `name` | VARCHAR2 (128) | The (optionally schema-qualified) name of the subscription. | -| `namespace` | NUMERIC | The only supported value is `DBMS_AQ.NAMESPACE_AQ (0)` | -| `callback` | VARCHAR2 (4000) | Describes the action that will be performed upon notification. Currently, only calls to PL/SQL procedures are supported. The call should take the form:

`plsql://schema.procedure`<>

Where:

schema specifies the schema in which the procedure resides.

procedure specifies the name of the procedure that will be notified. | -| `context` | RAW (16) | Any user-defined value required by the procedure. | +| Attribute | Type | Description | +| ----------- | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | VARCHAR2 (128) | The (optionally schema-qualified) name of the subscription. | +| `namespace` | NUMERIC | The only supported value is `DBMS_AQ.NAMESPACE_AQ (0)` | +| `callback` | VARCHAR2 (4000) | Describes the action that will be performed upon notification. Currently, only calls to PL/SQL procedures are supported. The call should take the form:

`plsql://schema.procedure`

Where:

schema specifies the schema in which the procedure resides.

procedure specifies the name of the procedure that will be notified. | +| `context` | RAW (16) | Any user-defined value required by the procedure. | `count` diff --git a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/12_dbms_random.mdx b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/12_dbms_random.mdx index 6432c9bc41a..2a237c8fc29 100644 --- a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/12_dbms_random.mdx +++ b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/12_dbms_random.mdx @@ -8,17 +8,17 @@ legacyRedirectsGenerated: The `DBMS_RANDOM` package provides a number of methods to generate random values. The procedures and functions available in the `DBMS_RANDOM` package are listed in the following table. -| Function/Procedure | Return Type | Description | -| ------------------ | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | -| `INITIALIZE(val)` | n/a | Initializes the `DBMS_RANDOM` package with the specified seed `value`. Deprecated, but supported for backward compatibility. | -| `NORMAL()` | `NUMBER` | Returns a random `NUMBER`. | -| `RANDOM` | `INTEGER` | Returns a random `INTEGER` with a value greater than or equal to -2^31 and less than 2^31. Deprecated, but supported for backward compatibility | -| `SEED(val)` | n/a | Resets the seed with the specified `value`. | -| `SEED(val)` | n/a | Resets the seed with the specified `value`. | -| `STRING(opt, len)` | `VARCHAR2` | Returns a random string. | -| `TERMINATE` | n/a | `TERMINATE` has no effect. Deprecated, but supported for backward compatibility. | -| `VALUE` | `NUMBER` | Returns a random number with a value greater than or equal to `0` and less than `1`, with 38 digit precision. | -| `VALUE(low, high)` | `NUMBER` | Returns a random number with a value greater than or equal to `low` and less than `high`. | +| Function/Procedure | Return Type | Description | +| ------------------ | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| `INITIALIZE(val)` | n/a | Initializes the `DBMS_RANDOM` package with the specified seed `value`. Deprecated, but supported for backward compatibility. | +| `NORMAL()` | `NUMBER` | Returns a random `NUMBER`. | +| `RANDOM` | `INTEGER` | Returns a random `INTEGER` with a value greater than or equal to -2^31 and less than 2^31. Deprecated, but supported for backward compatibility. | +| `SEED(val)` | n/a | Resets the seed with the specified `value`. | +| `SEED(val)` | n/a | Resets the seed with the specified `value`. | +| `STRING(opt, len)` | `VARCHAR2` | Returns a random string. | +| `TERMINATE` | n/a | `TERMINATE` has no effect. Deprecated, but supported for backward compatibility. | +| `VALUE` | `NUMBER` | Returns a random number with a value greater than or equal to `0` and less than `1`, with 38 digit precision. | +| `VALUE(low, high)` | `NUMBER` | Returns a random number with a value greater than or equal to `low` and less than `high`. | ## INITIALIZE diff --git a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/13_dbms_redact.mdx b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/13_dbms_redact.mdx index d99bbec7fc5..90c94f8c993 100644 --- a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/13_dbms_redact.mdx +++ b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/13_dbms_redact.mdx @@ -86,7 +86,7 @@ The following table represents `function_parameters` values that can be used in | `REDACT_NUM_ZIP_CODE` | `VARCHAR2` | `'9,1,5'` | Redacts a 5 digit zip code when the column is a number datatype. **Example:** `12345`becomes `99999`. | | `REDACT_CCN16_F12` | `VARCHAR2` | `'VVVVFVVVVFVVVVFVVVV,VVVV-VVVV-VVVV-VVVV,*,1,12'` | Redacts a 16 digit credit card number and displays only 4 digits. **Example:** `1234 5678 9000 2358` becomes `****-****-****-2358`. | | `REDACT_DATE_MILLENNIUM` | `VARCHAR2` | `'m1d1y2000'` | Redacts a date that is in the `DD-MM-YY` format. **Example:** Redacts all date to `01-JAN-2000`. | -| `REDACT_DATE_EPOCH` | `VARCHAR2` | `'m1d1y1970'` | Redacts a11 dates to `01-JAN-70`. | +| `REDACT_DATE_EPOCH` | `VARCHAR2` | `'m1d1y1970'` | Redacts all dates to `01-JAN-70`. | | `REDACT_AMEX_CCN_FORMATTED` | `VARCHAR2` | `'VVVVFVVVVVVFVVVVV,VVVV-VVVVVV-VVVVV,*,1,10'` | Redacts the Amercian Express credit card number and replaces the digit with `*` except for the last 5 digits. **Example:** The credit card number `1234 567890 34500` becomes `**** ****** 34500`. | | `REDACT_AMEX_CCN_NUMBER` | `VARCHAR2` | `'0,1,10'` | Redacts the Amercian Express credit card number and replaces the digit with `0` except for the last 5 digits. **Example:** The credit card number `1234 567890 34500` becomes `0000 000000 34500`. | | `REDACT_SIN_FORMATTED` | `VARCHAR2` | `'VVVFVVVFVVV,VVV-VVV-VVV,*,1,6'` | Redacts the Social Insurance Number by replacing the first 6 digits by `*`. **Example:** `123-456-789` becomes `***-***-789`. | @@ -98,21 +98,21 @@ The following table represents `function_parameters` values that can be used in | `REDACT_NA_PHONE_NUMBER` | `VARCHAR2` | `'0,4,10'` | Redacts the North American phone number by `0` leaving the area code. **Example:** `1234567890` becomes `1230000000`. | | `REDACT_NA_PHONE_UNFORMATTED` | `VARCHAR2` | `'VVVVVVVVVV,VVVVVVVVVV,X,4,10'` | Redacts the North American phone number by `X` leaving the area code. **Example:** `1234567890` becomes `123XXXXXXX`. | | `REDACT_UK_NIN_FORMATTED` | `VARCHAR2` | `'VVFVVFVVFVVFV,VV VV VV VV V,X,3,8'` | Redacts the UK National Insurance Number by `X` but leaving the alphabetic characters. **Example:** `NY 22 01 34 D` becomes `NY XX XX XX D`. | -| `REDACT_UK_NIN_UNFORMATTED` | `VARCHAR2` | `'VVVVVVVVV,VVVVVVVVV,X,3,8'` | Redacts the UK National Insurance Number by `X` but leaving the alphabetic characters. **Example:** `NY220134D` becomes `NYXXXXXXD` | +| `REDACT_UK_NIN_UNFORMATTED` | `VARCHAR2` | `'VVVVVVVVV,VVVVVVVVV,X,3,8'` | Redacts the UK National Insurance Number by `X` but leaving the alphabetic characters. **Example:** `NY220134D` becomes `NYXXXXXXD`. | A regular expression-based redaction searches for patterns of data to redact. The `regexp_pattern` search the values in order for the `regexp_replace_string` to change the value. The following table illustrates the `regexp_pattern` values that you can use during `REGEXP` based redaction. -| Function Parameter and Description | Data Type | Value | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------: | :----------------------------------------------------: | -| `RE_PATTERN_CC_L6_T4`: Searches for the middle digits of a credit card number that includes 6 leading digits and 4 trailing digits.
The `regexp_replace_string` setting to use with the format is `RE_REDACT_CC_MIDDLE_DIGITS` that replaces the identified pattern with the characters specified by the `RE_REDACT_CC_MIDDLE_DIGITS` parameter. | `VARCHAR2` | `'(\d\d\d\d\d\d)(\d\d\d*)(\d\d\d\d)'` | -| `RE_PATTERN_ANY_DIGIT`: Searches for any digit and replaces the identified pattern with the characters specified by the following values of the `regexp_replace_string` parameter.
`regexp_replace_string=> RE_REDACT_WITH_SINGLE_X`
(replaces any matched digit with the `X` character).
`regexp_replace_string=> RE_REDACT_WITH_SINGLE_1`
(replaces any matched digit with the `1` character). | `VARCHAR2` | `'\d'` | -| `RE_PATTERN_US_PHONE`: Searches for the U.S phone number and replaces the identified pattern with the characters specified by the `regexp_replace_string` parameter.
`regexp_replace_string=> RE_REDACT_US_PHONE_L7`
(searches the phone number and then replaces the last 7 digits). | `VARCHAR2` | `'(\(\d\d\d\)\|\d\d\d)-(\d\d\d)-(\d\d\d\d)'` | -| `RE_PATTERN_EMAIL_ADDRESS`: Searches for the email address and replaces the identified pattern with the characters specified by the following values of the `regexp_replace_string` parameter.
`regexp_replace_string=> RE_REDACT_EMAIL_NAME`
(finds the email address and redacts the email username).
`regexp_replace_string=> RE_REDACT_EMAIL_DOMAIN`
(finds the email address and redacts the email domain).
`regexp_replace_string=> RE_REDACT_EMAIL_ENTIRE`
(finds the email address and redacts the entire email address). | `VARCHAR2` | `'([A-Za-z0-9._%+-]+)@([A-Za-z0-9.-]+.[A-Za-z]{2,4})'` | -| `RE_PATTERN_IP_ADDRESS`: Searches for an IP address and replaces the identified pattern with the characters specified by the `regexp_replace_string` parameter. The `regexp_replace_string` parameter to be used is `RE_REDACT_IP_L3` that replaces the last section of an IP address with `999` and indicates it is redacted. | `VARCHAR2` | `'(\d{1,3}\.\d{1,3}\.\d{1,3})\.\d{1,3}'` | -| `RE_PATTERN_AMEX_CCN`: Searches for the American Express credit card number. The `regexp_replace_string` parameter to be used is `RE_REDACT_AMEX_CCN` that redacts all of the digits except the last 5. | `VARCHAR2` | `'.*(\d\d\d\d\d)$'` | -| `RE_PATTERN_CCN`: Searches for the credit card number other than American Express credit cards. The `regexp_replace_string` parameter to be used is `RE_REDACT_CCN` that redacts all of the digits except the last 4. | `VARCHAR2` | `'.*(\d\d\d\d)$'` | -| `RE_PATTERN_US_SSN`: Searches the SSN number and replaces the identified pattern with the characters specified by the `regexp_replace_string` parameter.
`'\1-XXX-XXXX'` or `'XXX-XXX-\3'` will return `123-XXX-XXXX` or `XXX-XXX-6789` for the value `'123-45-6789'` respectively. | `VARCHAR2` | `'(\d\d\d)-(\d\d)-(\d\d\d\d)'` | -| | | | +| Function Parameter and Description | Data Type | Value | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------: | :----------------------------------------------------: | +| `RE_PATTERN_CC_L6_T4`: Searches for the middle digits of a credit card number that includes 6 leading digits and 4 trailing digits.
The `regexp_replace_string` setting to use with the format is `RE_REDACT_CC_MIDDLE_DIGITS` that replaces the identified pattern with the characters specified by the `RE_REDACT_CC_MIDDLE_DIGITS` parameter. | `VARCHAR2` | `'(\d\d\d\d\d\d)(\d\d\d*)(\d\d\d\d)'` | +| `RE_PATTERN_ANY_DIGIT`: Searches for any digit and replaces the identified pattern with the characters specified by the following values of the `regexp_replace_string` parameter.
`regexp_replace_string=> RE_REDACT_WITH_SINGLE_X`
(replaces any matched digit with the `X` character).
`regexp_replace_string=> RE_REDACT_WITH_SINGLE_1`
(replaces any matched digit with the `1` character). | `VARCHAR2` | `'\d'` | +| `RE_PATTERN_US_PHONE`: Searches for the U.S phone number and replaces the identified pattern with the characters specified by the `regexp_replace_string` parameter.
`regexp_replace_string=> RE_REDACT_US_PHONE_L7`
(searches the phone number and then replaces the last 7 digits). | `VARCHAR2` | `'(\(\d\d\d\)\|\d\d\d)-(\d\d\d)-(\d\d\d\d)'` | +| `RE_PATTERN_EMAIL_ADDRESS`: Searches for the email address and replaces the identified pattern with the characters specified by the following values of the `regexp_replace_string` parameter.
`regexp_replace_string=> RE_REDACT_EMAIL_NAME`
(finds the email address and redacts the email username).
`regexp_replace_string=> RE_REDACT_EMAIL_DOMAIN`
(finds the email address and redacts the email domain).
`regexp_replace_string=> RE_REDACT_EMAIL_ENTIRE`
(finds the email address and redacts the entire email address). | `VARCHAR2` | `'([A-Za-z0-9._%+-]+)@([A-Za-z0-9.-]+\.[A-Za-z]{2,4})'` | +| `RE_PATTERN_IP_ADDRESS`: Searches for an IP address and replaces the identified pattern with the characters specified by the `regexp_replace_string` parameter. The `regexp_replace_string` parameter to be used is `RE_REDACT_IP_L3` that replaces the last section of an IP address with `999` and indicates it is redacted. | `VARCHAR2` | `'(\d{1,3}\.\d{1,3}\.\d{1,3})\.\d{1,3}'` | +| `RE_PATTERN_AMEX_CCN`: Searches for the American Express credit card number. The `regexp_replace_string` parameter to be used is `RE_REDACT_AMEX_CCN` that redacts all of the digits except the last 5. | `VARCHAR2` | `'.*(\d\d\d\d\d)$'` | +| `RE_PATTERN_CCN`: Searches for the credit card number other than American Express credit cards. The `regexp_replace_string` parameter to be used is `RE_REDACT_CCN` that redacts all of the digits except the last 4. | `VARCHAR2` | `'.*(\d\d\d\d)$'` | +| `RE_PATTERN_US_SSN`: Searches the SSN number and replaces the identified pattern with the characters specified by the `regexp_replace_string` parameter.
`'\1-XXX-XXXX'` or `'XXX-XXX-\3'` will return `123-XXX-XXXX` or `XXX-XXX-6789` for the value `'123-45-6789'` respectively. | `VARCHAR2` | `'(\d\d\d)-(\d\d)-(\d\d\d\d)'` | +| | | | The below table illustrates the `regexp_replace_string` values that you can use during `REGEXP` based redaction. @@ -175,7 +175,7 @@ PROCEDURE add_policy ( IN VARCHAR2 DEFAULT NULL, IN VARCHAR2 DEFAULT NULL, IN INTEGER DEFAULT DBMS_REDACT.RE_BEGINNING, - IN INTEGER DEFAULT DBMS_REDACT.RE_ALL, + IN INTEGER DEFAULT DBMS_REDACT.RE_ALL, IN VARCHAR2 DEFAULT NULL, IN VARCHAR2 DEFAULT NULL ) @@ -396,7 +396,7 @@ PROCEDURE alter_policy ( **Example** -The following example illustrates to alter a policy partial redaction for values in the `payment_details_tab` table `card_string` (usually a credit card number) column. +The following example illustrates to alter a policy using partial redaction for values in the `payment_details_tab` table `card_string` (usually a credit card number) column. ```text \c edb base _user @@ -550,7 +550,7 @@ BEGIN object_schema => 'public', object_name => 'payment_details_tab', policy_name => 'redactPolicy_001'); -END +END; ``` Redacted Result: The server drops the specified policy. diff --git a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/15_dbms_scheduler/01_using_calendar_syntax_to_specify_a_repeating_interval.mdx b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/15_dbms_scheduler/01_using_calendar_syntax_to_specify_a_repeating_interval.mdx index 3441e1bbfc5..ab386d98016 100644 --- a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/15_dbms_scheduler/01_using_calendar_syntax_to_specify_a_repeating_interval.mdx +++ b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/15_dbms_scheduler/01_using_calendar_syntax_to_specify_a_repeating_interval.mdx @@ -32,7 +32,7 @@ The token types and syntax described in the table below are supported by Advance | | | `Friday` \| `FRI` \| `5` \| | | | | `Saturday` \| `SAT` \| `6` \| | | | | `Sunday` \| `SUN` \| `7` \| | -| `BYDATE` | `BYDATE=date (, date)...` | Where date is `YYYYMMDD`.

`YYYY` is a four-digit year representation of the year,
`MM` is a two-digit representation of the month,
and `DD` is a two-digit day representation of the day. | -| `BYDATE` | `BYDATE=date (, date)...` | Where date is `MMDD`.

`MM` is a two-digit representation of the month,
and `DD` is a two-digit day representation of the day | +| `BYDATE` | `BYDATE=date(, date)...` | Where date is `YYYYMMDD`.

`YYYY` is a four-digit year representation of the year,
`MM` is a two-digit representation of the month,
and `DD` is a two-digit day representation of the day. | +| `BYDATE` | `BYDATE=date(, date)...` | Where date is `MMDD`.

`MM` is a two-digit representation of the month,
and `DD` is a two-digit day representation of the day | | `BYHOUR` | `BYHOUR=hour` | Where `hour` is a value from `0` through `23`. | | `BYMINUTE` | `BYMINUTE=minute` | Where `minute` is a value from `0` through `59`. | diff --git a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/15_dbms_scheduler/index.mdx b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/15_dbms_scheduler/index.mdx index 3b4dd73b526..81823c2e9a9 100644 --- a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/15_dbms_scheduler/index.mdx +++ b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/15_dbms_scheduler/index.mdx @@ -13,20 +13,20 @@ The `DBMS_SCHEDULER` package provides a way to create and manage Oracle-styled j | `CREATE_JOB(job_name, job_type, job_action, number_of_arguments, start_date, repeat_interval, end_date, job_class, enabled, auto_drop, comments)` | n/a | Use the first form of the `CREATE_JOB` procedure to create a job, specifying program and schedule details by means of parameters. | | `CREATE_JOB(job_name, program_name, schedule_name, job_class, enabled, auto_drop, comments)` | n/a | Use the second form of `CREATE_JOB` to create a job that uses a named program and named schedule. | | `CREATE_PROGRAM(program_name, program_type, program_action, number_of_arguments, enabled, comments)` | n/a | Use `CREATE_PROGRAM` to create a program. | -| `CREATE_SCHEDULE( schedule_name, start_date, repeat_interval, end_date, comments)` | n/a | Use the `CREATE_SCHEDULE` procedure to create a schedule. | -| `DEFINE_PROGRAM_ARGUMENT( program_name, argument_position, argument_name, argument_type, default_value, out_argument)` | n/a | Use the first form of the `DEFINE_PROGRAM_ARGUMENT` procedure to define a program argument that has a default value. | -| `DEFINE_PROGRAM_ARGUMENT( program_name, argument_position, argument_name, argument_type, out_argument)` | n/a | Use the first form of the `DEFINE_PROGRAM_ARGUMENT` procedure to define a program argument that does not have a default value. | +| `CREATE_SCHEDULE(schedule_name, start_date, repeat_interval, end_date, comments)` | n/a | Use the `CREATE_SCHEDULE` procedure to create a schedule. | +| `DEFINE_PROGRAM_ARGUMENT(program_name, argument_position, argument_name, argument_type, default_value, out_argument)` | n/a | Use the first form of the `DEFINE_PROGRAM_ARGUMENT` procedure to define a program argument that has a default value. | +| `DEFINE_PROGRAM_ARGUMENT(program_name, argument_position, argument_name, argument_type, out_argument)` | n/a | Use the first form of the `DEFINE_PROGRAM_ARGUMENT` procedure to define a program argument that does not have a default value. | | `DISABLE(name, force, commit_semantics)` | n/a | Use the `DISABLE` procedure to disable a job or program. | | `DROP_JOB(job_name, force, defer, commit_semantics)` | n/a | Use the `DROP_JOB` procedure to drop a job. | | `DROP_PROGRAM(program_name, force)` | n/a | Use the `DROP_PROGRAM` procedure to drop a program. | -| `DROP_PROGRAM_ARGUMENT( program_name, argument_position)` | n/a | Use the first form of `DROP_PROGRAM_ARGUMENT` to drop a program argument by specifying the argument position. | -| `DROP_PROGRAM_ARGUMENT( program_name, argument_name)` | n/a | Use the second form of `DROP_PROGRAM_ARGUMENT` to drop a program argument by specifying the argument name. | +| `DROP_PROGRAM_ARGUMENT(program_name, argument_position)` | n/a | Use the first form of `DROP_PROGRAM_ARGUMENT` to drop a program argument by specifying the argument position. | +| `DROP_PROGRAM_ARGUMENT(program_name, argument_name)` | n/a | Use the second form of `DROP_PROGRAM_ARGUMENT` to drop a program argument by specifying the argument name. | | `DROP_SCHEDULE(schedule_name, force)` | n/a | Use the `DROP SCHEDULE` procedure to drop a schedule. | | `ENABLE(name, commit_semantics)` | n/a | Use the `ENABLE` command to enable a program or job. | -| `EVALUATE_CALENDAR_STRING( calendar_string, start_date, return_date_after, next_run_date)` | n/a | Use `EVALUATE_CALENDAR_STRING` to review the execution date described by a user-defined calendar schedule. | +| `EVALUATE_CALENDAR_STRING(calendar_string, start_date, return_date_after, next_run_date)` | n/a | Use `EVALUATE_CALENDAR_STRING` to review the execution date described by a user-defined calendar schedule. | | `RUN_JOB(job_name, use_current_session, manually)` | n/a | Use the `RUN_JOB` procedure to execute a job immediately. | -| `SET_JOB_ARGUMENT_VALUE( job_name, argument_position, argument_value)` | n/a | Use the first form of `SET_JOB_ARGUMENT` value to set the value of a job argument described by the argument's position. | -| `SET_JOB_ARGUMENT_VALUE( job_name, argument_name, argument_value)` | n/a | Use the second form of `SET_JOB_ARGUMENT` value to set the value of a job argument described by the argument's name. | +| `SET_JOB_ARGUMENT_VALUE(job_name, argument_position, argument_value)` | n/a | Use the first form of `SET_JOB_ARGUMENT` value to set the value of a job argument described by the argument's position. | +| `SET_JOB_ARGUMENT_VALUE(job_name, argument_name, argument_value)` | n/a | Use the second form of `SET_JOB_ARGUMENT` value to set the value of a job argument described by the argument's name. | Advanced Server's implementation of `DBMS_SCHEDULER` is a partial implementation when compared to Oracle's version. Only those functions and procedures listed in the table above are supported. diff --git a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/01_bind_variable.mdx b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/01_bind_variable.mdx index e87e1763f89..624e43d670b 100644 --- a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/01_bind_variable.mdx +++ b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/01_bind_variable.mdx @@ -10,8 +10,7 @@ The `BIND_VARIABLE` procedure provides the capability to associate a value with ```text BIND_VARIABLE( INTEGER, VARCHAR2, - { BLOB | CLOB | DATE | FLOAT | INTEGER | NUMBER | - TIMESTAMP | VARCHAR2 } + { BLOB | CLOB | DATE | FLOAT | INTEGER | NUMBER | TIMESTAMP | VARCHAR2 } [, INTEGER ]) ``` diff --git a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/11_describe_columns.mdx b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/11_describe_columns.mdx index cb247376790..2497f5296d6 100644 --- a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/11_describe_columns.mdx +++ b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/11_describe_columns.mdx @@ -1,5 +1,5 @@ --- -title: "DESCRIBE COLUMNS" +title: "DESCRIBE_COLUMNS" legacyRedirectsGenerated: # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. diff --git a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/13_execute_and_fetch.mdx b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/13_execute_and_fetch.mdx index 177f2c5b5bc..a5ae0eb400a 100644 --- a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/13_execute_and_fetch.mdx +++ b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/13_execute_and_fetch.mdx @@ -9,8 +9,7 @@ legacyRedirectsGenerated: Function `EXECUTE_AND_FETCH` executes a parsed `SELECT` command and fetches one row. ```text - INTEGER EXECUTE_AND_FETCH( INTEGER - [, BOOLEAN ]) + INTEGER EXECUTE_AND_FETCH( INTEGER [, BOOLEAN ]) ``` **Parameters** diff --git a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/index.mdx b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/index.mdx index 4140e7135c9..e3d1dbc4eb0 100644 --- a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/index.mdx +++ b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/17_dbms_sql/index.mdx @@ -14,7 +14,7 @@ The `DBMS_SQL` package provides an application interface compatible with Oracle | --------------------------------------------------------------------------------------- | --------------------- | ----------- | ---------------------------------------------------------------------- | | `BIND_VARIABLE(c, name, value [, out_value_size ])` | Procedure | n/a | Bind a value to a variable. | | `BIND_VARIABLE_CHAR(c, name, value [, out_value_size ])` | Procedure | n/a | Bind a `CHAR` value to a variable. | -| `BIND_VARIABLE_RAW(c, name, value [, out_value_size])` | Procedure | n/a | Bind a `RAW` value to a variable. | +| `BIND_VARIABLE_RAW(c, name, value [, out_value_size ])` | Procedure | n/a | Bind a `RAW` value to a variable. | | `CLOSE_CURSOR(c IN OUT)` | Procedure | n/a | Close a cursor. | | `COLUMN_VALUE(c, position, value OUT [, column_error OUT [, actual_length OUT ]])` | Procedure | n/a | Return a column value into a variable. | | `COLUMN_VALUE_CHAR(c, position, value OUT [, column_error OUT [, actual_length OUT ]])` | Procedure | n/a | Return a `CHAR` column value into a variable. | diff --git a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/18_dbms_utility.mdx b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/18_dbms_utility.mdx index 05eeec8f3a7..a376da04e87 100644 --- a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/18_dbms_utility.mdx +++ b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/18_dbms_utility.mdx @@ -326,9 +326,9 @@ BEGIN DBMS_OUTPUT.PUT_LINE('Compatibility: ' || v_compat); END; -Version: EnterpriseDB 10.0.0 on i686-pc-linux-gnu, compiled by GCC gcc +Version: EnterpriseDB 13.0.0 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-48), 32-bit -Compatibility: EnterpriseDB 10.0.0 on i686-pc-linux-gnu, compiled by GCC +Compatibility: EnterpriseDB 13.0.0 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 4.1.220080704 (Red Hat 4.1.2-48), 32-bit ``` @@ -520,7 +520,7 @@ The `GET_PARAMETER_VALUE` procedure provides the capability to retrieve database ```text BINARY_INTEGER GET_PARAMETER_VALUE( VARCHAR2, - OUT INTEGER, OUT VARCHAR2)`` + OUT INTEGER, OUT VARCHAR2) ``` **Parameters** @@ -685,7 +685,7 @@ dblink : nextpos: 12 ``` -Tokenize the name, `"edb"."Emp_Admin".update_emp_sal :` +Tokenize the name, `"edb"."Emp_Admin".update_emp_sal:` ```text BEGIN diff --git a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/20_utl_file.mdx b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/20_utl_file.mdx index 1a3e48a1fa5..0648bf54fc0 100644 --- a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/20_utl_file.mdx +++ b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/20_utl_file.mdx @@ -612,8 +612,7 @@ C:\TEMP\EMPDIR>TYPE empfile.csv The `PUT` procedure writes a string to the given file. No end-of-line character sequence is written at the end of the string. Use the `NEW_LINE` procedure to add an end-of-line character sequence. ```text -PUT( FILE_TYPE, { DATE | NUMBER | TIMESTAMP | - VARCHAR2 }) +PUT( FILE_TYPE, { DATE | NUMBER | TIMESTAMP | VARCHAR2 }) ``` **Parameters** @@ -754,8 +753,7 @@ C:\TEMP\EMPDIR>TYPE empfile.csv The `PUTF` procedure writes a formatted string to the given file. ```text -PUTF( FILE_TYPE, VARCHAR2 [, VARCHAR2] - [, ...]) +PUTF( FILE_TYPE, VARCHAR2 [, VARCHAR2] [, ...]) ``` **Parameters** diff --git a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/21_utl_http.mdx b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/21_utl_http.mdx index 05abc371f07..8559ccc0689 100644 --- a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/21_utl_http.mdx +++ b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/21_utl_http.mdx @@ -733,7 +733,7 @@ DECLARE result UTL_HTTP.HTML_PIECES; BEGIN result := UTL_HTTP.REQUEST_PIECES('http://www.enterprisedb.com/', 4); -END +END; ``` ## SET_BODY_CHARSET @@ -762,7 +762,7 @@ and ```text SET_FOLLOW_REDIRECT( IN OUT UTL_HTTP.REQ, -IN INTEGER DEFAULT 3)`` +IN INTEGER DEFAULT 3) ``` Use the second form to change the maximum number of redirections for an individual request that a request inherits from the session default settings. diff --git a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/23_utl_raw.mdx b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/23_utl_raw.mdx index 9c5e6088d13..f51b30f3c59 100644 --- a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/23_utl_raw.mdx +++ b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/23_utl_raw.mdx @@ -214,7 +214,7 @@ SELECT UTL_RAW.LENGTH(UTL_RAW.CAST_TO_RAW('Accounts')) FROM DUAL; The following example uses the `LENGTH` function to return the length of a `RAW` value that includes multi-byte characters: ```text -SELECT UTL_RAW.LENGTH(UTL_RAW.CAST_TO_RAW('hello')); +SELECT UTL_RAW.LENGTH(UTL_RAW.CAST_TO_RAW('独孤求败')); length -------- 12 diff --git a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/24_utl_smtp.mdx b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/24_utl_smtp.mdx index 861cf760fef..9a280683278 100644 --- a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/24_utl_smtp.mdx +++ b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/24_utl_smtp.mdx @@ -161,7 +161,7 @@ DATA( IN OUT CONNECTION, VARCHAR2) ## EHLO -The `EHLO` procedure performs initial handshaking with the SMTP server after establishing the connection. The `EHLO` procedure allows the client to identify itself to the SMTP server according to RFC 821. RFC 1869 specifies the format of the information returned in the server’s reply. The *HELO* procedure performs the equivalent functionality, but returns less information about the server. +The `EHLO` procedure performs initial handshaking with the SMTP server after establishing the connection. The `EHLO` procedure allows the client to identify itself to the SMTP server according to RFC 821. RFC 1869 specifies the format of the information returned in the server’s reply. The `HELO` procedure performs the equivalent functionality, but returns less information about the server. ```text EHLO( IN OUT CONNECTION, VARCHAR2) @@ -179,10 +179,10 @@ EHLO( IN OUT CONNECTION, VARCHAR2) ## HELO -The `HELO` procedure performs initial handshaking with the SMTP server after establishing the connection. The `HELO` procedure allows the client to identify itself to the SMTP server according to RFC 821. The *EHLO* procedure performs the equivalent functionality, but returns more information about the server. +The `HELO` procedure performs initial handshaking with the SMTP server after establishing the connection. The `HELO` procedure allows the client to identify itself to the SMTP server according to RFC 821. The `EHLO` procedure performs the equivalent functionality, but returns more information about the server. ```text -HELO( IN OUT, VARCHAR2) +HELO( IN OUT, VARCHAR2) ``` **Parameters** @@ -222,8 +222,7 @@ The `HELP` function provides the capability to send the `HELP` command to the SM The `MAIL` procedure initiates a mail transaction. ```text -MAIL( IN OUT CONNECTION, VARCHAR2 - [, VARCHAR2 ]) +MAIL( IN OUT CONNECTION, VARCHAR2 [, VARCHAR2 ]) ``` **Parameters** @@ -320,8 +319,7 @@ QUIT( IN OUT CONNECTION) The `RCPT` procedure provides the e-mail address of the recipient. To schedule multiple recipients, invoke `RCPT` multiple times. ```text -RCPT( IN OUT CONNECTION, VARCHAR2 - [, VARCHAR2 ]) +RCPT( IN OUT CONNECTION, VARCHAR2 [, VARCHAR2 ]) ``` **Parameters** diff --git a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/25_utl_url.mdx b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/25_utl_url.mdx index 6838823168c..3c44b2adc12 100644 --- a/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/25_utl_url.mdx +++ b/product_docs/docs/epas/13/epas_compat_bip_guide/03_built-in_packages/25_utl_url.mdx @@ -142,8 +142,8 @@ The following anonymous block uses the `ESCAPE` function to escape the blank spa DECLARE result varchar2(400); BEGIN - result := UTL_URL.UNESCAPE('http://www.example.com -Using%20the%20UNESCAPE%20function.html'); + result := +UTL_URL.UNESCAPE('http://www.example.com/Using%20the%20UNESCAPE%20function.html'); DBMS_OUTPUT.PUT_LINE(result); END; ``` diff --git a/product_docs/docs/eprs/6.2/01_introduction/04_supported_jdk_versions.mdx b/product_docs/docs/eprs/6.2/01_introduction/04_supported_jdk_versions.mdx index a076b84d9ea..00012a896cd 100644 --- a/product_docs/docs/eprs/6.2/01_introduction/04_supported_jdk_versions.mdx +++ b/product_docs/docs/eprs/6.2/01_introduction/04_supported_jdk_versions.mdx @@ -4,6 +4,8 @@ title: "Supported JDK Versions" The xDB Replication Server is certified to work with the following Java platforms: +**Table-1: Certified Java Platforms** + | **Operating Systems** | **JDK Versions** | | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | | `CentOS 7 and 8`
| - Red Hat OpenJDK 7
- Red Hat OpenJDK 8
| diff --git a/product_docs/docs/eprs/6.2/02_overview/02_replication_concepts_and_definitions/02_publications_and_subscriptions.mdx b/product_docs/docs/eprs/6.2/02_overview/02_replication_concepts_and_definitions/02_publications_and_subscriptions.mdx index c2c22e840ce..abf78f281b7 100644 --- a/product_docs/docs/eprs/6.2/02_overview/02_replication_concepts_and_definitions/02_publications_and_subscriptions.mdx +++ b/product_docs/docs/eprs/6.2/02_overview/02_replication_concepts_and_definitions/02_publications_and_subscriptions.mdx @@ -35,21 +35,21 @@ The following diagram illustrates a multi-master replication system with three p ![Publications in one database replicating to subscriptions in another database](../../images/image3.png) -**Publications in one database replicating to subscriptions in another database** +**Figure 2-1: Publications in one database replicating to subscriptions in another database** ![Publications replicating to two subscription databases](../../images/image4.png) -**Publications replicating to two subscription databases** +**Figure 2-2:Publications replicating to two subscription databases** ![*Publications in two databases replicating to one subscription database*](../../images/image5.png) -**Publications in two databases replicating to one subscription database** +**Figure 2-3: Publications in two databases replicating to one subscription database** ![*Cascading Replication: Tables used in both a subscription and a publication*](../../images/image6.png) -**Cascading Replication: Tables used in both a subscription and a publication** +**Figure 2-4: Cascading Replication: Tables used in both a subscription and a publication** The preceding diagram illustrates that a table that has been created as a member of a subscription can be used in a publication replicating to another subscription. This scenario is called cascading replication. @@ -57,4 +57,4 @@ The following diagram illustrates a multi-master replication system with three p ![*Multi-master replication system*](../../images/image7.png) -**Multi-master replication system** +**Figure 2-5: Multi-master replication system** diff --git a/product_docs/docs/eprs/6.2/02_overview/02_replication_concepts_and_definitions/03_smr_replication.mdx b/product_docs/docs/eprs/6.2/02_overview/02_replication_concepts_and_definitions/03_smr_replication.mdx index a243c1e9e7f..d37d78f15e6 100644 --- a/product_docs/docs/eprs/6.2/02_overview/02_replication_concepts_and_definitions/03_smr_replication.mdx +++ b/product_docs/docs/eprs/6.2/02_overview/02_replication_concepts_and_definitions/03_smr_replication.mdx @@ -6,10 +6,12 @@ title: "Single-Master (Primary-to-secondary) Replication" xDB Replication Server performs primary-to-secondary replication when a single-master replication system is implemented. The publication is the master and the subscription is the secondary. In a primary-to-secondary relationship, changes are propagated in one direction only, from the master to the secondary. +![Single-Master (Primary-to-secondary) replication](../../images/image8.png) + +**Figure 2-6: Single-Master (Primary-to-secondary) replication** + Generally, changes must not be made to the definitions of the publication tables or the subscription tables. If such changes are made to the publication tables, they are not propagated to the subscription and vice versa unless the DDL change replication feature is used as described in [Replicating DDL Changes](../../07_common_operations/08_replicating_ddl_changes/#replicating_ddl_changes). If changes are made to the table definitions without using the DDL change replication feature, there is a risk that future replication attempts may fail. Changes must not be made to the rows of the subscription tables. If such changes are made, they are not propagated back to the publication. If changes are made to the subscription table rows, it is fairly likely that the rows will no longer match their publication counterparts. There is also a risk that future replication attempts may fail. -![Single-Master (Primary-to-secondary) replication](../../images/image8.png) -**Single-Master (Primary-to-secondary) replication** diff --git a/product_docs/docs/eprs/6.2/02_overview/02_replication_concepts_and_definitions/04_mmr_replication.mdx b/product_docs/docs/eprs/6.2/02_overview/02_replication_concepts_and_definitions/04_mmr_replication.mdx index f594f629248..31040ac60f1 100644 --- a/product_docs/docs/eprs/6.2/02_overview/02_replication_concepts_and_definitions/04_mmr_replication.mdx +++ b/product_docs/docs/eprs/6.2/02_overview/02_replication_concepts_and_definitions/04_mmr_replication.mdx @@ -25,4 +25,4 @@ Generally, changes must not be made to the table definitions in any of the prima ![In a multi-master replication system, table rows can be updated at any primary node](../../images/image9.png) -**In a multi-master replication system, table rows can be updated at any primary node** +**Figure 2-7: In a multi-master replication system, table rows can be updated at any primary node** diff --git a/product_docs/docs/jdbc_connector/42.2.12.3/images/core_classes_and_interfaces.png b/product_docs/docs/jdbc_connector/42.2.12.3/images/core_classes_and_interfaces.png new file mode 100755 index 00000000000..6a74e2213a4 Binary files /dev/null and b/product_docs/docs/jdbc_connector/42.2.12.3/images/core_classes_and_interfaces.png differ diff --git a/product_docs/docs/jdbc_connector/42.2.12.3/images/drivermanager_drivers.png b/product_docs/docs/jdbc_connector/42.2.12.3/images/drivermanager_drivers.png new file mode 100755 index 00000000000..a84c1eb71c8 Binary files /dev/null and b/product_docs/docs/jdbc_connector/42.2.12.3/images/drivermanager_drivers.png differ diff --git a/product_docs/docs/jdbc_connector/42.2.12.3/images/jdbc_class_relationships.png b/product_docs/docs/jdbc_connector/42.2.12.3/images/jdbc_class_relationships.png new file mode 100755 index 00000000000..aad20295a73 Binary files /dev/null and b/product_docs/docs/jdbc_connector/42.2.12.3/images/jdbc_class_relationships.png differ diff --git a/product_docs/docs/jdbc_connector/42.2.12.3/images/jdbc_installation_complete.png b/product_docs/docs/jdbc_connector/42.2.12.3/images/jdbc_installation_complete.png new file mode 100755 index 00000000000..9700a4f0329 Binary files /dev/null and b/product_docs/docs/jdbc_connector/42.2.12.3/images/jdbc_installation_complete.png differ diff --git a/product_docs/docs/jdbc_connector/42.2.12.3/images/jdbc_installation_dialog.png b/product_docs/docs/jdbc_connector/42.2.12.3/images/jdbc_installation_dialog.png new file mode 100755 index 00000000000..d05c32910f8 Binary files /dev/null and b/product_docs/docs/jdbc_connector/42.2.12.3/images/jdbc_installation_dialog.png differ diff --git a/product_docs/docs/jdbc_connector/42.2.12.3/images/jdbc_installation_wizard.png b/product_docs/docs/jdbc_connector/42.2.12.3/images/jdbc_installation_wizard.png new file mode 100755 index 00000000000..4dd43ba8460 Binary files /dev/null and b/product_docs/docs/jdbc_connector/42.2.12.3/images/jdbc_installation_wizard.png differ diff --git a/product_docs/docs/jdbc_connector/42.2.12.3/images/ready_to_install.png b/product_docs/docs/jdbc_connector/42.2.12.3/images/ready_to_install.png new file mode 100755 index 00000000000..bede3d647c2 Binary files /dev/null and b/product_docs/docs/jdbc_connector/42.2.12.3/images/ready_to_install.png differ diff --git a/product_docs/docs/jdbc_connector/42.2.12.3/images/selecting_the_connectors_installer.png b/product_docs/docs/jdbc_connector/42.2.12.3/images/selecting_the_connectors_installer.png new file mode 100755 index 00000000000..4ce6612c61d Binary files /dev/null and b/product_docs/docs/jdbc_connector/42.2.12.3/images/selecting_the_connectors_installer.png differ diff --git a/product_docs/docs/jdbc_connector/42.2.12.3/images/starting_stackbuilder_plus.png b/product_docs/docs/jdbc_connector/42.2.12.3/images/starting_stackbuilder_plus.png new file mode 100755 index 00000000000..08f86e725db Binary files /dev/null and b/product_docs/docs/jdbc_connector/42.2.12.3/images/starting_stackbuilder_plus.png differ diff --git a/product_docs/docs/jdbc_connector/42.2.12.3/images/the_showemployees_window.png b/product_docs/docs/jdbc_connector/42.2.12.3/images/the_showemployees_window.png new file mode 100755 index 00000000000..a18857ef75c Binary files /dev/null and b/product_docs/docs/jdbc_connector/42.2.12.3/images/the_showemployees_window.png differ diff --git a/product_docs/docs/migration_toolkit/53.0.2/01_whats_new.mdx b/product_docs/docs/migration_toolkit/53.0.2/01_whats_new.mdx index 43ec7684608..04c1e0fcccf 100644 --- a/product_docs/docs/migration_toolkit/53.0.2/01_whats_new.mdx +++ b/product_docs/docs/migration_toolkit/53.0.2/01_whats_new.mdx @@ -8,17 +8,14 @@ legacyRedirectsGenerated: -The following enhancements are added to the EDB Postgres Migration Toolkit for 54.0.0 release: +The following enhancements are added to the EDB Postgres Migration Toolkit for 53.0.2 release: -- Migration Toolkit now supports: +- Migration Toolkit now supports Debian version `10.x`. For complete list of supported platforms, see [Supported Operating Systems and Database Versions](02_supported_operating_systems_and_database_versions/#supported_operating_systems_and_database_versions). - - Postgres and EDB Postgres Advanced Server version 13 +- Starting this release, you can specify non-superuser credentials while migrating some objects to EDB Postgres Advanced Server or PostgreSQL. For more information, see [Defining an EDB Postgres Advanced Server URL](06_building_toolkit.properties_file/#define_epas_url) and [Defining a PostgreSQL URL](06_building_toolkit.properties_file/#define_pg_url) sections. - - Ubuntu version 20 +**Known Issues** - - Windows (64-bit) +- **Partition Table Migration to EDB Postgres Advanced Server v9.6:** - !!! Note - If you have an existing 32-bit Windows Migration Toolkit installation, you must uninstall and reinstall Migration Toolkit with the Windows 64-bit installer. - -For complete list of supported platforms, see [Supported Operating Systems and Database Versions](02_supported_operating_systems_and_database_versions/#supported_operating_systems_and_database_versions). +Currently, migration of partition tables to EDB Postgres Advanced Server v9.6 is failing. The issue will be fixed in a future release. diff --git a/product_docs/docs/migration_toolkit/53.0.2/02_supported_operating_systems_and_database_versions.mdx b/product_docs/docs/migration_toolkit/53.0.2/02_supported_operating_systems_and_database_versions.mdx index 3ed6913cbfe..1e386a669b9 100644 --- a/product_docs/docs/migration_toolkit/53.0.2/02_supported_operating_systems_and_database_versions.mdx +++ b/product_docs/docs/migration_toolkit/53.0.2/02_supported_operating_systems_and_database_versions.mdx @@ -12,8 +12,8 @@ legacyRedirectsGenerated: The following database product versions can be used with Migration Toolkit: -- PostgreSQL versions 9.6, 10, 11, 12, and 13 -- EDB Postgres Advanced Server versions 9.6, 10, 11, 12, and 13 +- PostgreSQL versions 9.5, 9.6, 10, 11, and 12 +- PostgreSQL versions 9.5, 9.6, 10, 11, and 12 - Oracle 10g Release 2 - Oracle 11g Release 2 - Oracle 12c Release 1 @@ -39,4 +39,7 @@ Please contact your EnterpriseDB Account Manager or [sales@enterprisedb.com](mai - Mac OS X 10.12+ !!! Note - The ojdbc7.jar can cause large data migrations to be incomplete due to a limit on records over Integer.MAX_VALUE (2147483647) while fetching from the ResultSet. To avoid this issue, we recommend upgrading to ojdbc8.jar. + The `ojdbc7.jar` can cause large data migrations to be incomplete due to a limit on records over `Integer.MAX_VALUE (2147483647)` while fetching from the ResultSet. To avoid this issue, we recommend upgrading to `ojdbc8.jar`. + +!!!Note + Migration Toolkit is no longer supported on `CentOS/RHEL/OEL 6.x` platforms. It is strongly recommended that EDB products running on these platforms be migrated to a supported platform. \ No newline at end of file diff --git a/product_docs/docs/migration_toolkit/53.0.2/04_functionality_overview.mdx b/product_docs/docs/migration_toolkit/53.0.2/04_functionality_overview.mdx index 768a98d781c..aa9849ad30a 100644 --- a/product_docs/docs/migration_toolkit/53.0.2/04_functionality_overview.mdx +++ b/product_docs/docs/migration_toolkit/53.0.2/04_functionality_overview.mdx @@ -41,9 +41,8 @@ Migration Toolkit migrates object definitions (DDL), table data, or both. The fo | ----------------------- | ------ | ------ | ---------- | ----- | | Schemas | X | X | X | X | | Tables | X | X | X | X | -| List-Partitioned Table | X | | | | +| List-Partitioned Tables | X | | | | | Range-Partitioned Table | X | | | | -| Hash Partitioned Table | X | | | | | Constraints | X | X | X | X | | Indexes | X | X | X | X | | Triggers | X | | | | diff --git a/product_docs/docs/migration_toolkit/53.0.2/05_installing_mtk.mdx b/product_docs/docs/migration_toolkit/53.0.2/05_installing_mtk.mdx index 973c9019fe9..3a980f83d4a 100644 --- a/product_docs/docs/migration_toolkit/53.0.2/05_installing_mtk.mdx +++ b/product_docs/docs/migration_toolkit/53.0.2/05_installing_mtk.mdx @@ -10,7 +10,7 @@ legacyRedirects: legacyRedirectsGenerated: # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. - - "/edb-docs/d/edb-postgres-migration-toolkit/user-guides/user-guide/54.0.0/installing_mtk.html" + - "/edb-docs/d/edb-postgres-migration-toolkit/user-guides/user-guide/53.0.2/installing_mtk.html" --- @@ -34,7 +34,17 @@ The following are the various installation methods: ## Installing Migration Toolkit on a CentOS or RHEL 7 and 8 Host -You can use an RPM package to install Migration Toolkit on a CentOS or RHEL host. The following steps provide detailed information about accessing the EnterpriseDB repository and installing Migration Toolkit. +You can use an RPM package to install Migration Toolkit on a CentOS or RHEL host. + +After receiving your repository credentials you can: + +- Create the repository configuration file. + +- Modify the file, providing your user name and password. + +- Install Migration Toolkit + +The following steps provide detailed information about accessing the EnterpriseDB repository andinstalling Migration Toolkit. **Creating a Repository Configuration File** @@ -54,7 +64,7 @@ You can use an RPM package to install Migration Toolkit on a CentOS or RHEL host edb-repo-latest.noarch.rpm ``` - The repository configuration file is named `edb.repo`. The file resides in `/etc/yum.repos.d`. + The repository configuration file is named `edb.repo`. The file resides in `/etc/yum.repos.d`. 2. After creating the `edb.repo` file, use your choice of editor to ensure that the value of the `enabled` parameter is `1`, and replace the `username` and `password` placeholders in the `baseurl` specification with the name and password of a registered EnterpriseDB user. @@ -85,7 +95,7 @@ You can use an RPM package to install Migration Toolkit on a CentOS or RHEL host epel-release-latest-8.noarch.rpm ``` -4. If you are using RHEL or CentOS 8.x, you must enable an additional repository to resolve dependencies: +4. If you are using RHEL or CentOS 8.x, you must enable an additional repository to resolve `EPEL` dependencies: - On CentOS 8 (Powertools repo): @@ -202,7 +212,11 @@ You can use an RPM package to install Migration Toolkit on a CentOS or RHEL ppc6 Before installing Migration toolkit , you must: -1. Create the Advance Toolchain repository configuration file; assume superuser privileges and invoke the following command: +Install the `Advance Toolchain` package: + +1. To create the repository configuration file, assume superuser privileges and invoke the following command: + +- On CentOS or RHEL 7 ppc64le: ```text rpm --import https://public.dhe.ibm.com/software/server/POWER/ @@ -223,6 +237,14 @@ Before installing Migration toolkit , you must: toolchain/at/redhat/RHELX/gpg-pubkey-6976a827-5164221b ``` +After receiving your repository credentials you can: + +- Create the repository configuration file. + +- Modify the file, providing your user name and password. + +- Install Migration Toolkit. + The following steps provide detailed information about accessing the EnterpriseDB repository and installing Migration Toolkit. **Creating a Repository Configuration File** @@ -248,14 +270,16 @@ The following steps provide detailed information about accessing the EnterpriseD gpgkey=file:///etc/pki/rpm-gpg/ENTERPRISEDB-GPG-KEY ``` -3. After saving your changes to the configuration file, install the EPEL package: +3. After saving your changes to the configuration file, install the EPEL repository: + +- CentOS or RHEL 7 ppc64le: ```text yum -y install https://dl.fedoraproject.org/pub/epel/ epel-release-latest-7.noarch.rpm ``` -4. If you are using RHEL 7 ppc64le, you must enable an additional repository to resolve dependencies: +4. If you are using RHEL 7 ppc64le, you must enable an additional repository to resolve `EPEL` dependencies: ```text subscription-manager repos --enable "rhel-*-optional-rpms" @@ -265,6 +289,8 @@ The following steps provide detailed information about accessing the EnterpriseD 5. To install Migration Toolkit, run the following command. +- CentOS or RHEL 7 ppc64le: + ```text yum -y install edb-migrationtoolkit ``` @@ -273,7 +299,7 @@ The following steps provide detailed information about accessing the EnterpriseD ## Installing Migration Toolkit on a Debian or Ubuntu Host -To install a package with apt, complete the following steps. When invoking the commands, replace the `username` and `password` with the user credentials provided by EnterpriseDB. +To install a Debian package using the EnterpriseDB apt, complete the following steps. In addition,when using the commands, replace the `username` and `password` with the credentials providedby EnterpriseDB. 1. Assume superuser privileges: @@ -311,26 +337,26 @@ To install a package with apt, complete the following steps. When invoking the c password " > /etc/apt/auth.conf.d/edb.conf' ``` - c. Add support to your system for secure APT repositories: + 3. Add support to your system for secure APT repositories: ```text apt-get install apt-transport-https ``` - d. Add the EBD signing key: + 4. Add the EBD signing key: ```text wget -q -O - https://username:password @apt.enterprisedb.com/edb-deb.gpg.key | apt-key add - ``` - e. Update the repository metadata: + 5. Update the repository metadata: ```text apt-get update ``` - f. Install the `edb-migrationtoolkit` package: + 6. Install Debian package:: ```text apt-get -y install edb-migrationtoolkit @@ -340,6 +366,10 @@ To install a package with apt, complete the following steps. When invoking the c ## Installing Migration Toolkit on a SLES Host +To install Migration Toolkit, you must have credentials that allow access to the EnterpriseDBrepository. To request credentials for the repository, visit the EnterpriseDB website at: + + + You can use the zypper package manager to install a Migration toolkit on an SLES 12 host. zypper will attempt to satisfy package dependencies as it installs a package, but requires access to specific repositories that are not hosted at EnterpriseDB. 1. You must assume superuser privileges and stop any firewalls before installing Migration Toolkit. Then, use the following commands to add EnterpriseDB repositories to your system: @@ -411,13 +441,7 @@ You must have a Java JVM (version 1.7.0 or later) in place before Stack Builder The Java executable must be in your search path `(%PATH% on Windows)` Use the following commands to set the search path (substituting the name of the directory that holds the Java executable for `javadir`): -On Windows, use the command: `SET PATH=javadir;%PATH%` - -After setting the search path, you can use the Stack Builder installation wizard to install Migration Toolkit into either EDB Postgres Advanced Server or PostgreSQL. - -The Java executable must be in your search path (`%PATH%` on Windows, `$PATH` on Linux/Unix). Use the following commands to set the search path (substituting the name of the directory that holds the Java executable for `javadir`): - -On Windows, use the command: +On Windows, use the command: `SET PATH=javadir;%PATH%` @@ -439,7 +463,7 @@ Stack Builder opens as shown below. ![The Stack Builder welcome window.](images/installing_mtk_sbp_welcome.png) -*The Stack Builder welcome window* +*Fig 1: The Stack Builder welcome window* Use the drop-down listbox to select the target server installation from the list of available servers. If your network requires you to use a proxy server to access the Internet, use the `Proxy servers` button to open the `Proxy servers` dialog and specify a server; if you do not need to use a proxy server, click `Next` to open the application selection window. @@ -450,19 +474,19 @@ If you are using StackBuilder Plus to add Migration Toolkit to your EDB Postgres ![The Stack Builder application selection window.](images/installing_mtk_sbp_categories.png) -*The Stack Builder application selection window* +*Fig 2: The Stack Builder application selection window* Confirm that Migration Toolkit is included in the `Selected Packages` list and that the `Download directory` field contains an acceptable download location. ![The Stack Builder selection confirmation window.](images/installing_mtk_sbp_selected_packages.png) -*The Stack Builder selection confirmation window* +*Fig 3: The Stack Builder selection confirmation window* Click `Next` to start the Migration Toolkit download. ![Stack Builder confirms the file download.](images/installing_mtk_sbp_download_complete.png) -*Stack Builder confirms the file download* +*Fig 4: Stack Builder confirms the file download* When the download completes, Stack Builder confirms that the installation files have been successfully downloaded. Choose `Next` to open the Migration Toolkit installation wizard. @@ -472,37 +496,37 @@ The Migration Toolkit installation wizard opens. Click `Next` to continue. ![The Migration Toolkit installation wizard.](images/installing_mtk_setup.png) -*The Migration Toolkit installation wizard* +*Fig 5: The Migration Toolkit installation wizard* Carefully review the license agreement before highlighting the appropriate radio button; click `Next` to continue. ![The EnterpriseDB license agreement.](images/installing_mtk_license.png) -*The EnterpriseDB license agreement* +*Fig 6: The EnterpriseDB license agreement* By default, Migration Toolkit will be installed in the `mtk` directory; accept the default installation directory as displayed, or modify the directory, and click `Next` to continue. ![Specify a Migration Toolkit installation directory.](images/installing_mtk_inst_dir.png) -*Specify a Migration Toolkit installation directory* +*Fig 7: Specify a Migration Toolkit installation directory* The installation wizard confirms that the `Setup` program is ready to install Migration Toolkit; click `Next` to start the installation. ![Setup is ready to start the Migration Toolkit installation.](images/installing_mtk_start_inst.png) -*Setup is ready to start the Migration Toolkit installation* +*Fig 8: Setup is ready to start the Migration Toolkit installation* A dialog confirms that the Migration Toolkit installation is complete; click `Finish` to exit the Migration Toolkit installer. ![The Migration Toolkit wizard has finished.](images/installing_mtk_inst_complete.png) -*The Migration Toolkit wizard has finished* +*Fig 9: The Migration Toolkit wizard has finished* When Stack Builder finalizes installation of the last selected component, it displays the `Installation Completed` window. Click `Finish` to close Stack Builder. ![Stack Builder confirms the installation is complete.](images/installing_mtk_sbp_inst_complete.png) -*Stack Builder confirms the installation is complete* +*Fig 10: Stack Builder confirms the installation is complete* After installing Migration Toolkit with Stack Builder, you must install the appropriate source-specific drivers before performing a migration; please see [Installing Source-Specific Drivers](#installing_drivers) for more information. @@ -512,11 +536,13 @@ After installing Migration Toolkit with Stack Builder, you must install the appr You can use the graphical installer to install the Migration Toolkit on Mac OS X. To download the installer, visit [www.enterprisedb.com](https://www.enterprisedb.com). +You must have a Java (version 1.7.0 or later) for Migration Toolkit installation. + To launch the installer: - Navigate to the file path in the terminal: - /<User/Directory>/Downloads/edb-migrationtoolkit-54.0.0-1-osx.app/Contents/MacOS + ` /User/Directory>/Downloads/edb-migrationtoolkit-53.0.2-1-osx.app/Contents/MacOS` - Assume superuser privileges and invoke the following command: @@ -530,31 +556,31 @@ To launch the installer: ![The Migration Toolkit installation wizard.](images/installing_mtk_mac_setup.png) -*The Migration Toolkit installation wizard* +*Fig 11: The Migration Toolkit installation wizard* 3. Carefully review the license agreement before highlighting the appropriate radio button; click `Next` to continue. ![The EnterpriseDB license agreement.](images/installing_mtk_mac_license.png) -*The EnterpriseDB license agreement* +*Fig 12: The EnterpriseDB license agreement* By default, Migration Toolkit will be installed in the `mtk` directory; accept the default installation directory as displayed, or modify the directory, and click `Next` to continue. ![Specify a Migration Toolkit installation directory.](images/installing_mtk_mac_inst_dir.png) -*Specify a Migration Toolkit installation directory* +*Fig 13: Specify a Migration Toolkit installation directory* The installation wizard confirms that the `Setup` program is ready to install Migration Toolkit; click `Next` to start the installation. ![Setup is ready to start the Migration Toolkit installation.](images/installing_mtk_mac_start_inst.png) -*Setup is ready to start the Migration Toolkit installation* +*Fig 14: Setup is ready to start the Migration Toolkit installation* A dialog confirms that the Migration Toolkit installation is complete; click `Finish` to exit the Migration Toolkit installer. ![The Migration Toolkit wizard has finished.](images/installing_mtk_mac_inst_complete.png) -*The Migration Toolkit wizard has finished.* +*Fig 15: The Migration Toolkit wizard has finished.* diff --git a/product_docs/docs/migration_toolkit/53.0.2/06_building_toolkit.properties_file.mdx b/product_docs/docs/migration_toolkit/53.0.2/06_building_toolkit.properties_file.mdx index 1b6a8852fdb..97b9fefe835 100644 --- a/product_docs/docs/migration_toolkit/53.0.2/06_building_toolkit.properties_file.mdx +++ b/product_docs/docs/migration_toolkit/53.0.2/06_building_toolkit.properties_file.mdx @@ -18,6 +18,8 @@ A sample `toolkit.properties` file is shown below: ![*A typical toolkit.properties file.*](images/building_toolkit.properties.png) +*Fig 1: A typical toolkit.properties file* + Before executing Migration Toolkit commands, modify the toolkit.properties file with the editor of your choice. Update the file to include the following information: - `SRC_DB_URL` specifies how Migration Toolkit should connect to the source database. See the section corresponding to your source database for details about forming the URL. @@ -31,7 +33,7 @@ Before executing Migration Toolkit commands, modify the toolkit.properties file ## Defining an Advanced Server URL -Migration Toolkit facilitates migration from the following platforms to Advanced Server: +Migration Toolkit facilitates migration from the following platforms to EDB Postgres Advanced Server: - Oracle - MySQL @@ -53,24 +55,27 @@ The URL conforms to JDBC standards and takes the form: {TARGET_DB_URL|SRC_DB_URL}=jdbc:edb://:/ ``` -An Advanced Server URL contains the following information: +An EDB Postgres Advanced Server URL contains the following information: - `jdbc` The protocol is always `jdbc`. -- `edb` If you are using Advanced Server, specify `edb` for the sub-protocol value. +- `edb` If you are using EDB Postgres Advanced Server, specify `edb` for the sub-protocol value. - `` The name or IP address of the host where the Postgres instance is running. -- `` The port number that the Advanced Server database listener is monitoring. The default port number is `5444`. +- `` The port number that the EDB Postgres Advanced Server database listener is monitoring. The default port number is `5444`. - `` The name of the source or target database. - `{TARGET_DB_USER|SRC_DB_USER}` must specify a user with privileges to CREATE each type of object migrated. If migrating data into a table, the specified user may also require `INSERT`, `TRUNCATE`, and `REFERENCES` privileges for each target table. -- `{TARGET_DB_PASSWORD|SRC_DB_PASSWORD}` is set to the password of the privileged Advanced Server user. +- `{TARGET_DB_PASSWORD|SRC_DB_PASSWORD}` is set to the password of the privileged EDB Postgres Advanced Server user. +!!!Note + You may specify non-superuser credentials for `TARGET_DB_USER` and `TAR-GET_DB_PASSWORD` while migrating to EDB Postgres Advanced Server. However, to migrateusers, profiles, grants, and copy data via the `dbLink_oramodule (-copyViaDBLinkOra)`,you must use superuser credentials. + ## Defining a PostgreSQL URL Migration Toolkit facilitates migration from the following platforms to PostgreSQL: @@ -78,7 +83,7 @@ Migration Toolkit facilitates migration from the following platforms to PostgreS - Oracle - MySQL - SQL Server -- Advanced Server +- EDB Postgres Advanced Server For a definitive list of the objects migrated from each database type, please refer to the [Functionality Overview](04_functionality_overview/#functionality_overview). @@ -110,11 +115,14 @@ The URL contains the following information: - `{SRC_DB_PASSWORD|TARGET_DB_PASSWORD}` is set to the password of the privileged PostgreSQL user. +!!!Note + You may specify non-superuser credentials for `TARGET_DB_USER` and `TARGET_DB_PASSWORD` while migrating to EDB Postgres Advanced Server. However, to migrate users, profiles, grants, and copy data via the `dbLink_oramodule (-copyViaDBLinkOra)`, you must use superuser credentials. + ## Defining an Oracle URL -Migration Toolkit facilitates migration from an Oracle database to a PostgreSQL or Advanced Server database. When migrating from Oracle, you must specify connection specifications for the Oracle source database in the `toolkit.properties` file. The connection information must include: +Migration Toolkit facilitates migration from an Oracle database to a PostgreSQL or EDB Postgres Advanced Server database. When migrating from Oracle, you must specify connection specifications for the Oracle source database in the `toolkit.properties` file. The connection information must include: - The URL of the Oracle database - The name of a privileged user @@ -148,7 +156,7 @@ An Oracle URL contains the following information: - `` The name of the Oracle service. -- `SRC_DB_USER` should specify the name of a privileged Oracle user. The Oracle user should have DBA privilege to migrate objects from Oracle to Advanced Server. The DBA privilege can be granted to the Oracle user with the Oracle `GRANT DBA TO user` command to ensure all of the desired database objects are migrated. +- `SRC_DB_USER` should specify the name of a privileged Oracle user. The Oracle user should have DBA privilege to migrate objects from Oracle to EDB Postgres Advanced Server. The DBA privilege can be granted to the Oracle user with the Oracle `GRANT DBA TO user` command to ensure all of the desired database objects are migrated. - `SRC_DB_PASSWORD` must contain the password of the specified user. @@ -156,7 +164,7 @@ An Oracle URL contains the following information: ## Defining a MySQL URL -Migration Toolkit facilitates migration from a MySQL database to an Advanced Server or PostgreSQL database. When migrating from MySQL, you must specify connection specifications for the MySQL source database in the `toolkit.properties` file. The connection information must include: +Migration Toolkit facilitates migration from a MySQL database to an EDB Postgres Advanced Server or PostgreSQL database. When migrating from MySQL, you must specify connection specifications for the MySQL source database in the `toolkit.properties` file. The connection information must include: - The URL of the source database - The name of a privileged user @@ -188,7 +196,7 @@ The URL contains the following information: ## Defining a Sybase URL -Migration Toolkit facilitates migration from a Sybase database to an Advanced Server database. When migrating from Sybase, you must specify connection specifications for the Sybase source database in the toolkit.properties file. The connection information must include: +Migration Toolkit facilitates migration from a Sybase database to an EDB Postgres Advanced Server database. When migrating from Sybase, you must specify connection specifications for the Sybase source database in the toolkit.properties file. The connection information must include: - The URL of the source database - The name of a privileged user @@ -220,7 +228,7 @@ A Sybase URL contains the following information: ## Defining a SQL Server URL -Migration Toolkit facilitates migration from a SQL Server database to a PostgreSQL or Advanced Server database. Migration Toolkit supports migration of the following object definitions: +Migration Toolkit facilitates migration from a SQL Server database to a PostgreSQL or EDB Postgres Advanced Server database. Migration Toolkit supports migration of the following object definitions: - schemas - tables diff --git a/product_docs/docs/migration_toolkit/53.0.2/10_error_codes.mdx b/product_docs/docs/migration_toolkit/53.0.2/10_error_codes.mdx index 16ebdc4206e..c5241959436 100644 --- a/product_docs/docs/migration_toolkit/53.0.2/10_error_codes.mdx +++ b/product_docs/docs/migration_toolkit/53.0.2/10_error_codes.mdx @@ -161,7 +161,8 @@ This class represents errors related with the migration of unsupported objects a | MTK-13010 | You cannot migrate procedures, packages, synonyms and database links to PostgreSQL database. | | MTK-13011 | Domain objects are not supported in target database. | | MTK-13012 | Rules are not supported in *$DATABASE* database. | -| MTK-13013 | The database type is not supported. | +| MTK-13013 | The database type is not supported. +| MTK-13014 | Hash partition is not supported in EnterpriseDB. | | MTK-13015 | *$TYPE* is Not Supported by COPY. | | MTK-13016 | The migration to PostgreSQL is supported only when Oracle or PostgreSQL is the source database. | | MTK-13017 | Groups are not supported in *$DATABASE* database. | diff --git a/product_docs/docs/migration_toolkit/53.0.2/11_unsupported_features.mdx b/product_docs/docs/migration_toolkit/53.0.2/11_unsupported_features.mdx index 489b9606e39..7a453647131 100644 --- a/product_docs/docs/migration_toolkit/53.0.2/11_unsupported_features.mdx +++ b/product_docs/docs/migration_toolkit/53.0.2/11_unsupported_features.mdx @@ -32,7 +32,7 @@ Migration Toolkit does not support migration of the following Postgres features: For information about `OPERATOR CLASS` and `OPERATOR FAMILY`, see the PostgreSQL core documentation available at: - + diff --git a/product_docs/docs/migration_toolkit/53.0.2/index.mdx b/product_docs/docs/migration_toolkit/53.0.2/index.mdx index 10b742ac020..f021091cebb 100644 --- a/product_docs/docs/migration_toolkit/53.0.2/index.mdx +++ b/product_docs/docs/migration_toolkit/53.0.2/index.mdx @@ -13,4 +13,31 @@ directoryDefaults: #- "/edb-docs/d/edb-postgres-migration-toolkit/user-guides/user-guide/53.0.2/index.html" --- - + + +Migration Toolkit is a powerful command-line tool that offers granular control of the migration process. Migration Toolkit facilitates migration of database objects and data to an EDB Postgres Advanced Server or PostgreSQL database from: + +- Oracle +- MySQL +- Microsoft SQL Server + +You can also use Migration Toolkit to migrate database objects and data from Sybase Adaptive Server Enterprise to EDB Postgres Advanced Server, or between EDB Postgres Advanced Server and PostgreSQL. + +You can install Migration Toolkit with the EDB Postgres Advanced Server installer, or via Stack Builder. Stack Builder is distributed with both the EDB Postgres Advanced Server and the PostgreSQL one-click installer available from the EnterpriseDB web site at: + + + +This guide provides a high-level description of the steps involved in the migration process, as well as installation and usage instructions for Migration Toolkit. It also includes solutions to common migration problems, and details unsupported features and their potential workarounds. + +!!! Note + + This guide uses the term Postgres to refer to either an installation of EDB Postgres Advanced Server or PostgreSQL. + + +This guide uses the term Stack Builder to refer to either StackBuilder Plus (distributed with EDB Postgres Advanced Server) or Stack Builder (distributed with the PostgreSQL one-click installer from EnterpriseDB). + +
+ +whats_new supported_operating_systems_and_database_versions migration_methodology functionality_overview installing_mtk building_toolkit.properties_file invoking_mtk mtk_command_options mtk_errors error_codes unsupported_features conclusion + +
diff --git a/product_docs/docs/migration_toolkit/54.0.0/05_installing_mtk.mdx b/product_docs/docs/migration_toolkit/54.0.0/05_installing_mtk.mdx index 973c9019fe9..45166a7ef66 100644 --- a/product_docs/docs/migration_toolkit/54.0.0/05_installing_mtk.mdx +++ b/product_docs/docs/migration_toolkit/54.0.0/05_installing_mtk.mdx @@ -411,13 +411,7 @@ You must have a Java JVM (version 1.7.0 or later) in place before Stack Builder The Java executable must be in your search path `(%PATH% on Windows)` Use the following commands to set the search path (substituting the name of the directory that holds the Java executable for `javadir`): -On Windows, use the command: `SET PATH=javadir;%PATH%` - -After setting the search path, you can use the Stack Builder installation wizard to install Migration Toolkit into either EDB Postgres Advanced Server or PostgreSQL. - -The Java executable must be in your search path (`%PATH%` on Windows, `$PATH` on Linux/Unix). Use the following commands to set the search path (substituting the name of the directory that holds the Java executable for `javadir`): - -On Windows, use the command: +On Windows, use the command: `SET PATH=javadir;%PATH%` diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/EDB_logo.png b/product_docs/docs/migration_toolkit/54.0.0/images/EDB_logo.png new file mode 100755 index 00000000000..39a54822d85 Binary files /dev/null and b/product_docs/docs/migration_toolkit/54.0.0/images/EDB_logo.png differ diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/building_toolkit.properties.png b/product_docs/docs/migration_toolkit/54.0.0/images/building_toolkit.properties.png new file mode 100755 index 00000000000..6d48081fd04 Binary files /dev/null and b/product_docs/docs/migration_toolkit/54.0.0/images/building_toolkit.properties.png differ diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/edb_logo.svg b/product_docs/docs/migration_toolkit/54.0.0/images/edb_logo.svg new file mode 100755 index 00000000000..f24d1dfefee --- /dev/null +++ b/product_docs/docs/migration_toolkit/54.0.0/images/edb_logo.svg @@ -0,0 +1,19 @@ + + + edb-logo-disc-dark + + + + \ No newline at end of file diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/favicon32.ico b/product_docs/docs/migration_toolkit/54.0.0/images/favicon32.ico new file mode 100755 index 00000000000..27871dc418f Binary files /dev/null and b/product_docs/docs/migration_toolkit/54.0.0/images/favicon32.ico differ diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_inst_complete.png b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_inst_complete.png new file mode 100755 index 00000000000..1fa1189c9cf Binary files /dev/null and b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_inst_complete.png differ diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_inst_dir.png b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_inst_dir.png new file mode 100755 index 00000000000..c5caba21d17 Binary files /dev/null and b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_inst_dir.png differ diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_license.png b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_license.png new file mode 100755 index 00000000000..47c6e24b6aa Binary files /dev/null and b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_license.png differ diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_mac_inst_complete.png b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_mac_inst_complete.png new file mode 100755 index 00000000000..f873fc41e83 Binary files /dev/null and b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_mac_inst_complete.png differ diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_mac_inst_dir.png b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_mac_inst_dir.png new file mode 100755 index 00000000000..f6deada4383 Binary files /dev/null and b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_mac_inst_dir.png differ diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_mac_license.png b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_mac_license.png new file mode 100755 index 00000000000..dc5af95334c Binary files /dev/null and b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_mac_license.png differ diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_mac_setup.png b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_mac_setup.png new file mode 100755 index 00000000000..d569a18332d Binary files /dev/null and b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_mac_setup.png differ diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_mac_start_inst.png b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_mac_start_inst.png new file mode 100755 index 00000000000..35ea672bf39 Binary files /dev/null and b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_mac_start_inst.png differ diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_categories.png b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_categories.png new file mode 100755 index 00000000000..916475165e9 Binary files /dev/null and b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_categories.png differ diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_download_complete.png b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_download_complete.png new file mode 100755 index 00000000000..698c52ccf1a Binary files /dev/null and b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_download_complete.png differ diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_downloading.png b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_downloading.png new file mode 100755 index 00000000000..5c50273e8e3 Binary files /dev/null and b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_downloading.png differ diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_downloading_dir.png b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_downloading_dir.png new file mode 100755 index 00000000000..1d59b380b1f Binary files /dev/null and b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_downloading_dir.png differ diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_inst_complete.png b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_inst_complete.png new file mode 100755 index 00000000000..3e50229143d Binary files /dev/null and b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_inst_complete.png differ diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_password.png b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_password.png new file mode 100755 index 00000000000..6216a99aa12 Binary files /dev/null and b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_password.png differ diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_selected_packages.png b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_selected_packages.png new file mode 100755 index 00000000000..37d73b7e3f9 Binary files /dev/null and b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_selected_packages.png differ diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_welcome.png b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_welcome.png new file mode 100755 index 00000000000..594742c2251 Binary files /dev/null and b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_sbp_welcome.png differ diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_setup.png b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_setup.png new file mode 100755 index 00000000000..a056bfe2a48 Binary files /dev/null and b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_setup.png differ diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_start_inst.png b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_start_inst.png new file mode 100755 index 00000000000..8f12c6a75af Binary files /dev/null and b/product_docs/docs/migration_toolkit/54.0.0/images/installing_mtk_start_inst.png differ diff --git a/product_docs/docs/migration_toolkit/54.0.0/images/placeholder.png b/product_docs/docs/migration_toolkit/54.0.0/images/placeholder.png new file mode 100755 index 00000000000..b83a03f80c5 Binary files /dev/null and b/product_docs/docs/migration_toolkit/54.0.0/images/placeholder.png differ diff --git a/product_docs/docs/pem/7.16/images/BART_backup_restore_advanced.png b/product_docs/docs/pem/7.16/images/BART_backup_restore_advanced.png new file mode 100644 index 00000000000..0ec9f6453a7 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/BART_backup_restore_advanced.png differ diff --git a/product_docs/docs/pem/7.16/images/BART_backup_restore_general.png b/product_docs/docs/pem/7.16/images/BART_backup_restore_general.png new file mode 100644 index 00000000000..018304908ac Binary files /dev/null and b/product_docs/docs/pem/7.16/images/BART_backup_restore_general.png differ diff --git a/product_docs/docs/pem/7.16/images/BART_backup_restore_notifications.png b/product_docs/docs/pem/7.16/images/BART_backup_restore_notifications.png new file mode 100644 index 00000000000..a1ff81c6535 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/BART_backup_restore_notifications.png differ diff --git a/product_docs/docs/pem/7.16/images/BART_backup_scheduler_general.png b/product_docs/docs/pem/7.16/images/BART_backup_scheduler_general.png new file mode 100644 index 00000000000..d6b79a16f59 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/BART_backup_scheduler_general.png differ diff --git a/product_docs/docs/pem/7.16/images/BART_backup_scheduler_schedule_general.png b/product_docs/docs/pem/7.16/images/BART_backup_scheduler_schedule_general.png new file mode 100755 index 00000000000..feba53b372d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/BART_backup_scheduler_schedule_general.png differ diff --git a/product_docs/docs/pem/7.16/images/BART_backup_scheduler_schedule_notifications.png b/product_docs/docs/pem/7.16/images/BART_backup_scheduler_schedule_notifications.png new file mode 100755 index 00000000000..d83ad744046 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/BART_backup_scheduler_schedule_notifications.png differ diff --git a/product_docs/docs/pem/7.16/images/BART_backup_scheduler_schedule_repeat.png b/product_docs/docs/pem/7.16/images/BART_backup_scheduler_schedule_repeat.png new file mode 100755 index 00000000000..ed43ce38872 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/BART_backup_scheduler_schedule_repeat.png differ diff --git a/product_docs/docs/pem/7.16/images/BART_obsolete_backup_scheduler_general.png b/product_docs/docs/pem/7.16/images/BART_obsolete_backup_scheduler_general.png new file mode 100644 index 00000000000..819554efc3d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/BART_obsolete_backup_scheduler_general.png differ diff --git a/product_docs/docs/pem/7.16/images/BART_obsolete_backup_scheduler_repeat.png b/product_docs/docs/pem/7.16/images/BART_obsolete_backup_scheduler_repeat.png new file mode 100644 index 00000000000..4dd4f8ff46f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/BART_obsolete_backup_scheduler_repeat.png differ diff --git a/product_docs/docs/pem/7.16/images/EDB_audit_config_probe.png b/product_docs/docs/pem/7.16/images/EDB_audit_config_probe.png new file mode 100755 index 00000000000..f998d926b51 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/EDB_audit_config_probe.png differ diff --git a/product_docs/docs/pem/7.16/images/EDB_logo.png b/product_docs/docs/pem/7.16/images/EDB_logo.png new file mode 100644 index 00000000000..56aa6750797 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/EDB_logo.png differ diff --git a/product_docs/docs/pem/7.16/images/EPAS_instance.png b/product_docs/docs/pem/7.16/images/EPAS_instance.png new file mode 100755 index 00000000000..6cce93d59b6 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/EPAS_instance.png differ diff --git a/product_docs/docs/pem/7.16/images/add_restore_point.png b/product_docs/docs/pem/7.16/images/add_restore_point.png new file mode 100644 index 00000000000..7516be8c68b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/add_restore_point.png differ diff --git a/product_docs/docs/pem/7.16/images/aggregate_icon.png b/product_docs/docs/pem/7.16/images/aggregate_icon.png new file mode 100644 index 00000000000..0c9e93840e4 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/aggregate_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/alert_copy.png b/product_docs/docs/pem/7.16/images/alert_copy.png new file mode 100755 index 00000000000..a3d0afb15b9 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/alert_copy.png differ diff --git a/product_docs/docs/pem/7.16/images/alert_details.png b/product_docs/docs/pem/7.16/images/alert_details.png new file mode 100755 index 00000000000..d4778b72195 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/alert_details.png differ diff --git a/product_docs/docs/pem/7.16/images/alert_errors_table.png b/product_docs/docs/pem/7.16/images/alert_errors_table.png new file mode 100644 index 00000000000..284ab434cc3 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/alert_errors_table.png differ diff --git a/product_docs/docs/pem/7.16/images/alert_templates_tab.png b/product_docs/docs/pem/7.16/images/alert_templates_tab.png new file mode 100755 index 00000000000..7eb57f8cd69 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/alert_templates_tab.png differ diff --git a/product_docs/docs/pem/7.16/images/alerting_define_new_alert.png b/product_docs/docs/pem/7.16/images/alerting_define_new_alert.png new file mode 100755 index 00000000000..c63ee93bda7 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/alerting_define_new_alert.png differ diff --git a/product_docs/docs/pem/7.16/images/alerting_define_notification.png b/product_docs/docs/pem/7.16/images/alerting_define_notification.png new file mode 100644 index 00000000000..9dcae41afbd Binary files /dev/null and b/product_docs/docs/pem/7.16/images/alerting_define_notification.png differ diff --git a/product_docs/docs/pem/7.16/images/alerting_define_notification_nagios.png b/product_docs/docs/pem/7.16/images/alerting_define_notification_nagios.png new file mode 100644 index 00000000000..c1fdd182cf9 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/alerting_define_notification_nagios.png differ diff --git a/product_docs/docs/pem/7.16/images/alerting_define_notification_snmp.png b/product_docs/docs/pem/7.16/images/alerting_define_notification_snmp.png new file mode 100644 index 00000000000..adf46d54e03 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/alerting_define_notification_snmp.png differ diff --git a/product_docs/docs/pem/7.16/images/alerting_define_notification_webhook.png b/product_docs/docs/pem/7.16/images/alerting_define_notification_webhook.png new file mode 100644 index 00000000000..09bf214920a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/alerting_define_notification_webhook.png differ diff --git a/product_docs/docs/pem/7.16/images/alerting_define_script_execution.png b/product_docs/docs/pem/7.16/images/alerting_define_script_execution.png new file mode 100644 index 00000000000..9a7cee75dd5 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/alerting_define_script_execution.png differ diff --git a/product_docs/docs/pem/7.16/images/alerting_example_general.png b/product_docs/docs/pem/7.16/images/alerting_example_general.png new file mode 100644 index 00000000000..348ffdc3bff Binary files /dev/null and b/product_docs/docs/pem/7.16/images/alerting_example_general.png differ diff --git a/product_docs/docs/pem/7.16/images/alerting_example_notification.png b/product_docs/docs/pem/7.16/images/alerting_example_notification.png new file mode 100644 index 00000000000..f40b0b1ff73 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/alerting_example_notification.png differ diff --git a/product_docs/docs/pem/7.16/images/alerting_example_script_execution.png b/product_docs/docs/pem/7.16/images/alerting_example_script_execution.png new file mode 100644 index 00000000000..7fa01c62808 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/alerting_example_script_execution.png differ diff --git a/product_docs/docs/pem/7.16/images/alerting_manage_alerts.png b/product_docs/docs/pem/7.16/images/alerting_manage_alerts.png new file mode 100644 index 00000000000..9b3a56f92d3 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/alerting_manage_alerts.png differ diff --git a/product_docs/docs/pem/7.16/images/alerting_manage_alerts_delete.png b/product_docs/docs/pem/7.16/images/alerting_manage_alerts_delete.png new file mode 100755 index 00000000000..3452ea514b5 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/alerting_manage_alerts_delete.png differ diff --git a/product_docs/docs/pem/7.16/images/alerting_manage_alerts_table.png b/product_docs/docs/pem/7.16/images/alerting_manage_alerts_table.png new file mode 100755 index 00000000000..745c97e0dbe Binary files /dev/null and b/product_docs/docs/pem/7.16/images/alerting_manage_alerts_table.png differ diff --git a/product_docs/docs/pem/7.16/images/alerts_customize_chart.png b/product_docs/docs/pem/7.16/images/alerts_customize_chart.png new file mode 100644 index 00000000000..18b0b033347 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/alerts_customize_chart.png differ diff --git a/product_docs/docs/pem/7.16/images/alerts_customize_table.png b/product_docs/docs/pem/7.16/images/alerts_customize_table.png new file mode 100644 index 00000000000..4f645ab809a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/alerts_customize_table.png differ diff --git a/product_docs/docs/pem/7.16/images/alerts_dashboard.png b/product_docs/docs/pem/7.16/images/alerts_dashboard.png new file mode 100755 index 00000000000..08bfe1e0e65 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/alerts_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/images/alerts_status_table.png b/product_docs/docs/pem/7.16/images/alerts_status_table.png new file mode 100755 index 00000000000..b7fc87666df Binary files /dev/null and b/product_docs/docs/pem/7.16/images/alerts_status_table.png differ diff --git a/product_docs/docs/pem/7.16/images/anti_join_icon.png b/product_docs/docs/pem/7.16/images/anti_join_icon.png new file mode 100644 index 00000000000..3dae5dd521f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/anti_join_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/append_icon.png b/product_docs/docs/pem/7.16/images/append_icon.png new file mode 100644 index 00000000000..e08b0f83abd Binary files /dev/null and b/product_docs/docs/pem/7.16/images/append_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/ark_connect_connection.png b/product_docs/docs/pem/7.16/images/ark_connect_connection.png new file mode 100644 index 00000000000..347076ea1c9 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/ark_connect_connection.png differ diff --git a/product_docs/docs/pem/7.16/images/ark_connect_general.png b/product_docs/docs/pem/7.16/images/ark_connect_general.png new file mode 100644 index 00000000000..83e9f999e2f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/ark_connect_general.png differ diff --git a/product_docs/docs/pem/7.16/images/audit_log_analysis_dashboard.png b/product_docs/docs/pem/7.16/images/audit_log_analysis_dashboard.png new file mode 100755 index 00000000000..29e623ac40b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/audit_log_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/images/audit_log_analysis_filter.png b/product_docs/docs/pem/7.16/images/audit_log_analysis_filter.png new file mode 100755 index 00000000000..cd744ba5c95 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/audit_log_analysis_filter.png differ diff --git a/product_docs/docs/pem/7.16/images/audit_manager_config1.png b/product_docs/docs/pem/7.16/images/audit_manager_config1.png new file mode 100755 index 00000000000..f8e48ea6e91 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/audit_manager_config1.png differ diff --git a/product_docs/docs/pem/7.16/images/audit_manager_config2.png b/product_docs/docs/pem/7.16/images/audit_manager_config2.png new file mode 100755 index 00000000000..1755b4a46ad Binary files /dev/null and b/product_docs/docs/pem/7.16/images/audit_manager_config2.png differ diff --git a/product_docs/docs/pem/7.16/images/audit_manager_finish.png b/product_docs/docs/pem/7.16/images/audit_manager_finish.png new file mode 100755 index 00000000000..e452d7f1f74 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/audit_manager_finish.png differ diff --git a/product_docs/docs/pem/7.16/images/audit_manager_intro.png b/product_docs/docs/pem/7.16/images/audit_manager_intro.png new file mode 100755 index 00000000000..6a3f3126912 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/audit_manager_intro.png differ diff --git a/product_docs/docs/pem/7.16/images/audit_manager_servers.png b/product_docs/docs/pem/7.16/images/audit_manager_servers.png new file mode 100755 index 00000000000..b624309cfc8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/audit_manager_servers.png differ diff --git a/product_docs/docs/pem/7.16/images/auto_discovery.png b/product_docs/docs/pem/7.16/images/auto_discovery.png new file mode 100755 index 00000000000..b9d3c20e6b3 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/auto_discovery.png differ diff --git a/product_docs/docs/pem/7.16/images/auto_discovery_example.png b/product_docs/docs/pem/7.16/images/auto_discovery_example.png new file mode 100644 index 00000000000..2e97701e748 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/auto_discovery_example.png differ diff --git a/product_docs/docs/pem/7.16/images/backup_disable.png b/product_docs/docs/pem/7.16/images/backup_disable.png new file mode 100644 index 00000000000..0ed6d253021 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/backup_disable.png differ diff --git a/product_docs/docs/pem/7.16/images/backup_do_not_save.png b/product_docs/docs/pem/7.16/images/backup_do_not_save.png new file mode 100644 index 00000000000..fa011b6f990 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/backup_do_not_save.png differ diff --git a/product_docs/docs/pem/7.16/images/backup_general.png b/product_docs/docs/pem/7.16/images/backup_general.png new file mode 100644 index 00000000000..fdf3dc9da34 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/backup_general.png differ diff --git a/product_docs/docs/pem/7.16/images/backup_globals_general.png b/product_docs/docs/pem/7.16/images/backup_globals_general.png new file mode 100644 index 00000000000..5c6fbe7e00f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/backup_globals_general.png differ diff --git a/product_docs/docs/pem/7.16/images/backup_globals_messages.png b/product_docs/docs/pem/7.16/images/backup_globals_messages.png new file mode 100644 index 00000000000..c976dd6434f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/backup_globals_messages.png differ diff --git a/product_docs/docs/pem/7.16/images/backup_globals_process_watcher.png b/product_docs/docs/pem/7.16/images/backup_globals_process_watcher.png new file mode 100644 index 00000000000..2003cc4a805 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/backup_globals_process_watcher.png differ diff --git a/product_docs/docs/pem/7.16/images/backup_messages.png b/product_docs/docs/pem/7.16/images/backup_messages.png new file mode 100644 index 00000000000..a6b08ed6815 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/backup_messages.png differ diff --git a/product_docs/docs/pem/7.16/images/backup_miscellaneous.png b/product_docs/docs/pem/7.16/images/backup_miscellaneous.png new file mode 100644 index 00000000000..957fe6ed826 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/backup_miscellaneous.png differ diff --git a/product_docs/docs/pem/7.16/images/backup_objects.png b/product_docs/docs/pem/7.16/images/backup_objects.png new file mode 100644 index 00000000000..77d477c782c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/backup_objects.png differ diff --git a/product_docs/docs/pem/7.16/images/backup_process_watcher.png b/product_docs/docs/pem/7.16/images/backup_process_watcher.png new file mode 100644 index 00000000000..027b3cf9397 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/backup_process_watcher.png differ diff --git a/product_docs/docs/pem/7.16/images/backup_queries.png b/product_docs/docs/pem/7.16/images/backup_queries.png new file mode 100644 index 00000000000..e00e4ac00be Binary files /dev/null and b/product_docs/docs/pem/7.16/images/backup_queries.png differ diff --git a/product_docs/docs/pem/7.16/images/backup_sections.png b/product_docs/docs/pem/7.16/images/backup_sections.png new file mode 100644 index 00000000000..b9cc431be18 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/backup_sections.png differ diff --git a/product_docs/docs/pem/7.16/images/backup_server_disable.png b/product_docs/docs/pem/7.16/images/backup_server_disable.png new file mode 100644 index 00000000000..fc909fbb3d6 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/backup_server_disable.png differ diff --git a/product_docs/docs/pem/7.16/images/backup_server_do_not_save.png b/product_docs/docs/pem/7.16/images/backup_server_do_not_save.png new file mode 100644 index 00000000000..58623bcdf72 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/backup_server_do_not_save.png differ diff --git a/product_docs/docs/pem/7.16/images/backup_server_general.png b/product_docs/docs/pem/7.16/images/backup_server_general.png new file mode 100644 index 00000000000..83949f03a83 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/backup_server_general.png differ diff --git a/product_docs/docs/pem/7.16/images/backup_server_messages.png b/product_docs/docs/pem/7.16/images/backup_server_messages.png new file mode 100644 index 00000000000..226c3a627bb Binary files /dev/null and b/product_docs/docs/pem/7.16/images/backup_server_messages.png differ diff --git a/product_docs/docs/pem/7.16/images/backup_server_miscellaneous.png b/product_docs/docs/pem/7.16/images/backup_server_miscellaneous.png new file mode 100644 index 00000000000..8055bc0ddb1 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/backup_server_miscellaneous.png differ diff --git a/product_docs/docs/pem/7.16/images/backup_server_objects.png b/product_docs/docs/pem/7.16/images/backup_server_objects.png new file mode 100644 index 00000000000..292c18a2544 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/backup_server_objects.png differ diff --git a/product_docs/docs/pem/7.16/images/backup_server_process_watcher.png b/product_docs/docs/pem/7.16/images/backup_server_process_watcher.png new file mode 100644 index 00000000000..a77ee4bf080 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/backup_server_process_watcher.png differ diff --git a/product_docs/docs/pem/7.16/images/backup_server_queries.png b/product_docs/docs/pem/7.16/images/backup_server_queries.png new file mode 100644 index 00000000000..c9f935c3968 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/backup_server_queries.png differ diff --git a/product_docs/docs/pem/7.16/images/bart_backup_dashboard.png b/product_docs/docs/pem/7.16/images/bart_backup_dashboard.png new file mode 100644 index 00000000000..88f37e2317a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/bart_backup_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/images/bart_backup_dialog_general.png b/product_docs/docs/pem/7.16/images/bart_backup_dialog_general.png new file mode 100644 index 00000000000..f7cd2875858 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/bart_backup_dialog_general.png differ diff --git a/product_docs/docs/pem/7.16/images/bart_backup_dialog_notifications.png b/product_docs/docs/pem/7.16/images/bart_backup_dialog_notifications.png new file mode 100644 index 00000000000..a09abd2b8bf Binary files /dev/null and b/product_docs/docs/pem/7.16/images/bart_backup_dialog_notifications.png differ diff --git a/product_docs/docs/pem/7.16/images/bitmap_heap_icon.png b/product_docs/docs/pem/7.16/images/bitmap_heap_icon.png new file mode 100644 index 00000000000..45877f8f7de Binary files /dev/null and b/product_docs/docs/pem/7.16/images/bitmap_heap_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/bitmap_index_icon.png b/product_docs/docs/pem/7.16/images/bitmap_index_icon.png new file mode 100644 index 00000000000..9f5d3aac39f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/bitmap_index_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/capacity_manager_add_metric.png b/product_docs/docs/pem/7.16/images/capacity_manager_add_metric.png new file mode 100644 index 00000000000..ed2ceb6ba3c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/capacity_manager_add_metric.png differ diff --git a/product_docs/docs/pem/7.16/images/capacity_manager_metrics.png b/product_docs/docs/pem/7.16/images/capacity_manager_metrics.png new file mode 100755 index 00000000000..5cd344e107c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/capacity_manager_metrics.png differ diff --git a/product_docs/docs/pem/7.16/images/capacity_manager_opens.png b/product_docs/docs/pem/7.16/images/capacity_manager_opens.png new file mode 100755 index 00000000000..d0441ce14db Binary files /dev/null and b/product_docs/docs/pem/7.16/images/capacity_manager_opens.png differ diff --git a/product_docs/docs/pem/7.16/images/capacity_manager_options.png b/product_docs/docs/pem/7.16/images/capacity_manager_options.png new file mode 100755 index 00000000000..024e25b4695 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/capacity_manager_options.png differ diff --git a/product_docs/docs/pem/7.16/images/capacity_manager_report.png b/product_docs/docs/pem/7.16/images/capacity_manager_report.png new file mode 100755 index 00000000000..142ad1274c4 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/capacity_manager_report.png differ diff --git a/product_docs/docs/pem/7.16/images/cast_definition.png b/product_docs/docs/pem/7.16/images/cast_definition.png new file mode 100644 index 00000000000..33450261a85 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/cast_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/cast_general.png b/product_docs/docs/pem/7.16/images/cast_general.png new file mode 100644 index 00000000000..e41ed38c251 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/cast_general.png differ diff --git a/product_docs/docs/pem/7.16/images/cast_sql.png b/product_docs/docs/pem/7.16/images/cast_sql.png new file mode 100644 index 00000000000..607fdec0d28 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/cast_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/ce_error_hba.png b/product_docs/docs/pem/7.16/images/ce_error_hba.png new file mode 100644 index 00000000000..a448646c8a2 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/ce_error_hba.png differ diff --git a/product_docs/docs/pem/7.16/images/ce_not_running.png b/product_docs/docs/pem/7.16/images/ce_not_running.png new file mode 100644 index 00000000000..fee92b036f4 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/ce_not_running.png differ diff --git a/product_docs/docs/pem/7.16/images/ce_password_failed.png b/product_docs/docs/pem/7.16/images/ce_password_failed.png new file mode 100644 index 00000000000..112e67ab5af Binary files /dev/null and b/product_docs/docs/pem/7.16/images/ce_password_failed.png differ diff --git a/product_docs/docs/pem/7.16/images/ce_timeout.png b/product_docs/docs/pem/7.16/images/ce_timeout.png new file mode 100644 index 00000000000..b0facbdd9c9 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/ce_timeout.png differ diff --git a/product_docs/docs/pem/7.16/images/chart_icons.png b/product_docs/docs/pem/7.16/images/chart_icons.png new file mode 100755 index 00000000000..ea5b6ed8e41 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/chart_icons.png differ diff --git a/product_docs/docs/pem/7.16/images/check_definition.png b/product_docs/docs/pem/7.16/images/check_definition.png new file mode 100644 index 00000000000..ae7bc9544df Binary files /dev/null and b/product_docs/docs/pem/7.16/images/check_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/check_general.png b/product_docs/docs/pem/7.16/images/check_general.png new file mode 100644 index 00000000000..b99d2727071 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/check_general.png differ diff --git a/product_docs/docs/pem/7.16/images/check_sql.png b/product_docs/docs/pem/7.16/images/check_sql.png new file mode 100644 index 00000000000..30adc5d16a4 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/check_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/collation_definition.png b/product_docs/docs/pem/7.16/images/collation_definition.png new file mode 100644 index 00000000000..33917464b69 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/collation_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/collation_general.png b/product_docs/docs/pem/7.16/images/collation_general.png new file mode 100644 index 00000000000..97c58dc2464 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/collation_general.png differ diff --git a/product_docs/docs/pem/7.16/images/collation_sql.png b/product_docs/docs/pem/7.16/images/collation_sql.png new file mode 100644 index 00000000000..bc83e84c2fb Binary files /dev/null and b/product_docs/docs/pem/7.16/images/collation_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/column_constraint_generated.png b/product_docs/docs/pem/7.16/images/column_constraint_generated.png new file mode 100644 index 00000000000..ad09cb644f8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/column_constraint_generated.png differ diff --git a/product_docs/docs/pem/7.16/images/column_constraint_identity.png b/product_docs/docs/pem/7.16/images/column_constraint_identity.png new file mode 100644 index 00000000000..02b123ce9c8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/column_constraint_identity.png differ diff --git a/product_docs/docs/pem/7.16/images/column_constraints.png b/product_docs/docs/pem/7.16/images/column_constraints.png new file mode 100644 index 00000000000..708a80fc2af Binary files /dev/null and b/product_docs/docs/pem/7.16/images/column_constraints.png differ diff --git a/product_docs/docs/pem/7.16/images/column_definition.png b/product_docs/docs/pem/7.16/images/column_definition.png new file mode 100644 index 00000000000..d936d32fc0f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/column_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/column_general.png b/product_docs/docs/pem/7.16/images/column_general.png new file mode 100644 index 00000000000..b7f84dd3142 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/column_general.png differ diff --git a/product_docs/docs/pem/7.16/images/column_security.png b/product_docs/docs/pem/7.16/images/column_security.png new file mode 100644 index 00000000000..403eba7829b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/column_security.png differ diff --git a/product_docs/docs/pem/7.16/images/column_sql.png b/product_docs/docs/pem/7.16/images/column_sql.png new file mode 100644 index 00000000000..b434cf5fcba Binary files /dev/null and b/product_docs/docs/pem/7.16/images/column_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/column_variables.png b/product_docs/docs/pem/7.16/images/column_variables.png new file mode 100644 index 00000000000..6d25f0f6944 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/column_variables.png differ diff --git a/product_docs/docs/pem/7.16/images/compound_trigger_code.png b/product_docs/docs/pem/7.16/images/compound_trigger_code.png new file mode 100644 index 00000000000..d34da26c774 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/compound_trigger_code.png differ diff --git a/product_docs/docs/pem/7.16/images/compound_trigger_events.png b/product_docs/docs/pem/7.16/images/compound_trigger_events.png new file mode 100644 index 00000000000..cca71b7881d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/compound_trigger_events.png differ diff --git a/product_docs/docs/pem/7.16/images/compound_trigger_general.png b/product_docs/docs/pem/7.16/images/compound_trigger_general.png new file mode 100644 index 00000000000..5323076d72f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/compound_trigger_general.png differ diff --git a/product_docs/docs/pem/7.16/images/compound_trigger_general_enabled.png b/product_docs/docs/pem/7.16/images/compound_trigger_general_enabled.png new file mode 100644 index 00000000000..d6c42508268 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/compound_trigger_general_enabled.png differ diff --git a/product_docs/docs/pem/7.16/images/compound_trigger_sql.png b/product_docs/docs/pem/7.16/images/compound_trigger_sql.png new file mode 100644 index 00000000000..618a2009af1 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/compound_trigger_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/connect_pem_agent.png b/product_docs/docs/pem/7.16/images/connect_pem_agent.png new file mode 100644 index 00000000000..6592d6456b0 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/connect_pem_agent.png differ diff --git a/product_docs/docs/pem/7.16/images/connect_to_server.png b/product_docs/docs/pem/7.16/images/connect_to_server.png new file mode 100644 index 00000000000..3ee68c7dc04 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/connect_to_server.png differ diff --git a/product_docs/docs/pem/7.16/images/copy_probe_config.png b/product_docs/docs/pem/7.16/images/copy_probe_config.png new file mode 100755 index 00000000000..a12891c71f8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/copy_probe_config.png differ diff --git a/product_docs/docs/pem/7.16/images/core_usage_report.png b/product_docs/docs/pem/7.16/images/core_usage_report.png new file mode 100755 index 00000000000..f70e406ef57 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/core_usage_report.png differ diff --git a/product_docs/docs/pem/7.16/images/create_BART_server_general.png b/product_docs/docs/pem/7.16/images/create_BART_server_general.png new file mode 100755 index 00000000000..27c2db395d7 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/create_BART_server_general.png differ diff --git a/product_docs/docs/pem/7.16/images/create_BART_server_misc.png b/product_docs/docs/pem/7.16/images/create_BART_server_misc.png new file mode 100644 index 00000000000..15aa959f0d8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/create_BART_server_misc.png differ diff --git a/product_docs/docs/pem/7.16/images/create_group.png b/product_docs/docs/pem/7.16/images/create_group.png new file mode 100644 index 00000000000..a4eb003665c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/create_group.png differ diff --git a/product_docs/docs/pem/7.16/images/create_pem_jobs_general.png b/product_docs/docs/pem/7.16/images/create_pem_jobs_general.png new file mode 100755 index 00000000000..5cd368de766 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/create_pem_jobs_general.png differ diff --git a/product_docs/docs/pem/7.16/images/create_pem_jobs_notifications.png b/product_docs/docs/pem/7.16/images/create_pem_jobs_notifications.png new file mode 100755 index 00000000000..3f2bf509cc1 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/create_pem_jobs_notifications.png differ diff --git a/product_docs/docs/pem/7.16/images/create_pem_jobs_schedules.png b/product_docs/docs/pem/7.16/images/create_pem_jobs_schedules.png new file mode 100755 index 00000000000..94941f233bb Binary files /dev/null and b/product_docs/docs/pem/7.16/images/create_pem_jobs_schedules.png differ diff --git a/product_docs/docs/pem/7.16/images/create_pem_jobs_schedules_exceptions.png b/product_docs/docs/pem/7.16/images/create_pem_jobs_schedules_exceptions.png new file mode 100755 index 00000000000..64ebdf754ab Binary files /dev/null and b/product_docs/docs/pem/7.16/images/create_pem_jobs_schedules_exceptions.png differ diff --git a/product_docs/docs/pem/7.16/images/create_pem_jobs_schedules_repeat.png b/product_docs/docs/pem/7.16/images/create_pem_jobs_schedules_repeat.png new file mode 100755 index 00000000000..0fd128f2703 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/create_pem_jobs_schedules_repeat.png differ diff --git a/product_docs/docs/pem/7.16/images/create_pem_jobs_sql.png b/product_docs/docs/pem/7.16/images/create_pem_jobs_sql.png new file mode 100755 index 00000000000..c530ff90585 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/create_pem_jobs_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/create_pem_jobs_steps.png b/product_docs/docs/pem/7.16/images/create_pem_jobs_steps.png new file mode 100755 index 00000000000..bffc53d6a4b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/create_pem_jobs_steps.png differ diff --git a/product_docs/docs/pem/7.16/images/create_pem_jobs_steps_definition.png b/product_docs/docs/pem/7.16/images/create_pem_jobs_steps_definition.png new file mode 100755 index 00000000000..2a441eb84c6 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/create_pem_jobs_steps_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/create_pem_jobs_steps_definition_code.png b/product_docs/docs/pem/7.16/images/create_pem_jobs_steps_definition_code.png new file mode 100755 index 00000000000..ec714c49463 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/create_pem_jobs_steps_definition_code.png differ diff --git a/product_docs/docs/pem/7.16/images/create_server_advanced_tab.png b/product_docs/docs/pem/7.16/images/create_server_advanced_tab.png new file mode 100755 index 00000000000..a125a491bd1 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/create_server_advanced_tab.png differ diff --git a/product_docs/docs/pem/7.16/images/create_server_bart_general.png b/product_docs/docs/pem/7.16/images/create_server_bart_general.png new file mode 100755 index 00000000000..ec46565841d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/create_server_bart_general.png differ diff --git a/product_docs/docs/pem/7.16/images/create_server_bart_misc.png b/product_docs/docs/pem/7.16/images/create_server_bart_misc.png new file mode 100755 index 00000000000..3fcd4e5b838 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/create_server_bart_misc.png differ diff --git a/product_docs/docs/pem/7.16/images/create_server_bart_tab.png b/product_docs/docs/pem/7.16/images/create_server_bart_tab.png new file mode 100755 index 00000000000..4e9d37c54da Binary files /dev/null and b/product_docs/docs/pem/7.16/images/create_server_bart_tab.png differ diff --git a/product_docs/docs/pem/7.16/images/create_server_connection_tab.png b/product_docs/docs/pem/7.16/images/create_server_connection_tab.png new file mode 100755 index 00000000000..32c1858f5c2 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/create_server_connection_tab.png differ diff --git a/product_docs/docs/pem/7.16/images/create_server_general_tab.png b/product_docs/docs/pem/7.16/images/create_server_general_tab.png new file mode 100755 index 00000000000..5e1b472a6e7 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/create_server_general_tab.png differ diff --git a/product_docs/docs/pem/7.16/images/create_server_pem_agent_tab.png b/product_docs/docs/pem/7.16/images/create_server_pem_agent_tab.png new file mode 100755 index 00000000000..4f3473db0d4 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/create_server_pem_agent_tab.png differ diff --git a/product_docs/docs/pem/7.16/images/create_server_pem_agent_tab_remote_monitoring.png b/product_docs/docs/pem/7.16/images/create_server_pem_agent_tab_remote_monitoring.png new file mode 100644 index 00000000000..2d0b957ecd5 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/create_server_pem_agent_tab_remote_monitoring.png differ diff --git a/product_docs/docs/pem/7.16/images/create_server_ssh_tunnel_tab.png b/product_docs/docs/pem/7.16/images/create_server_ssh_tunnel_tab.png new file mode 100755 index 00000000000..666bbec0658 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/create_server_ssh_tunnel_tab.png differ diff --git a/product_docs/docs/pem/7.16/images/create_server_ssl_tab.png b/product_docs/docs/pem/7.16/images/create_server_ssl_tab.png new file mode 100755 index 00000000000..98dc12ad55b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/create_server_ssl_tab.png differ diff --git a/product_docs/docs/pem/7.16/images/cte_scan_icon.png b/product_docs/docs/pem/7.16/images/cte_scan_icon.png new file mode 100644 index 00000000000..663635cc39d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/cte_scan_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/custom_dashboard_add_chart.png b/product_docs/docs/pem/7.16/images/custom_dashboard_add_chart.png new file mode 100644 index 00000000000..6b22d0b4c41 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/custom_dashboard_add_chart.png differ diff --git a/product_docs/docs/pem/7.16/images/custom_probes.png b/product_docs/docs/pem/7.16/images/custom_probes.png new file mode 100755 index 00000000000..e8f7fffebe8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/custom_probes.png differ diff --git a/product_docs/docs/pem/7.16/images/custom_probes_alt_code.png b/product_docs/docs/pem/7.16/images/custom_probes_alt_code.png new file mode 100755 index 00000000000..f7a60000689 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/custom_probes_alt_code.png differ diff --git a/product_docs/docs/pem/7.16/images/custom_probes_code.png b/product_docs/docs/pem/7.16/images/custom_probes_code.png new file mode 100755 index 00000000000..4d9a0e79b9b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/custom_probes_code.png differ diff --git a/product_docs/docs/pem/7.16/images/custom_probes_columns.png b/product_docs/docs/pem/7.16/images/custom_probes_columns.png new file mode 100755 index 00000000000..b2ebe7a7e2e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/custom_probes_columns.png differ diff --git a/product_docs/docs/pem/7.16/images/custom_probes_general.png b/product_docs/docs/pem/7.16/images/custom_probes_general.png new file mode 100755 index 00000000000..51e92e5f26c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/custom_probes_general.png differ diff --git a/product_docs/docs/pem/7.16/images/dashboard_alert_configure_dialogue.png b/product_docs/docs/pem/7.16/images/dashboard_alert_configure_dialogue.png new file mode 100644 index 00000000000..5cb9f31d37b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/dashboard_alert_configure_dialogue.png differ diff --git a/product_docs/docs/pem/7.16/images/dashboard_configuration.png b/product_docs/docs/pem/7.16/images/dashboard_configuration.png new file mode 100755 index 00000000000..1aa76732f39 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/dashboard_configuration.png differ diff --git a/product_docs/docs/pem/7.16/images/database_advanced.png b/product_docs/docs/pem/7.16/images/database_advanced.png new file mode 100644 index 00000000000..ef4d4e2e0b5 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/database_advanced.png differ diff --git a/product_docs/docs/pem/7.16/images/database_analysis_dashboard.png b/product_docs/docs/pem/7.16/images/database_analysis_dashboard.png new file mode 100644 index 00000000000..d3d20d3382e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/database_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/images/database_analysis_table.png b/product_docs/docs/pem/7.16/images/database_analysis_table.png new file mode 100644 index 00000000000..66602738f0a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/database_analysis_table.png differ diff --git a/product_docs/docs/pem/7.16/images/database_definition.png b/product_docs/docs/pem/7.16/images/database_definition.png new file mode 100644 index 00000000000..53257019789 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/database_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/database_general.png b/product_docs/docs/pem/7.16/images/database_general.png new file mode 100644 index 00000000000..2d9c7305f9d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/database_general.png differ diff --git a/product_docs/docs/pem/7.16/images/database_io_analysis.png b/product_docs/docs/pem/7.16/images/database_io_analysis.png new file mode 100644 index 00000000000..a9aaefaba1e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/database_io_analysis.png differ diff --git a/product_docs/docs/pem/7.16/images/database_parameters.png b/product_docs/docs/pem/7.16/images/database_parameters.png new file mode 100644 index 00000000000..56d4610272c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/database_parameters.png differ diff --git a/product_docs/docs/pem/7.16/images/database_security.png b/product_docs/docs/pem/7.16/images/database_security.png new file mode 100644 index 00000000000..7d1f759a30e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/database_security.png differ diff --git a/product_docs/docs/pem/7.16/images/database_sql.png b/product_docs/docs/pem/7.16/images/database_sql.png new file mode 100644 index 00000000000..ee9a5c70086 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/database_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/debug_error_message.png b/product_docs/docs/pem/7.16/images/debug_error_message.png new file mode 100644 index 00000000000..0e293a4e563 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/debug_error_message.png differ diff --git a/product_docs/docs/pem/7.16/images/debug_ic_step_in.png b/product_docs/docs/pem/7.16/images/debug_ic_step_in.png new file mode 100644 index 00000000000..efd9ad47cbf Binary files /dev/null and b/product_docs/docs/pem/7.16/images/debug_ic_step_in.png differ diff --git a/product_docs/docs/pem/7.16/images/debug_main.png b/product_docs/docs/pem/7.16/images/debug_main.png new file mode 100644 index 00000000000..1849389e61d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/debug_main.png differ diff --git a/product_docs/docs/pem/7.16/images/debug_params.png b/product_docs/docs/pem/7.16/images/debug_params.png new file mode 100644 index 00000000000..befb119e03d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/debug_params.png differ diff --git a/product_docs/docs/pem/7.16/images/debug_set_breakpoint.png b/product_docs/docs/pem/7.16/images/debug_set_breakpoint.png new file mode 100644 index 00000000000..58f5d618a35 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/debug_set_breakpoint.png differ diff --git a/product_docs/docs/pem/7.16/images/debug_stack.png b/product_docs/docs/pem/7.16/images/debug_stack.png new file mode 100644 index 00000000000..68eddfd44db Binary files /dev/null and b/product_docs/docs/pem/7.16/images/debug_stack.png differ diff --git a/product_docs/docs/pem/7.16/images/debug_step_in.png b/product_docs/docs/pem/7.16/images/debug_step_in.png new file mode 100644 index 00000000000..27a8ba04f9b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/debug_step_in.png differ diff --git a/product_docs/docs/pem/7.16/images/debug_toolbar.png b/product_docs/docs/pem/7.16/images/debug_toolbar.png new file mode 100644 index 00000000000..2b2883e3846 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/debug_toolbar.png differ diff --git a/product_docs/docs/pem/7.16/images/debug_variables.png b/product_docs/docs/pem/7.16/images/debug_variables.png new file mode 100644 index 00000000000..11ae80c41cf Binary files /dev/null and b/product_docs/docs/pem/7.16/images/debug_variables.png differ diff --git a/product_docs/docs/pem/7.16/images/define_ops_dashboard.png b/product_docs/docs/pem/7.16/images/define_ops_dashboard.png new file mode 100755 index 00000000000..dc54c495544 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/define_ops_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/images/delete.png b/product_docs/docs/pem/7.16/images/delete.png new file mode 100644 index 00000000000..e5936e8278a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/delete.png differ diff --git a/product_docs/docs/pem/7.16/images/delete_system_probe.png b/product_docs/docs/pem/7.16/images/delete_system_probe.png new file mode 100755 index 00000000000..2f0cf0131c8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/delete_system_probe.png differ diff --git a/product_docs/docs/pem/7.16/images/disconnect_server.png b/product_docs/docs/pem/7.16/images/disconnect_server.png new file mode 100644 index 00000000000..5fb79ee9a61 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/disconnect_server.png differ diff --git a/product_docs/docs/pem/7.16/images/domain_constraint_definition.png b/product_docs/docs/pem/7.16/images/domain_constraint_definition.png new file mode 100644 index 00000000000..905a7387eb2 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/domain_constraint_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/domain_constraint_general.png b/product_docs/docs/pem/7.16/images/domain_constraint_general.png new file mode 100644 index 00000000000..a5eedec4ecc Binary files /dev/null and b/product_docs/docs/pem/7.16/images/domain_constraint_general.png differ diff --git a/product_docs/docs/pem/7.16/images/domain_constraint_sql.png b/product_docs/docs/pem/7.16/images/domain_constraint_sql.png new file mode 100644 index 00000000000..8443cbf4495 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/domain_constraint_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/domain_constraints.png b/product_docs/docs/pem/7.16/images/domain_constraints.png new file mode 100644 index 00000000000..087168b9ee6 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/domain_constraints.png differ diff --git a/product_docs/docs/pem/7.16/images/domain_definition.png b/product_docs/docs/pem/7.16/images/domain_definition.png new file mode 100644 index 00000000000..005cc08bbb8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/domain_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/domain_general.png b/product_docs/docs/pem/7.16/images/domain_general.png new file mode 100644 index 00000000000..3c9372b6642 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/domain_general.png differ diff --git a/product_docs/docs/pem/7.16/images/domain_security.png b/product_docs/docs/pem/7.16/images/domain_security.png new file mode 100644 index 00000000000..bce71f9a947 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/domain_security.png differ diff --git a/product_docs/docs/pem/7.16/images/domain_sql.png b/product_docs/docs/pem/7.16/images/domain_sql.png new file mode 100644 index 00000000000..f7161da57ea Binary files /dev/null and b/product_docs/docs/pem/7.16/images/domain_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/download.png b/product_docs/docs/pem/7.16/images/download.png new file mode 100644 index 00000000000..b3efacc7460 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/download.png differ diff --git a/product_docs/docs/pem/7.16/images/edb_logo.svg b/product_docs/docs/pem/7.16/images/edb_logo.svg new file mode 100644 index 00000000000..f24d1dfefee --- /dev/null +++ b/product_docs/docs/pem/7.16/images/edb_logo.svg @@ -0,0 +1,19 @@ + + + edb-logo-disc-dark + + + + \ No newline at end of file diff --git a/product_docs/docs/pem/7.16/images/edit.png b/product_docs/docs/pem/7.16/images/edit.png new file mode 100644 index 00000000000..a52560bbf3e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/edit.png differ diff --git a/product_docs/docs/pem/7.16/images/editgrid.png b/product_docs/docs/pem/7.16/images/editgrid.png new file mode 100644 index 00000000000..83a61aa7325 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/editgrid.png differ diff --git a/product_docs/docs/pem/7.16/images/editgrid_filter_dialog.png b/product_docs/docs/pem/7.16/images/editgrid_filter_dialog.png new file mode 100644 index 00000000000..13ab5734ce5 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/editgrid_filter_dialog.png differ diff --git a/product_docs/docs/pem/7.16/images/editgrid_toolbar.png b/product_docs/docs/pem/7.16/images/editgrid_toolbar.png new file mode 100644 index 00000000000..fea4b6f5102 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/editgrid_toolbar.png differ diff --git a/product_docs/docs/pem/7.16/images/email_group_add.png b/product_docs/docs/pem/7.16/images/email_group_add.png new file mode 100755 index 00000000000..1b0080d0e4c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/email_group_add.png differ diff --git a/product_docs/docs/pem/7.16/images/email_group_delete.png b/product_docs/docs/pem/7.16/images/email_group_delete.png new file mode 100755 index 00000000000..7b4c980856a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/email_group_delete.png differ diff --git a/product_docs/docs/pem/7.16/images/email_groups_tab.png b/product_docs/docs/pem/7.16/images/email_groups_tab.png new file mode 100755 index 00000000000..95878829049 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/email_groups_tab.png differ diff --git a/product_docs/docs/pem/7.16/images/event_trigger_definition.png b/product_docs/docs/pem/7.16/images/event_trigger_definition.png new file mode 100644 index 00000000000..f662adeffed Binary files /dev/null and b/product_docs/docs/pem/7.16/images/event_trigger_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/event_trigger_general.png b/product_docs/docs/pem/7.16/images/event_trigger_general.png new file mode 100644 index 00000000000..4bd5741e705 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/event_trigger_general.png differ diff --git a/product_docs/docs/pem/7.16/images/event_trigger_security.png b/product_docs/docs/pem/7.16/images/event_trigger_security.png new file mode 100644 index 00000000000..9466d144398 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/event_trigger_security.png differ diff --git a/product_docs/docs/pem/7.16/images/event_trigger_sql.png b/product_docs/docs/pem/7.16/images/event_trigger_sql.png new file mode 100644 index 00000000000..0ddf4dd3c8c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/event_trigger_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/exclusion_constraint_columns.png b/product_docs/docs/pem/7.16/images/exclusion_constraint_columns.png new file mode 100644 index 00000000000..453cc815c7a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/exclusion_constraint_columns.png differ diff --git a/product_docs/docs/pem/7.16/images/exclusion_constraint_definition.png b/product_docs/docs/pem/7.16/images/exclusion_constraint_definition.png new file mode 100644 index 00000000000..cffaa9d8a0d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/exclusion_constraint_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/exclusion_constraint_general.png b/product_docs/docs/pem/7.16/images/exclusion_constraint_general.png new file mode 100644 index 00000000000..ef6012d0a24 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/exclusion_constraint_general.png differ diff --git a/product_docs/docs/pem/7.16/images/exclusion_constraint_sql.png b/product_docs/docs/pem/7.16/images/exclusion_constraint_sql.png new file mode 100644 index 00000000000..b770048e28f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/exclusion_constraint_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/extension_definition.png b/product_docs/docs/pem/7.16/images/extension_definition.png new file mode 100644 index 00000000000..e01e9990913 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/extension_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/extension_general.png b/product_docs/docs/pem/7.16/images/extension_general.png new file mode 100644 index 00000000000..c842b56507d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/extension_general.png differ diff --git a/product_docs/docs/pem/7.16/images/extension_sql.png b/product_docs/docs/pem/7.16/images/extension_sql.png new file mode 100644 index 00000000000..134e16eb3c7 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/extension_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/favicon32.ico b/product_docs/docs/pem/7.16/images/favicon32.ico new file mode 100644 index 00000000000..27871dc418f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/favicon32.ico differ diff --git a/product_docs/docs/pem/7.16/images/fm_cluster_status.png b/product_docs/docs/pem/7.16/images/fm_cluster_status.png new file mode 100644 index 00000000000..94cea98a084 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/fm_cluster_status.png differ diff --git a/product_docs/docs/pem/7.16/images/fm_job_result.png b/product_docs/docs/pem/7.16/images/fm_job_result.png new file mode 100755 index 00000000000..48db55c0f81 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/fm_job_result.png differ diff --git a/product_docs/docs/pem/7.16/images/fm_replace_primary.png b/product_docs/docs/pem/7.16/images/fm_replace_primary.png new file mode 100644 index 00000000000..54b364efaca Binary files /dev/null and b/product_docs/docs/pem/7.16/images/fm_replace_primary.png differ diff --git a/product_docs/docs/pem/7.16/images/fm_switchover_cluster.png b/product_docs/docs/pem/7.16/images/fm_switchover_cluster.png new file mode 100644 index 00000000000..a914ef34a0d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/fm_switchover_cluster.png differ diff --git a/product_docs/docs/pem/7.16/images/fm_switchover_job_result.png b/product_docs/docs/pem/7.16/images/fm_switchover_job_result.png new file mode 100755 index 00000000000..f8708c9b2ff Binary files /dev/null and b/product_docs/docs/pem/7.16/images/fm_switchover_job_result.png differ diff --git a/product_docs/docs/pem/7.16/images/folder.png b/product_docs/docs/pem/7.16/images/folder.png new file mode 100644 index 00000000000..473632c4631 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/folder.png differ diff --git a/product_docs/docs/pem/7.16/images/foreign_data_wrapper_definition.png b/product_docs/docs/pem/7.16/images/foreign_data_wrapper_definition.png new file mode 100644 index 00000000000..ec5482fd1fd Binary files /dev/null and b/product_docs/docs/pem/7.16/images/foreign_data_wrapper_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/foreign_data_wrapper_general.png b/product_docs/docs/pem/7.16/images/foreign_data_wrapper_general.png new file mode 100644 index 00000000000..bcccabb51e6 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/foreign_data_wrapper_general.png differ diff --git a/product_docs/docs/pem/7.16/images/foreign_data_wrapper_options.png b/product_docs/docs/pem/7.16/images/foreign_data_wrapper_options.png new file mode 100644 index 00000000000..eef9b3c8383 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/foreign_data_wrapper_options.png differ diff --git a/product_docs/docs/pem/7.16/images/foreign_data_wrapper_security.png b/product_docs/docs/pem/7.16/images/foreign_data_wrapper_security.png new file mode 100644 index 00000000000..711e7dfda58 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/foreign_data_wrapper_security.png differ diff --git a/product_docs/docs/pem/7.16/images/foreign_data_wrapper_sql.png b/product_docs/docs/pem/7.16/images/foreign_data_wrapper_sql.png new file mode 100644 index 00000000000..55fb41bdc20 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/foreign_data_wrapper_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/foreign_key_action.png b/product_docs/docs/pem/7.16/images/foreign_key_action.png new file mode 100644 index 00000000000..d64875b99f0 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/foreign_key_action.png differ diff --git a/product_docs/docs/pem/7.16/images/foreign_key_columns.png b/product_docs/docs/pem/7.16/images/foreign_key_columns.png new file mode 100644 index 00000000000..0ce3763e614 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/foreign_key_columns.png differ diff --git a/product_docs/docs/pem/7.16/images/foreign_key_definition.png b/product_docs/docs/pem/7.16/images/foreign_key_definition.png new file mode 100644 index 00000000000..bddd1f7ef27 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/foreign_key_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/foreign_key_general.png b/product_docs/docs/pem/7.16/images/foreign_key_general.png new file mode 100644 index 00000000000..a5b6bd43214 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/foreign_key_general.png differ diff --git a/product_docs/docs/pem/7.16/images/foreign_key_sql.png b/product_docs/docs/pem/7.16/images/foreign_key_sql.png new file mode 100644 index 00000000000..4ba03d7d0e3 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/foreign_key_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/foreign_server_definition.png b/product_docs/docs/pem/7.16/images/foreign_server_definition.png new file mode 100644 index 00000000000..c06c7435db4 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/foreign_server_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/foreign_server_general.png b/product_docs/docs/pem/7.16/images/foreign_server_general.png new file mode 100644 index 00000000000..30f448d3d03 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/foreign_server_general.png differ diff --git a/product_docs/docs/pem/7.16/images/foreign_server_options.png b/product_docs/docs/pem/7.16/images/foreign_server_options.png new file mode 100644 index 00000000000..bf193e709bc Binary files /dev/null and b/product_docs/docs/pem/7.16/images/foreign_server_options.png differ diff --git a/product_docs/docs/pem/7.16/images/foreign_server_security.png b/product_docs/docs/pem/7.16/images/foreign_server_security.png new file mode 100644 index 00000000000..4ec0fe17b57 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/foreign_server_security.png differ diff --git a/product_docs/docs/pem/7.16/images/foreign_server_sql.png b/product_docs/docs/pem/7.16/images/foreign_server_sql.png new file mode 100644 index 00000000000..03c78aacb70 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/foreign_server_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/foreign_table_columns.png b/product_docs/docs/pem/7.16/images/foreign_table_columns.png new file mode 100644 index 00000000000..eae14e1604b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/foreign_table_columns.png differ diff --git a/product_docs/docs/pem/7.16/images/foreign_table_constraints.png b/product_docs/docs/pem/7.16/images/foreign_table_constraints.png new file mode 100644 index 00000000000..992c769ff56 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/foreign_table_constraints.png differ diff --git a/product_docs/docs/pem/7.16/images/foreign_table_definition.png b/product_docs/docs/pem/7.16/images/foreign_table_definition.png new file mode 100644 index 00000000000..6d0182acde8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/foreign_table_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/foreign_table_general.png b/product_docs/docs/pem/7.16/images/foreign_table_general.png new file mode 100644 index 00000000000..5e85b60a0b2 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/foreign_table_general.png differ diff --git a/product_docs/docs/pem/7.16/images/foreign_table_options.png b/product_docs/docs/pem/7.16/images/foreign_table_options.png new file mode 100644 index 00000000000..37b5e4b7b36 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/foreign_table_options.png differ diff --git a/product_docs/docs/pem/7.16/images/foreign_table_security.png b/product_docs/docs/pem/7.16/images/foreign_table_security.png new file mode 100644 index 00000000000..ac7809658ef Binary files /dev/null and b/product_docs/docs/pem/7.16/images/foreign_table_security.png differ diff --git a/product_docs/docs/pem/7.16/images/foreign_table_sql.png b/product_docs/docs/pem/7.16/images/foreign_table_sql.png new file mode 100644 index 00000000000..e916f49e251 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/foreign_table_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/fts_configuration_definition.png b/product_docs/docs/pem/7.16/images/fts_configuration_definition.png new file mode 100644 index 00000000000..e524e63012e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/fts_configuration_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/fts_configuration_general.png b/product_docs/docs/pem/7.16/images/fts_configuration_general.png new file mode 100644 index 00000000000..f5cf4ee9c38 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/fts_configuration_general.png differ diff --git a/product_docs/docs/pem/7.16/images/fts_configuration_sql.png b/product_docs/docs/pem/7.16/images/fts_configuration_sql.png new file mode 100644 index 00000000000..eea6facd6a5 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/fts_configuration_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/fts_configuration_tokens.png b/product_docs/docs/pem/7.16/images/fts_configuration_tokens.png new file mode 100644 index 00000000000..79fd0bb3375 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/fts_configuration_tokens.png differ diff --git a/product_docs/docs/pem/7.16/images/fts_dictionary_definition.png b/product_docs/docs/pem/7.16/images/fts_dictionary_definition.png new file mode 100644 index 00000000000..47b572ca1df Binary files /dev/null and b/product_docs/docs/pem/7.16/images/fts_dictionary_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/fts_dictionary_general.png b/product_docs/docs/pem/7.16/images/fts_dictionary_general.png new file mode 100644 index 00000000000..cae7b6f8485 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/fts_dictionary_general.png differ diff --git a/product_docs/docs/pem/7.16/images/fts_dictionary_options.png b/product_docs/docs/pem/7.16/images/fts_dictionary_options.png new file mode 100644 index 00000000000..b0ca8381adf Binary files /dev/null and b/product_docs/docs/pem/7.16/images/fts_dictionary_options.png differ diff --git a/product_docs/docs/pem/7.16/images/fts_dictionary_sql.png b/product_docs/docs/pem/7.16/images/fts_dictionary_sql.png new file mode 100644 index 00000000000..5895913a50a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/fts_dictionary_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/fts_parser_definition.png b/product_docs/docs/pem/7.16/images/fts_parser_definition.png new file mode 100644 index 00000000000..b056c1c090c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/fts_parser_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/fts_parser_general.png b/product_docs/docs/pem/7.16/images/fts_parser_general.png new file mode 100644 index 00000000000..133f3283262 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/fts_parser_general.png differ diff --git a/product_docs/docs/pem/7.16/images/fts_parser_sql.png b/product_docs/docs/pem/7.16/images/fts_parser_sql.png new file mode 100644 index 00000000000..42f4bd95d1b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/fts_parser_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/fts_template_definition.png b/product_docs/docs/pem/7.16/images/fts_template_definition.png new file mode 100644 index 00000000000..79fbe50d230 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/fts_template_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/fts_template_general.png b/product_docs/docs/pem/7.16/images/fts_template_general.png new file mode 100644 index 00000000000..c625b6c9802 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/fts_template_general.png differ diff --git a/product_docs/docs/pem/7.16/images/fts_template_sql.png b/product_docs/docs/pem/7.16/images/fts_template_sql.png new file mode 100644 index 00000000000..e4bfe1b7dd8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/fts_template_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/function_arguments.png b/product_docs/docs/pem/7.16/images/function_arguments.png new file mode 100644 index 00000000000..299c84ab124 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/function_arguments.png differ diff --git a/product_docs/docs/pem/7.16/images/function_code.png b/product_docs/docs/pem/7.16/images/function_code.png new file mode 100644 index 00000000000..d3d37819da2 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/function_code.png differ diff --git a/product_docs/docs/pem/7.16/images/function_definition.png b/product_docs/docs/pem/7.16/images/function_definition.png new file mode 100644 index 00000000000..a78c6dc5e40 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/function_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/function_general.png b/product_docs/docs/pem/7.16/images/function_general.png new file mode 100644 index 00000000000..7a3a6e156dd Binary files /dev/null and b/product_docs/docs/pem/7.16/images/function_general.png differ diff --git a/product_docs/docs/pem/7.16/images/function_options.png b/product_docs/docs/pem/7.16/images/function_options.png new file mode 100644 index 00000000000..a85ccb4609c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/function_options.png differ diff --git a/product_docs/docs/pem/7.16/images/function_parameters.png b/product_docs/docs/pem/7.16/images/function_parameters.png new file mode 100644 index 00000000000..651cff36dfc Binary files /dev/null and b/product_docs/docs/pem/7.16/images/function_parameters.png differ diff --git a/product_docs/docs/pem/7.16/images/function_security.png b/product_docs/docs/pem/7.16/images/function_security.png new file mode 100644 index 00000000000..56440ad3349 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/function_security.png differ diff --git a/product_docs/docs/pem/7.16/images/function_sql.png b/product_docs/docs/pem/7.16/images/function_sql.png new file mode 100644 index 00000000000..ea275144bcf Binary files /dev/null and b/product_docs/docs/pem/7.16/images/function_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/geometry_viewer.png b/product_docs/docs/pem/7.16/images/geometry_viewer.png new file mode 100644 index 00000000000..1a06cfff0cf Binary files /dev/null and b/product_docs/docs/pem/7.16/images/geometry_viewer.png differ diff --git a/product_docs/docs/pem/7.16/images/geometry_viewer_property_table.png b/product_docs/docs/pem/7.16/images/geometry_viewer_property_table.png new file mode 100644 index 00000000000..279e18f327c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/geometry_viewer_property_table.png differ diff --git a/product_docs/docs/pem/7.16/images/global_overview.png b/product_docs/docs/pem/7.16/images/global_overview.png new file mode 100755 index 00000000000..1878087fa6a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/global_overview.png differ diff --git a/product_docs/docs/pem/7.16/images/grant_wizard_step1.png b/product_docs/docs/pem/7.16/images/grant_wizard_step1.png new file mode 100644 index 00000000000..2db39b97ee8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/grant_wizard_step1.png differ diff --git a/product_docs/docs/pem/7.16/images/grant_wizard_step2.png b/product_docs/docs/pem/7.16/images/grant_wizard_step2.png new file mode 100644 index 00000000000..7149ad84981 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/grant_wizard_step2.png differ diff --git a/product_docs/docs/pem/7.16/images/grant_wizard_step3.png b/product_docs/docs/pem/7.16/images/grant_wizard_step3.png new file mode 100644 index 00000000000..d93808fa158 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/grant_wizard_step3.png differ diff --git a/product_docs/docs/pem/7.16/images/graphical_explain.png b/product_docs/docs/pem/7.16/images/graphical_explain.png new file mode 100644 index 00000000000..e643a8b8495 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/graphical_explain.png differ diff --git a/product_docs/docs/pem/7.16/images/graphical_explain_details.png b/product_docs/docs/pem/7.16/images/graphical_explain_details.png new file mode 100644 index 00000000000..8eb02b501e0 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/graphical_explain_details.png differ diff --git a/product_docs/docs/pem/7.16/images/gridview.png b/product_docs/docs/pem/7.16/images/gridview.png new file mode 100644 index 00000000000..41edbac36fa Binary files /dev/null and b/product_docs/docs/pem/7.16/images/gridview.png differ diff --git a/product_docs/docs/pem/7.16/images/group_icon.png b/product_docs/docs/pem/7.16/images/group_icon.png new file mode 100644 index 00000000000..bff7ce1b8e7 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/group_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/hash_anti_join_icon.png b/product_docs/docs/pem/7.16/images/hash_anti_join_icon.png new file mode 100644 index 00000000000..3dae5dd521f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/hash_anti_join_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/hash_icon.png b/product_docs/docs/pem/7.16/images/hash_icon.png new file mode 100644 index 00000000000..dc1e3545dd8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/hash_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/hash_semi_join_icon.png b/product_docs/docs/pem/7.16/images/hash_semi_join_icon.png new file mode 100644 index 00000000000..f82cd4e7fb6 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/hash_semi_join_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/hash_set_operator_icon.png b/product_docs/docs/pem/7.16/images/hash_set_operator_icon.png new file mode 100644 index 00000000000..47a7b8cce50 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/hash_set_operator_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/hash_setop_except_all_icon.png b/product_docs/docs/pem/7.16/images/hash_setop_except_all_icon.png new file mode 100644 index 00000000000..092682dafeb Binary files /dev/null and b/product_docs/docs/pem/7.16/images/hash_setop_except_all_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/hash_setop_except_icon.png b/product_docs/docs/pem/7.16/images/hash_setop_except_icon.png new file mode 100644 index 00000000000..092682dafeb Binary files /dev/null and b/product_docs/docs/pem/7.16/images/hash_setop_except_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/hash_setop_int_all_icon.png b/product_docs/docs/pem/7.16/images/hash_setop_int_all_icon.png new file mode 100644 index 00000000000..e817608a435 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/hash_setop_int_all_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/home.png b/product_docs/docs/pem/7.16/images/home.png new file mode 100644 index 00000000000..6c671548c95 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/home.png differ diff --git a/product_docs/docs/pem/7.16/images/hot_table_analysis.png b/product_docs/docs/pem/7.16/images/hot_table_analysis.png new file mode 100644 index 00000000000..b1a71e9dddf Binary files /dev/null and b/product_docs/docs/pem/7.16/images/hot_table_analysis.png differ diff --git a/product_docs/docs/pem/7.16/images/import_export_columns.png b/product_docs/docs/pem/7.16/images/import_export_columns.png new file mode 100644 index 00000000000..a7bc0ec5bcb Binary files /dev/null and b/product_docs/docs/pem/7.16/images/import_export_columns.png differ diff --git a/product_docs/docs/pem/7.16/images/import_export_complete.png b/product_docs/docs/pem/7.16/images/import_export_complete.png new file mode 100644 index 00000000000..13c768538c6 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/import_export_complete.png differ diff --git a/product_docs/docs/pem/7.16/images/import_export_miscellaneous.png b/product_docs/docs/pem/7.16/images/import_export_miscellaneous.png new file mode 100644 index 00000000000..d20b8bd482e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/import_export_miscellaneous.png differ diff --git a/product_docs/docs/pem/7.16/images/import_export_options.png b/product_docs/docs/pem/7.16/images/import_export_options.png new file mode 100644 index 00000000000..87dadc747ea Binary files /dev/null and b/product_docs/docs/pem/7.16/images/import_export_options.png differ diff --git a/product_docs/docs/pem/7.16/images/import_export_pw.png b/product_docs/docs/pem/7.16/images/import_export_pw.png new file mode 100644 index 00000000000..f5565b46e45 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/import_export_pw.png differ diff --git a/product_docs/docs/pem/7.16/images/index_definition.png b/product_docs/docs/pem/7.16/images/index_definition.png new file mode 100644 index 00000000000..0321e82fbf0 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/index_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/index_general.png b/product_docs/docs/pem/7.16/images/index_general.png new file mode 100644 index 00000000000..36c518cf6d9 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/index_general.png differ diff --git a/product_docs/docs/pem/7.16/images/index_scan_icon.png b/product_docs/docs/pem/7.16/images/index_scan_icon.png new file mode 100644 index 00000000000..d8d7c012dbe Binary files /dev/null and b/product_docs/docs/pem/7.16/images/index_scan_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/index_sql.png b/product_docs/docs/pem/7.16/images/index_sql.png new file mode 100644 index 00000000000..3aaa38f153e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/index_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/installing_pem_sql_plugin_windows_ready_to_install.png b/product_docs/docs/pem/7.16/images/installing_pem_sql_plugin_windows_ready_to_install.png new file mode 100755 index 00000000000..a450ff886a6 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/installing_pem_sql_plugin_windows_ready_to_install.png differ diff --git a/product_docs/docs/pem/7.16/images/installing_pem_sql_profiler_plugin_windows_finish.png b/product_docs/docs/pem/7.16/images/installing_pem_sql_profiler_plugin_windows_finish.png new file mode 100755 index 00000000000..d5e4f6ba152 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/installing_pem_sql_profiler_plugin_windows_finish.png differ diff --git a/product_docs/docs/pem/7.16/images/installing_pem_sql_profiler_plugin_windows_in_progress.png b/product_docs/docs/pem/7.16/images/installing_pem_sql_profiler_plugin_windows_in_progress.png new file mode 100755 index 00000000000..cbde3c7620b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/installing_pem_sql_profiler_plugin_windows_in_progress.png differ diff --git a/product_docs/docs/pem/7.16/images/installing_pem_sql_profiler_plugin_windows_installation_directory.png b/product_docs/docs/pem/7.16/images/installing_pem_sql_profiler_plugin_windows_installation_directory.png new file mode 100755 index 00000000000..36c59897e04 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/installing_pem_sql_profiler_plugin_windows_installation_directory.png differ diff --git a/product_docs/docs/pem/7.16/images/installing_pem_sql_profiler_plugin_windows_license_agreement.png b/product_docs/docs/pem/7.16/images/installing_pem_sql_profiler_plugin_windows_license_agreement.png new file mode 100755 index 00000000000..b7b173557db Binary files /dev/null and b/product_docs/docs/pem/7.16/images/installing_pem_sql_profiler_plugin_windows_license_agreement.png differ diff --git a/product_docs/docs/pem/7.16/images/installing_pem_sql_profiler_plugin_windows_welcome.png b/product_docs/docs/pem/7.16/images/installing_pem_sql_profiler_plugin_windows_welcome.png new file mode 100755 index 00000000000..e7e6683813e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/installing_pem_sql_profiler_plugin_windows_welcome.png differ diff --git a/product_docs/docs/pem/7.16/images/io_analysis.png b/product_docs/docs/pem/7.16/images/io_analysis.png new file mode 100644 index 00000000000..77dfe738a6d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/io_analysis.png differ diff --git a/product_docs/docs/pem/7.16/images/io_analysis_dashboard.png b/product_docs/docs/pem/7.16/images/io_analysis_dashboard.png new file mode 100644 index 00000000000..e8a83fdc486 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/io_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/images/job_notifications_agent_level.png b/product_docs/docs/pem/7.16/images/job_notifications_agent_level.png new file mode 100755 index 00000000000..306f8ec17f7 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/job_notifications_agent_level.png differ diff --git a/product_docs/docs/pem/7.16/images/job_notifications_job_level.png b/product_docs/docs/pem/7.16/images/job_notifications_job_level.png new file mode 100755 index 00000000000..3f2bf509cc1 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/job_notifications_job_level.png differ diff --git a/product_docs/docs/pem/7.16/images/job_notifications_server_level.png b/product_docs/docs/pem/7.16/images/job_notifications_server_level.png new file mode 100755 index 00000000000..8d9e8a64a68 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/job_notifications_server_level.png differ diff --git a/product_docs/docs/pem/7.16/images/join_Icon.png b/product_docs/docs/pem/7.16/images/join_Icon.png new file mode 100644 index 00000000000..ef17c88f82f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/join_Icon.png differ diff --git a/product_docs/docs/pem/7.16/images/language_definition.png b/product_docs/docs/pem/7.16/images/language_definition.png new file mode 100644 index 00000000000..0ae7fdfdb24 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/language_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/language_general.png b/product_docs/docs/pem/7.16/images/language_general.png new file mode 100644 index 00000000000..52b9ff10178 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/language_general.png differ diff --git a/product_docs/docs/pem/7.16/images/language_security.png b/product_docs/docs/pem/7.16/images/language_security.png new file mode 100644 index 00000000000..f64d6ed5db4 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/language_security.png differ diff --git a/product_docs/docs/pem/7.16/images/language_sql.png b/product_docs/docs/pem/7.16/images/language_sql.png new file mode 100644 index 00000000000..b5b8bfa20ab Binary files /dev/null and b/product_docs/docs/pem/7.16/images/language_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/lgdownload.png b/product_docs/docs/pem/7.16/images/lgdownload.png new file mode 100755 index 00000000000..bfd54f2b4d4 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/lgdownload.png differ diff --git a/product_docs/docs/pem/7.16/images/lgfullscreen.png b/product_docs/docs/pem/7.16/images/lgfullscreen.png new file mode 100755 index 00000000000..ae7925a3463 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/lgfullscreen.png differ diff --git a/product_docs/docs/pem/7.16/images/lginformation.png b/product_docs/docs/pem/7.16/images/lginformation.png new file mode 100755 index 00000000000..15ba80c82cb Binary files /dev/null and b/product_docs/docs/pem/7.16/images/lginformation.png differ diff --git a/product_docs/docs/pem/7.16/images/lgpersonalize.png b/product_docs/docs/pem/7.16/images/lgpersonalize.png new file mode 100755 index 00000000000..61bb4d95512 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/lgpersonalize.png differ diff --git a/product_docs/docs/pem/7.16/images/lgrefresh.png b/product_docs/docs/pem/7.16/images/lgrefresh.png new file mode 100755 index 00000000000..63caf86f106 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/lgrefresh.png differ diff --git a/product_docs/docs/pem/7.16/images/limit_icon.png b/product_docs/docs/pem/7.16/images/limit_icon.png new file mode 100644 index 00000000000..71ebe65c527 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/limit_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/lm_import_rotation.png b/product_docs/docs/pem/7.16/images/lm_import_rotation.png new file mode 100755 index 00000000000..dc67c628f9f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/lm_import_rotation.png differ diff --git a/product_docs/docs/pem/7.16/images/lm_scheduling.png b/product_docs/docs/pem/7.16/images/lm_scheduling.png new file mode 100755 index 00000000000..f67ca977fda Binary files /dev/null and b/product_docs/docs/pem/7.16/images/lm_scheduling.png differ diff --git a/product_docs/docs/pem/7.16/images/lm_server_select.png b/product_docs/docs/pem/7.16/images/lm_server_select.png new file mode 100755 index 00000000000..10821d59ba5 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/lm_server_select.png differ diff --git a/product_docs/docs/pem/7.16/images/lm_welcome.png b/product_docs/docs/pem/7.16/images/lm_welcome.png new file mode 100755 index 00000000000..09ba8745983 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/lm_welcome.png differ diff --git a/product_docs/docs/pem/7.16/images/lm_what_to_log.png b/product_docs/docs/pem/7.16/images/lm_what_to_log.png new file mode 100755 index 00000000000..9203546a815 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/lm_what_to_log.png differ diff --git a/product_docs/docs/pem/7.16/images/lm_when_to_log.png b/product_docs/docs/pem/7.16/images/lm_when_to_log.png new file mode 100755 index 00000000000..63e6f353de2 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/lm_when_to_log.png differ diff --git a/product_docs/docs/pem/7.16/images/lm_where_to_log.png b/product_docs/docs/pem/7.16/images/lm_where_to_log.png new file mode 100755 index 00000000000..ea1bf059a12 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/lm_where_to_log.png differ diff --git a/product_docs/docs/pem/7.16/images/logo_base.svg b/product_docs/docs/pem/7.16/images/logo_base.svg new file mode 100644 index 00000000000..67624dbbaed --- /dev/null +++ b/product_docs/docs/pem/7.16/images/logo_base.svg @@ -0,0 +1,18 @@ + + + + +logo_base + + + + + + + diff --git a/product_docs/docs/pem/7.16/images/main_sql.png b/product_docs/docs/pem/7.16/images/main_sql.png new file mode 100644 index 00000000000..e1077bbefe2 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/main_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/maintenance.png b/product_docs/docs/pem/7.16/images/maintenance.png new file mode 100644 index 00000000000..a3f8da489bd Binary files /dev/null and b/product_docs/docs/pem/7.16/images/maintenance.png differ diff --git a/product_docs/docs/pem/7.16/images/maintenance_complete.png b/product_docs/docs/pem/7.16/images/maintenance_complete.png new file mode 100644 index 00000000000..d1871553d4b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/maintenance_complete.png differ diff --git a/product_docs/docs/pem/7.16/images/maintenance_pw.png b/product_docs/docs/pem/7.16/images/maintenance_pw.png new file mode 100644 index 00000000000..d7b1e2e76b8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/maintenance_pw.png differ diff --git a/product_docs/docs/pem/7.16/images/manage_dashboard_tab.png b/product_docs/docs/pem/7.16/images/manage_dashboard_tab.png new file mode 100755 index 00000000000..e36cc1910f0 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/manage_dashboard_tab.png differ diff --git a/product_docs/docs/pem/7.16/images/materialize_icon.png b/product_docs/docs/pem/7.16/images/materialize_icon.png new file mode 100644 index 00000000000..6e6df7d6282 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/materialize_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/materialized_view_definition.png b/product_docs/docs/pem/7.16/images/materialized_view_definition.png new file mode 100644 index 00000000000..7d1cc7f6421 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/materialized_view_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/materialized_view_general.png b/product_docs/docs/pem/7.16/images/materialized_view_general.png new file mode 100644 index 00000000000..2c62f2c3518 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/materialized_view_general.png differ diff --git a/product_docs/docs/pem/7.16/images/materialized_view_parameter.png b/product_docs/docs/pem/7.16/images/materialized_view_parameter.png new file mode 100644 index 00000000000..8b08816d455 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/materialized_view_parameter.png differ diff --git a/product_docs/docs/pem/7.16/images/materialized_view_security.png b/product_docs/docs/pem/7.16/images/materialized_view_security.png new file mode 100644 index 00000000000..e0ae10b498a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/materialized_view_security.png differ diff --git a/product_docs/docs/pem/7.16/images/materialized_view_sql.png b/product_docs/docs/pem/7.16/images/materialized_view_sql.png new file mode 100644 index 00000000000..0b83c92d340 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/materialized_view_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/materialized_view_storage.png b/product_docs/docs/pem/7.16/images/materialized_view_storage.png new file mode 100644 index 00000000000..9d0c24d1935 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/materialized_view_storage.png differ diff --git a/product_docs/docs/pem/7.16/images/memory_analysis_dashboard.png b/product_docs/docs/pem/7.16/images/memory_analysis_dashboard.png new file mode 100644 index 00000000000..b8c3d5b3183 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/memory_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/images/merge_anti_join_icon.png b/product_docs/docs/pem/7.16/images/merge_anti_join_icon.png new file mode 100644 index 00000000000..2fb22ca1d3f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/merge_anti_join_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/merge_join_icon.png b/product_docs/docs/pem/7.16/images/merge_join_icon.png new file mode 100644 index 00000000000..8dc6b916ec5 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/merge_join_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/merge_semi_join_icon.png b/product_docs/docs/pem/7.16/images/merge_semi_join_icon.png new file mode 100644 index 00000000000..44ffaf775e0 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/merge_semi_join_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/move_objects_general.png b/product_docs/docs/pem/7.16/images/move_objects_general.png new file mode 100644 index 00000000000..57dccd0713b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/move_objects_general.png differ diff --git a/product_docs/docs/pem/7.16/images/move_objects_sql.png b/product_docs/docs/pem/7.16/images/move_objects_sql.png new file mode 100644 index 00000000000..0d006a5edd6 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/move_objects_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/move_pem_server_agent_cfg.png b/product_docs/docs/pem/7.16/images/move_pem_server_agent_cfg.png new file mode 100755 index 00000000000..3a70eae4ad5 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/move_pem_server_agent_cfg.png differ diff --git a/product_docs/docs/pem/7.16/images/move_pem_server_restart_agent.png b/product_docs/docs/pem/7.16/images/move_pem_server_restart_agent.png new file mode 100755 index 00000000000..a5578c6e12f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/move_pem_server_restart_agent.png differ diff --git a/product_docs/docs/pem/7.16/images/move_pem_server_windows_registry.png b/product_docs/docs/pem/7.16/images/move_pem_server_windows_registry.png new file mode 100755 index 00000000000..9a99baf3332 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/move_pem_server_windows_registry.png differ diff --git a/product_docs/docs/pem/7.16/images/move_pem_server_windows_registry_edit.png b/product_docs/docs/pem/7.16/images/move_pem_server_windows_registry_edit.png new file mode 100755 index 00000000000..8f75288373d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/move_pem_server_windows_registry_edit.png differ diff --git a/product_docs/docs/pem/7.16/images/move_server_windows_permission.png b/product_docs/docs/pem/7.16/images/move_server_windows_permission.png new file mode 100755 index 00000000000..f7c0ac353ee Binary files /dev/null and b/product_docs/docs/pem/7.16/images/move_server_windows_permission.png differ diff --git a/product_docs/docs/pem/7.16/images/nagios_alert_notification.png b/product_docs/docs/pem/7.16/images/nagios_alert_notification.png new file mode 100755 index 00000000000..42ba7287eb2 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/nagios_alert_notification.png differ diff --git a/product_docs/docs/pem/7.16/images/nagios_server_configuration.png b/product_docs/docs/pem/7.16/images/nagios_server_configuration.png new file mode 100755 index 00000000000..17ccfee1ca8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/nagios_server_configuration.png differ diff --git a/product_docs/docs/pem/7.16/images/nested_loop_anti_join_icon.png b/product_docs/docs/pem/7.16/images/nested_loop_anti_join_icon.png new file mode 100644 index 00000000000..bba72e3ce11 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/nested_loop_anti_join_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/nested_loop_icon.png b/product_docs/docs/pem/7.16/images/nested_loop_icon.png new file mode 100644 index 00000000000..d99aeafa16f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/nested_loop_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/nested_loop_semi_join_icon.png b/product_docs/docs/pem/7.16/images/nested_loop_semi_join_icon.png new file mode 100644 index 00000000000..510342f0dc5 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/nested_loop_semi_join_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/new_connection_dialog.png b/product_docs/docs/pem/7.16/images/new_connection_dialog.png new file mode 100644 index 00000000000..5c342214289 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/new_connection_dialog.png differ diff --git a/product_docs/docs/pem/7.16/images/new_connection_options.png b/product_docs/docs/pem/7.16/images/new_connection_options.png new file mode 100644 index 00000000000..a2a9a00a322 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/new_connection_options.png differ diff --git a/product_docs/docs/pem/7.16/images/object_activity_analysis_dashboard.png b/product_docs/docs/pem/7.16/images/object_activity_analysis_dashboard.png new file mode 100644 index 00000000000..7f8fb8a2774 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/object_activity_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/images/object_io_details_table.png b/product_docs/docs/pem/7.16/images/object_io_details_table.png new file mode 100644 index 00000000000..ad4aa18dd01 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/object_io_details_table.png differ diff --git a/product_docs/docs/pem/7.16/images/object_storage_table.png b/product_docs/docs/pem/7.16/images/object_storage_table.png new file mode 100644 index 00000000000..d4122e1a4fb Binary files /dev/null and b/product_docs/docs/pem/7.16/images/object_storage_table.png differ diff --git a/product_docs/docs/pem/7.16/images/oper_system_analysis.png b/product_docs/docs/pem/7.16/images/oper_system_analysis.png new file mode 100644 index 00000000000..2b427fd7f1e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/oper_system_analysis.png differ diff --git a/product_docs/docs/pem/7.16/images/os_analysis_disk.png b/product_docs/docs/pem/7.16/images/os_analysis_disk.png new file mode 100644 index 00000000000..72a56b6eef9 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/os_analysis_disk.png differ diff --git a/product_docs/docs/pem/7.16/images/os_analysis_network.png b/product_docs/docs/pem/7.16/images/os_analysis_network.png new file mode 100644 index 00000000000..fb4485b79c9 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/os_analysis_network.png differ diff --git a/product_docs/docs/pem/7.16/images/package_body.png b/product_docs/docs/pem/7.16/images/package_body.png new file mode 100644 index 00000000000..ad9aae1f0f4 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/package_body.png differ diff --git a/product_docs/docs/pem/7.16/images/package_general.png b/product_docs/docs/pem/7.16/images/package_general.png new file mode 100644 index 00000000000..ee24f476674 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/package_general.png differ diff --git a/product_docs/docs/pem/7.16/images/package_header.png b/product_docs/docs/pem/7.16/images/package_header.png new file mode 100644 index 00000000000..3702ede49f3 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/package_header.png differ diff --git a/product_docs/docs/pem/7.16/images/package_security.png b/product_docs/docs/pem/7.16/images/package_security.png new file mode 100644 index 00000000000..9b43ef7b847 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/package_security.png differ diff --git a/product_docs/docs/pem/7.16/images/package_sql.png b/product_docs/docs/pem/7.16/images/package_sql.png new file mode 100644 index 00000000000..01880e3c813 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/package_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/pe_direct_output.png b/product_docs/docs/pem/7.16/images/pe_direct_output.png new file mode 100755 index 00000000000..a9f3c715853 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pe_direct_output.png differ diff --git a/product_docs/docs/pem/7.16/images/pe_param_value.png b/product_docs/docs/pem/7.16/images/pe_param_value.png new file mode 100755 index 00000000000..6021a4cabb1 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pe_param_value.png differ diff --git a/product_docs/docs/pem/7.16/images/pe_report.png b/product_docs/docs/pem/7.16/images/pe_report.png new file mode 100755 index 00000000000..5307ca0a890 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pe_report.png differ diff --git a/product_docs/docs/pem/7.16/images/pe_select_rules.png b/product_docs/docs/pem/7.16/images/pe_select_rules.png new file mode 100755 index 00000000000..72788323f47 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pe_select_rules.png differ diff --git a/product_docs/docs/pem/7.16/images/pe_select_servers.png b/product_docs/docs/pem/7.16/images/pe_select_servers.png new file mode 100755 index 00000000000..129c6401923 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pe_select_servers.png differ diff --git a/product_docs/docs/pem/7.16/images/pe_welcome.png b/product_docs/docs/pem/7.16/images/pe_welcome.png new file mode 100755 index 00000000000..d7a59e6333c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pe_welcome.png differ diff --git a/product_docs/docs/pem/7.16/images/pem-architecture.png b/product_docs/docs/pem/7.16/images/pem-architecture.png new file mode 100644 index 00000000000..e8e3fdc4dd0 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem-architecture.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_access_create_login.png b/product_docs/docs/pem/7.16/images/pem_access_create_login.png new file mode 100755 index 00000000000..da3dba9ae9e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_access_create_login.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_accessing_create_server_dialog.png b/product_docs/docs/pem/7.16/images/pem_accessing_create_server_dialog.png new file mode 100755 index 00000000000..8c26533355c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_accessing_create_server_dialog.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_agent.png b/product_docs/docs/pem/7.16/images/pem_agent.png new file mode 100644 index 00000000000..c35d03ac401 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_agent.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_agent_configurations_properties.png b/product_docs/docs/pem/7.16/images/pem_agent_configurations_properties.png new file mode 100755 index 00000000000..1577bb92155 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_agent_configurations_properties.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_agent_job_notification_properties.png b/product_docs/docs/pem/7.16/images/pem_agent_job_notification_properties.png new file mode 100755 index 00000000000..910870a81d3 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_agent_job_notification_properties.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_agent_pem_server_windows_installation_details.png b/product_docs/docs/pem/7.16/images/pem_agent_pem_server_windows_installation_details.png new file mode 100755 index 00000000000..d4187b939f3 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_agent_pem_server_windows_installation_details.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_agent_properties.png b/product_docs/docs/pem/7.16/images/pem_agent_properties.png new file mode 100755 index 00000000000..cf37c40ce08 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_agent_properties.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_agent_self_registration.png b/product_docs/docs/pem/7.16/images/pem_agent_self_registration.png new file mode 100644 index 00000000000..b6d99493eda Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_agent_self_registration.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_agent_service_account_windows_password.png b/product_docs/docs/pem/7.16/images/pem_agent_service_account_windows_password.png new file mode 100755 index 00000000000..3ad6a1f4ee3 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_agent_service_account_windows_password.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_agent_welcome_dialog.png b/product_docs/docs/pem/7.16/images/pem_agent_welcome_dialog.png new file mode 100644 index 00000000000..9196cedd85d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_agent_welcome_dialog.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_agent_windows_advanced_options_certificate_path.png b/product_docs/docs/pem/7.16/images/pem_agent_windows_advanced_options_certificate_path.png new file mode 100755 index 00000000000..093146eaf37 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_agent_windows_advanced_options_certificate_path.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_agent_windows_agent_details.png b/product_docs/docs/pem/7.16/images/pem_agent_windows_agent_details.png new file mode 100755 index 00000000000..fed4dfecc25 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_agent_windows_agent_details.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_agent_windows_installation_complete.png b/product_docs/docs/pem/7.16/images/pem_agent_windows_installation_complete.png new file mode 100644 index 00000000000..dbaf1a69aa0 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_agent_windows_installation_complete.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_agent_windows_installation_directory.png b/product_docs/docs/pem/7.16/images/pem_agent_windows_installation_directory.png new file mode 100755 index 00000000000..583bd14922b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_agent_windows_installation_directory.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_agent_windows_installation_in_progress.png b/product_docs/docs/pem/7.16/images/pem_agent_windows_installation_in_progress.png new file mode 100755 index 00000000000..454a176bb73 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_agent_windows_installation_in_progress.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_agent_windows_installation_ready_to_begin.png b/product_docs/docs/pem/7.16/images/pem_agent_windows_installation_ready_to_begin.png new file mode 100755 index 00000000000..2968b3706b0 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_agent_windows_installation_ready_to_begin.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_agent_windows_license_agreement.png b/product_docs/docs/pem/7.16/images/pem_agent_windows_license_agreement.png new file mode 100755 index 00000000000..4322c85a78b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_agent_windows_license_agreement.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_alert_blackout_agent_tab.png b/product_docs/docs/pem/7.16/images/pem_alert_blackout_agent_tab.png new file mode 100644 index 00000000000..3522709e978 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_alert_blackout_agent_tab.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_alert_blackout_delete_confirm.png b/product_docs/docs/pem/7.16/images/pem_alert_blackout_delete_confirm.png new file mode 100644 index 00000000000..88fb98804f9 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_alert_blackout_delete_confirm.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_alert_blackout_select_servers.png b/product_docs/docs/pem/7.16/images/pem_alert_blackout_select_servers.png new file mode 100644 index 00000000000..ef797f936d3 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_alert_blackout_select_servers.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_alert_blackout_server_tab.png b/product_docs/docs/pem/7.16/images/pem_alert_blackout_server_tab.png new file mode 100644 index 00000000000..cd470e4226a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_alert_blackout_server_tab.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_alert_templates_general.png b/product_docs/docs/pem/7.16/images/pem_alert_templates_general.png new file mode 100755 index 00000000000..4aa32049bd3 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_alert_templates_general.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_alert_templates_paramtab.png b/product_docs/docs/pem/7.16/images/pem_alert_templates_paramtab.png new file mode 100755 index 00000000000..01de1a67d96 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_alert_templates_paramtab.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_alert_templates_pdtab.png b/product_docs/docs/pem/7.16/images/pem_alert_templates_pdtab.png new file mode 100755 index 00000000000..60fd89afdaf Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_alert_templates_pdtab.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_alert_templates_pre-def.png b/product_docs/docs/pem/7.16/images/pem_alert_templates_pre-def.png new file mode 100755 index 00000000000..4464b6a070a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_alert_templates_pre-def.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_alert_templates_sqltab.png b/product_docs/docs/pem/7.16/images/pem_alert_templates_sqltab.png new file mode 100755 index 00000000000..88747e33129 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_alert_templates_sqltab.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_alert_templates_tab.png b/product_docs/docs/pem/7.16/images/pem_alert_templates_tab.png new file mode 100755 index 00000000000..956a1191792 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_alert_templates_tab.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_architecture.png b/product_docs/docs/pem/7.16/images/pem_architecture.png new file mode 100644 index 00000000000..f90938f1d07 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_architecture.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_browser_dashboard_statistics.png b/product_docs/docs/pem/7.16/images/pem_browser_dashboard_statistics.png new file mode 100644 index 00000000000..0c127687a87 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_browser_dashboard_statistics.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_browser_dashboard_welcome.png b/product_docs/docs/pem/7.16/images/pem_browser_dashboard_welcome.png new file mode 100644 index 00000000000..0a0fbe56a6f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_browser_dashboard_welcome.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_browser_dependencies.png b/product_docs/docs/pem/7.16/images/pem_browser_dependencies.png new file mode 100644 index 00000000000..0c34b443e22 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_browser_dependencies.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_browser_dependents.png b/product_docs/docs/pem/7.16/images/pem_browser_dependents.png new file mode 100644 index 00000000000..00a41409945 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_browser_dependents.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_browser_monitoring.png b/product_docs/docs/pem/7.16/images/pem_browser_monitoring.png new file mode 100644 index 00000000000..4459b62f744 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_browser_monitoring.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_browser_properties.png b/product_docs/docs/pem/7.16/images/pem_browser_properties.png new file mode 100644 index 00000000000..1ffa565f877 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_browser_properties.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_browser_sql.png b/product_docs/docs/pem/7.16/images/pem_browser_sql.png new file mode 100644 index 00000000000..05d22cffd59 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_browser_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_browser_statistics.png b/product_docs/docs/pem/7.16/images/pem_browser_statistics.png new file mode 100644 index 00000000000..038cfbe01d9 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_browser_statistics.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_browser_window.png b/product_docs/docs/pem/7.16/images/pem_browser_window.png new file mode 100644 index 00000000000..d1adfbe9764 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_browser_window.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_create_new_chart_conf_chart.png b/product_docs/docs/pem/7.16/images/pem_create_new_chart_conf_chart.png new file mode 100755 index 00000000000..701bf53c6e4 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_create_new_chart_conf_chart.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_create_new_chart_select_metrics.png b/product_docs/docs/pem/7.16/images/pem_create_new_chart_select_metrics.png new file mode 100755 index 00000000000..26ea5346823 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_create_new_chart_select_metrics.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_create_new_chart_set_options.png b/product_docs/docs/pem/7.16/images/pem_create_new_chart_set_options.png new file mode 100755 index 00000000000..60f4f2a204a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_create_new_chart_set_options.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_custom_dashboard_add_chart.png b/product_docs/docs/pem/7.16/images/pem_custom_dashboard_add_chart.png new file mode 100755 index 00000000000..f9fe25cca91 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_custom_dashboard_add_chart.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_custom_dashboard_add_section_name.png b/product_docs/docs/pem/7.16/images/pem_custom_dashboard_add_section_name.png new file mode 100755 index 00000000000..fe5c3214fe5 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_custom_dashboard_add_section_name.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_custom_dashboard_chart_details.png b/product_docs/docs/pem/7.16/images/pem_custom_dashboard_chart_details.png new file mode 100755 index 00000000000..81774433b88 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_custom_dashboard_chart_details.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_custom_dashboard_configure_dashboard.png b/product_docs/docs/pem/7.16/images/pem_custom_dashboard_configure_dashboard.png new file mode 100755 index 00000000000..aa74a801db0 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_custom_dashboard_configure_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_dashboards_menu.png b/product_docs/docs/pem/7.16/images/pem_dashboards_menu.png new file mode 100755 index 00000000000..b7e2f1abb6e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_dashboards_menu.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_database_with_pgbouncer.png b/product_docs/docs/pem/7.16/images/pem_database_with_pgbouncer.png new file mode 100755 index 00000000000..9b5f265c07f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_database_with_pgbouncer.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_database_without_pgbouncer.png b/product_docs/docs/pem/7.16/images/pem_database_without_pgbouncer.png new file mode 100755 index 00000000000..e5b72e5d9fe Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_database_without_pgbouncer.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_file_menu.png b/product_docs/docs/pem/7.16/images/pem_file_menu.png new file mode 100755 index 00000000000..b36fac99ffc Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_file_menu.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_help_menu.png b/product_docs/docs/pem/7.16/images/pem_help_menu.png new file mode 100755 index 00000000000..41a92b7920b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_help_menu.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_installation_overview.png b/product_docs/docs/pem/7.16/images/pem_installation_overview.png new file mode 100755 index 00000000000..e8e3fdc4dd0 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_installation_overview.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_log_analysis_expert_report.png b/product_docs/docs/pem/7.16/images/pem_log_analysis_expert_report.png new file mode 100755 index 00000000000..cbe6846a27c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_log_analysis_expert_report.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_log_analysis_expert_report_finish.png b/product_docs/docs/pem/7.16/images/pem_log_analysis_expert_report_finish.png new file mode 100755 index 00000000000..6aaf6b090b2 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_log_analysis_expert_report_finish.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_log_analysis_expert_report_options.png b/product_docs/docs/pem/7.16/images/pem_log_analysis_expert_report_options.png new file mode 100755 index 00000000000..66cdafa8fa1 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_log_analysis_expert_report_options.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_log_analysis_expert_select_analyzers.png b/product_docs/docs/pem/7.16/images/pem_log_analysis_expert_select_analyzers.png new file mode 100755 index 00000000000..d4a2a28cda3 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_log_analysis_expert_select_analyzers.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_log_analysis_expert_select_servers.png b/product_docs/docs/pem/7.16/images/pem_log_analysis_expert_select_servers.png new file mode 100755 index 00000000000..390dc60c2b8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_log_analysis_expert_select_servers.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_log_analysis_expert_welcome.png b/product_docs/docs/pem/7.16/images/pem_log_analysis_expert_welcome.png new file mode 100755 index 00000000000..20c49f144dc Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_log_analysis_expert_welcome.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_log_view.png b/product_docs/docs/pem/7.16/images/pem_log_view.png new file mode 100644 index 00000000000..0c74d10e786 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_log_view.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_login.png b/product_docs/docs/pem/7.16/images/pem_login.png new file mode 100755 index 00000000000..efdf25cf120 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_login.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_logon.png b/product_docs/docs/pem/7.16/images/pem_logon.png new file mode 100755 index 00000000000..647ef069427 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_logon.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_manage_charts.png b/product_docs/docs/pem/7.16/images/pem_manage_charts.png new file mode 100755 index 00000000000..6729ddbe237 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_manage_charts.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_manage_charts_completed.png b/product_docs/docs/pem/7.16/images/pem_manage_charts_completed.png new file mode 100755 index 00000000000..4e410347dc3 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_manage_charts_completed.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_manage_charts_custom_chart.png b/product_docs/docs/pem/7.16/images/pem_manage_charts_custom_chart.png new file mode 100755 index 00000000000..519fe879d8c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_manage_charts_custom_chart.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_manage_charts_imported_metrics.png b/product_docs/docs/pem/7.16/images/pem_manage_charts_imported_metrics.png new file mode 100755 index 00000000000..7eca360f919 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_manage_charts_imported_metrics.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_manage_charts_imported_options.png b/product_docs/docs/pem/7.16/images/pem_manage_charts_imported_options.png new file mode 100755 index 00000000000..13aa1a8b60a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_manage_charts_imported_options.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_manage_charts_imported_permissions.png b/product_docs/docs/pem/7.16/images/pem_manage_charts_imported_permissions.png new file mode 100755 index 00000000000..50143b49b4a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_manage_charts_imported_permissions.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_manage_charts_imported_template.png b/product_docs/docs/pem/7.16/images/pem_manage_charts_imported_template.png new file mode 100755 index 00000000000..708182569ed Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_manage_charts_imported_template.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_manage_charts_set_permissions.png b/product_docs/docs/pem/7.16/images/pem_manage_charts_set_permissions.png new file mode 100755 index 00000000000..748f8a949ec Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_manage_charts_set_permissions.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_manage_dashboards_tab.png b/product_docs/docs/pem/7.16/images/pem_manage_dashboards_tab.png new file mode 100644 index 00000000000..851760274e0 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_manage_dashboards_tab.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_manage_import_charts_completed.png b/product_docs/docs/pem/7.16/images/pem_manage_import_charts_completed.png new file mode 100644 index 00000000000..b9f3ddcf805 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_manage_import_charts_completed.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_manage_probes_tab.png b/product_docs/docs/pem/7.16/images/pem_manage_probes_tab.png new file mode 100755 index 00000000000..defd9fe235c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_manage_probes_tab.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_management_menu.png b/product_docs/docs/pem/7.16/images/pem_management_menu.png new file mode 100644 index 00000000000..22f0e94e46f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_management_menu.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_object_menu.png b/product_docs/docs/pem/7.16/images/pem_object_menu.png new file mode 100755 index 00000000000..a6e6a39576a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_object_menu.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_online_help.png b/product_docs/docs/pem/7.16/images/pem_online_help.png new file mode 100755 index 00000000000..97394cfdb4e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_online_help.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_pg_hba.png b/product_docs/docs/pem/7.16/images/pem_pg_hba.png new file mode 100755 index 00000000000..2475302a4c8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_pg_hba.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_pgbouncer_with.png b/product_docs/docs/pem/7.16/images/pem_pgbouncer_with.png new file mode 100644 index 00000000000..9698c5289ba Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_pgbouncer_with.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_pgbouncer_without.png b/product_docs/docs/pem/7.16/images/pem_pgbouncer_without.png new file mode 100644 index 00000000000..780336afd19 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_pgbouncer_without.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_roles_membership_example.png b/product_docs/docs/pem/7.16/images/pem_roles_membership_example.png new file mode 100644 index 00000000000..eb6175a120e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_roles_membership_example.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_rpm_installation_agent.png b/product_docs/docs/pem/7.16/images/pem_rpm_installation_agent.png new file mode 100755 index 00000000000..2c20acc77df Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_rpm_installation_agent.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_scheduled_task_details.png b/product_docs/docs/pem/7.16/images/pem_scheduled_task_details.png new file mode 100644 index 00000000000..1cf4977efb9 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_scheduled_task_details.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_scheduled_task_steps.png b/product_docs/docs/pem/7.16/images/pem_scheduled_task_steps.png new file mode 100644 index 00000000000..a8941b20d9a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_scheduled_task_steps.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_scheduled_task_tab.png b/product_docs/docs/pem/7.16/images/pem_scheduled_task_tab.png new file mode 100644 index 00000000000..8a9f14aa242 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_scheduled_task_tab.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server.png b/product_docs/docs/pem/7.16/images/pem_server.png new file mode 100644 index 00000000000..6161f2c9b47 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_config.png b/product_docs/docs/pem/7.16/images/pem_server_config.png new file mode 100755 index 00000000000..6062ec6428f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_config.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_existing_pg_administrators_password.png b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_administrators_password.png new file mode 100755 index 00000000000..c9886bbae32 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_administrators_password.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_existing_pg_advanced_options.png b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_advanced_options.png new file mode 100755 index 00000000000..4a00afa8775 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_advanced_options.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_existing_pg_agent_details.png b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_agent_details.png new file mode 100755 index 00000000000..bdc33c8c679 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_agent_details.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_existing_pg_database_server_selection.png b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_database_server_selection.png new file mode 100755 index 00000000000..f55d4d900b5 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_database_server_selection.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_existing_pg_installation_begins.png b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_installation_begins.png new file mode 100755 index 00000000000..e77fab29c3e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_installation_begins.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_existing_pg_installation_complete.png b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_installation_complete.png new file mode 100644 index 00000000000..e904a6a88bf Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_installation_complete.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_existing_pg_installation_db_server_details.png b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_installation_db_server_details.png new file mode 100755 index 00000000000..aa2ccc7dfbb Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_installation_db_server_details.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_existing_pg_installation_directory.png b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_installation_directory.png new file mode 100755 index 00000000000..b5dcdf4e084 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_installation_directory.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_existing_pg_installation_in_progress.png b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_installation_in_progress.png new file mode 100755 index 00000000000..46b7aec438c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_installation_in_progress.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_existing_pg_license_agreement.png b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_license_agreement.png new file mode 100755 index 00000000000..3b224d4e9cc Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_license_agreement.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_existing_pg_network_details.png b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_network_details.png new file mode 100755 index 00000000000..794b05f5cea Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_network_details.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_existing_pg_pem_db_created.png b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_pem_db_created.png new file mode 100755 index 00000000000..8de99773e95 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_pem_db_created.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_existing_pg_welcome_wizard.png b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_welcome_wizard.png new file mode 100644 index 00000000000..f3a8e06c257 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_existing_pg_welcome_wizard.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_same_host_agent_details.png b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_agent_details.png new file mode 100755 index 00000000000..4d941db7d89 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_agent_details.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_same_host_db_pem_created.png b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_db_pem_created.png new file mode 100644 index 00000000000..89f3defa281 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_db_pem_created.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_same_host_installation_begins.png b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_installation_begins.png new file mode 100755 index 00000000000..312ed069ec1 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_installation_begins.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_same_host_installation_complete.png b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_installation_complete.png new file mode 100644 index 00000000000..e904a6a88bf Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_installation_complete.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_same_host_installation_directory.png b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_installation_directory.png new file mode 100755 index 00000000000..004cffe6753 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_installation_directory.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_same_host_installation_in_progress.png b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_installation_in_progress.png new file mode 100644 index 00000000000..32ea7e92bd9 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_installation_in_progress.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_same_host_license_agreement.png b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_license_agreement.png new file mode 100755 index 00000000000..613013fe1ec Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_license_agreement.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_same_host_network_details.png b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_network_details.png new file mode 100755 index 00000000000..16687bc48bc Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_network_details.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_same_host_pemagent_service_account_password.png b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_pemagent_service_account_password.png new file mode 100755 index 00000000000..e999f8fd2a7 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_pemagent_service_account_password.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_same_host_pgsql_credentials.png b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_pgsql_credentials.png new file mode 100644 index 00000000000..e8b03bac1b4 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_pgsql_credentials.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_same_host_prerequisites_checks.png b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_prerequisites_checks.png new file mode 100644 index 00000000000..1b85cac784f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_prerequisites_checks.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_same_host_welcome_wizard.png b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_welcome_wizard.png new file mode 100644 index 00000000000..f3a8e06c257 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_same_host_welcome_wizard.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_PEM_httpd_installation_wizard.png b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_PEM_httpd_installation_wizard.png new file mode 100644 index 00000000000..f6cc410edcf Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_PEM_httpd_installation_wizard.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_advanced_options_dialog_select_database.png b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_advanced_options_dialog_select_database.png new file mode 100755 index 00000000000..aa8435bb03e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_advanced_options_dialog_select_database.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_database_agent_details.png b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_database_agent_details.png new file mode 100755 index 00000000000..f8e2e4bd989 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_database_agent_details.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_database_server_installation_details.png b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_database_server_installation_details.png new file mode 100755 index 00000000000..6889ed260e4 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_database_server_installation_details.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_database_server_selection.png b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_database_server_selection.png new file mode 100755 index 00000000000..dc7bd27a557 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_database_server_selection.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_installation_begins.png b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_installation_begins.png new file mode 100755 index 00000000000..213c1f8e11d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_installation_begins.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_installation_complete.png b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_installation_complete.png new file mode 100644 index 00000000000..e904a6a88bf Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_installation_complete.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_installation_directory.png b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_installation_directory.png new file mode 100755 index 00000000000..b5dcdf4e084 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_installation_directory.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_installation_in_progress.png b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_installation_in_progress.png new file mode 100755 index 00000000000..13089c3e8be Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_installation_in_progress.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_installing_web_services_advanced_options.png b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_installing_web_services_advanced_options.png new file mode 100755 index 00000000000..dbb7dbbde50 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_installing_web_services_advanced_options.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_installing_web_services_installing_missing_dependency_languagepack.png b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_installing_web_services_installing_missing_dependency_languagepack.png new file mode 100755 index 00000000000..78c06039355 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_installing_web_services_installing_missing_dependency_languagepack.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_license_agreement.png b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_license_agreement.png new file mode 100755 index 00000000000..3b224d4e9cc Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_license_agreement.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_network_details.png b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_network_details.png new file mode 100755 index 00000000000..be79965a9bf Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_network_details.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_pem_db_created.png b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_pem_db_created.png new file mode 100755 index 00000000000..07d302a09f9 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_pem_db_created.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_web_services_and_database.png b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_web_services_and_database.png new file mode 100755 index 00000000000..a5e33604302 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_web_services_and_database.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_web_services_checking_components.png b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_web_services_checking_components.png new file mode 100755 index 00000000000..b4a32b653fb Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_web_services_checking_components.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_webservices_installing_database_server.png b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_webservices_installing_database_server.png new file mode 100755 index 00000000000..af4f3cdbe1c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_webservices_installing_database_server.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_welcome_wizard.png b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_welcome_wizard.png new file mode 100644 index 00000000000..f3a8e06c257 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_separate_host_welcome_wizard.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_on_separate_pem_agent_service_account.png b/product_docs/docs/pem/7.16/images/pem_server_on_separate_pem_agent_service_account.png new file mode 100755 index 00000000000..4c7e89f4df5 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_on_separate_pem_agent_service_account.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_server_tools_menu_queue_server.png b/product_docs/docs/pem/7.16/images/pem_server_tools_menu_queue_server.png new file mode 100755 index 00000000000..f016eb5b5a4 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_server_tools_menu_queue_server.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_services_httpd.png b/product_docs/docs/pem/7.16/images/pem_services_httpd.png new file mode 100755 index 00000000000..e1e59e77f5a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_services_httpd.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_services_windows_server_agent.png b/product_docs/docs/pem/7.16/images/pem_services_windows_server_agent.png new file mode 100755 index 00000000000..4f27cd89a9f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_services_windows_server_agent.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_task_view.png b/product_docs/docs/pem/7.16/images/pem_task_view.png new file mode 100644 index 00000000000..3e499ee2776 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_task_view.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_tool_menu.png b/product_docs/docs/pem/7.16/images/pem_tool_menu.png new file mode 100644 index 00000000000..0b1407fa6fe Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_tool_menu.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_toolbar.png b/product_docs/docs/pem/7.16/images/pem_toolbar.png new file mode 100644 index 00000000000..9cb07275afa Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_toolbar.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_upgrade_agent_existing_installation.png b/product_docs/docs/pem/7.16/images/pem_upgrade_agent_existing_installation.png new file mode 100755 index 00000000000..a98f629f7e8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_upgrade_agent_existing_installation.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_upgrade_agent_finish.png b/product_docs/docs/pem/7.16/images/pem_upgrade_agent_finish.png new file mode 100644 index 00000000000..dbaf1a69aa0 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_upgrade_agent_finish.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_upgrade_agent_license.png b/product_docs/docs/pem/7.16/images/pem_upgrade_agent_license.png new file mode 100755 index 00000000000..eb96f0af909 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_upgrade_agent_license.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_upgrade_agent_pemAgent_service_account.png b/product_docs/docs/pem/7.16/images/pem_upgrade_agent_pemAgent_service_account.png new file mode 100755 index 00000000000..de6e089e495 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_upgrade_agent_pemAgent_service_account.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_upgrade_agent_ready_install.png b/product_docs/docs/pem/7.16/images/pem_upgrade_agent_ready_install.png new file mode 100755 index 00000000000..caef36fe263 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_upgrade_agent_ready_install.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_upgrade_agent_restart_pop_up.png b/product_docs/docs/pem/7.16/images/pem_upgrade_agent_restart_pop_up.png new file mode 100755 index 00000000000..47506b46b07 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_upgrade_agent_restart_pop_up.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_upgrade_agent_welcome.png b/product_docs/docs/pem/7.16/images/pem_upgrade_agent_welcome.png new file mode 100644 index 00000000000..9196cedd85d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_upgrade_agent_welcome.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_upgrade_server_DB_installation.png b/product_docs/docs/pem/7.16/images/pem_upgrade_server_DB_installation.png new file mode 100644 index 00000000000..1587cf45049 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_upgrade_server_DB_installation.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_upgrade_server_dependency_missing.png b/product_docs/docs/pem/7.16/images/pem_upgrade_server_dependency_missing.png new file mode 100644 index 00000000000..27c9c5978c2 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_upgrade_server_dependency_missing.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_upgrade_server_error.png b/product_docs/docs/pem/7.16/images/pem_upgrade_server_error.png new file mode 100755 index 00000000000..0264db94890 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_upgrade_server_error.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_upgrade_server_existing_installation.png b/product_docs/docs/pem/7.16/images/pem_upgrade_server_existing_installation.png new file mode 100644 index 00000000000..779b5112787 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_upgrade_server_existing_installation.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_upgrade_server_finish.png b/product_docs/docs/pem/7.16/images/pem_upgrade_server_finish.png new file mode 100644 index 00000000000..392897ca7ab Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_upgrade_server_finish.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_upgrade_server_installing.png b/product_docs/docs/pem/7.16/images/pem_upgrade_server_installing.png new file mode 100644 index 00000000000..e506a84b39b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_upgrade_server_installing.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_upgrade_server_license.png b/product_docs/docs/pem/7.16/images/pem_upgrade_server_license.png new file mode 100644 index 00000000000..a9aedf78c5f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_upgrade_server_license.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_upgrade_server_pemAgent_service_account.png b/product_docs/docs/pem/7.16/images/pem_upgrade_server_pemAgent_service_account.png new file mode 100644 index 00000000000..7e578a79ccd Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_upgrade_server_pemAgent_service_account.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_upgrade_server_pop_up.png b/product_docs/docs/pem/7.16/images/pem_upgrade_server_pop_up.png new file mode 100644 index 00000000000..ec5ab368099 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_upgrade_server_pop_up.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_upgrade_server_ready_install.png b/product_docs/docs/pem/7.16/images/pem_upgrade_server_ready_install.png new file mode 100644 index 00000000000..6e8694f62f8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_upgrade_server_ready_install.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_upgrade_server_webservice_configure.png b/product_docs/docs/pem/7.16/images/pem_upgrade_server_webservice_configure.png new file mode 100644 index 00000000000..b7263f3d27b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_upgrade_server_webservice_configure.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_upgrade_server_welcome.png b/product_docs/docs/pem/7.16/images/pem_upgrade_server_welcome.png new file mode 100644 index 00000000000..9a86342cad6 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_upgrade_server_welcome.png differ diff --git a/product_docs/docs/pem/7.16/images/pem_web_interface.png b/product_docs/docs/pem/7.16/images/pem_web_interface.png new file mode 100755 index 00000000000..b35783e3f36 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pem_web_interface.png differ diff --git a/product_docs/docs/pem/7.16/images/performance_diagnostic_chart_legends.png b/product_docs/docs/pem/7.16/images/performance_diagnostic_chart_legends.png new file mode 100644 index 00000000000..f6081466e3a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/performance_diagnostic_chart_legends.png differ diff --git a/product_docs/docs/pem/7.16/images/performance_diagnostic_datetime_selection.png b/product_docs/docs/pem/7.16/images/performance_diagnostic_datetime_selection.png new file mode 100644 index 00000000000..b5cb3450b4f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/performance_diagnostic_datetime_selection.png differ diff --git a/product_docs/docs/pem/7.16/images/performance_diagnostic_error.png b/product_docs/docs/pem/7.16/images/performance_diagnostic_error.png new file mode 100644 index 00000000000..c6434b0392c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/performance_diagnostic_error.png differ diff --git a/product_docs/docs/pem/7.16/images/performance_diagnostic_intro.png b/product_docs/docs/pem/7.16/images/performance_diagnostic_intro.png new file mode 100644 index 00000000000..b0e90bcf5e2 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/performance_diagnostic_intro.png differ diff --git a/product_docs/docs/pem/7.16/images/performance_diagnostic_query_dashboard.png b/product_docs/docs/pem/7.16/images/performance_diagnostic_query_dashboard.png new file mode 100644 index 00000000000..4a34888172d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/performance_diagnostic_query_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/images/performance_diagnostic_table_filter.png b/product_docs/docs/pem/7.16/images/performance_diagnostic_table_filter.png new file mode 100644 index 00000000000..5319bd74bd3 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/performance_diagnostic_table_filter.png differ diff --git a/product_docs/docs/pem/7.16/images/performance_diagnostic_timeseries_selection.png b/product_docs/docs/pem/7.16/images/performance_diagnostic_timeseries_selection.png new file mode 100644 index 00000000000..14764c9a2cc Binary files /dev/null and b/product_docs/docs/pem/7.16/images/performance_diagnostic_timeseries_selection.png differ diff --git a/product_docs/docs/pem/7.16/images/performance_diagnostic_users_table.png b/product_docs/docs/pem/7.16/images/performance_diagnostic_users_table.png new file mode 100644 index 00000000000..ea8a9df9ceb Binary files /dev/null and b/product_docs/docs/pem/7.16/images/performance_diagnostic_users_table.png differ diff --git a/product_docs/docs/pem/7.16/images/performance_diagnostic_wait_events.png b/product_docs/docs/pem/7.16/images/performance_diagnostic_wait_events.png new file mode 100644 index 00000000000..48638cd63a4 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/performance_diagnostic_wait_events.png differ diff --git a/product_docs/docs/pem/7.16/images/personalize_chart.png b/product_docs/docs/pem/7.16/images/personalize_chart.png new file mode 100755 index 00000000000..13fcc4fa6dc Binary files /dev/null and b/product_docs/docs/pem/7.16/images/personalize_chart.png differ diff --git a/product_docs/docs/pem/7.16/images/pgagent_general.png b/product_docs/docs/pem/7.16/images/pgagent_general.png new file mode 100644 index 00000000000..f5e79cb65b1 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pgagent_general.png differ diff --git a/product_docs/docs/pem/7.16/images/pgagent_properties.png b/product_docs/docs/pem/7.16/images/pgagent_properties.png new file mode 100644 index 00000000000..0164ccb51de Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pgagent_properties.png differ diff --git a/product_docs/docs/pem/7.16/images/pgagent_schedule_definition.png b/product_docs/docs/pem/7.16/images/pgagent_schedule_definition.png new file mode 100644 index 00000000000..31dc5f997c2 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pgagent_schedule_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/pgagent_schedule_exceptions.png b/product_docs/docs/pem/7.16/images/pgagent_schedule_exceptions.png new file mode 100644 index 00000000000..c71de3206a2 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pgagent_schedule_exceptions.png differ diff --git a/product_docs/docs/pem/7.16/images/pgagent_schedule_repeat.png b/product_docs/docs/pem/7.16/images/pgagent_schedule_repeat.png new file mode 100644 index 00000000000..3d3148a088a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pgagent_schedule_repeat.png differ diff --git a/product_docs/docs/pem/7.16/images/pgagent_scheduledetails1.png b/product_docs/docs/pem/7.16/images/pgagent_scheduledetails1.png new file mode 100644 index 00000000000..c59d3aa2f9d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pgagent_scheduledetails1.png differ diff --git a/product_docs/docs/pem/7.16/images/pgagent_scheduledetails2.png b/product_docs/docs/pem/7.16/images/pgagent_scheduledetails2.png new file mode 100644 index 00000000000..dd8ed0ced36 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pgagent_scheduledetails2.png differ diff --git a/product_docs/docs/pem/7.16/images/pgagent_scheduledetails3.png b/product_docs/docs/pem/7.16/images/pgagent_scheduledetails3.png new file mode 100644 index 00000000000..b837be00fd2 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pgagent_scheduledetails3.png differ diff --git a/product_docs/docs/pem/7.16/images/pgagent_scheduleproperties.png b/product_docs/docs/pem/7.16/images/pgagent_scheduleproperties.png new file mode 100644 index 00000000000..0d327a8c822 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pgagent_scheduleproperties.png differ diff --git a/product_docs/docs/pem/7.16/images/pgagent_schedules.png b/product_docs/docs/pem/7.16/images/pgagent_schedules.png new file mode 100644 index 00000000000..80103b766a1 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pgagent_schedules.png differ diff --git a/product_docs/docs/pem/7.16/images/pgagent_sql.png b/product_docs/docs/pem/7.16/images/pgagent_sql.png new file mode 100644 index 00000000000..e97f4010e30 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pgagent_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/pgagent_step_definition.png b/product_docs/docs/pem/7.16/images/pgagent_step_definition.png new file mode 100644 index 00000000000..abec0be24a3 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pgagent_step_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/pgagent_step_definition_code.png b/product_docs/docs/pem/7.16/images/pgagent_step_definition_code.png new file mode 100644 index 00000000000..2b247e8b48f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pgagent_step_definition_code.png differ diff --git a/product_docs/docs/pem/7.16/images/pgagent_stepdetails.png b/product_docs/docs/pem/7.16/images/pgagent_stepdetails.png new file mode 100644 index 00000000000..df48dabcb88 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pgagent_stepdetails.png differ diff --git a/product_docs/docs/pem/7.16/images/pgagent_steps.png b/product_docs/docs/pem/7.16/images/pgagent_steps.png new file mode 100644 index 00000000000..974d4dcb211 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pgagent_steps.png differ diff --git a/product_docs/docs/pem/7.16/images/pgagent_stepstats.png b/product_docs/docs/pem/7.16/images/pgagent_stepstats.png new file mode 100644 index 00000000000..65ae3cd71a6 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/pgagent_stepstats.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_bart_servers_nodes.png b/product_docs/docs/pem/7.16/images/preferences_bart_servers_nodes.png new file mode 100644 index 00000000000..7a68cff0948 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_bart_servers_nodes.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_browser_display.png b/product_docs/docs/pem/7.16/images/preferences_browser_display.png new file mode 100644 index 00000000000..6a9adf2e5c8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_browser_display.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_browser_keyboard_shortcuts.png b/product_docs/docs/pem/7.16/images/preferences_browser_keyboard_shortcuts.png new file mode 100644 index 00000000000..9b120f12d9d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_browser_keyboard_shortcuts.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_browser_nodes.png b/product_docs/docs/pem/7.16/images/preferences_browser_nodes.png new file mode 100644 index 00000000000..97fd2daa13b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_browser_nodes.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_browser_properties.png b/product_docs/docs/pem/7.16/images/preferences_browser_properties.png new file mode 100644 index 00000000000..94485abe62b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_browser_properties.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_browser_tab_settings.png b/product_docs/docs/pem/7.16/images/preferences_browser_tab_settings.png new file mode 100644 index 00000000000..868762f272c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_browser_tab_settings.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_dashboard_display.png b/product_docs/docs/pem/7.16/images/preferences_dashboard_display.png new file mode 100644 index 00000000000..c4da5895397 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_dashboard_display.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_dashboard_graphs.png b/product_docs/docs/pem/7.16/images/preferences_dashboard_graphs.png new file mode 100644 index 00000000000..0c0a06b5185 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_dashboard_graphs.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_debugger_display.png b/product_docs/docs/pem/7.16/images/preferences_debugger_display.png new file mode 100644 index 00000000000..cdb15b46147 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_debugger_display.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_debugger_keyboard_shortcuts.png b/product_docs/docs/pem/7.16/images/preferences_debugger_keyboard_shortcuts.png new file mode 100644 index 00000000000..50fd33058ab Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_debugger_keyboard_shortcuts.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_misc_themes.png b/product_docs/docs/pem/7.16/images/preferences_misc_themes.png new file mode 100644 index 00000000000..901bb81cc1e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_misc_themes.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_misc_user_language.png b/product_docs/docs/pem/7.16/images/preferences_misc_user_language.png new file mode 100644 index 00000000000..29ec4f995ba Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_misc_user_language.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_paths_binary.png b/product_docs/docs/pem/7.16/images/preferences_paths_binary.png new file mode 100644 index 00000000000..8d58826ffcb Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_paths_binary.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_paths_help.png b/product_docs/docs/pem/7.16/images/preferences_paths_help.png new file mode 100644 index 00000000000..4b354e13942 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_paths_help.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_performance_diagnostic_display.png b/product_docs/docs/pem/7.16/images/preferences_performance_diagnostic_display.png new file mode 100644 index 00000000000..41053cccb18 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_performance_diagnostic_display.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_scheduled_tasks_options.png b/product_docs/docs/pem/7.16/images/preferences_scheduled_tasks_options.png new file mode 100644 index 00000000000..ed8708b2151 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_scheduled_tasks_options.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_schema_diff.png b/product_docs/docs/pem/7.16/images/preferences_schema_diff.png new file mode 100644 index 00000000000..cbd618cfc26 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_schema_diff.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_sql_auto_completion.png b/product_docs/docs/pem/7.16/images/preferences_sql_auto_completion.png new file mode 100644 index 00000000000..e5a43986a34 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_sql_auto_completion.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_sql_csv_output.png b/product_docs/docs/pem/7.16/images/preferences_sql_csv_output.png new file mode 100644 index 00000000000..e6197c1ce9b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_sql_csv_output.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_sql_display.png b/product_docs/docs/pem/7.16/images/preferences_sql_display.png new file mode 100644 index 00000000000..97094eba83c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_sql_display.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_sql_editor.png b/product_docs/docs/pem/7.16/images/preferences_sql_editor.png new file mode 100644 index 00000000000..1adbbd04cae Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_sql_editor.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_sql_explain.png b/product_docs/docs/pem/7.16/images/preferences_sql_explain.png new file mode 100644 index 00000000000..dab807cb467 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_sql_explain.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_sql_formatting.png b/product_docs/docs/pem/7.16/images/preferences_sql_formatting.png new file mode 100644 index 00000000000..d328a80f62c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_sql_formatting.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_sql_keyboard_shortcuts.png b/product_docs/docs/pem/7.16/images/preferences_sql_keyboard_shortcuts.png new file mode 100644 index 00000000000..e070d0f9502 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_sql_keyboard_shortcuts.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_sql_options.png b/product_docs/docs/pem/7.16/images/preferences_sql_options.png new file mode 100644 index 00000000000..89ac8619c2e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_sql_options.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_sql_profiler_display.png b/product_docs/docs/pem/7.16/images/preferences_sql_profiler_display.png new file mode 100644 index 00000000000..092d146fb47 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_sql_profiler_display.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_sql_profiler_keyboard_shortcuts.png b/product_docs/docs/pem/7.16/images/preferences_sql_profiler_keyboard_shortcuts.png new file mode 100644 index 00000000000..7cd3f22034e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_sql_profiler_keyboard_shortcuts.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_sql_results_grid.png b/product_docs/docs/pem/7.16/images/preferences_sql_results_grid.png new file mode 100644 index 00000000000..5bb03e1f8a9 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_sql_results_grid.png differ diff --git a/product_docs/docs/pem/7.16/images/preferences_storage_options.png b/product_docs/docs/pem/7.16/images/preferences_storage_options.png new file mode 100644 index 00000000000..c1548a1537a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/preferences_storage_options.png differ diff --git a/product_docs/docs/pem/7.16/images/primary_key_definition.png b/product_docs/docs/pem/7.16/images/primary_key_definition.png new file mode 100644 index 00000000000..cbdfbec38b2 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/primary_key_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/primary_key_general.png b/product_docs/docs/pem/7.16/images/primary_key_general.png new file mode 100644 index 00000000000..a368b2d4aa3 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/primary_key_general.png differ diff --git a/product_docs/docs/pem/7.16/images/primary_key_sql.png b/product_docs/docs/pem/7.16/images/primary_key_sql.png new file mode 100644 index 00000000000..5c4efa6cfa3 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/primary_key_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/probe_log_analysis.png b/product_docs/docs/pem/7.16/images/probe_log_analysis.png new file mode 100644 index 00000000000..18d87bc1aab Binary files /dev/null and b/product_docs/docs/pem/7.16/images/probe_log_analysis.png differ diff --git a/product_docs/docs/pem/7.16/images/procedure_code.png b/product_docs/docs/pem/7.16/images/procedure_code.png new file mode 100644 index 00000000000..d7a53f9d12b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/procedure_code.png differ diff --git a/product_docs/docs/pem/7.16/images/procedure_definition.png b/product_docs/docs/pem/7.16/images/procedure_definition.png new file mode 100644 index 00000000000..f413f75c1dd Binary files /dev/null and b/product_docs/docs/pem/7.16/images/procedure_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/procedure_general.png b/product_docs/docs/pem/7.16/images/procedure_general.png new file mode 100644 index 00000000000..c236003eef1 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/procedure_general.png differ diff --git a/product_docs/docs/pem/7.16/images/procedure_options.png b/product_docs/docs/pem/7.16/images/procedure_options.png new file mode 100644 index 00000000000..6a0f2e928af Binary files /dev/null and b/product_docs/docs/pem/7.16/images/procedure_options.png differ diff --git a/product_docs/docs/pem/7.16/images/procedure_parameters.png b/product_docs/docs/pem/7.16/images/procedure_parameters.png new file mode 100644 index 00000000000..0b7fdb8f741 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/procedure_parameters.png differ diff --git a/product_docs/docs/pem/7.16/images/procedure_security.png b/product_docs/docs/pem/7.16/images/procedure_security.png new file mode 100644 index 00000000000..69945a6c4e5 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/procedure_security.png differ diff --git a/product_docs/docs/pem/7.16/images/procedure_sql.png b/product_docs/docs/pem/7.16/images/procedure_sql.png new file mode 100644 index 00000000000..084ee4c11d6 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/procedure_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/process_watcher_storage_manager.png b/product_docs/docs/pem/7.16/images/process_watcher_storage_manager.png new file mode 100644 index 00000000000..76e3372a99a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/process_watcher_storage_manager.png differ diff --git a/product_docs/docs/pem/7.16/images/query_autocomplete.png b/product_docs/docs/pem/7.16/images/query_autocomplete.png new file mode 100644 index 00000000000..f545e445fc9 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_autocomplete.png differ diff --git a/product_docs/docs/pem/7.16/images/query_execute_section.png b/product_docs/docs/pem/7.16/images/query_execute_section.png new file mode 100644 index 00000000000..25c8ef98f1d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_execute_section.png differ diff --git a/product_docs/docs/pem/7.16/images/query_explain_analyze_statistics.png b/product_docs/docs/pem/7.16/images/query_explain_analyze_statistics.png new file mode 100644 index 00000000000..6590bee64dd Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_explain_analyze_statistics.png differ diff --git a/product_docs/docs/pem/7.16/images/query_explain_analyze_table.png b/product_docs/docs/pem/7.16/images/query_explain_analyze_table.png new file mode 100644 index 00000000000..6db73069c60 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_explain_analyze_table.png differ diff --git a/product_docs/docs/pem/7.16/images/query_output_data.png b/product_docs/docs/pem/7.16/images/query_output_data.png new file mode 100644 index 00000000000..e4cea8a85bd Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_output_data.png differ diff --git a/product_docs/docs/pem/7.16/images/query_output_error.png b/product_docs/docs/pem/7.16/images/query_output_error.png new file mode 100644 index 00000000000..58eaa5f1a25 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_output_error.png differ diff --git a/product_docs/docs/pem/7.16/images/query_output_explain_details.png b/product_docs/docs/pem/7.16/images/query_output_explain_details.png new file mode 100644 index 00000000000..d199a00c523 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_output_explain_details.png differ diff --git a/product_docs/docs/pem/7.16/images/query_output_history.png b/product_docs/docs/pem/7.16/images/query_output_history.png new file mode 100644 index 00000000000..babcc797d81 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_output_history.png differ diff --git a/product_docs/docs/pem/7.16/images/query_output_messages.png b/product_docs/docs/pem/7.16/images/query_output_messages.png new file mode 100644 index 00000000000..096bcddd059 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_output_messages.png differ diff --git a/product_docs/docs/pem/7.16/images/query_output_notifications.png b/product_docs/docs/pem/7.16/images/query_output_notifications.png new file mode 100755 index 00000000000..e2c7e7d6db1 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_output_notifications.png differ diff --git a/product_docs/docs/pem/7.16/images/query_sql_editor.png b/product_docs/docs/pem/7.16/images/query_sql_editor.png new file mode 100644 index 00000000000..940bb2130bd Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_sql_editor.png differ diff --git a/product_docs/docs/pem/7.16/images/query_tool.png b/product_docs/docs/pem/7.16/images/query_tool.png new file mode 100644 index 00000000000..4be16c854e1 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_tool.png differ diff --git a/product_docs/docs/pem/7.16/images/query_tool_connection_status.png b/product_docs/docs/pem/7.16/images/query_tool_connection_status.png new file mode 100755 index 00000000000..9fe06e054fa Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_tool_connection_status.png differ diff --git a/product_docs/docs/pem/7.16/images/query_tool_connection_status_error.png b/product_docs/docs/pem/7.16/images/query_tool_connection_status_error.png new file mode 100755 index 00000000000..20875ca40de Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_tool_connection_status_error.png differ diff --git a/product_docs/docs/pem/7.16/images/query_tool_editable_columns.png b/product_docs/docs/pem/7.16/images/query_tool_editable_columns.png new file mode 100644 index 00000000000..b5fccac38ff Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_tool_editable_columns.png differ diff --git a/product_docs/docs/pem/7.16/images/query_tool_macros_clear_all.png b/product_docs/docs/pem/7.16/images/query_tool_macros_clear_all.png new file mode 100644 index 00000000000..91f2305e5c3 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_tool_macros_clear_all.png differ diff --git a/product_docs/docs/pem/7.16/images/query_tool_macros_clear_confirmation.png b/product_docs/docs/pem/7.16/images/query_tool_macros_clear_confirmation.png new file mode 100644 index 00000000000..65622130c4d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_tool_macros_clear_confirmation.png differ diff --git a/product_docs/docs/pem/7.16/images/query_tool_macros_clear_row.png b/product_docs/docs/pem/7.16/images/query_tool_macros_clear_row.png new file mode 100644 index 00000000000..bdf47f8d062 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_tool_macros_clear_row.png differ diff --git a/product_docs/docs/pem/7.16/images/query_tool_macros_execution.png b/product_docs/docs/pem/7.16/images/query_tool_macros_execution.png new file mode 100644 index 00000000000..690e25edbe2 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_tool_macros_execution.png differ diff --git a/product_docs/docs/pem/7.16/images/query_tool_manage_macros.png b/product_docs/docs/pem/7.16/images/query_tool_manage_macros.png new file mode 100644 index 00000000000..6ee43425099 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_tool_manage_macros.png differ diff --git a/product_docs/docs/pem/7.16/images/query_tool_manage_macros_dialog.png b/product_docs/docs/pem/7.16/images/query_tool_manage_macros_dialog.png new file mode 100644 index 00000000000..9db055921f8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_tool_manage_macros_dialog.png differ diff --git a/product_docs/docs/pem/7.16/images/query_tool_message.png b/product_docs/docs/pem/7.16/images/query_tool_message.png new file mode 100644 index 00000000000..e7fd4a725ff Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_tool_message.png differ diff --git a/product_docs/docs/pem/7.16/images/query_toolbar.png b/product_docs/docs/pem/7.16/images/query_toolbar.png new file mode 100644 index 00000000000..2be500f5712 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_toolbar.png differ diff --git a/product_docs/docs/pem/7.16/images/query_toolbar_explain.png b/product_docs/docs/pem/7.16/images/query_toolbar_explain.png new file mode 100644 index 00000000000..dff4a1de8f1 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/query_toolbar_explain.png differ diff --git a/product_docs/docs/pem/7.16/images/recursive_union_icon.png b/product_docs/docs/pem/7.16/images/recursive_union_icon.png new file mode 100644 index 00000000000..71d8dc6d52b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/recursive_union_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/refresh.png b/product_docs/docs/pem/7.16/images/refresh.png new file mode 100644 index 00000000000..58738a14da4 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/refresh.png differ diff --git a/product_docs/docs/pem/7.16/images/resource_group_general.png b/product_docs/docs/pem/7.16/images/resource_group_general.png new file mode 100644 index 00000000000..02da6828c67 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/resource_group_general.png differ diff --git a/product_docs/docs/pem/7.16/images/resource_group_sql.png b/product_docs/docs/pem/7.16/images/resource_group_sql.png new file mode 100644 index 00000000000..4d5f2c0a934 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/resource_group_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/restore_disable.png b/product_docs/docs/pem/7.16/images/restore_disable.png new file mode 100644 index 00000000000..94fd2de00c3 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/restore_disable.png differ diff --git a/product_docs/docs/pem/7.16/images/restore_do_not_save.png b/product_docs/docs/pem/7.16/images/restore_do_not_save.png new file mode 100644 index 00000000000..2b3b041489d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/restore_do_not_save.png differ diff --git a/product_docs/docs/pem/7.16/images/restore_general.png b/product_docs/docs/pem/7.16/images/restore_general.png new file mode 100644 index 00000000000..2cdaf12e8ce Binary files /dev/null and b/product_docs/docs/pem/7.16/images/restore_general.png differ diff --git a/product_docs/docs/pem/7.16/images/restore_messages.png b/product_docs/docs/pem/7.16/images/restore_messages.png new file mode 100644 index 00000000000..e7d158645d7 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/restore_messages.png differ diff --git a/product_docs/docs/pem/7.16/images/restore_miscellaneous.png b/product_docs/docs/pem/7.16/images/restore_miscellaneous.png new file mode 100644 index 00000000000..449c9aa98d5 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/restore_miscellaneous.png differ diff --git a/product_docs/docs/pem/7.16/images/restore_objects.png b/product_docs/docs/pem/7.16/images/restore_objects.png new file mode 100644 index 00000000000..8a7301430f5 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/restore_objects.png differ diff --git a/product_docs/docs/pem/7.16/images/restore_process_watcher.png b/product_docs/docs/pem/7.16/images/restore_process_watcher.png new file mode 100644 index 00000000000..4f730d72063 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/restore_process_watcher.png differ diff --git a/product_docs/docs/pem/7.16/images/restore_queries.png b/product_docs/docs/pem/7.16/images/restore_queries.png new file mode 100644 index 00000000000..a23349d95d0 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/restore_queries.png differ diff --git a/product_docs/docs/pem/7.16/images/restore_sections.png b/product_docs/docs/pem/7.16/images/restore_sections.png new file mode 100644 index 00000000000..e4127e1cc67 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/restore_sections.png differ diff --git a/product_docs/docs/pem/7.16/images/result_set_icon.png b/product_docs/docs/pem/7.16/images/result_set_icon.png new file mode 100644 index 00000000000..95da6223a54 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/result_set_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/rls_policy_commands_tab.png b/product_docs/docs/pem/7.16/images/rls_policy_commands_tab.png new file mode 100644 index 00000000000..53d544f3601 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/rls_policy_commands_tab.png differ diff --git a/product_docs/docs/pem/7.16/images/rls_policy_general_tab.png b/product_docs/docs/pem/7.16/images/rls_policy_general_tab.png new file mode 100644 index 00000000000..6bee9038093 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/rls_policy_general_tab.png differ diff --git a/product_docs/docs/pem/7.16/images/rls_policy_sql_tab.png b/product_docs/docs/pem/7.16/images/rls_policy_sql_tab.png new file mode 100644 index 00000000000..b3cb8491f57 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/rls_policy_sql_tab.png differ diff --git a/product_docs/docs/pem/7.16/images/role_definition.png b/product_docs/docs/pem/7.16/images/role_definition.png new file mode 100644 index 00000000000..d789971843d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/role_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/role_dialog_membership.png b/product_docs/docs/pem/7.16/images/role_dialog_membership.png new file mode 100644 index 00000000000..02c006e840a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/role_dialog_membership.png differ diff --git a/product_docs/docs/pem/7.16/images/role_general.png b/product_docs/docs/pem/7.16/images/role_general.png new file mode 100755 index 00000000000..2b27ede9fcc Binary files /dev/null and b/product_docs/docs/pem/7.16/images/role_general.png differ diff --git a/product_docs/docs/pem/7.16/images/role_membership.png b/product_docs/docs/pem/7.16/images/role_membership.png new file mode 100755 index 00000000000..c5adf259684 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/role_membership.png differ diff --git a/product_docs/docs/pem/7.16/images/role_parameters.png b/product_docs/docs/pem/7.16/images/role_parameters.png new file mode 100644 index 00000000000..1f045137304 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/role_parameters.png differ diff --git a/product_docs/docs/pem/7.16/images/role_privileges.png b/product_docs/docs/pem/7.16/images/role_privileges.png new file mode 100644 index 00000000000..2ec281e888e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/role_privileges.png differ diff --git a/product_docs/docs/pem/7.16/images/role_security.png b/product_docs/docs/pem/7.16/images/role_security.png new file mode 100644 index 00000000000..c9e566b051a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/role_security.png differ diff --git a/product_docs/docs/pem/7.16/images/role_sql.png b/product_docs/docs/pem/7.16/images/role_sql.png new file mode 100755 index 00000000000..cdd70ef368f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/role_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/rule_commands.png b/product_docs/docs/pem/7.16/images/rule_commands.png new file mode 100644 index 00000000000..6c9c49f2aeb Binary files /dev/null and b/product_docs/docs/pem/7.16/images/rule_commands.png differ diff --git a/product_docs/docs/pem/7.16/images/rule_condition.png b/product_docs/docs/pem/7.16/images/rule_condition.png new file mode 100644 index 00000000000..b7dbcc070d3 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/rule_condition.png differ diff --git a/product_docs/docs/pem/7.16/images/rule_definition.png b/product_docs/docs/pem/7.16/images/rule_definition.png new file mode 100644 index 00000000000..2c7e9734600 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/rule_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/rule_general.png b/product_docs/docs/pem/7.16/images/rule_general.png new file mode 100644 index 00000000000..9e2f6d407f3 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/rule_general.png differ diff --git a/product_docs/docs/pem/7.16/images/rule_sql.png b/product_docs/docs/pem/7.16/images/rule_sql.png new file mode 100644 index 00000000000..1d8375e172d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/rule_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/save_capacity_manager_template.png b/product_docs/docs/pem/7.16/images/save_capacity_manager_template.png new file mode 100755 index 00000000000..9b0b6a451d2 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/save_capacity_manager_template.png differ diff --git a/product_docs/docs/pem/7.16/images/schema_default_privileges.png b/product_docs/docs/pem/7.16/images/schema_default_privileges.png new file mode 100644 index 00000000000..029d3be06ae Binary files /dev/null and b/product_docs/docs/pem/7.16/images/schema_default_privileges.png differ diff --git a/product_docs/docs/pem/7.16/images/schema_diff_DDL_comparison.png b/product_docs/docs/pem/7.16/images/schema_diff_DDL_comparison.png new file mode 100755 index 00000000000..c737e46994d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/schema_diff_DDL_comparison.png differ diff --git a/product_docs/docs/pem/7.16/images/schema_diff_compare_button.png b/product_docs/docs/pem/7.16/images/schema_diff_compare_button.png new file mode 100755 index 00000000000..b7000437b5d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/schema_diff_compare_button.png differ diff --git a/product_docs/docs/pem/7.16/images/schema_diff_comparison_results.png b/product_docs/docs/pem/7.16/images/schema_diff_comparison_results.png new file mode 100755 index 00000000000..038a0e818e4 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/schema_diff_comparison_results.png differ diff --git a/product_docs/docs/pem/7.16/images/schema_diff_dialog.png b/product_docs/docs/pem/7.16/images/schema_diff_dialog.png new file mode 100755 index 00000000000..45d16f28fcb Binary files /dev/null and b/product_docs/docs/pem/7.16/images/schema_diff_dialog.png differ diff --git a/product_docs/docs/pem/7.16/images/schema_diff_filter_option.png b/product_docs/docs/pem/7.16/images/schema_diff_filter_option.png new file mode 100755 index 00000000000..f40a6e2697f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/schema_diff_filter_option.png differ diff --git a/product_docs/docs/pem/7.16/images/schema_diff_generate_script.png b/product_docs/docs/pem/7.16/images/schema_diff_generate_script.png new file mode 100755 index 00000000000..8118e0e6178 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/schema_diff_generate_script.png differ diff --git a/product_docs/docs/pem/7.16/images/schema_diff_generate_script_query_editor.png b/product_docs/docs/pem/7.16/images/schema_diff_generate_script_query_editor.png new file mode 100755 index 00000000000..315f6f30b01 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/schema_diff_generate_script_query_editor.png differ diff --git a/product_docs/docs/pem/7.16/images/schema_general.png b/product_docs/docs/pem/7.16/images/schema_general.png new file mode 100644 index 00000000000..f962afb99f6 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/schema_general.png differ diff --git a/product_docs/docs/pem/7.16/images/schema_security.png b/product_docs/docs/pem/7.16/images/schema_security.png new file mode 100644 index 00000000000..b7302c38a7d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/schema_security.png differ diff --git a/product_docs/docs/pem/7.16/images/schema_sql.png b/product_docs/docs/pem/7.16/images/schema_sql.png new file mode 100644 index 00000000000..86ed95e09d8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/schema_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/search_objects.png b/product_docs/docs/pem/7.16/images/search_objects.png new file mode 100644 index 00000000000..abc47c11ce8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/search_objects.png differ diff --git a/product_docs/docs/pem/7.16/images/seek_icon.png b/product_docs/docs/pem/7.16/images/seek_icon.png new file mode 100644 index 00000000000..6cfc6638a4f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/seek_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/seq_scan_icon.png b/product_docs/docs/pem/7.16/images/seq_scan_icon.png new file mode 100644 index 00000000000..4a688482c70 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/seq_scan_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/sequence_definition.png b/product_docs/docs/pem/7.16/images/sequence_definition.png new file mode 100644 index 00000000000..a93c25af3cf Binary files /dev/null and b/product_docs/docs/pem/7.16/images/sequence_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/sequence_general.png b/product_docs/docs/pem/7.16/images/sequence_general.png new file mode 100644 index 00000000000..11ced2f8105 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/sequence_general.png differ diff --git a/product_docs/docs/pem/7.16/images/sequence_security.png b/product_docs/docs/pem/7.16/images/sequence_security.png new file mode 100644 index 00000000000..399df2453ea Binary files /dev/null and b/product_docs/docs/pem/7.16/images/sequence_security.png differ diff --git a/product_docs/docs/pem/7.16/images/sequence_sql.png b/product_docs/docs/pem/7.16/images/sequence_sql.png new file mode 100644 index 00000000000..1c05c837d35 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/sequence_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/server_analysis.png b/product_docs/docs/pem/7.16/images/server_analysis.png new file mode 100644 index 00000000000..b707c484c64 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/server_analysis.png differ diff --git a/product_docs/docs/pem/7.16/images/server_log_analysis_dashboard.png b/product_docs/docs/pem/7.16/images/server_log_analysis_dashboard.png new file mode 100755 index 00000000000..19fc6cc6117 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/server_log_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/images/server_log_analysis_filter.png b/product_docs/docs/pem/7.16/images/server_log_analysis_filter.png new file mode 100755 index 00000000000..93edcd96f07 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/server_log_analysis_filter.png differ diff --git a/product_docs/docs/pem/7.16/images/session_activity_analysis_dashboard.png b/product_docs/docs/pem/7.16/images/session_activity_analysis_dashboard.png new file mode 100644 index 00000000000..36dd85bbdec Binary files /dev/null and b/product_docs/docs/pem/7.16/images/session_activity_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/images/session_waits_dashboard.png b/product_docs/docs/pem/7.16/images/session_waits_dashboard.png new file mode 100644 index 00000000000..d3756f195da Binary files /dev/null and b/product_docs/docs/pem/7.16/images/session_waits_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/images/set_operator_icon.png b/product_docs/docs/pem/7.16/images/set_operator_icon.png new file mode 100644 index 00000000000..d7837c85f6a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/set_operator_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/sm_icon.png b/product_docs/docs/pem/7.16/images/sm_icon.png new file mode 100644 index 00000000000..13522104e7a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/sm_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/sort_icon.png b/product_docs/docs/pem/7.16/images/sort_icon.png new file mode 100644 index 00000000000..9d9eded1935 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/sort_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/sp_create_new_trace.png b/product_docs/docs/pem/7.16/images/sp_create_new_trace.png new file mode 100755 index 00000000000..75492502f5b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/sp_create_new_trace.png differ diff --git a/product_docs/docs/pem/7.16/images/sp_create_new_trace_executed.png b/product_docs/docs/pem/7.16/images/sp_create_new_trace_executed.png new file mode 100755 index 00000000000..8e44eb8799b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/sp_create_new_trace_executed.png differ diff --git a/product_docs/docs/pem/7.16/images/sp_create_new_trace_periodic_job.png b/product_docs/docs/pem/7.16/images/sp_create_new_trace_periodic_job.png new file mode 100755 index 00000000000..73a87433e70 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/sp_create_new_trace_periodic_job.png differ diff --git a/product_docs/docs/pem/7.16/images/sp_create_new_trace_schedule.png b/product_docs/docs/pem/7.16/images/sp_create_new_trace_schedule.png new file mode 100755 index 00000000000..da15fa22602 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/sp_create_new_trace_schedule.png differ diff --git a/product_docs/docs/pem/7.16/images/sp_delete_trace.png b/product_docs/docs/pem/7.16/images/sp_delete_trace.png new file mode 100755 index 00000000000..c4953aa77cd Binary files /dev/null and b/product_docs/docs/pem/7.16/images/sp_delete_trace.png differ diff --git a/product_docs/docs/pem/7.16/images/sp_open_existing_trace.png b/product_docs/docs/pem/7.16/images/sp_open_existing_trace.png new file mode 100755 index 00000000000..5c7a9a7fdf1 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/sp_open_existing_trace.png differ diff --git a/product_docs/docs/pem/7.16/images/sp_scheduled_traces.png b/product_docs/docs/pem/7.16/images/sp_scheduled_traces.png new file mode 100755 index 00000000000..362f291473f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/sp_scheduled_traces.png differ diff --git a/product_docs/docs/pem/7.16/images/sp_sql_profiler_tab.png b/product_docs/docs/pem/7.16/images/sp_sql_profiler_tab.png new file mode 100644 index 00000000000..08fb4783960 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/sp_sql_profiler_tab.png differ diff --git a/product_docs/docs/pem/7.16/images/sp_toolbar.png b/product_docs/docs/pem/7.16/images/sp_toolbar.png new file mode 100644 index 00000000000..b384e779164 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/sp_toolbar.png differ diff --git a/product_docs/docs/pem/7.16/images/sp_trace_details.png b/product_docs/docs/pem/7.16/images/sp_trace_details.png new file mode 100644 index 00000000000..203a734ea55 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/sp_trace_details.png differ diff --git a/product_docs/docs/pem/7.16/images/sp_trace_filter.png b/product_docs/docs/pem/7.16/images/sp_trace_filter.png new file mode 100644 index 00000000000..9b9145e2147 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/sp_trace_filter.png differ diff --git a/product_docs/docs/pem/7.16/images/sqlprofiler_upgrade.png b/product_docs/docs/pem/7.16/images/sqlprofiler_upgrade.png new file mode 100644 index 00000000000..74eb0be6644 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/sqlprofiler_upgrade.png differ diff --git a/product_docs/docs/pem/7.16/images/storage_analysis_dashboard.png b/product_docs/docs/pem/7.16/images/storage_analysis_dashboard.png new file mode 100644 index 00000000000..3ef427f4f36 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/storage_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/images/storage_manager.png b/product_docs/docs/pem/7.16/images/storage_manager.png new file mode 100644 index 00000000000..53e5c594a58 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/storage_manager.png differ diff --git a/product_docs/docs/pem/7.16/images/str_replication_dashboard_primary.png b/product_docs/docs/pem/7.16/images/str_replication_dashboard_primary.png new file mode 100644 index 00000000000..55a234d3fe2 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/str_replication_dashboard_primary.png differ diff --git a/product_docs/docs/pem/7.16/images/str_replication_dashboard_replica.png b/product_docs/docs/pem/7.16/images/str_replication_dashboard_replica.png new file mode 100644 index 00000000000..aa7f3073d01 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/str_replication_dashboard_replica.png differ diff --git a/product_docs/docs/pem/7.16/images/subplan_icon.png b/product_docs/docs/pem/7.16/images/subplan_icon.png new file mode 100644 index 00000000000..e12d7ea3bf0 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/subplan_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/synonym_general.png b/product_docs/docs/pem/7.16/images/synonym_general.png new file mode 100644 index 00000000000..c35cefd5e1d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/synonym_general.png differ diff --git a/product_docs/docs/pem/7.16/images/synonym_sql.png b/product_docs/docs/pem/7.16/images/synonym_sql.png new file mode 100644 index 00000000000..d496c3777b0 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/synonym_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/system_configuration_report_pem_agents.png b/product_docs/docs/pem/7.16/images/system_configuration_report_pem_agents.png new file mode 100755 index 00000000000..380370dd8f3 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/system_configuration_report_pem_agents.png differ diff --git a/product_docs/docs/pem/7.16/images/system_configuration_report_pem_server_directory.png b/product_docs/docs/pem/7.16/images/system_configuration_report_pem_server_directory.png new file mode 100755 index 00000000000..29cfc8b8483 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/system_configuration_report_pem_server_directory.png differ diff --git a/product_docs/docs/pem/7.16/images/system_configuration_report_pem_summary_and_summary.png b/product_docs/docs/pem/7.16/images/system_configuration_report_pem_summary_and_summary.png new file mode 100755 index 00000000000..44a0f0b8714 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/system_configuration_report_pem_summary_and_summary.png differ diff --git a/product_docs/docs/pem/7.16/images/system_waits_dashboard.png b/product_docs/docs/pem/7.16/images/system_waits_dashboard.png new file mode 100644 index 00000000000..33662a25a95 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/system_waits_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/images/table_advanced.png b/product_docs/docs/pem/7.16/images/table_advanced.png new file mode 100644 index 00000000000..c7b89bbb40d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/table_advanced.png differ diff --git a/product_docs/docs/pem/7.16/images/table_check_constraint_definition.png b/product_docs/docs/pem/7.16/images/table_check_constraint_definition.png new file mode 100644 index 00000000000..deee34454c4 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/table_check_constraint_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/table_check_constraint_general.png b/product_docs/docs/pem/7.16/images/table_check_constraint_general.png new file mode 100644 index 00000000000..caf9bb274c8 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/table_check_constraint_general.png differ diff --git a/product_docs/docs/pem/7.16/images/table_columns.png b/product_docs/docs/pem/7.16/images/table_columns.png new file mode 100644 index 00000000000..c4da1aa4173 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/table_columns.png differ diff --git a/product_docs/docs/pem/7.16/images/table_exclusion_constraint_columns.png b/product_docs/docs/pem/7.16/images/table_exclusion_constraint_columns.png new file mode 100644 index 00000000000..c2609174715 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/table_exclusion_constraint_columns.png differ diff --git a/product_docs/docs/pem/7.16/images/table_exclusion_constraint_definition.png b/product_docs/docs/pem/7.16/images/table_exclusion_constraint_definition.png new file mode 100644 index 00000000000..89f48e0f98b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/table_exclusion_constraint_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/table_exclusion_constraint_general.png b/product_docs/docs/pem/7.16/images/table_exclusion_constraint_general.png new file mode 100644 index 00000000000..c30d8e15001 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/table_exclusion_constraint_general.png differ diff --git a/product_docs/docs/pem/7.16/images/table_foreign_key_action.png b/product_docs/docs/pem/7.16/images/table_foreign_key_action.png new file mode 100644 index 00000000000..1c35c14b2cb Binary files /dev/null and b/product_docs/docs/pem/7.16/images/table_foreign_key_action.png differ diff --git a/product_docs/docs/pem/7.16/images/table_foreign_key_columns.png b/product_docs/docs/pem/7.16/images/table_foreign_key_columns.png new file mode 100644 index 00000000000..76d735c7ec4 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/table_foreign_key_columns.png differ diff --git a/product_docs/docs/pem/7.16/images/table_foreign_key_definition.png b/product_docs/docs/pem/7.16/images/table_foreign_key_definition.png new file mode 100644 index 00000000000..c0ec4c99262 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/table_foreign_key_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/table_foreign_key_general.png b/product_docs/docs/pem/7.16/images/table_foreign_key_general.png new file mode 100644 index 00000000000..971013fbf18 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/table_foreign_key_general.png differ diff --git a/product_docs/docs/pem/7.16/images/table_general.png b/product_docs/docs/pem/7.16/images/table_general.png new file mode 100755 index 00000000000..2c8a03a5042 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/table_general.png differ diff --git a/product_docs/docs/pem/7.16/images/table_parameter.png b/product_docs/docs/pem/7.16/images/table_parameter.png new file mode 100644 index 00000000000..dd4f8ee8b3f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/table_parameter.png differ diff --git a/product_docs/docs/pem/7.16/images/table_partition.png b/product_docs/docs/pem/7.16/images/table_partition.png new file mode 100644 index 00000000000..69f93d4e5ce Binary files /dev/null and b/product_docs/docs/pem/7.16/images/table_partition.png differ diff --git a/product_docs/docs/pem/7.16/images/table_partition_tree.png b/product_docs/docs/pem/7.16/images/table_partition_tree.png new file mode 100644 index 00000000000..b914a61151e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/table_partition_tree.png differ diff --git a/product_docs/docs/pem/7.16/images/table_primary_constraints_general.png b/product_docs/docs/pem/7.16/images/table_primary_constraints_general.png new file mode 100644 index 00000000000..d3de2eb6c24 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/table_primary_constraints_general.png differ diff --git a/product_docs/docs/pem/7.16/images/table_primary_key_definition.png b/product_docs/docs/pem/7.16/images/table_primary_key_definition.png new file mode 100644 index 00000000000..b0ab1de7d73 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/table_primary_key_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/table_security.png b/product_docs/docs/pem/7.16/images/table_security.png new file mode 100644 index 00000000000..16057c07788 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/table_security.png differ diff --git a/product_docs/docs/pem/7.16/images/table_sql.png b/product_docs/docs/pem/7.16/images/table_sql.png new file mode 100644 index 00000000000..a22411bd120 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/table_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/table_unique_constraint_definition.png b/product_docs/docs/pem/7.16/images/table_unique_constraint_definition.png new file mode 100644 index 00000000000..b426efa6b8b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/table_unique_constraint_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/table_unique_constraint_general.png b/product_docs/docs/pem/7.16/images/table_unique_constraint_general.png new file mode 100644 index 00000000000..41254b81ce7 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/table_unique_constraint_general.png differ diff --git a/product_docs/docs/pem/7.16/images/tablespace_definition.png b/product_docs/docs/pem/7.16/images/tablespace_definition.png new file mode 100644 index 00000000000..7bfb8ae150f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/tablespace_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/tablespace_general.png b/product_docs/docs/pem/7.16/images/tablespace_general.png new file mode 100644 index 00000000000..4ca7a284113 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/tablespace_general.png differ diff --git a/product_docs/docs/pem/7.16/images/tablespace_parameters.png b/product_docs/docs/pem/7.16/images/tablespace_parameters.png new file mode 100644 index 00000000000..48fec3c4b99 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/tablespace_parameters.png differ diff --git a/product_docs/docs/pem/7.16/images/tablespace_security.png b/product_docs/docs/pem/7.16/images/tablespace_security.png new file mode 100644 index 00000000000..f7935954954 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/tablespace_security.png differ diff --git a/product_docs/docs/pem/7.16/images/tablespace_sql.png b/product_docs/docs/pem/7.16/images/tablespace_sql.png new file mode 100644 index 00000000000..cc61d185595 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/tablespace_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/tableview.png b/product_docs/docs/pem/7.16/images/tableview.png new file mode 100644 index 00000000000..0191c4fe619 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/tableview.png differ diff --git a/product_docs/docs/pem/7.16/images/title_edb_postgress_image.png b/product_docs/docs/pem/7.16/images/title_edb_postgress_image.png new file mode 100755 index 00000000000..076b80db3d5 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/title_edb_postgress_image.png differ diff --git a/product_docs/docs/pem/7.16/images/trigger_code.png b/product_docs/docs/pem/7.16/images/trigger_code.png new file mode 100644 index 00000000000..bb820a689c5 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/trigger_code.png differ diff --git a/product_docs/docs/pem/7.16/images/trigger_definition.png b/product_docs/docs/pem/7.16/images/trigger_definition.png new file mode 100644 index 00000000000..45e1271ea28 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/trigger_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/trigger_definition_enabled.png b/product_docs/docs/pem/7.16/images/trigger_definition_enabled.png new file mode 100644 index 00000000000..50c8f4b7b2c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/trigger_definition_enabled.png differ diff --git a/product_docs/docs/pem/7.16/images/trigger_events.png b/product_docs/docs/pem/7.16/images/trigger_events.png new file mode 100644 index 00000000000..0426b901740 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/trigger_events.png differ diff --git a/product_docs/docs/pem/7.16/images/trigger_function_code.png b/product_docs/docs/pem/7.16/images/trigger_function_code.png new file mode 100644 index 00000000000..3543b8476cc Binary files /dev/null and b/product_docs/docs/pem/7.16/images/trigger_function_code.png differ diff --git a/product_docs/docs/pem/7.16/images/trigger_function_definition.png b/product_docs/docs/pem/7.16/images/trigger_function_definition.png new file mode 100644 index 00000000000..66ef4e4bc1d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/trigger_function_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/trigger_function_general.png b/product_docs/docs/pem/7.16/images/trigger_function_general.png new file mode 100644 index 00000000000..955d80325ae Binary files /dev/null and b/product_docs/docs/pem/7.16/images/trigger_function_general.png differ diff --git a/product_docs/docs/pem/7.16/images/trigger_function_options.png b/product_docs/docs/pem/7.16/images/trigger_function_options.png new file mode 100644 index 00000000000..d388271d3b2 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/trigger_function_options.png differ diff --git a/product_docs/docs/pem/7.16/images/trigger_function_parameters.png b/product_docs/docs/pem/7.16/images/trigger_function_parameters.png new file mode 100644 index 00000000000..8782be2326f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/trigger_function_parameters.png differ diff --git a/product_docs/docs/pem/7.16/images/trigger_function_security.png b/product_docs/docs/pem/7.16/images/trigger_function_security.png new file mode 100644 index 00000000000..8361a65145d Binary files /dev/null and b/product_docs/docs/pem/7.16/images/trigger_function_security.png differ diff --git a/product_docs/docs/pem/7.16/images/trigger_function_sql.png b/product_docs/docs/pem/7.16/images/trigger_function_sql.png new file mode 100644 index 00000000000..a9a2504f8fc Binary files /dev/null and b/product_docs/docs/pem/7.16/images/trigger_function_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/trigger_general.png b/product_docs/docs/pem/7.16/images/trigger_general.png new file mode 100644 index 00000000000..848ebd1451e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/trigger_general.png differ diff --git a/product_docs/docs/pem/7.16/images/trigger_sql.png b/product_docs/docs/pem/7.16/images/trigger_sql.png new file mode 100644 index 00000000000..1bfde85cefc Binary files /dev/null and b/product_docs/docs/pem/7.16/images/trigger_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/tuning_wiz_apply_changes.png b/product_docs/docs/pem/7.16/images/tuning_wiz_apply_changes.png new file mode 100755 index 00000000000..841d1893951 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/tuning_wiz_apply_changes.png differ diff --git a/product_docs/docs/pem/7.16/images/tuning_wiz_changes_sum.png b/product_docs/docs/pem/7.16/images/tuning_wiz_changes_sum.png new file mode 100755 index 00000000000..f7107888cea Binary files /dev/null and b/product_docs/docs/pem/7.16/images/tuning_wiz_changes_sum.png differ diff --git a/product_docs/docs/pem/7.16/images/tuning_wiz_configuration.png b/product_docs/docs/pem/7.16/images/tuning_wiz_configuration.png new file mode 100755 index 00000000000..27a768ae2c7 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/tuning_wiz_configuration.png differ diff --git a/product_docs/docs/pem/7.16/images/tuning_wiz_confirm_chg.png b/product_docs/docs/pem/7.16/images/tuning_wiz_confirm_chg.png new file mode 100755 index 00000000000..2420acd65ee Binary files /dev/null and b/product_docs/docs/pem/7.16/images/tuning_wiz_confirm_chg.png differ diff --git a/product_docs/docs/pem/7.16/images/tuning_wiz_generate_report.png b/product_docs/docs/pem/7.16/images/tuning_wiz_generate_report.png new file mode 100755 index 00000000000..7523656e401 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/tuning_wiz_generate_report.png differ diff --git a/product_docs/docs/pem/7.16/images/tuning_wiz_report.png b/product_docs/docs/pem/7.16/images/tuning_wiz_report.png new file mode 100755 index 00000000000..0a8d16faeba Binary files /dev/null and b/product_docs/docs/pem/7.16/images/tuning_wiz_report.png differ diff --git a/product_docs/docs/pem/7.16/images/tuning_wiz_server_sel.png b/product_docs/docs/pem/7.16/images/tuning_wiz_server_sel.png new file mode 100755 index 00000000000..973905645f0 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/tuning_wiz_server_sel.png differ diff --git a/product_docs/docs/pem/7.16/images/tuning_wiz_welcome.png b/product_docs/docs/pem/7.16/images/tuning_wiz_welcome.png new file mode 100755 index 00000000000..5ba0c518e61 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/tuning_wiz_welcome.png differ diff --git a/product_docs/docs/pem/7.16/images/tuple_id_scan_icon.png b/product_docs/docs/pem/7.16/images/tuple_id_scan_icon.png new file mode 100644 index 00000000000..f52a4c34c2f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/tuple_id_scan_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/type_composite.png b/product_docs/docs/pem/7.16/images/type_composite.png new file mode 100644 index 00000000000..3969b62fa39 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/type_composite.png differ diff --git a/product_docs/docs/pem/7.16/images/type_enumeration.png b/product_docs/docs/pem/7.16/images/type_enumeration.png new file mode 100644 index 00000000000..4e9c4c35507 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/type_enumeration.png differ diff --git a/product_docs/docs/pem/7.16/images/type_external.png b/product_docs/docs/pem/7.16/images/type_external.png new file mode 100644 index 00000000000..ce082934aaf Binary files /dev/null and b/product_docs/docs/pem/7.16/images/type_external.png differ diff --git a/product_docs/docs/pem/7.16/images/type_general.png b/product_docs/docs/pem/7.16/images/type_general.png new file mode 100644 index 00000000000..9a8c7d2f52e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/type_general.png differ diff --git a/product_docs/docs/pem/7.16/images/type_range.png b/product_docs/docs/pem/7.16/images/type_range.png new file mode 100644 index 00000000000..0fb03f64487 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/type_range.png differ diff --git a/product_docs/docs/pem/7.16/images/type_security.png b/product_docs/docs/pem/7.16/images/type_security.png new file mode 100644 index 00000000000..c2085ee41e9 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/type_security.png differ diff --git a/product_docs/docs/pem/7.16/images/type_shell.png b/product_docs/docs/pem/7.16/images/type_shell.png new file mode 100644 index 00000000000..6f709148ca2 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/type_shell.png differ diff --git a/product_docs/docs/pem/7.16/images/type_sql.png b/product_docs/docs/pem/7.16/images/type_sql.png new file mode 100644 index 00000000000..129e771c70c Binary files /dev/null and b/product_docs/docs/pem/7.16/images/type_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/unique_constraint_definition.png b/product_docs/docs/pem/7.16/images/unique_constraint_definition.png new file mode 100644 index 00000000000..9c4858ed5b1 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/unique_constraint_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/unique_constraint_general.png b/product_docs/docs/pem/7.16/images/unique_constraint_general.png new file mode 100644 index 00000000000..d0418c55605 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/unique_constraint_general.png differ diff --git a/product_docs/docs/pem/7.16/images/unique_constraint_sql.png b/product_docs/docs/pem/7.16/images/unique_constraint_sql.png new file mode 100644 index 00000000000..fba1d841f45 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/unique_constraint_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/unique_icon.png b/product_docs/docs/pem/7.16/images/unique_icon.png new file mode 100644 index 00000000000..519dcf277a0 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/unique_icon.png differ diff --git a/product_docs/docs/pem/7.16/images/uparrow.png b/product_docs/docs/pem/7.16/images/uparrow.png new file mode 100644 index 00000000000..3c4303d859e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/uparrow.png differ diff --git a/product_docs/docs/pem/7.16/images/upgrade_backendDB_permission_Windows_security.png b/product_docs/docs/pem/7.16/images/upgrade_backendDB_permission_Windows_security.png new file mode 100755 index 00000000000..34b1b1f7ae7 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/upgrade_backendDB_permission_Windows_security.png differ diff --git a/product_docs/docs/pem/7.16/images/upgrade_backingDB_permission_Windows_security.png b/product_docs/docs/pem/7.16/images/upgrade_backingDB_permission_Windows_security.png new file mode 100755 index 00000000000..34b1b1f7ae7 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/upgrade_backingDB_permission_Windows_security.png differ diff --git a/product_docs/docs/pem/7.16/images/upload.png b/product_docs/docs/pem/7.16/images/upload.png new file mode 100644 index 00000000000..ec9d0eb80fe Binary files /dev/null and b/product_docs/docs/pem/7.16/images/upload.png differ diff --git a/product_docs/docs/pem/7.16/images/user_mapping_general.png b/product_docs/docs/pem/7.16/images/user_mapping_general.png new file mode 100644 index 00000000000..c0eb5378718 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/user_mapping_general.png differ diff --git a/product_docs/docs/pem/7.16/images/user_mapping_options.png b/product_docs/docs/pem/7.16/images/user_mapping_options.png new file mode 100644 index 00000000000..8e8a4bc5b8f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/user_mapping_options.png differ diff --git a/product_docs/docs/pem/7.16/images/user_mapping_sql.png b/product_docs/docs/pem/7.16/images/user_mapping_sql.png new file mode 100644 index 00000000000..a364fa2a24f Binary files /dev/null and b/product_docs/docs/pem/7.16/images/user_mapping_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/view_code.png b/product_docs/docs/pem/7.16/images/view_code.png new file mode 100644 index 00000000000..4465b7d9a48 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/view_code.png differ diff --git a/product_docs/docs/pem/7.16/images/view_definition.png b/product_docs/docs/pem/7.16/images/view_definition.png new file mode 100644 index 00000000000..bd35587a4bb Binary files /dev/null and b/product_docs/docs/pem/7.16/images/view_definition.png differ diff --git a/product_docs/docs/pem/7.16/images/view_general.png b/product_docs/docs/pem/7.16/images/view_general.png new file mode 100644 index 00000000000..e77e699e855 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/view_general.png differ diff --git a/product_docs/docs/pem/7.16/images/view_security.png b/product_docs/docs/pem/7.16/images/view_security.png new file mode 100644 index 00000000000..f8242af1784 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/view_security.png differ diff --git a/product_docs/docs/pem/7.16/images/view_sql.png b/product_docs/docs/pem/7.16/images/view_sql.png new file mode 100644 index 00000000000..fe4d9b1380e Binary files /dev/null and b/product_docs/docs/pem/7.16/images/view_sql.png differ diff --git a/product_docs/docs/pem/7.16/images/viewdata_filter_dialog.png b/product_docs/docs/pem/7.16/images/viewdata_filter_dialog.png new file mode 100644 index 00000000000..9e322f1b4b9 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/viewdata_filter_dialog.png differ diff --git a/product_docs/docs/pem/7.16/images/webhook_add.png b/product_docs/docs/pem/7.16/images/webhook_add.png new file mode 100644 index 00000000000..ccfa81aaf50 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/webhook_add.png differ diff --git a/product_docs/docs/pem/7.16/images/webhook_add_headers.png b/product_docs/docs/pem/7.16/images/webhook_add_headers.png new file mode 100644 index 00000000000..1667179041a Binary files /dev/null and b/product_docs/docs/pem/7.16/images/webhook_add_headers.png differ diff --git a/product_docs/docs/pem/7.16/images/webhook_add_notification.png b/product_docs/docs/pem/7.16/images/webhook_add_notification.png new file mode 100644 index 00000000000..8bcca976628 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/webhook_add_notification.png differ diff --git a/product_docs/docs/pem/7.16/images/webhook_add_payload.png b/product_docs/docs/pem/7.16/images/webhook_add_payload.png new file mode 100644 index 00000000000..060e2e7a14b Binary files /dev/null and b/product_docs/docs/pem/7.16/images/webhook_add_payload.png differ diff --git a/product_docs/docs/pem/7.16/images/webhook_delete.png b/product_docs/docs/pem/7.16/images/webhook_delete.png new file mode 100644 index 00000000000..a9c51c0f2e7 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/webhook_delete.png differ diff --git a/product_docs/docs/pem/7.16/images/webhook_ssl_config.png b/product_docs/docs/pem/7.16/images/webhook_ssl_config.png new file mode 100644 index 00000000000..802aadceebf Binary files /dev/null and b/product_docs/docs/pem/7.16/images/webhook_ssl_config.png differ diff --git a/product_docs/docs/pem/7.16/images/webhook_ssl_config_windows.png b/product_docs/docs/pem/7.16/images/webhook_ssl_config_windows.png new file mode 100644 index 00000000000..f38b2754e27 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/webhook_ssl_config_windows.png differ diff --git a/product_docs/docs/pem/7.16/images/webhooks_tab.png b/product_docs/docs/pem/7.16/images/webhooks_tab.png new file mode 100644 index 00000000000..6e3c2e5c5bd Binary files /dev/null and b/product_docs/docs/pem/7.16/images/webhooks_tab.png differ diff --git a/product_docs/docs/pem/7.16/images/window_aggregate_icon.png b/product_docs/docs/pem/7.16/images/window_aggregate_icon.png new file mode 100644 index 00000000000..3329322e348 Binary files /dev/null and b/product_docs/docs/pem/7.16/images/window_aggregate_icon.png differ diff --git a/product_docs/docs/pem/7.16/index.mdx b/product_docs/docs/pem/7.16/index.mdx index f67d17b39fb..8583b0bcc8b 100644 --- a/product_docs/docs/pem/7.16/index.mdx +++ b/product_docs/docs/pem/7.16/index.mdx @@ -1,12 +1,20 @@ --- title: "EDB Postgres Enterprise Manager" -productStub: true directoryDefaults: description: "EDB Postgres Enterprise Manager Version 7.16 Documentation and release notes. PostgreSQL GUI tool for monitoring and performance optimization." - -legacyRedirectsGenerated: - # This list is generated by a script. If you need add entries, use the `legacyRedirects` key. - - "/edb-docs/p/edb-postgres-enterprise-manager/7.16" +navigation: + - "#Getting Started" + - pem_inst_guide_linux + - pem_pgbouncer + - pem_upgrade + - pem_inst_guide_windows + - "#Guides" + - pem_admin + - pem_agent + - pem_bart + - pem_ent_feat + - pem_security_best_practices + - pem_sqlprofiler + - "#Online Help" + - pem_online_help --- - - diff --git a/product_docs/docs/pem/7.16/pem_admin/01_overview.mdx b/product_docs/docs/pem/7.16/pem_admin/01_overview.mdx new file mode 100644 index 00000000000..e86558c4dc2 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_admin/01_overview.mdx @@ -0,0 +1,33 @@ +--- +title: "PEM Overview" +--- + +PEM provides a number of benefits not found in any other PostgreSQL management tool: + +- **Management en Masse Design**. PEM is designed for enterprise database management, and is built to tackle the management of large numbers of servers across geographical boundaries. Global dashboards keep you up to date on the up/down/performance status of all your servers in an at-a-glance fashion. + +- **Distributed Architecture**. PEM is architected in a way that maximizes its ability to gather statistical information and to perform operations remotely on machines regardless of operating system platform. + +- **Graphical Administration**. All aspects of database administration can be carried out in the PEM client via a graphical interface. Server startup and shutdown, configuration management, storage and security control, object creation, performance management, and more can be handled from a single console. + +- **Full SQL IDE**. PEM contains a robust SQL integrated development environment (IDE) that provides ad-hoc SQL querying, stored procedure/function development, and a graphical debugger. + +- **Enterprise Performance Monitoring**. PEM provides enterprise-class performance monitoring for all managed database servers. Lightweight and efficient agents monitor all aspects of each database server’s operations as well as each machine’s underlying operating system and provide detailed statistics back to easily navigated performance pages within the interface. + +- **Proactive Alert Management**. PEM ships out-of-the-box with the ability to create performance thresholds for each key metric (e.g. memory, storage, etc.) that are monitored around-the-clock. Any threshold violation results in an alert being sent to a centralized dashboard that communicates the nature of the problem and what actions are necessary to prevent the situation from jeopardizing the overall performance of the server. + +- **Simplified Capacity Planning**. All key performance-related statistics are automatically collected and retained for a specified period of time in PEM’s repository. The Capacity Manager utility allows you to select various statistics and perform trend analysis over time to understand things such as peak load periods, storage consumption trends, and much more. A forecasting mechanism in the tool allows you to also forecast resource usage in the future and plan/budget accordingly. + +- **Audit Manager.** The Audit Manager configures audit logging on Advanced Server instances. Activities such as connections to a database, disconnections from a database, and the SQL statements run against a database can be logged. The Audit Log dashboard can then be used to filter and view the log. + +- **Log Manager.** The Log Manager wizard configures server logging parameters, with (optional) log collection into a central table. Use the wizard to specify your preference for logging behaviors such as log file rotation, log destination and error message severity. Use the Server Log dashboard to filter and review the collected server log entries. + +- **SQL Workload Profiling**. PEM contains a SQL profiling utility that allows you to trace the SQL statements that are executed against one or more servers. SQL profiling can either be done in an ad-hoc or scheduled manner. Captured SQL statements can then be filtered so you can easily identify and tune poorly running SQL statements. SQL statements can also be fed into an Index Advisor on Advanced Server that analyzes each statement and makes recommendations on new indexes that should be created to help performance. + +- **Expert Database Analysis**. PEM includes the Postgres Expert utility. Postgres Expert analyzes selected databases for best practice enforcement purposes. Areas such as general configuration, security setup, and much more are examined. Any deviations from recommended best practices are reported back to you, along with an explanation of each particular issue, and expert help on what to do about making things right. + +- **Streaming Replication Monitoring.** You can monitor the the Streaming Replication dashboard or use options on the PEM client to promote a replica node to the primary node. + +- **Secure Client Connectivity.** PEM supports secure client connections through an encrypted SSH tunnel. The full-featured PEM client includes an SSH Tunnel definition dialog that allows you to provide connection information for a secure connection. + +- **Wide Platform Support**. PEM supports most major Linux and Windows platforms. diff --git a/product_docs/docs/pem/7.16/pem_admin/02_registering_server.mdx b/product_docs/docs/pem/7.16/pem_admin/02_registering_server.mdx new file mode 100644 index 00000000000..c7830d7cb70 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_admin/02_registering_server.mdx @@ -0,0 +1,269 @@ +--- +title: "Registering a Server" +--- + +Before you can manage or monitor a server with PEM, you must register the server with PEM, and bind an agent. A server may be bound to a remote agent (an agent that resides on a different host), but if the agent does not reside on the same host, it will not have access to all of the statistical information about the instance. + +## Manually Registering a Server + +To manage or monitor a server with PEM, you must: + +- Register your Advanced Server or PostgreSQL server with the PEM server. +- Bind the server to a PEM agent. + +You can use the `Create - Server` dialog to provide registration information for a server, bind a PEM agent, and display the server in PEM client tree control. To open the `Create - Server` dialog, navigate through the `Create` option on the `Object` menu (or the context menu of a server group) and select `Server…`. + +![Accessing the Create – Server dialog](../images/pem_accessing_create_server_dialog.png) + +!!! Note + You must ensure the `pg_hba.conf` file of the Postgres server that you are registering allows connections from the host of the PEM client before attempting to connect. + +![The General tab of the Create – Server dialog](../images/create_server_general_tab.png) + +Use the fields on the `General` tab to describe the general properties of the server: + +- Use the `Name` field to specify a user-friendly name for the server. The name specified will identify the server in the PEM `Browser` tree control. +- You can use groups to organize your servers and agents in the tree control. Using groups can help you manage large numbers of servers more easily. For example, you may want to have a production group, a test group, or LAN specific groups. Use the `Group` drop-down listbox to select the server group in which the new server will be displayed. +- Use the `Team` field to specify a Postgres role name. Only PEM users who are members of this role, who created the server initially, or have superuser privileges on the PEM server will see this server when they logon to PEM. If this field is left blank, all PEM users will see the server. +- Use the `Background` color selector to select the color that will be displayed in the PEM tree control behind database objects that are stored on the server. +- Use the `Foreground` color selector to select the font color of labels in the PEM tree control for objects stored on the server. +- Check the box next to `Connect now?` to instruct PEM to attempt a server connection when you click the Save button. Leave `Connect now?` unchecked if you do not want the PEM client to validate the specified connection parameters until a later connection attempt. +- Provide notes about the server in the `Comments` field. + +![The Connection tab of the Create – Server dialog](../images/create_server_connection_tab.png) + +Use fields on the `Connection tab` to specify connection details for the server: + +- Specify the IP address of the server host, or the fully qualified domain name in the `Host name/address` field. On Unix based systems, the address field may be left blank to use the default PostgreSQL Unix Domain Socket on the local machine, or may be set to an alternate path containing a PostgreSQL socket. If you enter a path, the path must begin with a "/". +- Specify the port number of the host in the `Port` field. +- Use the `Maintenance database` field to specify the name of the initial database that PEM will connect to, and that will be expected to contain `pgAgent` schema and `adminpack` objects installed (both optional). On PostgreSQL 8.1 and above, the maintenance DB is normally called `postgres`; on earlier versions `template1` is often used, though it is preferrable to create a `postgres` database to avoid cluttering the template database. +- Specify the name that will be used when authenticating with the server in the `Username` field. +- Provide the password associated with the specified user in the `Password` field. +- Check the box next to `Save password?` to instruct PEM to store passwords in encrypted format in PEM backend database for later reuse. Each password is stored on a per user, per server basis, and won't be shared with other team members. PEM will use the saved password to connect the database server next time. To remove a saved password, disconnect the database server first, and then use the `Clear Saved Password` menu item from the `Object/Context` menu. +- Use the `Role` field to specify the name of the role that is assigned the privileges that the client should use after connecting to the server. This allows you to connect as one role, and then assume the permissions of another role when the connection is established (the one you specified in this field). The connecting role must be a member of the role specified. + +![The SSL tab of the Create – Server dialog](../images/create_server_ssl_tab.png) + +Use the fields on the `SSL` tab to configure SSL: + +- Use the drop-down list box in the `SSL mode` field to select the type of SSL connection the server should use. For more information about using SSL encryption, see the PostgreSQL documentation at: + + + +You can use the platform-specific file manager dialog to upload files that support SSL encryption to the server. To access the file manager, click the icon that is located to the right of each of the following fields: + +- Use the `Client certificate` field to specify the file containing the client SSL certificate. This file will replace the default `~/.postgresql/postgresql.crt` file if PEM is installed in Desktop mode, and `//.postgresql/postgresql.crt` if PEM is installed in Web mode. This parameter is ignored if an SSL connection is not made. +- Use the `Client certificate` key field to specify the file containing the secret key used for the client certificate. This file will replace the default `~/.postgresql/postgresql.key` if PEM is installed in Desktop mode, and `//.postgresql/postgresql.key` if PEM is installed in Web mode. This parameter is ignored if an SSL connection is not made. +- Use the `Root certificate` field to specify the file containing the SSL certificate authority. This file will replace the default `~/.postgresql/root.crt` file. This parameter is ignored if an SSL connection is not made. +- Use the `Certificate revocation list` field to specify the file containing the SSL certificate revocation list. This list will replace the default list, found in `~/.postgresql/root.crl`. This parameter is ignored if an SSL connection is not made. +- When `SSL compression?` is set to `True`, data sent over SSL connections will be compressed. The default value is `False` (compression is disabled). This parameter is ignored if an SSL connection is not made. + +**Warning:** Certificates, private keys, and the revocation list are stored in the per-user file storage area on the server, which is owned by the user account under which the PEM server process is run. This means that administrators of the server may be able to access those files; appropriate caution should be taken before choosing to use this feature. + +![The SSH Tunnel tab of the Create – Server dialog](../images/create_server_ssh_tunnel_tab.png) + +Use the fields on the `SSH Tunnel` tab to configure SSH Tunneling. You can use a tunnel to connect a database server (through an intermediary proxy host) to a server that resides on a network to which the client may not be able to connect directly. + +- Set `Use SSH tunneling` to `Yes` to specify that PEM should use an SSH tunnel when connecting to the specified server. +- Specify the name or IP address of the SSH host (through which client connections will be forwarded) in the `Tunnel host` field. +- Specify the port of the SSH host (through which client connections will be forwarded) in the `Tunnel port` field. +- Specify the name of a user with login privileges for the SSH host in the `Username` field. +- Specify the type of authentication that will be used when connecting to the SSH host in the `Authentication` field. +- Select `Password` to specify that PEM will use a password for authentication to the SSH host. This is the default. +- Select `Identity file` to specify that PEM will use a private key file when connecting. +- If the SSH host is expecting a private key file for authentication, use the `Identity file` field to specify the location of the key file. +- If the SSH host is expecting a password, use the `Password` field to specify the password, or if an identity file is being used, the passphrase. + +![The Advanced tab of the Create – Server dialog](../images/create_server_advanced_tab.png) + +Use fields on the `Advanced` tab to specify details that are used to manage the server: + +- Specify the IP address of the server host in the `Host Address1` field. + +- Use the `DB restriction` field to specify a SQL restriction that will be used against the [pg_database](http://www.postgresql.org/docs/current/interactive/catalog-pg-database.html) table to limit the databases displayed in the tree control. For example, you might enter: `'live_db'`, `'test_db'` to instruct the PEM browser to display only the `live_db` and `test_db` databases. Note that you can also limit the schemas shown in the database from the database properties dialog by entering a restriction against [pg_namespace](http://www.postgresql.org/docs/current/interactive/catalog-pg-namespace.html). + +- Use the `Password file` field to specify the location of a password file (`.pgpass`). The `.pgpass` file allows a user to login without providing a password when they connect. It must be present on the PEM Server. For more information, see the Postgres documentation at: + + + +- Use the `Service ID` field to specify parameters to control the database service process. For servers that are stored in the Enterprise Manager directory, enter the service ID. On Windows machines, this is the identifier for the Windows service. On Linux machines, the name of the init script used to start the server is `/etc/init.d` and the name of the systemd script to start the server is systemctl. For example, the name of the Advanced Server 11 service is `edb-as-11`. For local servers, the setting is operating system dependent: + + - If the PEM client is running on a Windows machine, it can control the postmaster service if you have sufficient access rights. Enter the name of the service. In case of a remote server, it must be prepended by the machine name (e.g. `PSE1\pgsql-8.0`). PEM will automatically discover services running on your local machine. + - If the PEM client is running on a Linux machine, it can control processes running on the local machine if you have enough access rights. Provide a full path and needed options to access the `pg_ctl` program. When executing service control functions, PEM will append status/start/stop keywords to this. For example: + + `sudo /usr/pgsql-x/bin/pg_ctl -D /var/lib/pgsql/x/data` + where `x` is the version of the PostgreSQL database server. + +- If the server is a member of a Failover Manager cluster, you can use PEM to monitor the health of the cluster and to replace the primary node if necessary. To enable PEM to monitor Failover Manager, use the `EFM cluster name` field to specify the cluster name. The cluster name is the prefix of the name of the Failover Manager cluster properties file. For example, if the cluster properties file is named `efm.properties`, the cluster name is `efm`. + +- If you are using PEM to monitor the status of a Failover Manager cluster, use the `EFM installation path` field to specify the location of the Failover Manager binary file. By default, the Failover Manager binary file is installed in `/usr/edb/efm-x.x/bin`, where `x.x` specifies the Failover Manager version. + +![The PEM Agent tab of the Create – Server dialog](../images/create_server_pem_agent_tab.png) + +Use fields on the `PEM Agent` tab to specify connection details for the PEM agent: + +- Select an Enterprise Manager agent using the drop-down listbox to the right of the `Bound agent` label. One agent can monitor multiple Postgres servers. + +- Move the `Remote monitoring?` slider to `Yes` to indicate that the PEM agent does not reside on the same host as the monitored server. When remote monitoring is enabled, agent level statistics for the monitored server will not be available for custom charts and dashboards, and the remote server will not be accessible by some PEM utilities (such as Audit Manager, Capacity Manager, Log Manager, Postgres Expert and Tuning Wizard). + +- Enter the IP address or socket path that the agent should use when connecting to the database server in the `Host` field. By default, the agent will use the host address shown on the `General` tab. On a Unix server, you may wish to specify a socket path, e.g. `/tmp`. + +- Enter the `Port` number that the agent will use when connecting to the server. By default, the agent will use the port defined on the `Properties` tab. + +- Use the drop-down listbox in the `SSL` field to specify an SSL operational mode; specify require, prefer, allow, disable, verify-ca or verify-full. For more information about using SSL encryption, see the [PostgreSQL documentation](https://www.postgresql.org/docs/12.1/libpq-ssl.html). + +- Use the `Database` field to specify the name of the database to which the agent will initially connect. + +- Specify the name of the role that agent should use when connecting to the server in the `User name` field. Note that if the specified role is not a database superuser, then some of the features will not work as expected. For the list of features that do not work if the specified role is not a database superuser, see [Agent privileges](../pem_agent/03_managing_pem_agent/#managing_pem_agent). + + If you are using Postgres version 10 or above, you can use the `pg_monitor` role to grant the required privileges to a non-superuser. For information about `pg_monitor` role, see [Default Roles](https://www.postgresql.org/docs/current/default-roles.html). + +- Specify the name of the user that agent should use when connecting to the server in the `User name` field. Note that if the specified user is not a database superuser, then some of the features will not work as expected. If you are using Postgres version 10 or above, you can use the `pg_monitor` role to grant the required privileges to a non-superuser. For information about `pg_monitor` role, see [Default Roles](https://www.postgresql.org/docs/current/default-roles.html). + +- Specify the password that the agent should use when connecting to the server in the `Password` field, and verify it by typing it again in the `Confirm password` field. If you do not specify a password, you will need to configure the authentication for the agent manually; for example, you can use a `.pgpass` file, and it must be present and accessible on the system, where agent is installed. + +- Set the `Allow takeover?` slider to `Yes` to specify that the server may be taken over by another agent. This feature allows an agent to take responsibility for the monitoring of the database server if, for example, the server has been moved to another host as part of a high availability failover process. + +![The Create Server dialog (BART - General tab)](../images/create_server_bart_general.png) + +Use the fields on the `General` tab under `BART` tab to describe the general properties of the BART Server that will map to the PEM server: + +- Use the `BART server` field to select the BART server name. All the BART servers configured in the PEM console will be listed in this drop down list. +- Use the `Server name` field to specify a name for the database server that you want to backup using the BART server. This name gets stored in the BART configuration file. +- Use the `Backup name` field to specify a template for user-defined names to be assigned to the backups of the database server. If you do not specify a backup name template, then the backup can only be referenced in BART sub-commands by the BART-assigned integer backup identifier. +- Use the `Host address` field to specify the IP address of the database server that you want to configure for backup. +- Use the `Port` field to specify the port to be used for the database that you want to backup. +- Use the `User` field to specify the user of the database that you want to backup using BART through PEM console. If you want to enable incremental backups for this database server, then the user must be a superuser. +- Use the `Password` field to specify the password for the user of the database that you want to backup. +- Use the `Cluster Owner` field to specify the Linux operating system user account that owns the database cluster. This is typically `enterprisedb` for Advanced Server database clusters installed in the Oracle databases compatible mode, or `postgres` for PostgreSQL database clusters and for Advanced Server database clusters installed in the PostgreSQL databases compatible mode. +- Use the `Archive command` field to specify the desired format of the archive command string to be used in the `bart.cfg` file. Inputs provided for the Archive command will overwrite the database server's `Postgresql.conf` file. Once the server gets added, the database server will be restarted or database configurations will be reloaded. +- Use the `Allow incremental backup?` switch to specify if incremental backup should be enabled for this database server. +- Use the `Setup passwordless SSH?` switch to specify if you want to create SSH certificates to allow passwordess logins between the Database Server and the BART server. Ensure to bind a PEM agent before setting up the passwordless SSH authentication. Passwordless SSH will not work for a database server being remotely monitored by a PEM agent. + +![The Create - Server dialog (BART - Misc tab)](../images/create_server_bart_misc.png) + +Use the fields on the `Misc` tab under `BART` tab to describe the miscellaneous properties of the BART Server: + +- Use the `Override default configuration?` Switch to specify if you want to override the BART server configurations with the specific database server configurations. +- Use the `Xlog` method to specify how the transaction log should be collected during the execution of `pg_basebackup`. +- Use the `Retention policy` field to specify the retention policy for the backup. This determines when an active backup should be marked as obsolete, and hence, be a candidate for deletion. You can specify the retention policy in terms of number of backup or in terms of duration (days, weeks, or months). +- Use the `WAL compression` switch to specify if you want to compress the archived Xlog/WAL files in Gzip format. To enable WAL compression, the gzip compression program must be present in the BART user account’s PATH. The wal_compression setting must not be enabled for those database servers where you need to take incremental backups. +- Use the `Copy WALs during restore` field to specify how the archived WAL files are collected when invoking the RESTORE operation. Set to enabled to copy the archived WAL files from the BART backup catalog to the <restore_path>/archived_wals directory prior to the database server archive recovery. Set to disabled to retrieve the archived WAL files directly from the BART backup catalog during the database server archive recovery. +- Use the `Thread count` field to specify the number of threads to copy the blocks. You must set `thread count` to `1` if you want to take a backup with the `pg_basebackup` utility. +- Use the `Batch size` field to specify the number of blocks of memory used for copying modified blocks, applicable only for incremental backups. +- Use the `Scan interval` field to specify the number of seconds after which the WAL scanner should scan the new WAL files. +- Use the `MBM scan timeout` field to specify the number of seconds to wait for MBM files before timing out, applicable only for incremental backups. + +To view the properties of a server, right-click on the server name in the PEM client tree control, and select the `Properties…` option from the context menu. To modify a server's properties, disconnect from the server before opening the `Properties` dialog. + +## Automatic Server Discovery + +If the server you wish to monitor resides on the same host as the monitoring agent, you can use the `Auto Discovery` dialog to simplify the registration and binding process. + +To enable auto discovery for a specific agent, you must enable the `Server Auto Discovery` probe. To access the `Manage Probes` tab, highlight the name of a PEM agent in the PEM client tree control, and select `Manage Probes...` from the `Management` menu. When the `Manage Probes` tab opens, confirm that the slider control in the `Enabled?` column is set to `Yes`. + +To open the `Auto Discovery` dialog, highlight the name of a PEM agent in the PEM client tree control, and select `Auto Discovery...` from the `Management` menu. + +![The PEM Auto Discovery dialog](../images/auto_discovery.png) + +When the `Auto Discovery` dialog opens, the `Discovered Database Servers` box will display a list of servers that are currently not being monitored by a PEM agent. Check the box next to a server name to display information about the server in the `Server Connection Details` box, and connection properties for the agent in the `Agent Connection Details` box. + +Use the `Check All` button to select the box next to all of the displayed servers, or `Uncheck All` to deselect all of the boxes to the left of the server names. + +The fields in the `Server Connection Details` box provide information about the server that PEM will monitor: + +- Accept or modify the name of the monitored server in the `Name` field. The specified name will be displayed in the tree control of the PEM client. +- Use the `Server group` drop-down listbox to select the server group under which the server will be displayed in the PEM client tree control. +- Use the `Host name/address` field to specify the IP address of the monitored server. +- The `Port` field displays the port that is monitored by the server; this field may not be modified. +- Provide the name of the service in the `Service ID` field. Please note that the service name must be provided to enable some PEM functionality. +- By default, the `Maintenance database` field indicates that the selected server uses a Postgres maintenance database. Customize the content of the `Maintenance database` field for your installation. + +The fields in the `Agent Connection Details` box specify the properties that the PEM agent will use when connecting to the server: + +- The `Host` field displays the IP address that will be used for the PEM agent binding. +- The `User name` field displays the name that will be used by the PEM agent when connecting to the selected server. +- The `Password` field displays the password associated with the specified user name. +- Use the drop-down listbox in the `SSL mode` field to specify your SSL connection preferences. + +When you've finished specifying the connection properties for the servers that you are binding for monitoring, click the `OK` button to register the servers. Click `Cancel` to exit without preserving any changes. + +![The registered server](../images/global_overview.png) + +After clicking the `OK` button, the newly registered server is displayed in the PEM tree control and is monitored by the PEM server. + +## Using the pemworker Utility to Register a Server + +You can use the `pemworker` utility to register a server for monitoring by the PEM server or to unregister a database server. During registration, the `pemworker` utility will bind the new server to the agent that resides on the system from which you invoked the registration command. To register a server: + +On a Linux host, use the command: + + `pemworker --register-server` + +On a Windows host, use the command: + + `pemworker.exe REGISTER-SERVICE` + +Append command line options to the command string when invoking the `pemworker` utility. Each option should be followed by a corresponding value: + +| Option | Description | +| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `--pem-user` | Specifies the name of the PEM administrative user. Required. | +| `--server-addr` | Specifies the IP address of the server host, or the fully qualified domain name. On Unix based systems, the address field may be left blank to use the default PostgreSQL Unix Domain Socket on the local machine, or may be set to an alternate path containing a PostgreSQL socket. If you enter a path, the path must begin with a /. Required. | +| `--server-port` | Specifies the port number of the host. Required. | +| `--server-database` | Specifies the name of the database to which the server will connect. Required. | +| `--server-user` | Specify the name of the user that will be used by the agent when monitoring the server. Required. | +| `--server-service-name` | Specifies the name of the database service that controls operations on the server that is being registered (STOP, START, RESTART, etc.). Optional. | +| `--remote-monitoring` | Include the --remote-monitoring clause and a value of no (the default) to indicate that the server is installed on the same machine as the PEM agent. When remote monitoring is enabled (yes), agent level statistics for the monitored server will not be available for custom charts and dashboards, and the remote server will not be accessible by some PEM utilities (such as Audit Manager, Capacity Manager, Log Manager, Postgres Expert and Tuning Wizard). Required. | +| `--efm-cluster-name` | Specifies the name of the Failover Manager cluster that monitors the server (if applicable). Optional. | +| `--efm-install-path` | Specifies the complete path to the installation directory of Failover Manager (if applicable). Optional. | +| `--asb-host-name` | Specifies the name of the host to which the agent is connecting. | +| `--asb-host-port` | Specifies the port number that the agent will use when connecting to the database. | +| `--asb-host-db` | Specifies the name of the database to which the agent will connect. | +| `--asb-host-user` | Specifies the database user name that the agent will supply when authenticating with the database. | +| `--asb-ssl-mode` | Specifies the type of SSL authentication that will be used for connections. Supported values include: prefer, require, disable, verify-CA, verify-full. | +| `--group` | Specifies the name of the group in which the server will be displayed. | +| `--team` | Specifies the name of the group role that will be allowed to access the server. | +| `--owner` | Specifies the name of the role that will own the monitored server. | + +Set the environment variable `PEM_SERVER_PASSWORD` to provide the password for the PEM server to allow the pemworker to connect as a PEM admin user. + +Set the environment variable `PEM_MONITORED_SERVER_PASSWORD` to provide the password of the database server being registered and monitored by pemagent. + +Failure to provide the password will result in a password authentication error. The PEM server will acknowledge that the server has been registered properly. + +### Using the pemworker Utility to Unregister a Server + +You can use the `pemworker` utility to unregister a database server; to unregister a server, invoke the `pemworker` utility: + +On a Linux host, use the command: + + `pemworker --unregister-server` + +On a Windows host, use the command: + + `pemworker.exe UNREGISTER-SERVICE` + +Append command line options to the command string when invoking the `pemworker` utility. Each option should be followed by a corresponding value: + +| Option | Description | +| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `--pem-user` | Specifies the name of the PEM administrative user. Required. | +| `--server-addr` | Specifies the IP address of the server host, or the fully qualified domain name. On Unix based systems, the address field may be left blank to use the default PostgreSQL Unix Domain Socket on the local machine, or may be set to an alternate path containing a PostgreSQL socket. If you enter a path, the path must begin with a /. Required. | +| `--server-port` | Specifies the port number of the host. Required. | + +Use the `PEM_SERVER_PASSWORD` environment variable to provide the password for the PEM server to allow the pemworker to connect as a PEM admin user. + +Failure to provide the password will result in a password authentication error. The PEM server will acknowledge that the server has been unregistered. + +## Verifying the Connection and Binding + +Once registered, the new server will be added to the PEM `Browser` tree control, and be displayed on the `Global Overview`. + +![The Global Overview dashboard](../images/global_overview.png) + +When initially connecting to a newly bound server, the `Global Overview` dashboard may display the new server with a status of “unknown” in the server list; before recognizing the server, the bound agent must execute a number of probes to examine the server, which may take a few minutes to complete depending on network availability. + +Within a few minutes, bar graphs on the `Global Overview` dashboard should show that the agent has now connected successfully, and the new server is included in the `Postgres Server Status` list. + +If after five minutes, the `Global Overview` dashboard still does not list the new server, you should review the logfiles for the monitoring agent, checking for errors. Right-click the agent's name in the tree control, and select the `Probe Log Analysis` option from the `Dashboards` sub-menu of the context menu. diff --git a/product_docs/docs/pem/7.16/pem_admin/03_pem_define_aws_instance_connection.mdx b/product_docs/docs/pem/7.16/pem_admin/03_pem_define_aws_instance_connection.mdx new file mode 100644 index 00000000000..a860158d8bf --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_admin/03_pem_define_aws_instance_connection.mdx @@ -0,0 +1,54 @@ +--- +title: "Defining and Monitoring Postgres instances on AWS" +--- + +There are two scenarios in which you can monitor a Postgres instance on an AWS host with PEM. You can monitor a: + +- Postgres Instance running on AWS EC2 +- Postgres Instance running on AWS RDS + +## Monitoring a Postgres Instance Running on AWS EC2 + +After creating a Postgres instance on AWS EC2, you can use the PEM server to register and monitor your instance. The following scenarios are currently supported: + +- Postgres instance and PEM Agent running on the same AWS EC2 and a PEM Server running on your local machine. +- Postgres instance and PEM Agent running on the same local machine and a PEM Server running on AWS EC2. +- Postgres instance and PEM Agent running on the same AWS EC2 and a PEM Server running in different AWS EC2. + +!!! Note + In the first two scenarios, you must configure the VPN on AWS EC2 , so the AWS EC2 instance can access the `pem` database. Please contact your network administrator to setup the VPN if needed. + +The PEM Agent running on AWS EC2 or on your local machine should be registered to the PEM Server. Please note that when registering the PEM Agent with the PEM Server you should use the hostname of AWS EC2 instance. For more details on registering the PEM Agent see, [PEM Self Registration](02_registering_server/#registering_server). + +You can register the Postgres instance running on AWS EC2 on PEM Server using the `Create - Server` dialog. For more details on registering the server using `Create - Server` dialog see, [Registering a Server](02_registering_server/#registering_server). Use the `PEM Agent` tab on the `Create - Server` dialog to bind the registered PEM Agent with the Postgres instance. + +When the PEM Agent is registered to the PEM Server and your Postgres instance that is running on AWS EC2 is registered to the PEM Server, you can monitor your instance with PEM. + +## Monitoring a Postgres Instance Running on AWS RDS + +While creating an AWS RDS database, choose `PostgreSQL` when prompted for `Engine options`. After creating a `Postgres(RDS)` instance on AWS, use `Create - Server` dialog to add the `Postgres(RDS)` instance to the PEM Server. Using this dialog you can describe a new server connection, bind the server to a PEM Agent, and display the server to the PEM browser tree control. + +For detailed information on the `Create - Server` dialog and configuration details for each tab, see [Registering a Server](02_registering_server/#registering_server). + +The `PEM Agent` tab in the `Create - Server` dialog must have the `Remote Monitoring` field set to `Yes` to monitor the `Postgres(RDS)` instance on AWS instance using PEM Server. + +![Create Server dialog - PEM Agent tab](../images/create_server_pem_agent_tab_remote_monitoring.png) + +As the PEM Agent will be monitoring the Postgres(RDS) AWS instance remotely, the functionality will be limited as described below: + +| Feature Name | Works with remote PEM Agent | Comments | +| ---------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Audit Manager | No | | +| Capacity Manager | Limited | There will be no correlation between the database server and operating system metrices. | +| Log Manager | No | | +| Manage Alerts | Limited | When you run an alert script on the database server, it will run on the machine where the bound PEM Agent is running, and not on the actual database server machine. | +| Manage Charts | Yes | | +| Manage Dashboards | Limited | Some dashboards may not be able to show complete data. For example, the operating system information of the database server will not be displayed as it is not available. | +| Manage Probes | Limited | Some of the PEM probes will not return information, and some of the functionalities may be affected. For details about probe functionality, see the [PEM Agent Guide](../pem_agent/). | +| Postgres Expert | Limited | The Postgres Expert will provide partial information as operating system information is not available. | +| Postgres Log Analysis Expert | No | The Postgres Log Analysis Expert will not be able to perform an analysis as it is dependent on the logs imported by log manager, which will not work as required. | +| Scheduled Tasks | Limited | Scheduled tasks will work only for database server; scripts will run on a remote Agent. | +| Tuning Wizard | No | | +| System Reports | Yes | | +| Core Usage Reports | Limited | The Core Usage report will not show complete information. For example, the platform, number of cores, and total RAM will not be displayed. | +| Managing BART | No | BART requires password less authentication between two machines, where database server and BART are installed. An AWS RDS instance doesn't allow to use host access. | diff --git a/product_docs/docs/pem/7.16/pem_admin/04_managing_certificates.mdx b/product_docs/docs/pem/7.16/pem_admin/04_managing_certificates.mdx new file mode 100644 index 00000000000..7d60fe0c07c --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_admin/04_managing_certificates.mdx @@ -0,0 +1,251 @@ +--- +title: "Managing Certificates" +--- + +Files stored in the data directory of the PEM server backing database contain information that helps the PEM server utilize secure connections: + +- `ca_certificate.crt` +- `ca_key.key` +- `server.crt` +- `server.key` +- `root.crl` +- `root.crt` + +The PEM agent that is installed with the PEM server monitors the expiration date of the `ca_certificate.crt` file. When the certificate is about to expire, PEM will: + +- Make a backup of the existing certificate files. +- Create new certificate files, appending the new CA certificate file to the root.crt file on the PEM server. +- Create a job that renews the certificate file of any active agents. +- Restart the PEM server. + +When you uninstall an agent, the certificate associated with that agent will be added to the certificate revocation list (maintained in the `root.crl` file) to ensure that the certificate cannot be used to connect to the PEM server. + +The following sections contain detailed information about manually replacing certificate files. + +## Replacing SSL Certificates + +The following steps detail replacing the SSL certificates on an existing PEM installation. If you plan to upgrade your server to a new version at the same time, invoke all of the PEM installers (first the server installer, then agent installers) before replacing the SSL certificates. Then: + +1. Stop all running PEM agents, first on the server host, and then on any monitored node. + + To stop a PEM agent on a Linux host, open a terminal window, assume superuser privileges, and enter the command: + + On Linux with systemd, for eg: Centos 7 or 8 + + ```text + systemctl stop pemagent + ``` + + On a Windows host, you can use the `Services` applet to stop the PEM agent. The PEM agent service is named Postgres Enterprise Manager Agent; highlight the service name in the `Services` dialog, and click `Stop the service`. + +2. Take a backup of the existing SSL keys and certificates. The SSL keys and certificates are stored in the `data` directory under your PEM installation. For example, the default location on a Linux system is: + + `/var/lib/pgsql/x/data` where `x` is the PostgreSQL database version. + + Make a copy of the following files, adding an extension to each file to make the name unique: + + - `ca_certificate.crt` + - `ca_key.key` + - `root.crt` + - `root.crl` + - `server.key` + - `server.crt` + + For example, the command: + + ```text + # cp ca_certificate.crt ca_certificate_old.crt + ``` + + Creates a backup of the `ca_certificate` file with the word `old` appended to the entry. + +3. Use the `openssl_rsa_generate_key()` function to generate the `ca_key.key` file: + + ```text + /usr/pgsql-x.x/bin/psql -U postgres -d pem --no-psqlrc -t -A -c "SELECT public.openssl_rsa_generate_key(1024)" > /var/lib/pgsql/x/data/ca_key.key + ``` + + After creating the `ca_key.key` file, `cat` the contents to the variable `CA_KEY` for use when generating the `ca_certificate.crt` file and modify the privileges on the `ca_key.key` file: + + ```text + CA_KEY=$(cat /var/lib/pgsql/x/data/ca_key.key) + + chmod 600 /var/lib/pgsql/x/data/ca_key.key + ``` + +4. Use the key to generate the `ca_certificate.crt` file. For simplicity, place the SQL query into a temporary file with a unique name: + + ```text + echo "SELECT openssl_csr_to_crt(openssl_rsa_key_to_csr('${CA_KEY}', + 'PEM','US', 'MA', 'Bedford', 'Postgres Enterprise Manager', + 'support@enterprisedb.com'), NULL, + '/var/lib/pgsql/x/data/ca_key.key')" > /tmp/_random.$$ + ``` + + Then use the variable to execute the query, placing the content into the `ca_certificate.crt` file. + + ```text + /usr/pgsql-x/bin/psql -U postgres -d pem --no-psqlrc -t -A -f /tmp/_random.$$ > /var/lib/pgsql/x/data/ca_certificate.crt + ``` + + Modify the permissions of the `ca_certificate.crt` file, and remove the temporary file that contained the SQL command: + + ```text + chmod 600 /var/lib/pgsql/x/data/ca_certificate.crt + + rm -f /tmp/_random.$$ + ``` + +5. Re-use the `ca_certificate.crt` file as the `root.crt` file: + + ```text + cp /var/lib/pgsql/x/data/ca_certificate.crt /var/lib/pgsql/x/data/root.crt + ``` + + Modify the permissions of the `root.crt` file: + + ```text + chmod 600 /var/lib/pgsql/x/data/root.crt + ``` + +6. Use the `openssl_rsa_generate_crl()` function to create the certificate revocation list (`root.crl`) : + + ```text + /usr/pgsql-x/bin/psql -U postgres -d pem --no-psqlrc -t -A -c + "SELECT openssl_rsa_generate_crl('/var/lib/pgsql/x/data/ca_certificate.crt', '/var/lib/pgsql/x/data/ca_key.key')" > /var/lib/pgsql/x/data/root.crl + ``` + + Modify the permissions of the `root.crl` file: + + ```text + chmod 600 /var/lib/pgsql/x/data/root.crl + ``` + +7. Use the `openssl_rsa_generate_key()` function to generate the `server.key` file: + + ```text + /usr/pgsql-x/bin/psql -U postgres -d pem --no-psqlrc -t -A -c "SELECT public.openssl_rsa_generate_key(1024)" >> /var/lib/pgsql/x/data/server.key + ``` + + After creating the `server.key` file, `cat` the contents to the variable `SSL_KEY` for use when generating the `server.crt` file and modify the privileges on the `server.key` file: + + ```text + SSL_KEY=$(cat /var/lib/pgsql/x/data/server.key) + + chmod 600 /var/lib/pgsql/x/data/server.key + ``` + +8. Use the `SSL_KEY` to generate the server certificate. Save the certificate in the `server.crt` file. For simplicity, first place the SQL query into a temporary file with a unique name: + + ```text + echo "SELECT openssl_csr_to_crt(openssl_rsa_key_to_csr('${SSL_KEY}', + 'PEM','US', 'MA', 'Bedford', 'Postgres Enterprise Manager', + 'support@enterprisedb.com'), + '/var/lib/pgsql/x/data/ca_certificate.crt', + '/var/lib/pgsql/x/data/ca_key.key')" > /tmp/_random.$$ + + /usr/pgsql-x/bin/psql -U postgres -d pem --no-psqlrc -t -A -f /tmp/_random.$$ >> /var/lib/pgsql/x/data/server.crt + ``` + +9. Modify the privileges on the `server.crt` file, and delete the temporary file: + + ```text + chmod 600 /var/lib/pgsql/x/data/server.crt + + rm -f /tmp/_random.$$ + ``` + +10. Restart the Postgres server: + + On Linux with `init.d`; for example, on a Centos6 host: + + ```text + /etc/init.d/postgresql-x restart + ``` + + On Linux with `systemd`; for example, on a Centos7 host: + + ```text + systemctl restart postgresql-x + ``` + +## Updating Agent SSL Certificates + +For each agent that interacts with the PEM server, you must: + +- generate an rsa key and a certificate. +- copy the key and certificate to the agent. +- restart the agent. + +Each agent has a unique identifier that is stored in the `pem.agent` table in the `pem` database. You must replace the key and certificate files with the key or certificate that corresponds to the agent's identifier. Please note that you must move the `agent.key` and `agent.crt` files (generated in Steps 2 and 3 into place on their respective PEM agent host before generating the next key file pair; subsequent commands will overwrite the previously generated file. + +To generate a PEM agent key file pair: + +1. Use psql to find the number of agents and their corresponding identifiers: + + ```text + /usr/pgsql-x/bin/psql -U postgres -d pem --no-psqlrc -t -A -c "SELECT ID FROM pem.agent" + ``` + +- On Linux, you can also find the agent identifier and location of the keys and certificates in the `PEMagent` section of the `/etc/postgres-reg.ini` file. + +- On Windows, the information is stored in the registry: + + - On a 64-bit Windows installation, check: + + ```text + HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\EnterpriseDB\PEM\agent + ``` + + - On a 32-bit Windows installation, check: + + ```text + HKEY_LOCAL_MACHINE\SOFTWARE\EnterpriseDB\PEM\agent + ``` + +2. After identifying the agents that will need key files, generate an `agent.key` for each agent. To generate the key, execute the following command, capturing the output in a file: + + ```text + /usr/pgsql-x/bin/psql -U postgres -d pem --no-psqlrc -t -A -c "SELECT openssl_rsa_generate_key(1024)" > agent.key + ``` + + Modify the privileges of the `agent.key` file: + + ```text + chmod 600 agent.key + ``` + +3. Generate a certificate for each agent. To generate a certificate, execute the following command, capturing the output in a certificate file: + + ```text + /usr/pgsql-x/bin/psql -U postgres -d pem --no-psqlrc -t -A -c + "SELECT openssl_csr_to_crt(openssl_rsa_key_to_csr('$(cat agent.key)', + 'agent<$ID>', 'US', 'MA', 'Bedford', 'Postgres Enterprise Manager', + 'support@enterprisedb.com'), + '/var/lib/pgsql/x/data/ca_certificate.crt', + '/var/lib/pgsql/x/data/ca_key.key')" > agent.crt + ``` + + Where *$ID* is the agent number of the agent (retrieved via the psql command line). + +4. Modify the privileges of the `agent.crt` file: + + ```text + chmod 600 agent.crt + ``` + +5. Replace each agent's key and certificate file with the newly generated files before restarting the PEM agent service: + + On Linux with `init.d`, restart the service with the command: + + ```text + /etc/init.d/pemagent start + ``` + + On Linux with `systemd`, restart the service with the command: + + ```text + systemctl start pemagent + ``` + + On a Windows host, you can use the Services applet to start the PEM agent. The PEM agent service is named `Postgres Enterprise Manager Agent`; highlight the service name in the `Services` dialog, and click `Start the service`. diff --git a/product_docs/docs/pem/7.16/pem_admin/05_managing_configuration_settings.mdx b/product_docs/docs/pem/7.16/pem_admin/05_managing_configuration_settings.mdx new file mode 100644 index 00000000000..27f25c7ce34 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_admin/05_managing_configuration_settings.mdx @@ -0,0 +1,11 @@ +--- +title: "Managing Configuration Settings" +--- + +Multiple configuration files are read at startup by Postgres Enterprise Manager. The files are as follows: + +- `config.py`: This is the main configuration file, and should not be modified. It can be used as a reference for configuration settings, that may be overridden in one of the following files. +- `config_distro.py`: This file is read after `config.py` and is intended for packagers to change any settings that are required for their Postgres Enterprise Manager distribution. This may typically include certain paths and file locations. This file is optional, and may be created by packagers in the same directory as `config.py` if needed. +- `config_local.py`: This file is read after `config_distro.py` and is intended for end users to change any default or packaging specific settings that they may wish to adjust to meet local preferences or standards.This file is optional, and may be created by users in the same directory as `config.py` if needed. + +A copy of the default `config.py` file is included in the PEM online help for reference. diff --git a/product_docs/docs/pem/7.16/pem_admin/06_managing_pem_server.mdx b/product_docs/docs/pem/7.16/pem_admin/06_managing_pem_server.mdx new file mode 100644 index 00000000000..c5292574c88 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_admin/06_managing_pem_server.mdx @@ -0,0 +1,461 @@ +--- +title: "Managing a PEM Server" +--- + + + +The sections that follow provide information about tasks related to PEM server such as restarting the PEM server and agent, controlling the PEM server or PEM agent, controlling the HTTPD service on Linux and Windows, controlling the HTTPD server, managing PEM authentication and security, modifying the `pg_hba.conf` file, modifying PEM to use a proxy server etc. + +## Starting and Stopping the PEM Server and Agents + +The PEM server starts, stops and restarts when the Postgres server instance on which it resides starts, stops or restarts; use the same commands to control the PEM server that you would use to control the Postgres server. On Linux platforms, the command that stops and starts the service script will vary by platform and OS version. + +The PEM agent is controlled by a service named `pemagent`. + +The Windows operating system includes a graphical service controller that displays the server status, and offers point-and-click server control. The `Services` utility can be accessed through the Windows `Control Panel`. When the utility opens, use the scroll bar to navigate through the listed services to highlight the service name. + +![The PEM service in the Windows Services window](../images/pem_services_windows_server_agent.png) + +Use the `Stop`, `Pause`, `Start`, or `Restart` buttons to control the state of the service. + +Please note that any user (or client application) connected to the Postgres server will be abruptly disconnected if you stop the service. For more information about controlling a service, please consult the [EDB Postgres Advanced Server Installation Guide](https://www.enterprisedb.com/docs/epas/latest/), available from the EDB website. + +## Remotely Starting and Stopping Monitored Servers + +PEM allows you to startup and shutdown managed server instances with the PEM client. To configure a server to allow PEM to manage the service, complete the Server registration dialog, registering the database server with a PEM agent and: + +- specify the `Store on PEM Server` option on the `Properties` dialog. + +- specify the name of a service script in the `Service ID` field on the `Advanced` tab: + + - For Advanced Server, the service name is `edb-as-` or `ppas-`. + - For PostgreSQL, the service name is `postgresql-`. + + Where `x` indicates the server version number. + +After connecting to the server, you can start or stop the server by highlighting the server name in the tree control, and selecting `Queue Server Startup` or `Queue Server Shutdown` from the `Tools` menu. + +![The Tools menu of a managed server](../images/pem_server_tools_menu_queue_server.png) + +## Controlling the PEM Server or PEM Agent on Linux + +On Linux platforms, the name of the service script that controls: + +- a PEM server on Advanced Server is `edb-as-` or `ppas-` +- a PEM server on PostgreSQL is `postgresql-` +- a PEM agent is `pemagent` + +Where `x` indicates the server version number. + +You can use the service script to control the service. + +- To control a service on RHEL or CentOS version 7.x or 8.x open a command line, assume superuser privileges, and issue the command: + + ```text + systemctl + ``` + +Where: + +`service_name` is the name of the service. + +`action` specifies the action taken by the service. Specify: + +- `start` to start the service. +- `stop` to stop the service. +- `restart` to stop and then start the service. +- `status` to check the status of the service. + +## Controlling the PEM Server or PEM Agent on Windows + +The Windows operating system includes a graphical service controller that displays the server status, and offers point-and-click server control. The registered name of the service that controls: + +- a PEM server host on PostgreSQL is `postgresql-` +- a PEM server host on Advanced Server is `edb-as-`, or `ppas-` +- a PEM agent is `Postgres Enterprise Manager - pemAgent` + +Where `x` indicates the server version number. + +Navigate through the Windows `Control Panel` to open the `Services` utility. When the utility opens, use the scroll bar to browse the list of services. + +![The Windows Services window](../images/pem_services_windows_server_agent.png) + +Use the `Stop the service` option to stop a service. Any user (or client application) connected to the server will be abruptly disconnected if you stop the service. + +Use the `Pause the service` option to instruct Postgres to reload a service's configuration parameters. The `Pause the service` option is an effective way to reset parameters without disrupting user sessions for many of the configuration parameters. + +Use the `Start the service` option to start a service. + +## Controlling the HTTPD Server + +On Linux, you can confirm the status of the `PEM-HTTPD` service by opening a command line, and entering the following command: + +```text +ps -ef | grep httpd +``` + +If Linux responds with an answer that is similar to the following example, `httpd` is not running: + +```text +user 13321 13267 0 07:37 pts/1 00:00:00 grep httpd +``` + +To start the service on a CentOS or RHEL 7.x or 8.x system, use the command: + +```text +systemctl start httpd +``` + +On Windows, you can use the `Services` applet to check the status of the `PEM HTTPD` service. After opening the Services applet, scroll through the list to locate the `PEM HTTPD` service. + +![The PEM HTTPD Windows service](../images/pem_services_httpd.png) + +The `Status` column displays the current state of the server. Click the `Start` link to start `PEM HTTPD` if the service is not running. + +## Modifying the pg_hba.conf File + +Entries in the `pg_hba.conf` file control network authentication and authorization. The `pg_hba.conf` file on the PEM server host must allow connections between the PEM server and PEM-HTTPD, the PEM agent, and the monitored servers. + +During the PEM server installation process, you are prompted for the IP address and connection information for hosts that will be monitored by PEM; this information is added to the top of the `pg_hba.conf` file of the PEM backing database. + +![PEM entries in the pg_hba.conf file](../images/pem_pg_hba.png) + +You may also need to manually modify the `pg_hba.conf` file to allow connections between the PEM server and other components. For example, if your PEM-HTTPD installation does not reside on the same host as the PEM server, you must modify the `pg_hba.conf` file on the PEM server host to allow PEM-HTTPD to connect to the server. + +By default, the `pg_hba.conf` file resides in the data directory, under your Postgres installation; for example, on an Advanced Server 10 host, the default location of the pg_hba.conf is: + +`/var/lib/edb/as10/data/pg_hba.conf` + +You can modify the `pg_hba.conf` file with your editor of choice. After modifying the file, restart the server for changes to take effect. + +The following example shows a `pg_hba.conf` entry that allows an md5 password authenticated connection from a user named `postgres`, to the `postgres` database on the host on which the pg_hba.conf file resides. The connection is coming from an IP address of `192.168.10.102`: + +```text +# TYPE DATABASE USER CIDR-ADDRESS METHOD +# IPv4 local connections: + host postgres postgres 192.168.10.102/32 md5 +``` + +You may specify the address of a network host, or a network address range. For example, if you wish to allow connections from servers with the addresses `192.168.10.23`, `192.168.10.76` and `192.168.10.184`, enter a CIDR-ADDRESS of `192.168.10.0/24` to allow connections from all of the hosts in that network: + +```text +# TYPE DATABASE USER CIDR-ADDRESS METHOD +# IPv4 local connections: + host postgres all 192.168.10.0/24 md5 +``` + +For more information about formatting a `pg_hba.conf` file entry, please see the [PostgreSQL core documentation](http://www.postgresql.org/docs/current/auth-pg-hba-conf.html). + +Before you can connect to a Postgres server with PEM, you must ensure that the `pg_hba.conf` file on both servers allows the connection. + +If you receive this error when connecting to the database server, modify the `pg_hba.conf` file, adding an entry that allows the connection. + +## Creating and Maintaining Databases and Objects + +Each instance of a Postgres server manages one or more databases; each user must provide authentication information to connect to the database before accessing the information contained within it. The PEM client provides dialogs that allow you to create and manage databases, and all of the various objects that comprise a database (e.g. tables, indexes, stored procedures, etc.). + +Creating a database is easy in PEM: simply right click on any managed server’s `Databases` node and select `Database…` from the `Create` menu. After defining a database, you can create objects within the new database. + +For example, to create a new table, right click on a `Tables` node, and select `Table…` from the `Create` menu. When the `New Table` dialog opens, specify the attributes of the new table. + +![Create Table - General Tab](../images/table_general.png) + +PEM provides similar dialogs for the creation and management of other database objects: + +- tables +- indexes +- stored procedures +- functions +- triggers +- views +- constraints, etc. + +Each object type is displayed in the tree control; right click on the node that corresponds to an object type to access the `Create` menu and create a new object, or select `Properties` from the context menu of a named node to perform administrative tasks for the highlighted object. + +## Managing PEM Authentication + +Postgres supports a number of authentication methods: + +- Secure password (md5) +- GSSAPI +- SSPI +- Kerberos +- Ident +- LDAP +- RADIUS +- Certificate (SSL) +- PAM + +Postgres (and PEM) authentication is controlled by the `pg_hba.conf` configuration file. Entries within the configuration file specify who may connect to a specific database, and the type of authentication required before that user is allowed to connect. + +A typical entry in the `pg_hba.conf` file that allows a user named `postgres` to connect to all databases from the local host (127.0.0.1/32) using secure password (md5) authentication connections would take the form: + +`host all postgres 127.0.0.1/32 md5` + +Depending on your system's configuration, you may also need to create a password file for the user account that the PEM agent uses to connect to the server, to allow the agent to properly respond to the server’s authentication request. An entry in the password file for a user named `postgres`, with a password of `1safepwd` would take the form: + +`localhost:5432:*:postgres:1safepwd` + +The password file is usually named `~root/.pgpass` on Linux systems, or `%APPDATA%\postgresql\pgpass.conf` (on Windows). For more information about configuring a password file, visit the [PostgreSQL website](http://www.postgresql.org/docs/current/libpq-pgpass.html). + +For more information about the authentication methods supported by Postgres, see the [PostgreSQL core documentation](http://www.postgresql.org/docs/current/client-authentication.html). + +## Editing the PEM Server Configuration + +You can use the PEM client to graphically manage the configuration parameters of the PEM server to enable features or modify default settings. To open the `Server Configuration` dialog, select `Server Configuration…` from the `Management` menu. + +![The Server Configuration dialog](../images/pem_server_config.png) + +To modify a parameter value, edit the content displayed in the `Value` field to the right of a parameter name. Click the `Save` button to preserve your changes, or click the `Close` button to exit the dialog without applying the changes. Use the `Reset` button to return the parameters to their original value. + +## Managing Security + +PEM provides a graphical way to manage your Postgres roles and servers. + +### Login Roles + +When you connect to the PEM server, you must provide role credentials that allow access to the database on which the PEM server stores data. By default, the postgres superuser account is used to initially connect to the server, but it is strongly recommended (for both security and auditing purposes) that individual roles are created for each connecting user. You can use the PEM Query Tool, the PEM web interface `Create – Login/Group Role` dialog, or a command line client (such as psql) to create a role. + +To use the `Create – Login/Group Role` dialog to create a role, expand the node for the server on which the role will reside in the PEM tree control, and right-click on the `Login/Group Roles` node to access the context menu. Then, select `Login/Group Role…` from the `Create` menu. + +![The context menu of the Login Roles node](../images/pem_access_create_login.png) + +Use fields on the tabs of the `Create – Login/Group` Role dialog to define the role. To display the PEM online help in a browser tab, click the help (`?`) button located in the lower-left corner of the dialog. + +When you've finished defining the new role, click `Save` to create the role. + +![Create Login Role - General tab](../images/role_general.png) + +To modify the properties of an existing login role, right click on the name of a login role in the tree control, and select `Properties` from the context menu. To delete a login role, right click on the name of the role, and select `Delete/Drop` from the context menu. + +For more complete information about creating and managing a role, see the [PostgreSQL online documentation](http://www.postgresql.org/docs/current/sql-createrole.html). + +### Group Roles + +Group roles can serve as containers, used to dispense system privileges (such as creating databases) and object privileges (e.g. inserting data into a particular table). The primary purpose of a group role is to make the mass management of system and object permissions much easier for a DBA. Rather than assigning or modifying privileges individually across many different login accounts, you can assign or change privileges for a single role and then grant that role to many login roles at once. + +Use the `Group Roles` node (located beneath the name of each registered server in the PEM tree control) to create and manage group roles. Options on the context menu provide access to a dialog that allows you to create a new role or modify the properties of an existing role. You can find more information about creating roles [here](http://www.postgresql.org/docs/current/sql-createrole.html). + +### Using PEM Pre-Defined Roles to Manage Access to PEM Functionality + +You can use the `Login/Group Role` dialog to allow a role with limited privileges to access PEM features such as the Audit Manager, Capacity Manager, or SQL Profiler. PEM pre-defined roles allow access to PEM functionality; roles that are assigned membership in these roles can access the associated feature. + +![Create Login Role - Membership tab](../images/role_membership.png) + +When defining a user, use the `Membership` tab to specify the roles in which the new user is a member. The new user will share the privileges associated with each role in which it is a member. For a user to have access to PEM extended functionality, the role must be a member of the pem_user role and the pre-defined role that grants access to the feature. Use the `Roles` field to select pre-defined role names from a drop down list. + +The `SQL` tab displays the SQL command that the server will execute when you click `Save`. + +![Create Login Role - SQL tab](../images/role_sql.png) + +The example shown above creates a login role named `acctg_clerk` that will have access to the `Audit Manager`; the role can make unlimited connections to the server at any given time. + +You can use PEM pre-defined roles to allow access to the functionality listed in the table below: + +| Value | Parent Role | Description | +| -------------------------------- | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| pem_super_admin | | Role to manage/configure everything on Postgres Enteprise Manager. | +| pem_admin | pem_super_admin | Role for administration/management/configuration of all visible agents/servers, and monitored objects. | +| pem_config | pem_admin | Role for configuration management of Postgres Enterprise Manager. | +| pem_component | pem_admin | Role to run/execute all wizard/dialog based components. | +| pem_rest_api | pem_admin | Role to access the REST API. | +| pem_server_service_manager | pem_admin | Role for allowing to restart/reload the monitored database server (if server-id provided). | +| pem_manage_schedule_task | pem_admin | Role to configure the schedule tasks. | +| pem_manage_alert | pem_admin | Role for managing/configuring alerts, and its templates. | +| pem_config_alert | pem_config, pem_manage_alert | Role for configuring the alerts on any monitored objects. | +| pem_manage_probe | pem_admin | Role to create, update, delete the custom probes, and change custom probe configuration. | +| pem_config_probe | pem_config, pem_manage_probe | Role for probe configuration (history retention, execution frequency, enable/disable the probe) on all visible monitored objects. | +| pem_database_server_registration | pem_admin | Role to register a database server. | +| pem_comp_postgres_expert | pem_component | Role to run the Postgres Expert. | +| pem_comp_auto_discovery | pem_component | Role to run the Auto discovery of a database server dialog. | +| pem_comp_log_analysis_expert | pem_component | Role to run the Log Analysis Expert. | +| pem_comp_sqlprofiler | pem_component | Role to run the SQL Profiler. | +| pem_manage_efm | pem_admin | Role to manage Failover Manager functionality. | +| pem_comp_capacity_manager | pem_component | Role to run the Capacity Manager. | +| pem_comp_log_manager | pem_component | Role to run the Log Manager. | +| pem_comp_audit_manager | pem_component | Role to run the Audit Manager. | +| pem_comp_tuning_wizard | pem_component | Role to run the Tuning Wizard. | + +### Using a Team Role + +When you register a server for monitoring by PEM, you can specify a *Team* that will be associated with the server. A Team is a group role that can be used to allow or restrict access to one or more monitored servers to a limited group of role members. The PEM client will only display a server with a specified Team to those users who are: + +- a member of the Team role +- the role that created the server +- a role with superuser privileges on the PEM server. + +To create a team role, expand the node for the server on which the role will reside in the PEM tree control, and right-click on the `Login/Group Roles` node to access the context menu. Then, select `Login/Group Role…` from the `Create` menu; when the `Create - Login/Group Role` dialog opens, use the fields provided to specify the properties of the team role. + +### Object Permissions + +A role must be granted sufficient privileges before accessing, executing, or creating any database object. PEM allows you to assign (`GRANT`) and remove (`REVOKE`) object permissions to group roles or login accounts using the graphical interface of the PEM client. + +Object permissions are managed via the graphical object editor for each particular object. For example, to assign privileges to access a database table, right click on the table name in the tree control, and select the Properties option from the context menu. Use the options displayed on the Privileges tab to assign privileges for the table. + +The PEM client also contains a `Grant Wizard` (accessed through the `Tools` menu) that allows you to manage many object permissions at once. + +## Managing Job Notifications + +You can configure the settings in PEM console for sending the SMTP trap on success or failure of a system-generated job (listed under scheduled tasks) or a custom-defined agent job. These email notification settings can be configured at following three levels (in order of precedence) to send email notifications to the specified user group: + +- Job level +- Agent level +- PEM server level (default level) + +### Configuring Job Notifications at Job Level + +You can configure email notification settings at job level only for a custom-defined agent job in one of the following ways: + +- For a new agent job, you can configure the email notification settings in the `Notification` tab of `Create-Agent Job` wizard while creating the job itself. +- For an existing custom-defined job, you can edit the properties of the job and configure the notification settings. + +![Configure Job Notification - Job level](../images/job_notifications_job_level.png) + +Use the fields on the `Notifications` tab to configure the email notification settings on job level: + +- Use the `Send the notifications` field to specify when you want the email notifications to be sent. +- Use the `Email group` field to specify the email group that should receive the email notification. + +### Configuring Job Notifications at Agent Level + +Select the agent in the tree view, right click and select *Properties*. In the `Properties` dialog, select the *Job notifications* tab. + +![Configure Job Notification - Agent level](../images/job_notifications_agent_level.png) + +Use the fields on the Job notifications tab to configure the email notification settings on agent level: + +- Use the `Override default configuration?` switch to specify if you want the agent level job notification settings to override the default job notification settings. If you select *Yes* for this switch, you can use the rest of the settings on this dialog to define when and to whom the job notifications should be sent. Please note that the rest of the settings on this dialog work only if you enable the `Override default configuration?` switch. +- Use the `Email on job completion?` switch to specify if the job notification should be sent on the successful job completion. +- Use the `Email on a job failure?` switch to specify if the job notification should be sent on the failure of a job. +- Use the `Email group` field to specify the email group to whom the job notification should be sent. + +### Configuring Job Notifications at Server Level + +You can use the *Server Configuration* dialog to provide information about your email notification configuration at PEM server level. To open the Server Configuration dialog, select *Server Configuration...* from the PEM client's Management menu. + +![Configure Job Notification - Server level](../images/job_notifications_server_level.png) + +Four server configuration parameters specify information about your job notification preferences at PEM server level: + +- Use the `job_failure_notification` switch to specify if you want to send email notification after each job failure. +- Use the `job_notification_email_group` parameter to specify the email group that should receive the email notification. +- Use the `job_retention_time parameter` to specify the number of days that non-recurring scheduled tasks should be retained in the system. +- Use the `job_status_change_notification` switch to specify if you want to send email notification after each job status change, irrespective of its status being a failure, success, or interrupted. + +## Managing PEM Scheduled Jobs + +You can create a PEM scheduled job to perform a set of custom-defined steps in the specified sequence. These steps may contain SQL code or a batch/shell script that you may run on a server that is bound with the agent. You can schedule these jobs to suit your business requirements. For example, you can create a job for taking a backup of a particular database server and schedule it to run on a specific date and time of every month. + +To create or manage a PEM scheduled job, use the PEM tree control to browse to the PEM agent for which you want to create the job. The tree control will display a Jobs node, under which currently defined jobs are displayed. To add a new job, right click on the `Jobs` node, and select `Create Job...` from the context menu. + +When the `Create - Agent Job` dialog opens, use the tabs on the `Create - Agent Job` dialog to define the steps and schedule that make up a PEM scheduled job. + +![Create Agent Job - General tab](../images/create_pem_jobs_general.png) + +Use the fields on the `General` tab to provide general information about a job: + +- Provide a name for the job in the `Name` field. +- Move the `Enabled` switch to the `Yes` position to enable a job, or `No` to disable a job. +- Use the `Comment` field to store notes about the job. + +![Create Agent Job - Steps tab](../images/create_pem_jobs_steps.png) + +Use the `Steps` tab to define and manage the steps that the job will perform. Click the `Add` icon (+) to add a new step; then click the compose icon (located at the left side of the header) to open the step definition dialog: + +![Create Agent Job - Steps tab - General tab](../images/create_pem_jobs_steps_definition.png) + +Use fields on the step definition dialog to define the step: + +- Provide a name for the step in the `Name` field; please note that steps will be performed in alphanumeric order by name. + +- Use the `Enabled` switch to include the step when executing the job (`True`) or to disable the step (`False`). + +- Use the `Kind` switch to indicate if the job step invokes SQL code (`SQL`) or a batch script (`Batch`). + + - If you select `SQL`, use the `Code` tab to provide SQL code for the step. + - If you select `Batch`, use the `Code` tab to provide the batch script that will be executed during the step. + +- Use the `On error` drop-down to specify the behavior of pgAgent if it encounters an error while executing the step. Select from: + + - Fail - Stop the job if you encounter an error while processing this step. + - Success - Mark the step as completing successfully, and continue. + - Ignore - Ignore the error, and continue. + +- If you have selected SQL as your input for `Kind` switch, provide the following additional information: + + - Use the `Server` field to specify the server that is bound with the agent for which you are creating the PEM scheduled job. + - Use the `Database` field to specify the database that is associated with the server that you have selected. + +- Use the `Comment` field to provide a comment about the step. + +![Create Agent Job - Steps tab - Code tab](../images/create_pem_jobs_steps_definition_code.png) + +- Use the context-sensitive field on the step definition dialog's `Code` tab to provide the SQL code or batch script that will be executed during the step: + + - If the step invokes SQL code, provide one or more SQL statements in the `SQL query` field. + + - If the step invokes a batch script, provide the script in the `Code` field. If you are running on a Windows server, standard batch file syntax must be used. When running on a Linux server, any shell script may be used, provided that a suitable interpreter is specified on the first line (e.g. *#!/bin/sh*). Along with the defined inline code, you can also provide the path of any batch script, shell script, or SQL file on the filesystem. + + - To invoke a script on a Linux system, you must modify the entry for `batch_script_user` parameter in the `agent.cfg` file and specify the user that should be used to run the script. You can either specify a non-root user or root for this parameter. If you do not specify a user, or the specified user does not exist, then the script will not be executed. Restart the agent after modifying the file. + + - To invoke a script on a Windows system, set the registry entry for `AllowBatchJobSteps` to `true` and restart the PEM agent. PEM registry entries are located in `HKEY_LOCAL_MACHINE\Software\Wow6432Node\EnterpriseDB\PEM\agent`. + +After providing all the information required by the step, click the `Save` button to save and close the step definition dialog. + +Click the add icon (+) to add each additional step, or select the `Schedules` tab to define the job schedule. + +Click the add icon (+) to add a schedule for the job; then click the compose icon (located at the left side of the header) to open the schedule definition dialog: + +![Create Agent Job - Schedules tab - General tab](../images/create_pem_jobs_schedules.png) + +Use the fields on the `Schedules definition` tab to specify the days and times at which the job will execute. + +- Provide a name for the schedule in the `Name` field. +- Use the `Enabled` switch to indicate that pgAgent should use the schedule (`Yes`) or to disable the schedule (`No`). +- Use the calendar selector in the `Start` field to specify the starting date and time for the schedule. +- Use the calendar selector in the `End` field to specify the ending date and time for the schedule. +- Use the `Comment` field to provide a comment about the schedule. + +Select the `Repeat` tab to define the days on which the schedule will execute. + +![Create Agent Job - Schedules tab - Repeat tab](../images/create_pem_jobs_schedules_repeat.png) + +Use the fields on the `Repeat` tab to specify the details about the schedule in a cron-style format. The job will execute on each date or time element selected on the `Repeat` tab. + +Click within a field to open a list of valid values for that field; click on a specific value to add that value to the list of selected values for the field. To clear the values from a field, click the X located at the right-side of the field. + +- Use the fields within the `Days` box to specify the days on which the job will execute: + - Use the `Week Days` field to select the days on which the job will execute. + - Use the `Month Days` field to select the numeric days on which the job will execute. Specify the `Last Day` to indicate that the job should be performed on the last day of the month, irregardless of the date. + - Use the `Months` field to select the months in which the job will execute. +- Use the fields within the `Times` box to specify the times at which the job will execute: + - Use the `Hours` field to select the hour at which the job will execute. + - Use the `Minutes` field to select the minute at which the job will execute. + +Select the `Exceptions` tab to specify any days on which the schedule will `not` execute. + +![Create Agent Job - Schedules tab - Exceptions tab](../images/create_pem_jobs_schedules_exceptions.png) + +Use the fields on the `Exceptions` tab to specify days on which you wish the job to not execute; for example, you may wish for jobs to not execute on national holidays. + +Click the Add icon (+) to add a row to the exception table, then: + +- Click within the `Date` column to open a calendar selector, and select a date on which the job will not execute. Specify `` in the `Date` column to indicate that the job should not execute on any day at the time selected. +- Click within the `Time` column to open a time selector, and specify a time on which the job will not execute. Specify `` in the `Time` column to indicate that the job should not execute at any time on the day selected. + +Select the `Notifications` tab to configure the email notification settings on job level: + +![Create Agent Job - Notifications tab](../images/create_pem_jobs_notifications.png) + +Use the fields on the `Notifications` tab to configure the email notification settings for a job: + +- Use the `Send the notifications` field to specify when you want the email notifications to be sent. +- Use the `Email group` field to specify the email group that should receive the email notification. + +When you've finished defining the schedule, you can use the `SQL` tab to review the code that will create or modify your job. + +![Create Agent Job - SQL tab](../images/create_pem_jobs_sql.png) + +Click the `Save` button to save the job definition, or `Cancel` to exit the job without saving. Use the `Reset` button to remove your unsaved entries from the dialog. + +After saving a job, the job will be listed under the `Jobs` node of the PEM tree control of the server on which it was defined. The `Properties` tab in the PEM console will display a high-level overview of the selected job, and the Statistics tab will show the details of each run of the job. To modify an existing job or to review detailed information about a job, right-click on a job name, and select `Properties` from the context menu. diff --git a/product_docs/docs/pem/7.16/pem_admin/07_managing_pem_agent.mdx b/product_docs/docs/pem/7.16/pem_admin/07_managing_pem_agent.mdx new file mode 100644 index 00000000000..56503853fc3 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_admin/07_managing_pem_agent.mdx @@ -0,0 +1,166 @@ +--- +title: "Managing a PEM Agent" +--- + +The sections that follow provide information about the behavior and management of a PEM agent. + +## Agent Privileges + +By default, the PEM agent is installed with `root` privileges for the operating system host and superuser privileges for the database server. These privileges allow the PEM agent to invoke unrestricted probes on the monitored host and database server about system usage, retrieving and returning the information to the PEM server. + +Please note that PEM functionality diminishes as the privileges of the PEM agent decrease. For complete functionality, the PEM agent should run as `root`. If the PEM agent is run under the database server's service account, PEM probes will not have complete access to the statistical information used to generate reports, and functionality will be limited to the capabilities of that account. If the PEM agent is run under another lesser-privileged account, functionality will be limited even further. + +If you limit the operating system privileges of the PEM agent, some of the PEM probes will not return information, and the following functionality may be affected: + +| Probe or Action | Operating System | PEM Functionality Affected | +| ----------------------------------------------- | ---------------- | --------------------------------------------------------------------------------------------------------------------- | +| Data And Logfile Analysis | Linux/ Windows | The Postgres Expert will be unable to access complete information. | +| Session Information | Linux | The per-process statistics will be incomplete. | +| PG HBA | Linux/ Windows | The Postgres Expert will be unable to access complete information. | +| Service restart functionality | Linux/ Windows | The Audit Log Manager, Server Log Manager Log Analysis Expert and PEM may be unable to apply requested modifications. | +| Package Deployment | Linux/ Windows | PEM will be unable to run downloaded installation modules. | +| Batch Task | Windows | PEM will be unable to run scheduled batch jobs in Windows. | +| Collect data from server (root access required) | Linux/ Windows | Columns such as swap usage, CPU usage, IO read, IO write will be displayed as 0 in the session activity dashboard. | + +!!! Note + The above-mentioned list is not comprehensive, but should provide an overview of the type of functionality that will be limited. + +If you restrict the database privileges of the PEM agent, the following PEM functionality may be affected: + +| Probe | Operating System | PEM Functionality Affected | +| -------------------------- | ---------------- | ------------------------------------------------------------------------------------- | +| Audit Log Collection | Linux/Windows | PEM will receive empty data from the PEM database. | +| Server Log Collection | Linux/Windows | PEM will be unable to collect server log information. | +| Database Statistics | Linux/Windows | The Database/Server Analysis dashboards will contain incomplete information. | +| Session Waits/System Waits | Linux/Windows | The Session/System Waits dashboards will contain incomplete information. | +| Locks Information | Linux/Windows | The Database/Server Analysis dashboards will contain incomplete information. | +| Streaming Replication | Linux/Windows | The Streaming Replication dashboard will not display information. | +| Slony Replication | Linux/Windows | Slony-related charts on the Database Analysis dashboard will not display information. | +| Tablespace Size | Linux/Windows | The Server Analysis dashboard will not display complete information. | +| xDB Replication | Linux/Windows | PEM will be unable to send xDB alerts and traps. | + +If the probe is querying the operating system with insufficient privileges, the probe may return a `permission denied` error. + +If the probe is querying the database with insufficient privileges, the probe may return a `permission denied` error or display the returned data in a PEM chart or graph as an empty value. + +When a probe fails, an entry will be written to the log file that contains the name of the probe, the reason the probe failed, and a hint that will help you resolve the problem. + +You can view probe-related errors that occurred on the server in the `Probe Log` dashboard, or review error messages in the PEM worker log files. On Linux, the default location of the log file is: + + `/var/log/pem/worker.log` + +On Windows, log information is available on the `Event Viewer`. + +## Agent Configuration + +A number of user-configurable parameters and registry entries control the behavior of the PEM agent. You may be required to modify the PEM agent's parameter settings to enable some PEM functionality. After modifying values in the PEM agent configuration file, you must restart the PEM agent to apply any changes. + +With the exception of the `PEM_MAXCONN` parameter, we strongly recommend against modifying any of the configuration parameters or registry entries listed below without first consulting EDB support experts *unless* the modifications are required to enable PEM functionality. + +On Linux systems, PEM configuration options are stored in the `agent.cfg` file, located in `/usr/edb/pem/agent/etc`. The `agent.cfg` file contains the following entries: + +| Parameter Name | Description | Default Value | +| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| pem_host | The IP address or hostname of the PEM server. | 127.0.0.1. | +| pem_port | The database server port to which the agent connects to communicate with the PEM server. | Port 5432. | +| pem_agent | A unique identifier assigned to the PEM agent. | The first agent is '1', the second agent is '2', and so on. | +| agent_ssl_key | The complete path to the PEM agent's key file. | /root/.pem/agent.key | +| agent_ssl_crt | The complete path to the PEM agent's certificate file. | /root/.pem/agent.crt | +| agent_flag_dir | Used for HA support. Specifies the directory path checked for requests to take over monitoring another server. Requests are made in the form of a file in the specified flag directory. | Not set by default. | +| log_level | Log level specifies the type of event that will be written to the PEM log files. | warning | +| log_location | Specifies the location of the PEM worker log file. | 127.0.0.1. | +| agent_log_location | Specifies the location of the PEM agent log file. | /var/log/pem/agent.log | +| long_wait | The maximum length of time (in seconds) that the PEM agent will wait before attempting to connect to the PEM server if an initial connection attempt fails. | 30 seconds | +| short_wait | The minimum length of time (in seconds) that the PEM agent will wait before checking which probes are next in the queue (waiting to run). | 10 seconds | +| alert_threads | The number of alert threads to be spawned by the agent. | Set to 1 for the agent that resides on the host of the PEM server; 0 for all other agents. | +| enable_smtp | When set to true for multiple PEM Agents (7.13 or lesser) it may send more duplicate emails. Whereas for PEM Agents (7.14 or higher) it may send lesser duplicate emails. | true for PEM server host; false for all others. | +| enable_snmp | When set to true for multiple PEM Agents (7.13 or lesser) it may send more duplicate traps. Whereas for PEM Agents (7.14 or higher) it may send lesser duplicate traps. | true for PEM server host; false for all others. | +| enable_nagios | When set to true, Nagios alerting is enabled. | true for PEM server host; false for all others. | +| enable_webhook | When set to true, Webhook alerting is enabled. | true for PEM server host; false for all others. | +| max_webhook_retries | Set maximum number of times pemAgent should retry to call webhooks on failure. | Default 3. | +| connect_timeout | The max time in seconds (a decimal integer string) that the agent will wait for a connection. | Not set by default; set to 0 to indicate the agent should wait indefinitely. | +| allow_server_restart | If set to TRUE, the agent can restart the database server that it monitors. Some PEM features may be enabled/disabled, depending on the value of this parameter. | False | +| max_connections | The maximum number of probe connections used by the connection throttler. | 0 (an unlimited number) | +| connection_lifetime | Use ConnectionLifetime (or connection_lifetime) to specify the minimum number of seconds an open but idle connection is retained. This parameter is ignored if the value specified in MaxConnections is reached and a new connection (to a different database) is required to satisfy a waiting request. | By default, set to 0 (a connection is dropped when the connection is idle after the agent's processing loop). | +| allow_batch_probes | If set to TRUE, the user will be able to create batch probes using the custom probes feature. | false | +| heartbeat_connection | When set to TRUE, a dedicated connection is used for sending the heartbeats. | false | +| batch_script_dir | Provide the path where script file (for alerting) will be stored. | /tmp | +| connection_custom_setup | Use to provide SQL code that will be invoked when a new connection with a monitored server is made. | Not set by default. | +| ca_file | Provide the path where the CA certificate resides. | Not set by default. | +| batch_script_user | Provide the name of the user that should be used for executing the batch/shell scripts. | None | +| webhook_ssl_key | The complete path to the webhook's SSL client key file. | | +| webhook_ssl_crt | The complete path to the webhook's SSL client certificate file. | | +| webhook_ssl_crl | The complete path of the CRL file to validate webhook server certificate. | | +| webhook_ssl_ca_crt | The complete path to the webhook's SSL ca certificate file. | | +| allow_insecure_webhooks | When set to true, allow webhooks to call with insecure flag. | false | + +On 64 bit Windows systems, PEM registry entries are located in: + + `HKEY_LOCAL_MACHINE\Software\Wow6432Node\EnterpriseDB\PEM\agent` + +The registry contains the following entries: + +| Parameter Name | Description | Default Value | +| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| PEM_HOST | The IP address or hostname of the PEM server. | 127.0.0.1. | +| PEM_PORT | The database server port to which the agent connects to communicate with the PEM server. | Port 5432. | +| AgentID | A unique identifier assigned to the PEM agent. | The first agent is '1', the second agent is '2', and so on. | +| AgentKeyPath | The complete path to the PEM agent's key file. | %APPDATA%\\Roaming\\pem\\ agent.key. | +| AgentCrtPath | The complete path to the PEM agent's certificate file. | %APPDATA%\\Roaming\\pem\\ agent.crt | +| AgentFlagDir | Used for HA support. Specifies the directory path checked for requests to take over monitoring another server. Requests are made in the form of a file in the specified flag directory. | Not set by default. | +| LogLevel | Log level specifies the type of event that will be written to the PEM log files. | warning | +| LongWait | The maximum length of time (in seconds) that the PEM agent will wait before attempting to connect to the PEM server if an initial connection attempt fails. | 30 seconds | +| shortWait | The minimum length of time (in seconds) that the PEM agent will wait before checking which probes are next in the queue (waiting to run). | 10 seconds | +| AlertThreads | The number of alert threads to be spawned by the agent. | Set to 1 for the agent that resides on the host of the PEM server; 0 for all other agents. | +| EnableSMTP | When set to true, the SMTP email feature is enabled. | true for PEM server host; false for all others. | +| EnableSNMP | When set to true, the SNMP trap feature is enabled. | true for PEM server host; false for all others. | +| EnableWebhook | When set to true, Webhook alerting is enabled. | true for PEM server host; false for all others. | +| MaxWebhookRetries | Set maximum number of times pemAgent should retry to call webhooks on failure. | Default 3. | +| ConnectTimeout | The max time in seconds (a decimal integer string) that the agent will wait for a connection. | Not set by default; if set to 0, the agent will wait indefinitely. | +| AllowServerRestart | If set to TRUE, the agent can restart the database server that it monitors. Some PEM features may be enabled/disabled, depending on the value of this parameter. | true | +| MaxConnections | The maximum number of probe connections used by the connection throttler. | 0 (an unlimited number) | +| ConnectionLifetime | Use ConnectionLifetime (or connection_lifetime) to specify the minimum number of seconds an open but idle connection is retained. This parameter is ignored if the value specified in MaxConnections is reached and a new connection (to a different database) is required to satisfy a waiting request. | By default, set to 0 (a connection is dropped when the connection is idle after the agent's processing loop). | +| AllowBatchProbes | If set to TRUE, the user will be able to create batch probes using the custom probes feature. | false | +| HeartbeatConnection | When set to TRUE, a dedicated connection is used for sending the heartbeats. | false | +| BatchScriptDir | Provide the path where script file (for alerting) will be stored. | /tmp | +| ConnectionCustomSetup | Use to provide SQL code that will be invoked when a new connection with a monitored server is made. | Not set by default. | +| ca_file | Provide the path where the CA certificate resides. | Not set by default. | +| AllowBatchJobSteps | If set to true,the batch/shell scripts will be executed using Administrator user account. | None | +| WebhookSSLKey | The complete path to the webhook's SSL client key file. | | +| WebhookSSLCrt | The complete path to the webhook's SSL client certificate file. | | +| WebhookSSLCrl | The complete path of the CRL file to validate webhook server certificate. | | +| WebhookSSLCaCrt | The complete path to the webhook's SSL ca certificate file. | | +| AllowInsecureWebhooks | When set to true, allow webhooks to call with insecure flag. | false | + +## Agent Properties + +The PEM Agent `Properties` dialog provides information about the PEM agent from which the dialog was opened; to open the dialog, right-click on an agent name in the PEM client tree control, and select `Properties` from the context menu. + +![PEM Agent Properties dialog - General tab](../images/pem_agent_properties.png) + +Use fields on the PEM Agent `Properties` dialog to review or modify information about the PEM agent: + +- The `Description` field displays a modifiable description of the PEM agent. This description is displayed in the tree control of the PEM client. + +- You can use groups to organize your servers and agents in the PEM client tree control. Use the `Group` drop-down listbox to select the group in which the agent will be displayed. + +- Use the `Team` field to specify the name of the group role that should be able to access servers monitored by the agent; the servers monitored by this agent will be displayed in the PEM client tree control to connected team members. Please note that this is a convenience feature. The Team field does not provide true isolation, and should not be used for security purposes. + +- The `Heartbeat interval` fields display the length of time that will elapse between reports from the PEM agent to the PEM server. Use the selectors next to the `Minutes` or `Seconds` fields to modify the interval. + + ![PEM Agent Properties dialog - Job Notifications tab](../images/pem_agent_job_notification_properties.png) + + Use the fields on the `Job Notifications` tab to configure the email notification settings on agent level: + + - Use the `Override default configuration?` switch to specify if you want the agent level job notification settings to override the default job notification settings. If you select `Yes` for this switch, you can use the rest of the settings on this dialog to define when and to whom the job notifications should be sent. Please note that the rest of the settings on this dialog work only if you enable the `Override default configuration?` switch. + - Use the `Email on job completion?` switch to specify if the job notification should be sent on the successful job completion. + - Use the `Email on a job failure?` switch to specify if the job notification should be sent on the failure of a job. + - Use the `Email group` field to specify the email group to whom the job notification should be sent. + + ![PEM Agent Properties dialog - Agent Configurations tab](../images/pem_agent_configurations_properties.png) + + The `Agent Configurations` tab displays all the current configurations and capabilities of a agent. + + - The `Parameter` column displays a list of parameters. + - The `Value` column displays the current value of the corresponding parameter. + - The `Category` column displays the category of the corresponding parameter; it can be either `configuration` or `capability`. diff --git a/product_docs/docs/pem/7.16/pem_admin/index.mdx b/product_docs/docs/pem/7.16/pem_admin/index.mdx new file mode 100644 index 00000000000..46b9c2a27f5 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_admin/index.mdx @@ -0,0 +1,20 @@ +--- +navTitle: Administrator's Guide +title: "PEM Administrator's Guide" +--- + +This document provides an introduction to Postgres Enterprise Manager (PEM). Postgres Enterprise Manager (PEM) is an enterprise management tool designed to assist database administrators, system architects, and performance analysts in administering, monitoring, and tuning PostgreSQL and EDB Advanced Server database servers. PEM is architected to manage and monitor anywhere from a handful, to hundreds of servers from a single console, allowing complete and remote control over all aspects of your databases. + +For information about the platforms and versions supported by PEM, visit the EDB website at: + + + +**Please note**: PEM 8.0.1 is no longer supported on CentOS/RHEL/OEL 6.x platforms. It is strongly recommended that EDB products running on these platforms be migrated to a supported platform. + +This document uses *Postgres* to mean either the PostgreSQL or EDB Postgres Advanced Server database. + +
+ +overview registering_server pem_define_aws_instance_connection managing_certificates managing_configuration_settings managing_pem_server managing_pem_agent conclusion + +
diff --git a/product_docs/docs/pem/7.16/pem_agent/01_pem_architecture.mdx b/product_docs/docs/pem/7.16/pem_agent/01_pem_architecture.mdx new file mode 100644 index 00000000000..db4f225458f --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_agent/01_pem_architecture.mdx @@ -0,0 +1,100 @@ +--- +title: "PEM Architecture" +--- + +Postgres Enterprise Manager (PEM) is a tool designed to monitor and manage multiple Postgres servers through a single GUI interface. PEM is capable of monitoring the following areas of the infrastructure: + +!!! Note + The term Postgres refers to either PostgreSQL or EDB Postgres Advanced Server. + +- **Hosts** - One or more servers (physical or virtual) and their operating systems. +- **Servers** - One or more instances of PostgreSQL or EDB Postgres Advanced Server running on a host. +- **Databases** - One or more databases and the schema objects (tables, indexes, etc.) within them. + +PEM consists of a number of individual software components; the individual components are described below. + +- **PEM Server** - The PEM Server is used as the data repository for monitoring data and as a server to which both Agents and Clients connect. The PEM server consists of an instance of PostgreSQL and an associated database for storage of monitoring data, and a server that provides web services. +- **PEM Agent** - The PEM Agent is responsible for executing tasks and reporting statistics from the Agent host and monitored Postgres instances to the PEM server. A single PEM Agent can monitor multiple installed instances of Postgres that reside on one or many hosts. +- **PEM Web Client** - The PEM web interface allows you to manage and monitor Postgres servers and utilize PEM extended functionality. The web interface software is installed with the PEM server and is accessed via any supported web browser. +- **SQL Profiler** - SQL Profiler is a Postgres server plugin to record the monitoring data and query plans to be analysed by the SQL Profiler tool in PEM. This is an optional component of PEM, but the plugin must be installed into each instance of Postgres with which you wish to use the SQL Profiler tool. The SQL Profiler may be used with any supported version of an EDB distribution of a PostgreSQL server or Advanced Server (not just those managed through the PEM server). See the [PEM SQL Profiler Configuration Guide](https://www.enterprisedb.com/docs/pem/latest/) for details and supported versions. + +**PEM architecture** + +The following architectural diagram illustrates the relationships between the PEM server, clients, and managed as well as unmanaged Postgres servers. + +![PEM Architecture](../images/pem_architecture.png) + +PEM Architecture + +## The PEM Server + +![PEM Server](../images/pem_server.png) + +The PEM server consists of an instance of Postgres, an instance of the Apache web-server providing web services to the client, and a PEM Agent. PEM utilizes a server-side cryptographic plugin to generate authentication certificates. + +The instance of Postgres (a database server) and an instance of the Apache web-server ( HTTPD) can be on the same host or on separate hosts. + +- **Postgres Instance (Database server)** - This is the backend database server. It hosts a database named **pem** which acts as the repository for PEM Server. The **pem** database contains several schemas that store metric data collected from each monitored host, server, and database. + - **pem** - This schema is the core of the PEM application. It contains the definitions of configuration functions, tables, or views required by the application. + - **pemdata** - This schema stores the current snapshot of the monitored data. + - **pemhistory** - This schema stores the historical monitored data. +- **Apache Web Server (HTTPD)** - The PEM Web Application is deployed as a WSGI application with HTTPD to provide web services to the client. It is comprised of the following: + - **Web content presentation** - The presentation layer is created by the Web Application (for example Browser, login page,..). + - **Rest API** - The REST API allows integration with other apps and services. + - **Database Server Administration/Management** - Database server administration and management activities like CREATE, ALTER, DROP, etc. can be performed for managed as well as unmanaged servers. + - **Dashboard/Chart generation** - Internally, the web application includes functionality that generates Dashboards and Charts. + - **Management Tools** - The Audit Manager, Capacity Manager, Log Manager, Postgres Expert, Postgres Log Analysis Expert, and the Tuning Wizard are made available in the Web Application. + - Other tools provide functionality on managed or unmanaged servers: + - **SQL Profiler UI Integration** - SQL Profiler generates easily analyzed traces of session content. + - **Query Editor/Data View** - The Query editor allows you to query, edit, and view data. + - **Debugger** - The Debugger helps you debug queries. + - **Performance Diagnostics** - Performance Diagnostics help you analyze the performance of Advanced Server. + +We recommend that you use a dedicated machine to host production instances of the PEM backend database. The host may be subject to high levels of data throughput, depending on the number of database servers that are being monitored and the workloads the servers are processing. + +## The PEM Agent + +![PEM Agent](../images/pem_agent.png) + +The PEM Agent is responsible for the collection of monitoring data from the machine and operating system, as well as from each of the Postgres instances to which they are bound. Each PEM Agent can monitor one physical or virtual machine and is capable of monitoring multiple database servers locally - installed on the same system, or remotely - installed on other systems. It is also responsible for executing other tasks that may be scheduled by the user (for example, server shutdowns, SQL Profiler traces, user-defined jobs). + +A PEM Agent is installed by default on the PEM Server along with the installation of the PEM Server. It is generally referred to as a PEM Agent on the PEM Host. Separately, the PEM Agent can also be installed on the other servers hosting the Postgres instances to be monitored using PEM. + +Whether monitoring locally or remotely, the PEM Agent connects to the PEM Server using PostgreSQL’s libpq, using SSL certificate-based authentication. The PEM Agent installer in Windows and pemworker CLI in Linux is responsible for registering each agent with the PEM Server, and generating and installing the required certificates. + +Please note that there is only one-way traffic between the PEM Agent and PEM Server; the PEM Agent always connects to the PEM Server. + +The PEM Agent must be able to connect to each database server that it monitors. This connection is made over a TCP/IP connection (or optionally a Unix Domain Socket on Unix hosts), and may optionally use SSL. The user must configure the connection and authentication to the monitored server. + +Once configured, each agent collects statistics and other information on the host and each database server and database that it monitors. Each piece of information is known as a **metric** and is collected by a **probe**. Most probes will collect multiple metrics at once for efficiency. Examples of the metrics collected include: + +- Disk I/O statistics +- Network statistics +- Database server version string +- Database server configuration option (GUC) values +- Table access statistics +- Table and index sizes + +A list of PEM probes can be found [here](https://www.enterprisedb.com/docs/pem/latest/pem_online_help/04_toc_pem_features/12_pem_manage_probes/03_pem_probe_config/01_pem_probes/). + +By default, the PEM Agent bound to the database server collects the OS/Database monitoring statistics and also runs any scheduled tasks/jobs for that particular database server, storing data in the pem database on the PEM server. + +The Alert processing, SNMP/SMTP spoolers, and Nagios Spooler data is stored in the `pem` database on the PEM server and is then processed by the PEM Agent on the PEM Host by default. However, processing by other PEM Agents can be enabled by adjusting the SNMP/SMTP and Nagios parameters of the PEM Agents. + +To see more information about these parameters see [Server Configuration](https://www.enterprisedb.com/docs/pem/latest/pem_online_help/04_toc_pem_features/02_pem_server_config/01_pem_config_options/). + +## The PEM Web Client + +The PEM client is a web-based application that runs in supported browsers. The client's web interface connects to the PEM server and allows direct management of managed or unmanaged servers, and the databases and schemas that reside on them. + +The client allows you to use PEM functionality that makes use of the data logged on the server through features such as the dashboards, the Postgres Log Analysis Expert, and Capacity Manager. + +## The SQL Profiler Plugin + +You are not required to install the SQL Profiler plugin on every server, but you must install and configure the plugin on each server on which you wish to use the SQL Profiler. You may also want to install and configure SQL Profiler on un-monitored development servers. For ad-hoc use also, you may temporarily install the SQL Profiler plugin. + +The plugin is installed with the EDB Postgres Advanced Server distribution but must be installed separately for use with PostgreSQL. The SQL Profiler installer is available from the [EDB website](https://www.enterprisedb.com/downloads/edb-postgres-enterprise-manager). + +SQL Profiler may be used on servers that are not managed through PEM, but to perform scheduled traces, a server must have the plugin installed, and must be managed by an installed and configured PEM agent. + +For more information about using SQL Profiler, see the [PEM SQL Profiler Guide](https://www.enterprisedb.com/docs/pem/latest/) diff --git a/product_docs/docs/pem/7.16/pem_agent/02_registering_agent.mdx b/product_docs/docs/pem/7.16/pem_agent/02_registering_agent.mdx new file mode 100644 index 00000000000..a956169bac9 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_agent/02_registering_agent.mdx @@ -0,0 +1,106 @@ +--- +title: "Registering an Agent" +--- + +Each PEM agent must be *registered* with the PEM server. The registration process provides the PEM server with the information it needs to communicate with the agent. The PEM agent graphical installer for Windows supports self-registration for the agent. You must use the `pemworker` utility to register the agent if the agent is on a Linux host. + +The RPM installer places the PEM agent in the `/usr/edb/pem/agent/bin` directory. To register an agent, include the `--register-agent` keywords along with registration details when invoking the pemworker utility: + +`pemworker --register-agent` + +Append command line options to the command string when invoking the `pemworker` utility. Each option should be followed by a corresponding value: + +| Option | Description | +| ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `--pem-server` | Specifies the IP address of the PEM backend database server. This parameter is required. | +| `--pem-port` | Specifies the port of the PEM backend database server. The default value is 5432. | +| `--pem-user` | Specifies the name of the Database user (having superuser privileges) of the PEM backend database server. This parameter is required. | +| `--pem-agent-user` | Specifies the agent user to connect the PEM server backend database server. | +| `--cert-path` | Specifies the complete path to the directory in which certificates will be created. If you do not provide a path, certificates will be created in: On Linux, ~/.pem On Windows, %APPDATA%/pem | +| `--config-dir` | Specifies the directory path where configuration file can be found. The default is the <pemworker path>/../etc. | +| `--display-name` | Specifies a user-friendly name for the agent that will be displayed in the PEM Browser tree control. The default is the system hostname. | +| `--force-registration` | Include the force_registration clause to instruct the PEM server to register the agent with the arguments provided; this clause is useful if you are overriding an existing agent configuration. The default value is Yes. | +| `--group` | The name of the group in which the agent will be displayed. | +| `--team` | The name of the database role, on the PEM backend database server, that should have access to the monitored database server. | +| `--owner` | The name of the database user, on the PEM backend database server, who will own the agent. | +| `--allow_server_restart` | Enable the allow-server_restart parameter to allow PEM to restart the monitored server. The default value is True. | +| `--allow-batch-probes` | Enable the allow-batch-probes parameter to allow PEM to run batch probes on this agent. The default value is False. | +| `--batch-script-user` | Specifies the operating system user that should be used for executing the batch/shell scripts. The default value is none; the scripts will not be executed if you leave this parameter blank or the specified user does not exist. | +| `--enable-heartbeat-connection` | Enable the enable-heartbeat-connection parameter to create a dedicated heartbeat connection between PEM Agent and server to update the active status. The default value is False. | +| `--enable-smtp` | Enable the enable-smtp parameter to allow the PEM agent to send the email on behalf of the PEM server.The default value is False. | +| `--enable-snmp` | Enable the enable-snmp parameter to allow the PEM agent to send the SNMP traps on behalf of the PEM server.The default value is False. | +| `-o` | Specify if you want to override the configuration file options. | + +Before using any PEM feature for which a database server restart is required by the pemagent (such as Audit Manager, Log Manager, or Tuning Wizard), you must first set the value for `allow_server_restart` to `true` in the `agent.cfg` file. + +!!! Note + When configuring a shell/batch script run by a PEM agent that has PEM 7.11 or later version installed, the user for the `batch_script_user` parameter must be specified. It is strongly recommended that a non-root user is used to run the scripts. Using the root user may result in compromising the data security and operating system security. However, if you want to restore the pemagent to its original settings using root user to run the scripts, then the `batch_script_user` parameter value must be set to `root`. + +You can use the `PEM_SERVER_PASSWORD` environment variable to set the password of the PEM Admin User. If the `PEM_SERVER_PASSWORD` is not set, the server will use the `PGPASSWORD` or `.pgpass` file when connecting to the PEM Database Server. + +Failure to provide the password will result in a password authentication error; you will be prompted for any other required but omitted information. When the registration is complete, the server will confirm that the agent has been successfully registered. + +## Setting PEM Agent Configuration Parameters + +The PEM agent RPM installer creates a sample configuration file named `agent.cfg.sample` in the `/usr/edb/pem/agent/etc` directory. When you register the PEM agent, the `pemworker` program creates the actual agent configuration file (named `agent.cfg`). You must modify the `agent.cfg` file, adding the following configuration parameter: + +`heartbeat_connection = true` + +You must also add the location of the `ca-bundle.crt` file (the certificate authority). By default, the installer creates a `ca-bundle.crt` file in the location specified in your `agent.cfg.sample` file. You can copy the default parameter value from the sample file, or, if you use a `ca-bundle.crt` file that is stored in a different location, specify that value in the `ca_file` parameter: + +`ca_file=/usr/libexec/libcurl-pem7/share/certs/ca-bundle.crt` + +Then, use a platform-specific command to start the PEM agent service; the service is named `pemagent`. + +On a RHEL or CentOS 7.x or 8.x host, use systemctl to start the service: + +`systemctl start pemagent` + +The service will confirm that it is starting the agent; when the agent is registered and started, it will be displayed on the `Global Overview` dashboard and in the Object browser tree control of the PEM web interface. + +For information about using the pemworker utility to register a server, please see the [PEM Administrator's Guide](https://www.enterprisedb.com/docs/pem/latest/pem_admin/) + +## Using a non-root User Account to Register a PEM Agent + +To use a non-root user account to register a PEM agent, you must first install the PEM agent as a root user. After installation, assume the identity of a non-root user (for example, `edb`) and perform the following steps: + +1. Create the `.pem` directory and `logs` directory and assign read, write, and execute permissions to the file: + + ```text + mkdir /home//.pem + mkdir /home//.pem/logs + chmod 700 /home//.pem + chmod 700 /home//.pem/logs + ``` + +2. Register the agent with PEM server: + + ```text + ./pemworker --register-agent --pem-server <172.19.11.230> --pem-user --pem-port <5432> --display-name --cert-path /home/ --config-dir /home/ + + The above command creates agent certificates and an agent configuration file (``agent.cfg``) in the ``/home/edb/.pem`` directory. Use the following command to assign read and write permissions to these files: + + ``chmod -R 600 /home/edb/.pem/agent*`` + ``` + +3. Change the parameters of the `agent.cfg` file: + + ```text + agent_ssl_key=/home/edb/.pem/agent.key + agent_ssl_crt=/home/edb/.pem/agent.crt + log_location=/home/edb/.pem/worker.log + agent_log_location=/home/edb/.pem/agent.log + ``` + +4. Update the values for the configuration file path and the user in the `pemagent` service file: + ```text + User=edb + ExecStart=/usr/edb/pem/agent/bin/pemagent -c /home/edb/.pem/agent.cfg + ``` + +5. Stop the agent process, and then restart the agent service using the non-root user: + ```text + sudo systemctl start/stop/restart pemagent + ``` + +6. Check the agent status on PEM dashboard. diff --git a/product_docs/docs/pem/7.16/pem_agent/03_managing_pem_agent.mdx b/product_docs/docs/pem/7.16/pem_agent/03_managing_pem_agent.mdx new file mode 100644 index 00000000000..1a443da3b80 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_agent/03_managing_pem_agent.mdx @@ -0,0 +1,172 @@ +--- +title: "Managing a PEM Agent" +--- + +The sections that follow provide information about the behavior and management of a PEM agent. + +## Agent Privileges + +By default, the PEM agent is installed with `root` privileges for the operating system host and superuser privileges for the database server. These privileges allow the PEM agent to invoke unrestricted probes on the monitored host and database server about system usage, retrieving and returning the information to the PEM server. + +Please note that PEM functionality diminishes as the privileges of the PEM agent decrease. For complete functionality, the PEM agent should run as `root`. If the PEM agent is run under the database server's service account, PEM probes will not have complete access to the statistical information used to generate reports, and functionality will be limited to the capabilities of that account. If the PEM agent is run under another lesser-privileged account, functionality will be limited even further. + +If you limit the operating system privileges of the PEM agent, some of the PEM probes will not return information, and the following functionality may be affected: + +| Probe or Action | Operating System | PEM Functionality Affected | +| ----------------------------------------------- | ---------------- | --------------------------------------------------------------------------------------------------------------------- | +| Data And Logfile Analysis | Linux/ Windows | The Postgres Expert will be unable to access complete information. | +| Session Information | Linux | The per-process statistics will be incomplete. | +| PG HBA | Linux/ Windows | The Postgres Expert will be unable to access complete information. | +| Service restart functionality | Linux/ Windows | The Audit Log Manager, Server Log Manager Log Analysis Expert and PEM may be unable to apply requested modifications. | +| Package Deployment | Linux/ Windows | PEM will be unable to run downloaded installation modules. | +| Batch Task | Windows | PEM will be unable to run scheduled batch jobs in Windows. | +| Collect data from server (root access required) | Linux/ Windows | Columns such as swap usage, CPU usage, IO read, IO write will be displayed as 0 in the session activity dashboard. | + +!!! Note + The above-mentioned list is not comprehensive, but should provide an overview of the type of functionality that will be limited. + +If you restrict the database privileges of the PEM agent, the following PEM functionality may be affected: + +| Probe | Operating System | PEM Functionality Affected | +| -------------------------- | ---------------- | ------------------------------------------------------------------------------------- | +| Audit Log Collection | Linux/Windows | PEM will receive empty data from the PEM database. | +| Server Log Collection | Linux/Windows | PEM will be unable to collect server log information. | +| Database Statistics | Linux/Windows | The Database/Server Analysis dashboards will contain incomplete information. | +| Session Waits/System Waits | Linux/Windows | The Session/System Waits dashboards will contain incomplete information. | +| Locks Information | Linux/Windows | The Database/Server Analysis dashboards will contain incomplete information. | +| Streaming Replication | Linux/Windows | The Streaming Replication dashboard will not display information. | +| Slony Replication | Linux/Windows | Slony-related charts on the Database Analysis dashboard will not display information. | +| Tablespace Size | Linux/Windows | The Server Analysis dashboard will not display complete information. | +| xDB Replication | Linux/Windows | PEM will be unable to send xDB alerts and traps. | + +If the probe is querying the operating system with insufficient privileges, the probe may return a `permission denied` error. + +If the probe is querying the database with insufficient privileges, the probe may return a `permission denied` error or display the returned data in a PEM chart or graph as an empty value. + +When a probe fails, an entry will be written to the log file that contains the name of the probe, the reason the probe failed, and a hint that will help you resolve the problem. + +You can view probe-related errors that occurred on the server in the `Probe Log` dashboard, or review error messages in the PEM worker log files. On Linux, the default location of the log file is: + + `/var/log/pem/worker.log` + +On Windows, log information is available on the `Event Viewer`. + +## Agent Configuration + +A number of user-configurable parameters and registry entries control the behavior of the PEM agent. You may be required to modify the PEM agent's parameter settings to enable some PEM functionality. After modifying values in the PEM agent configuration file, you must restart the PEM agent to apply any changes. + +With the exception of the `PEM_MAXCONN` parameter, we strongly recommend against modifying any of the configuration parameters or registry entries listed below without first consulting EDB support experts *unless* the modifications are required to enable PEM functionality. + +On Linux systems, PEM configuration options are stored in the `agent.cfg` file, located in `/usr/edb/pem/agent/etc`. The `agent.cfg` file contains the following entries: + +| Parameter Name | Description | Default Value | +| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| pem_host | The IP address or hostname of the PEM server. | 127.0.0.1. | +| pem_port | The database server port to which the agent connects to communicate with the PEM server. | Port 5432. | +| pem_agent | A unique identifier assigned to the PEM agent. | The first agent is '1', the second agent is '2', and so on. | +| agent_ssl_key | The complete path to the PEM agent's key file. | /root/.pem/agent.key | +| agent_ssl_crt | The complete path to the PEM agent's certificate file. | /root/.pem/agent.crt | +| agent_flag_dir | Used for HA support. Specifies the directory path checked for requests to take over monitoring another server. Requests are made in the form of a file in the specified flag directory. | Not set by default. | +| log_level | Log level specifies the type of event that will be written to the PEM log files. | warning | +| log_location | Specifies the location of the PEM worker log file. | 127.0.0.1. | +| agent_log_location | Specifies the location of the PEM agent log file. | /var/log/pem/agent.log | +| long_wait | The maximum length of time (in seconds) that the PEM agent will wait before attempting to connect to the PEM server if an initial connection attempt fails. | 30 seconds | +| short_wait | The minimum length of time (in seconds) that the PEM agent will wait before checking which probes are next in the queue (waiting to run). | 10 seconds | +| alert_threads | The number of alert threads to be spawned by the agent. | Set to 1 for the agent that resides on the host of the PEM server; 0 for all other agents. | +| enable_smtp | When set to true for multiple PEM Agents (7.13 or lesser) it may send more duplicate emails. Whereas for PEM Agents (7.14 or higher) it may send lesser duplicate emails. | true for PEM server host; false for all others. | +| enable_snmp | When set to true for multiple PEM Agents (7.13 or lesser) it may send more duplicate traps. Whereas for PEM Agents (7.14 or higher) it may send lesser duplicate traps. | true for PEM server host; false for all others. | +| enable_nagios | When set to true, Nagios alerting is enabled. | true for PEM server host; false for all others. | +| enable_webhook | When set to true, Webhook alerting is enabled. | true for PEM server host; false for all others. | +| max_webhook_retries | Set maximum number of times pemAgent should retry to call webhooks on failure. | Default 3. | +| connect_timeout | The max time in seconds (a decimal integer string) that the agent will wait for a connection. | Not set by default; set to 0 to indicate the agent should wait indefinitely. | +| allow_server_restart | If set to TRUE, the agent can restart the database server that it monitors. Some PEM features may be enabled/disabled, depending on the value of this parameter. | False | +| max_connections | The maximum number of probe connections used by the connection throttler. | 0 (an unlimited number) | +| connection_lifetime | Use ConnectionLifetime (or connection_lifetime) to specify the minimum number of seconds an open but idle connection is retained. This parameter is ignored if the value specified in MaxConnections is reached and a new connection (to a different database) is required to satisfy a waiting request. | By default, set to 0 (a connection is dropped when the connection is idle after the agent's processing loop). | +| allow_batch_probes | If set to TRUE, the user will be able to create batch probes using the custom probes feature. | false | +| heartbeat_connection | When set to TRUE, a dedicated connection is used for sending the heartbeats. | false | +| batch_script_dir | Provide the path where script file (for alerting) will be stored. | /tmp | +| connection_custom_setup | Use to provide SQL code that will be invoked when a new connection with a monitored server is made. | Not set by default. | +| ca_file | Provide the path where the CA certificate resides. | Not set by default. | +| batch_script_user | Provide the name of the user that should be used for executing the batch/shell scripts. | None | +| webhook_ssl_key | The complete path to the webhook's SSL client key file. | | +| webhook_ssl_crt | The complete path to the webhook's SSL client certificate file. | | +| webhook_ssl_crl | The complete path of the CRL file to validate webhook server certificate. | | +| webhook_ssl_ca_crt | The complete path to the webhook's SSL ca certificate file. | | +| allow_insecure_webhooks | When set to true, allow webhooks to call with insecure flag. | false | + +On 64 bit Windows systems, PEM registry entries are located in: + +`HKEY_LOCAL_MACHINE\Software\Wow6432Node\EnterpriseDB\PEM\agent` + +The registry contains the following entries: + +| Parameter Name | Description | Default Value | +| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| PEM_HOST | The IP address or hostname of the PEM server. | 127.0.0.1. | +| PEM_PORT | The database server port to which the agent connects to communicate with the PEM server. | Port 5432. | +| AgentID | A unique identifier assigned to the PEM agent. | The first agent is '1', the second agent is '2', and so on. | +| AgentKeyPath | The complete path to the PEM agent's key file. | %APPDATA%\\Roaming\\pem\\ agent.key. | +| AgentCrtPath | The complete path to the PEM agent's certificate file. | %APPDATA%\\Roaming\\pem\\ agent.crt | +| AgentFlagDir | Used for HA support. Specifies the directory path checked for requests to take over monitoring another server. Requests are made in the form of a file in the specified flag directory. | Not set by default. | +| LogLevel | Log level specifies the type of event that will be written to the PEM log files. | warning | +| LongWait | The maximum length of time (in seconds) that the PEM agent will wait before attempting to connect to the PEM server if an initial connection attempt fails. | 30 seconds | +| shortWait | The minimum length of time (in seconds) that the PEM agent will wait before checking which probes are next in the queue (waiting to run). | 10 seconds | +| AlertThreads | The number of alert threads to be spawned by the agent. | Set to 1 for the agent that resides on the host of the PEM server; 0 for all other agents. | +| EnableSMTP | When set to true, the SMTP email feature is enabled. | true for PEM server host; false for all others. | +| EnableSNMP | When set to true, the SNMP trap feature is enabled. | true for PEM server host; false for all others. | +| EnableWebhook | When set to true, Webhook alerting is enabled. | true for PEM server host; false for all others. | +| MaxWebhookRetries | Set maximum number of times pemAgent should retry to call webhooks on failure. | Default 3. | +| ConnectTimeout | The max time in seconds (a decimal integer string) that the agent will wait for a connection. | Not set by default; if set to 0, the agent will wait indefinitely. | +| AllowServerRestart | If set to TRUE, the agent can restart the database server that it monitors. Some PEM features may be enabled/disabled, depending on the value of this parameter. | true | +| MaxConnections | The maximum number of probe connections used by the connection throttler. | 0 (an unlimited number) | +| ConnectionLifetime | Use ConnectionLifetime (or connection_lifetime) to specify the minimum number of seconds an open but idle connection is retained. This parameter is ignored if the value specified in MaxConnections is reached and a new connection (to a different database) is required to satisfy a waiting request. | By default, set to 0 (a connection is dropped when the connection is idle after the agent's processing loop). | +| AllowBatchProbes | If set to TRUE, the user will be able to create batch probes using the custom probes feature. | false | +| HeartbeatConnection | When set to TRUE, a dedicated connection is used for sending the heartbeats. | false | +| BatchScriptDir | Provide the path where script file (for alerting) will be stored. | /tmp | +| ConnectionCustomSetup | Use to provide SQL code that will be invoked when a new connection with a monitored server is made. | Not set by default. | +| ca_file | Provide the path where the CA certificate resides. | Not set by default. | +| AllowBatchJobSteps | If set to true,the batch/shell scripts will be executed using Administrator user account. | None | +| WebhookSSLKey | The complete path to the webhook's SSL client key file. | | +| WebhookSSLCrt | The complete path to the webhook's SSL client certificate file. | | +| WebhookSSLCrl | The complete path of the CRL file to validate webhook server certificate. | | +| WebhookSSLCaCrt | The complete path to the webhook's SSL ca certificate file. | | +| AllowInsecureWebhooks | When set to true, allow webhooks to call with insecure flag. | false | + +## Agent Properties + +The PEM Agent `Properties` dialog provides information about the PEM agent from which the dialog was opened; to open the dialog, right-click on an agent name in the PEM client tree control, and select `Properties` from the context menu. + +![PEM Agent Properties dialog - General tab](../images/pem_agent_properties.png) + +PEM Agent Properties dialog - General tab + +Use fields on the PEM Agent `Properties` dialog to review or modify information about the PEM agent: + +- The `Description` field displays a modifiable description of the PEM agent. This description is displayed in the tree control of the PEM client. + +- You can use groups to organize your servers and agents in the PEM client tree control. Use the `Group` drop-down listbox to select the group in which the agent will be displayed. + +- Use the `Team` field to specify the name of the group role that should be able to access servers monitored by the agent; the servers monitored by this agent will be displayed in the PEM client tree control to connected team members. Please note that this is a convenience feature. The Team field does not provide true isolation, and should not be used for security purposes. + +- The `Heartbeat interval` fields display the length of time that will elapse between reports from the PEM agent to the PEM server. Use the selectors next to the `Minutes` or `Seconds` fields to modify the interval. + + ![PEM Agent Properties dialog - Job Notifications tab](../images/pem_agent_job_notification_properties.png) + + PEM Agent Properties dialog - Job Notifications tab + + Use the fields on the `Job Notifications` tab to configure the email notification settings on agent level: + + - Use the `Override default configuration?` switch to specify if you want the agent level job notification settings to override the default job notification settings. If you select `Yes` for this switch, you can use the rest of the settings on this dialog to define when and to whom the job notifications should be sent. Please note that the rest of the settings on this dialog work only if you enable the `Override default configuration?` switch. + - Use the `Email on job completion?` switch to specify if the job notification should be sent on the successful job completion. + - Use the `Email on a job failure?` switch to specify if the job notification should be sent on the failure of a job. + - Use the `Email group` field to specify the email group to whom the job notification should be sent. + + ![PEM Agent Properties dialog - Agent Configurations tab](../images/pem_agent_configurations_properties.png) + + PEM Agent Properties dialog - Agent Configurations tab + + The `Agent Configurations` tab displays all the current configurations and capabilities of a agent. + + - The `Parameter` column displays a list of parameters. + - The `Value` column displays the current value of the corresponding parameter. + - The `Category` column displays the category of the corresponding parameter; it can be either `configuration` or `capability`. diff --git a/product_docs/docs/pem/7.16/pem_agent/04_pem_agent_troubleshooting.mdx b/product_docs/docs/pem/7.16/pem_agent/04_pem_agent_troubleshooting.mdx new file mode 100644 index 00000000000..dd8f677f84d --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_agent/04_pem_agent_troubleshooting.mdx @@ -0,0 +1,46 @@ +--- +title: "PEM Agent Troubleshooting" +--- + +## Restoring a Deleted PEM Agent + +If an agent has been deleted from the `pem.agent` table then you cannot restore it. You will need to use the pemworker utility to re-register the agent. + +If an agent has been deleted from PEM Web client but still has an entry in the `pem.agent` table with value of `active = f`, then you can use the following steps to restore the agent: + +1. Use the following command to check the values of the `id` and `active` fields: + + `pem=# SELECT * FROM pem.agent;` + +2. Update the status for the agent to `true` in the `pem.agent` table: + + `pem=# UPDATE pem.agent SET active=true WHERE id=;` + + Where `x` is the identifier that was displayed in the output of the query used in step 1. + +3. Refresh the PEM web client. + +The deleted agent will be restored again. However, the servers that were bound to that particular agent might appear to be down. To resolve this issue, you need to modify the PEM agent properties of the server to add the bound agent again; after the successful modification, the servers will be displayed as running properly. + +## Using the Command Line to Delete a PEM Agent with Down or Unknown Status + +Using the PEM web interface to delete PEM agents with `Down` or `Unknown` status may be difficult if the number of such agents is large. In such a situation, you might want to use the command line interface to delete `Down` or `Unknown` agents. + +1. Use the following query to delete the agents that are `Down` for more than *N* number of hours: + + ``` + UPDATE pem.agent SET active=false WHERE id IN + (SELECT a.id FROM pem.agent + a JOIN pem.agent_heartbeat b ON (b.agent_id=a.id) + WHERE a.id IN + (SELECT agent_id FROM pem.agent_heartbeat WHERE (EXTRACT (HOUR FROM now())- + EXTRACT (HOUR FROM last_heartbeat)) > )); + ``` + +2. Use the following query to delete the agents with an `Unknown` status: + + ``` + UPDATE pem.agent SET active=false WHERE id IN + (SELECT id FROM pem.agent WHERE id NOT IN + (SELECT agent_id FROM pem.agent_heartbeat)); + ``` diff --git a/product_docs/docs/pem/7.16/pem_agent/index.mdx b/product_docs/docs/pem/7.16/pem_agent/index.mdx new file mode 100644 index 00000000000..cfa44a1d1fe --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_agent/index.mdx @@ -0,0 +1,31 @@ +--- +navTitle: Agent User Guide +title: "PEM Agent User Guide" +--- + +PEM is composed of three primary components: PEM server, PEM agent, and PEM web interface. The PEM agent is responsible for performing tasks on each managed machine and collecting statistics for the database server and operating system. + +For information about the platforms and versions supported by PEM, visit the EDB website at: + + + +**Please note**: PEM 8.0.1 is no longer supported on CentOS/RHEL/OEL 6.x platforms. It is strongly recommended that EDB products running on these platforms be migrated to a supported platform. + +For information about the installation, uninstallation, or upgrading of a PEM Agent, visit the EDB website at: + + + +This document provides information that is required to work with PEM agents. The guide will acquaint you with the basic registering, configuration, and management of agents. The guide is broken up into the following core sections: + +- **Postgres Enterprise Manager - Overview** - This section provides an overview of PEM architecure. +- **Registering a PEM Agent** - This section provides information about registration of a PEM agent. +- **Managing a PEM agent** - This section provides information about configuring and managing a PEM agent. +- **Troubleshooting for PEM agent** - This section provides information about troubleshooting for PEM agents. + +This document uses *Postgres* to mean either the PostgreSQL or EDB Postgres Advanced Server database. + +
+ +pem_architecture registering_agent managing_pem_agent pem_agent_troubleshooting conclusion + +
diff --git a/product_docs/docs/pem/7.16/pem_bart/01_managing_bart.mdx b/product_docs/docs/pem/7.16/pem_bart/01_managing_bart.mdx new file mode 100644 index 00000000000..7718867e422 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_bart/01_managing_bart.mdx @@ -0,0 +1,292 @@ +--- +title: "Managing a BART Server" +--- + +Postgres Enterprise Manager (PEM) is designed to assist database administrators, system architects, and performance analysts when administering, monitoring, and tuning PostgreSQL and Advanced Server database servers. + +The EDB Backup and Recovery Tool (BART) is an administrative utility providing simplified backup and recovery management for multiple local or remote EDB Postgres Advanced Server and PostgreSQL database servers. For more information about BART, please visit the EDB website at: + + + +From PEM version 7.10 onwards, you can manage a BART server through PEM console. PEM provides a user-friendly interface that allows you to manage your BART server and perform all the BART operations from PEM console. + +## Prerequisites + +- Before adding a BART server to the PEM console, you must manually install and configure BART on the BART host. For more information about installing and configuring BART, please see the [BART Installation Guide](https://www.enterprisedb.com/docs/bart/latest/bart_inst/). + +!!! Note + While integrating PEM with BART, the PEM Agent creates the backup directory required for BART, and ensures that the ownership and permissions on the directory are correct. + +- Before associating a database server with a BART server, you must install SSH on the database server and the BART server. + +- Before restoring a BART backup, you must install BART, a PEM agent, and SSH on the target server. SSH must also be installed on the BART server that you plan to use to restore. + +- To take a backup of the replica database servers, you must ensure that the latest *pg_basebackup* utility is installed on the database server that you want to manage through BART. + +## Configuring a BART Server + +You can use the `Create–BART server` dialog to register an existing BART server with the PEM server. To access the dialog, right-click on the `BART Servers` node and select `Create-BART Server`. + +![The Create-BART server dialog - General tab](../images/create_BART_server_general.png) + +Use the fields on the `General` tab to describe the general properties of the BART Server: + +- Use the `Agent Name` field to select the agent that you want to use for the BART server. Only those PEM agents that are supported for BART are listed in the drop-down list. + +- Use the `Server Name` field to specify a user-friendly name for the server. The name specified will identify the server in the Browser tree. + +- Use the `Host` field to specify the IP address of the host or agent where BART is installed. + +- Use the `User` field to specify the user name that will be used for performing all the BART operations. You can either use the `enterprisedb` (for Advanced Server) or `postgres` (for PostgreSQL) database user account or you can create a new BART user account. This user must be an operating system user who owns the BART backup catalog directory. + +- Use the `Installation path` field to specify the directory path where BART is installed on the host or BART server. + +- Use the `Backup path` field to specify the file system parent directory where all BART backups and archived WAL files will be stored. + +- Use the `pg_basebackup_path` field to specify the path to the `pg_basebackup` utility. + +- Use the `Xlog/WAL method` field to specify how the transaction log should be collected during the execution of pg_basebackup. The default option is `fetch`; it specifies that the transaction log files will be collected after the backup has completed. Set the `Xlog/WAL` method to `stream` to stream the transaction log in parallel with the full base backup creation. If streaming is used, the `max_wal_senders` configuration parameter in the `postgresql.conf` file for affected database servers must account for an additional session for the streaming of the transaction log (the setting must be a minimum of 2). + + For more information about Xlog/WAL methods, see [PostgreSQL core documentation](https://www.postgresql.org/docs/current/app-pgbasebackup.html). + +- Use the `Retention policy` field to specify the retention policy for the backup. This determines when an active backup should be marked as obsolete, and hence, be a candidate for deletion. You can specify the retention policy in terms of number of backup or in terms of duration (days, weeks, or months). + +- Use the `Log file` field to specify the path to BART log file. This is an optional field. + +![The Create-BART server dialog - Misc tab](../images/create_BART_server_misc.png) + +Use the fields on the `Misc` tab to describe the backup-related properties of the BART Server: + +- Use the `Scanner log file` field to specify the path to the Xlog/WAL scanner log file. This is an optional field; BART does not create a WAL scanner log file if you do not specify the path. + +- Use the `Socket dir path` field to specify the path to the socket directory where all BART sockets will be stored. The default directory is `/tmp`. This parameter is added from BART version 2.5.2 onwards. + +- Use the `Socket name` field to specify a user-friendly BART socket file name. Using this option overrides the default BART socket name generated using MD5 checksum. This parameter is added from BART version 2.5.6 onwards. + +- Use the `WAL compression?` switch to specify if you want to compress the archived Xlog/WAL files in Gzip format. To enable WAL compression, the gzip compression program must be present in the BART user account’s PATH. The WAL compression setting must not be enabled for those database servers where you need to take incremental backups. + +- Use the `Copy WALs during restore?` field to specify how the archived WAL files are collected when invoking the RESTORE operation. Set to enabled to copy the archived WAL files from the BART backup catalog to the `restore_path/archived_wals` directory prior to the database server archive recovery. Set to `disabled` to retrieve the archived WAL files directly from the BART backup catalog during the database server archive recovery. Enabling this option helps you save time during the restore operation. + +- Use the `Thread count` field to specify the number of worker threads for copying blocks or data files from the database server to the BART backup catalog. Specify a `thread count` of `1` if you want to take the backup using the `pg_basebackup` utility. + +- Use the `Batch size` field to specify the number of blocks of memory used for copying modified blocks. This is applicable only for incremental backups. + +- Use the `Scan interval` field to specify the number of seconds after which the WAL scanner should scan the new WAL files. + +- Use the `MBM scan timeout` field to specify the number of seconds to wait for MBM files before timing out. This is applicable only for incremental backups. + +- Use the `Workers` field to specify the number of parallel worker processes required to stream the modified blocks of an incremental backups to the restore host. + +## Associating the BART Server with a Database Server + +After configuring the BART server, you must associate it with the database server whose backup you wish to manage with BART. You can do one of the following: + +- Use the PEM console to modify the properties of an existing monitored database server to map it to the newly configured BART server. + +- Use the PEM console to create a new monitored database server, and map it to the newly configured BART server. + +To map the BART server to a new PEM database server, right-click the `PEM Server Directory` node and select `Create` > `Server`. Enter the details on all the generic tabs and then enter the BART-specific details on the `BART` tab. + +![The Create Server dialog (BART - General tab)](../images/create_server_bart_general.png) + +Use the fields on the `General` tab to describe the general properties of the BART Server that will map to the PEM server: + +- Use the `BART server` field to select the BART server name. All the BART servers configured in the PEM console will be listed in this drop down list. + +- Use the `Server name` field to specify a name for the database server that you want to backup using the BART server. This name gets stored in the BART configuration file. + +- Use the `Description` field to specify the description of the database server. + +- Use the `Backup name` field to specify a template for user-defined names to be assigned to the backups of the database server. If you do not specify a backup name template, then the backup can only be referenced in BART sub-commands by the BART assigned, integer backup identifier. + +- Use the `Host address` field to specify the IP address of the database server that you want to configure for backup. + +- Use the `Port` field to specify the port to be used for the database that you want to backup. + +- Use the `User` field to specify the user of the database that you want to backup using BART through PEM console. If you want to enable incremental backups for this database server, then the user must be a superuser. + +- Use the `Password` field to specify the password for the user of the database that you want to backup. + +- Use the `Cluster Owner` field to specify the Linux operating system user account that owns the database cluster. This is typically `enterprisedb` for Advanced Server database clusters installed in the Oracle databases compatible mode, or `postgres` for PostgreSQL database clusters and for Advanced Server database clusters installed in the PostgreSQL databases compatible mode. + +- Use the `Archive command` field to specify the desired format of the archive command string to be used in the `bart.cfg` file. Inputs provided for the Archive command will overwrite the database server's `Postgresql.conf` file. Once the server gets added, the database server will be restarted or database configurations will be reloaded. + +- Use the `Archive path` field to store the archived WAL files. The default location is the BART backup catalog. This parameter is added from BART version 2.5.2 onwards. + +- Use the `Allow incremental backup?` switch to specify if incremental backup should be enabled for this database server. + +- Use the `Setup passwordless SSH?` switch to specify if you want to create SSH certificates to allow passwordless logins between the Database Server and the BART server. Ensure to bind a PEM agent before setting up the passwordless SSH authentication. Passwordless SSH will not work for a database server being remotely monitored by a PEM agent. + +![The Create - Server dialog (BART - Misc tab)](../images/create_server_bart_misc.png) + +Use the fields on the `Misc` tab to describe the miscellaneous properties of the BART Server: + +- Use the `Override default configuration?` Switch to specify if you want to override the BART server configurations with the specific database server configurations. + +- Use the `Xlog` method to specify how the transaction log should be collected during the execution of `pg_basebackup`. + +- Use the `Retention policy` field to specify the retention policy for the backup. This determines when an active backup should be marked as obsolete, and hence, be a candidate for deletion. You can specify the retention policy in terms of number of backup or in terms of duration (days, weeks, or months). + +- Use the `WAL compression` switch to specify if you want to compress the archived Xlog/WAL files in Gzip format. To enable WAL compression, the gzip compression program must be present in the BART user account’s PATH. The wal_compression setting must not be enabled for those database servers where you need to take incremental backups. + +- Use the `Copy WALs during restore` field to specify how the archived WAL files are collected when invoking the RESTORE operation. Set to enabled to copy the archived WAL files from the BART backup catalog to the <restore_path>/archived_wals directory prior to the database server archive recovery. Set to disabled to retrieve the archived WAL files directly from the BART backup catalog during the database server archive recovery. + +- Use the `Thread count` field to specify the number of threads to copy the blocks. You must set `thread count` to `1` if you want to take a backup with the `pg_basebackup` utility. + +- Use the `Batch size` field to specify the number of blocks of memory used for copying modified blocks, applicable only for incremental backups. + +- Use the `Scan interval` field to specify the number of seconds after which the WAL scanner should scan the new WAL files. + +- Use the `MBM scan timeout` field to specify the number of seconds to wait for MBM files before timing out, applicable only for incremental backups. + +- Use the `Workers` field to specify the number of parallel worker processes required to stream the modified blocks of an incremental backups to the restore host. + +## Viewing the BART Server Details on a PEM Dashboard + +After associating the BART server with a database server, you can review the backup and restore details for that server on the PEM Dashboard. You can also perform operations such as restoration or deletion of a backup that is listed on the dashboard. + +![The BART Backup Dashboard](../images/bart_backup_dashboard.png) + +When you select a monitored BART server, details of all the associated database servers along with their backups and restore activities are displayed as a chart on the Dashboard in the `Backup and Restore Activities` panel. You can filter the list of backups on criteria specified in the filter boxes (database server, activity, or duration). + +The `Managed Database servers` panel displays a list of all the database servers managed by that particular BART server along with their high-level details. + +The `Initiated Server Backups` panel displayes a list of all the backups of the database servers managed by that particular BART server. You can filter the list to display the details of a particular database server. You can also filter the list on any criteria that you specify in the filter box. Typically, this filter works with any kind of string value (excluding date, time, and size) listed under the columns. For example, you can type `tar` to filter the list and display only those backups that are in tar format. + +Backup details displayed include the `Backup Name`, `Backup ID`, `Status`, `Server Name`, `Start Time`, `Type`, `Parent ID`, `Format`, `Duration`, and `Size`. The `Status` column shows the status of the backups which can be one of the following: `In Progress`, `Active`, `Keep`, or `Obsolete`. + +A backup is marked as `Obsolete` when the backup retention period has passed or if the number of retained backups (specified as the retention policy of the BART server) is met. If you want to make an exception so that a particular backup does not get marked as `Obsolete` even after the expiration of the retention policy, mark that particular backup as `Keep`. Similarly, if you mark a particular backup as `NoKeep`, the backup is re-evaluated to determine if its status should be changed back to `Obsolete` based on the current retention policy. + +Please note that if any of the scheduled tasks for backup, restore, validate host, validate server or delete obsolete backup for any of the BART Server gets deleted, it will not display under the `BART Tool Activities` graph of BART Server's dashboard. However, it gets listed under the `Initiated Server Backups` list. + +A pin in the first column under *Actions* indicates that a backup can be marked as *Keep* by clicking the pin; while an inverted pin indicates that the backup can be marked as *NoKeep*. The second column under `Actions` displays the `Restore` icon; you can perform the `Restore` operation by clicking on the icon. + +You can delete all the `Obsolete` backups by clicking the `Delete Obsolete` button. You can also refresh the list of backups by clicking the `Refresh` button. + +## Scheduling BART Backups + +To create or manage a backup, select `Schedule Backup` from the `Tools` menu. The dialog header displays general execution information about the backup: + +- `Logs` +- `Last result` +- `Database server` +- `Last backup name` +- `Started on` +- `Type` +- `Parent` +- `Format` +- `Verify checksum?` +- `Use pg_basebackup?` + +Click the Add icon (+) to add information about a scheduled backup. Enter the backup details in the schedule definition dialog: + +![The Schedule Backup dialog - General options](../images/BART_backup_scheduler_general.png) + +Use the fields on the `General` tab to describe the general properties of the backup: + +- Use the `Database Server` field to specify the target database server that you want to back up. + +- Use the `Backup name` to specify a user-defined name for the backup. + +- Use the `Backup type` switch to specify the backup type I. e. full backup or incremental backup. + +- Use the `Parent backup` field to select the ID of the parent backup for incremental backup. This parent backup can either be a full or an incremental backup. + +- Use the `Format switch` to specify the output format of the backup i.e plain text or tar. For incremental backup, you need to select plain text only. + +- Use the `Gzip compression` switch to specify if gzip compression should be enabled for the backup. This option is applicable only for the tar format. + +- Use the `Compression level` field to specify the gzip compression level on the tar file output. + +- Use the `Thread count` field to specify the number of threads that will copy the blocks. + +- Use the `MBM scan timeout` field to specify the number of seconds to wait for required MBM files before timing out. + +- Use the `Verify checksum` field to specify if you want the application to verify the checksum of the backup. + +- Use the `pg_basebackup` field to specify if the pg_basebackup utility should be used for the backup. Typically, pg_basebackup utility is used only for backing up the replica servers since it cannot be used for incremental backups. + +![The Schedule Backup dialog - (Schedule : General)](../images/BART_backup_scheduler_schedule_general.png) + +Provide scheduling details for the Backup on the `Schedule` tab: + +- Use the `Enabled?` switch to indicate if the schedule should be enabled (`Yes`) or disabled (`No`). + +- Use the calendar selector in the `Start` field to specify the starting date and time for the schedule. + +- Use the calendar selector in the `End` field to specify the ending date and time for the schedule. + +![The Schedule Backup dialog - (Schedule : Repeat)](../images/BART_backup_scheduler_schedule_repeat.png) + +Use the fields on the `Repeat` tab to specify the details about the schedule in a cron-style format. The schedule will execute on each date or time element selected on the `Repeat` tab. Click within a field to open a list of valid values for that field; click on a specific value to add that value to the list of selected values for the field. To clear the values from a field, click the `X` located at the right-side of the field. + +Use the fields within the `Days` box to specify the days on which the schedule will execute: + +- Use the `Week Days` field to select the days on which the schedule will execute. + +- Use the `Month Days` field to select the numeric days on which the schedule will execute. Specify the Last Day to indicate that the schedule should be performed on the last day of the month, regardless of the date. + +- Use the `Months` field to select the months in which the schedule will execute. + +Use the fields within the `Times` box to specify the times at which the schedule will execute: + +- Use the `Hours` field to select the hour at which the schedule will execute. + +- Use the `Minutes` field to select the minute at which the schedule will execute. + +![The Schedule Backup dialog - (Schedule : Notifications)](../images/BART_backup_scheduler_schedule_notifications.png) + +Use the fields on the `Notifications` tab to specify the email notification settings for a scheduled backup: + +- Use the `Send the notifications` field to specify when you want the email notifications to be sent. + +- Use the `Email group` field to specify the email group that should receive the email notification. + +## Restoring BART Backups + +You can restore the backups that you have earlier created using BART server on a target remote host. When you select a particular BART server, all the associated backups are listed in the Dashboard under `Initiated Server Backups`. + +To restore a backup, click the `Restore` icon next to the backup that you want to restore. + +![The Restore Backup dialog - General](../images/BART_backup_restore_general.png) + +In the `Restore Backup` dialog, provide information in the fields on the `General` tab: + +- Use the `Target agent` field name to specify the name of the agent where you want to restore the backup. + +- Use the `Remote user` field to specify the use account on the remote database server host where you want to restore the backup. + +- Use the `Remote host address` field to specify the IP address of the remote host where you want to restore the backup. + +- Use the `SSH port` field to specify the SSH port to be used for restoring the backup. + +- Use the `Restore path` field to specify the path where you want to restore the backup. + +- Use the `Number of workers` field to specify processes to run in parallel to stream the modified blocks of an incremental backup to the restore location. + +- Use the `Setup passwordless SSH?` switch to specify if you want to create SSH certificates to allow passwordless logins between the BART server and the target host for restore. + +![The Restore Backup dialog - Advanced](../images/BART_backup_restore_advanced.png) + +On the `Advanced` tab, specify your preferences for advanced options for restoring the backup: + +- Use the `Copy WALs to restore path?` switch to specify if you want to copy WAL files to the restore path. + +- Use the `Point in time recovery` switch to specify if you want point in time recovery. + +- Use the `Timeline ID` field to specify the timeline ID to be used for replaying the archived WAL files for point-in-time recovery. + +- Use the `Transaction ID (XID)` field to specify the transaction ID for point-in-time recovery. + +- Use the `Timestamp` field to the timestamp to be used for restore. + +!!! Note + You can specify either `Transaction ID` or `Timestamp` for the point-in-time recovery. + +![The Restore Backup dialog - Notifications](../images/BART_backup_restore_notifications.png) + +Use the fields on the `Notifications` tab to specify the email notification settings for restoring the backup. + +- Use the `Send the notifications` field to specify when you want the email notifications to be sent. + +- Use the `Email group` field to specify the email group that should receive the email notification. diff --git a/product_docs/docs/pem/7.16/pem_bart/index.mdx b/product_docs/docs/pem/7.16/pem_bart/index.mdx new file mode 100644 index 00000000000..8f5998f3d4f --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_bart/index.mdx @@ -0,0 +1,14 @@ +--- +navTitle: BART Management Features +title: "PEM BART Management Guide" +--- + +This guide will acquaint you with the dialogs that are built into the Postgres Enterprise Manager (PEM) web interface that make it easier for you to monitor and manage BART. + +This document uses *Postgres* to mean either the PostgreSQL or EDB Postgres Advanced Server database. + +
+ +managing_bart conclusion + +
diff --git a/product_docs/docs/pem/7.16/pem_ent_feat/01_what's_new.mdx b/product_docs/docs/pem/7.16/pem_ent_feat/01_what's_new.mdx new file mode 100644 index 00000000000..b86a17720a6 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_ent_feat/01_what's_new.mdx @@ -0,0 +1,21 @@ +--- +title: "What's New" +--- + +The following changes have been made to Postgres Enterprise Manager to create version 8.0.1: + +Improved the overall performance, usability, and stability of the product by: + +- Allowing the dash (-) character in the superuser name that is provided during configuration. +- Gracefully closing the operating system resources during batch probe and command execution to avoid errors. +- Improved support for unicode string handling in pemAgent. +- Fixed a regression restoring BART backup when agent is not bound with the BART server. +- In addition to the above-listed items, a few other minor bugs have also been fixed. + +PEM 8.0.1 provides an option to hide or unhide the Dashboard, Statistics, Dependents, and Dependencies tabs. + +Features and Functionalities removed in recent versions of PEM: + +- PEM 8.0 and later is not supported on CentOS/RHEL 6.x. +- EDB ARK UI Management is not supported by PEM 7.16 and later. +- PEM 7.16 and later is not supported on Internet explorer version 11 and lesser. diff --git a/product_docs/docs/pem/7.16/pem_ent_feat/02_pem_query_tool.mdx b/product_docs/docs/pem/7.16/pem_ent_feat/02_pem_query_tool.mdx new file mode 100644 index 00000000000..539c2d8b08e --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_ent_feat/02_pem_query_tool.mdx @@ -0,0 +1,243 @@ +--- +title: "The PEM Query Tool" +--- + +PEM contains a feature-rich Interactive Development Environment (IDE) that allows you to issue ad-hoc SQL queries against Postgres servers. + +You can access the Query Tool via the `Query Tool` menu option on the `Tools` menu, or through the context menu of select nodes of the Browser tree control. The Query Tool allows you to: + +- Issue ad-hoc SQL queries. +- Execute arbitrary SQL commands. +- Edit the result set of a SELECT query if it is [updatable](../pem_online_help/08_toc_pem_developer_tools/02_query_tool/#updatable-result-set). +- Displays current connection and transaction status as configured by the user. +- Save the data displayed in the output panel to a CSV file. +- Review the execution plan of a SQL statement in either a text, a graphical format or a table format (similar to ). +- View analytical information about a SQL statement. + +![Query Tool tab](../images/query_tool.png) + +You can open multiple copies of the Query tool in individual tabs simultaneously. To close a copy of the Query tool, click the *X* in the upper-right hand corner of the tab bar. + +The Query Tool features two panels: + +- The upper panel displays the `SQL Editor`. You can use the panel to enter, edit, or execute a query. It also shows the `History` tab which can be used to view the queries that have been executed in the session, and a `Scratch Pad` which can be used to hold text snippets during editing. If the Scratch Pad is closed, it can be re-opened (or additional ones opened) by right-clicking in the SQL Editor and other panels and adding a new panel. +- The lower panel displays the `Data Output` panel. The tabbed panel displays the result set returned by a query, information about a query's execution plan, server messages related to the query's execution and any asynchronous notifications received from the server. + +**The Query Tool Toolbar** + +The `Query Tool` toolbar uses context-sensitive icons that provide shortcuts to frequently performed tasks. If an icon is highlighted, the option is enabled; if the icon is grayed-out, the task is disabled. + +![Query Tool Toolbar](../images/query_toolbar.png) + +Hover over an icon to display a tool-tip that describes the icon's functionality: + +| **Icon** | **Behavior** | **Shortcut** | +| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | +| `Open File` | Click the `Open File` icon to display a previously saved query in the SQL Editor. | Accesskey + O | +| `Save` | Click the `Save` icon to perform a quick-save of a previously saved query, or to access the Save menu:
- Select `Save` to save the selected content of the SQL Editor panel in a file.
- Select Save As to open a new browser dialog and specify a new location to which to save the selected content of the SQL Editor panel. | Accesskey + S | +| `Save Data Changes` | Click the `Save Data Changes` icon to save the data changes (insert, update, or delete) in the Data Output Panel to the server. | F6 | +| `Find` | Use the `Find` menu to search, replace, or navigate the code displayed in the SQL Editor:
- Select `Find` to provide a search target, and search the SQL Editor contents.
- Select `Find next` to locate the next occurrence of the search target.
- Select `Find previous` to move to the last occurrence of the search target.
- Select `Pesistent find` to identify all occurrences of the search target within the editor.
- Select `Replace` to locate and replace (with prompting) individual occurrences of the target.
- Select `Replace all` to locate and replace all occurrences of the target within the editor.
- Select `Jump` to navigate to the next occurrence of the search target. | Cmd+F
Cmd+G
Cmd+Shift+G
Cmd+Shift+F
Alt+G | +| `Copy` | Click the `Copy` icon to copy the content that is currently highlighted in the Data Output panel. when in View/Edit data mode. | Accesskey + C | +| `Paste` | Click the `Paste` icon to paste a previously row into a new row when in View/Edit data mode. | Accesskey + P | +| `Delete` | Click the `Delete` icon to mark the selected rows for deletion. These marked rows get deleted when you click the `Save Data Changes` icon. | Accesskey + D | +| `Edit` | Use options on the `Edit` menu to access text editing tools; the options operate on the text displayed in the SQL Editor panel when in Query Tool mode:
- Select `Indent Selection` to indent the currently selected text.
- Select `Unindent Selection` to remove indentation from the currently selected text.
- Select `Inline Comment Selection` to enclose any lines that contain the selection in SQL style comment notation.
- Select `Inline Uncomment Selection` to remove SQL style comment notation from the selected line.
- Select `Block Comment` to enclose all lines that contain the selection in C style comment notation. This option acts as a toggle. | Tab
Shift+Tab
Cmd+/
Cmd+.
Shift+Cmd+/ | +| `Filter` | Click the `Filter` icon to set filtering and sorting criteria for the data when in View/Edit data mode. Click the down arrow to access other filtering and sorting options:
-Click `Sort/Filter` to open the sorting and filtering dialogue.
- Click `Filter by Selection` to show only the rows containing the values in the selected cells.
- Click `Exclude by Selection` to show only the rows that do not contain the values in the selected cells.
- Click `Remove Sort/Filter` to remove any previously selected sort or filtering options. | Accesskey + F | +| `Limit Selector` | Select a value in the `Limit Selector` to limit the size of the dataset to a number of rows. | Accesskey + R | +| `Stop` | Click the `Stop` icon to cancel the execution of the currently running query. | Accesskey + Q | +| `Execute/Refresh` | Click the `Execute/Refresh` icon to either execute or refresh the query highlighted in the SQL editor panel. Click the down arrow to access other execution options:
- Add a check next to `Auto-Rollback` to instruct the server to automatically roll back a transaction if an error occurs during the transaction.
- Add a check next to `Auto-Commit` to instruct the server to automatically commit each transaction. Any changes made by the transaction will be visible to others, and durable in the event of a crash. | F5 | +| `Explain` | Click the `Explain` icon to view an explanation plan for the current query. The result of EXPLAIN is displayed graphically on the `Explain` tab of the output panel, and in text form on the `Data Output` tab. | F7 | +| `Explain analyze` | Click the `Explain analyze` icon to invoke an EXPLAIN ANALYZE command on the current query.Navigate through the Explain Options menu to select options for the EXPLAIN command:
- Select `Verbose` to display additional information regarding the query plan.
- Select `Costs` to include information on the estimated startup and total cost of each plan node, as well as the estimated number of rows and the estimated width of each row.
- Select `Buffers` to include information on buffer usage.
- Select `Timing` to include information about the startup time and the amount of time spent in each node of the query.
- Select `Summary` to include the summary information about the query plan. | | +| `Commit` | Click the `Commit` icon to commit the transaction. | Shift+CTRL+M | +| `Rollback` | Click the `Rollback` icon to rollback the transaction. | Shift+CTRL+R | +| `Clear` | Use options on the `Clear` drop-down menu to erase display contents:
- Select `Clear Query Window` to erase the content of the SQL Editor panel.
- Select `Clear History` to erase the content of the `History` tab. | Accesskey + L | +| `Download as CSV` | Click the `Download as CSV` icon to download the result set of the current query to a comma-separated list. You can specify the CSV settings through `Preferences -> SQL Editor -> CSV output` dialogue. | F8 | +| `Macros` | Click the `Macros` icon to manage the macros. You can create, edit or clear the `macros` through Manage Macros option. | | + +## The SQL Editor Panel + +The `SQL editor` panel is a workspace where you can manually provide a query, copy a query from another source, or read a query from a file. The SQL editor features syntax coloring and auto-completion. + +![Query Tool - Query Editor tab](../images/query_sql_editor.png) + +To use auto-complete, begin typing your query; when you would like the Query editor to suggest object names or commands that might be next in your query, press the Control+Space key combination. For example, type `\*SELECT \* FROM\*` (with a trailing space), and then press the `Control+Space` key combination to select from a popup menu of auto-complete options. + +![Query Tool - Query Editor tab](../images/query_autocomplete.png) + +After entering a query, select the `Execute/Refresh` icon from the toolbar. The complete contents of the SQL editor panel will be sent to the database server for execution. To execute only a section of the code that is displayed in the SQL editor, highlight the text that you want the server to execute, and click the `Execute/Refresh` icon. + +![Query Tool - Query Editor tab - Autocomplete feature](../images/query_execute_section.png) + +The message returned by the server when a command executes is displayed on the `Messages` tab. If the command is successful, the `Messages` tab displays execution details. + +![Query Tool - Query Editor - Message tab](../images/query_tool_message.png) + +Options on the `Edit` menu offer functionality that helps with code formatting and commenting: + +- The auto-indent feature will automatically indent text to the same depth as the previous line when you press the Return key. +- Block indent text by selecting two or more lines and pressing the Tab key. +- Implement or remove SQL style or toggle C style comment notation within your code. + +You can also `drag and drop` certain objects from the tree-view to save time spent typing long object names. Text containing the object name will be fully qualified with the schema name. Double quotes will be added if required. For functions and procedures, the function name along with parameter names will be pasted in the Query Tool. + +## The Data Output Panel + +The `Data Output` panel displays data and statistics generated by the most recently executed query. + +![Query Tool - Data output tab](../images/query_output_data.png) + +### Data Output Tab + +The `Data Output` tab displays the result set of the query in a table format. You can: + +- Select and copy from the displayed result set. +- Use the `Execute/Refresh` options to retrieve query execution information and set query execution options. +- Use the `Download as CSV` icon to download the content of the `Data Output` tab as a comma-delimited file. +- Edit the data in the result set of a `SELECT` query if it is updatable. + +A result set is updatable if: + +- All columns are either selected directly from a single table, or they are not actually a table column (for example, the concatenation of two columns). Only columns that are selected directly from the table are editable, other columns are read-only. +- All the primary key columns or OIDs of the table are selected in the result set. + +Any columns that are renamed or selected more than once are also read-only. + +!!! Note + To work with an updatable query result set, you must have `psycopg2` driver version 2.8 or above installed. + +Editable and read-only columns are identified using pencil and lock icons (respectively) in the column headers. + +![Query Tool - Editable and Read-only columns](../images/query_tool_editable_columns.png) + +An updatable result set is similar to the `Data Grid` in `View/Edit Data` mode, and can be modified in the same way. + +If Auto-commit is `off`, data changes are made as part of the ongoing transaction; if no transaction is ongoing a new one is initiated. The data changes are not committed to the database unless the transaction is committed. + +If any errors occur during saving (for example, trying to save a NULL into a column with a NOT NULL constraint) the data changes are rolled back to an automatically created SAVEPOINT to ensure any previously executed queries in the ongoing transaction are not rolled back. + +All rowsets from previous queries or commands that are displayed in the `Data Output` panel will be discarded when you invoke another query; open another query tool browser tab to keep your previous results available. + +### Explain Tab + +To generate the `Explain` or `Explain Analyze` plan of a query, click on `Explain` or `Explain Analyze` button in the toolbar. + +More options related to `Explain` and `Explain Analyze` can be selected from the drop down on the right side of `Explain Analyze` button in the toolbar. + +![Query Tool - Toolbar Explain button](../images/query_toolbar_explain.png) + +Please note that PEM generates the `Explain [Analyze]` plan in JSON format. + +On successful generation of `Explain` plan, it will create three tabs/panels under the `Explain` panel. + +### Graphical Tab + +Hover over an icon on the `Graphical` tab to review information about that item; a popup window will display information about the selected object. For information on JIT statistics, triggers and a summary, hover over the icon on top-right corner; a similar popup window will be displayed when appropriate. + +Please note that `EXPLAIN VERBOSE` cannot be displayed graphically. + +Use the download button on top left corner of the `Explain` canvas to download the plan as an SVG file. Please note that `Download as SVG` feature is not supported on Internet Explorer. + +![Query Tool - Explain tab - Graphical plan tab](../images/query_output_explain_details.png) + +The query plan that accompanies the `Explain analyze` is available on the `Data Output` tab. + +### Analysis Tab + +The `Analysis` tab shows the plan details in table format, it generates a format similar to the format available at `explain.depsez.com`. Each row of the table represents the data for a `Explain Plan Node`. The output may contain the node information, exclusive timing, inclusive timing, actual vs. planned rows, actual rows, planned rows, or loops. When you select a row, the child rows of that selected row are marked with an orange dot. + +If the percentage of the exclusive/inclusive timings of the total query time is: + +Greater than 90 --> Red + +Greater than 50 --> Orange (between red and yellow) + +Greater than 10 --> Yellow + +If the planner has misestimated the number of rows (actual vs planned) by: + +10 times --> Yellow color + +100 times --> Orange (between Red and Yellow) color + +1000 times --> Red color + +![Query Tool - Explain tab - Analysis tab](../images/query_explain_analyze_table.png) + +### Statistics Tab + +The `Statistics` tab displays information in two tables: + +- `Statistics per Node Type` tells you how many times each node type was referenced. +- `Statistics per Table` tells you how many times each table was referenced by the query. + +![Query Tool - Explain plan tab - Statistics tab](../images/query_explain_analyze_statistics.png) + +### Messages Tab + +Use the `Messages` tab to view information about the most recently executed query: + +![Query Tool - Output error](../images/query_output_error.png) + +If the server returns an error, the error message will be displayed on the `Messages` tab, and the syntax that caused the error will be underlined in the SQL editor. If a query succeeds, the `Messages` tab displays how long the query took to complete and how many rows were retrieved: + +![Query Tool - Messages tab](../images/query_output_messages.png) + +### Notifications Tab + +Use the `Notifications` tab to view details of the asynchronous notifications that a client process may have sent: + +![Query Tool - Output Notifications tab](../images/query_output_notifications.png) + +You can see details such as recorded time of the asynchronous notification event, name of the event or channel, process ID of the client process that has sent the notification, and the payload string that might have been sent along with the notification. + +## Query History Panel + +Use the `Query History` tab to review activity for the current session: + +![Query Tool - Query History tab](../images/query_output_history.png) + +The `Query History` tab displays information about recent commands: + +- The date and time that a query was invoked. +- The text of the query. +- The number of rows returned by the query. +- The amount of time it took the server to process the query and return a result set. +- Messages returned by the server (not noted on the `Messages` tab). +- The source of the query (indicated by icons corresponding to the toolbar). + +You can show or hide the queries generated internally by pgAdmin (during `View/Edit Data` or `Save Data` operations). + +To erase the content of the `Query History` tab, select `Clear history` from the `Clear` drop-down menu. + +Query history is maintained across sessions for each database on a per-user basis when running in `Query Tool` mode. In `View/Edit Data` mode, history is not retained. By default, the last 20 queries are stored for each database. This can be adjusted in `config_local.py` by overriding the `MAX_QUERY_HIST_STORED` value. + +## Connection Status + +Use the `Connection status` feature to view the current connection and transaction status by clicking on the status icon in query tool: + +![Query Tool - Connection Status button](../images/query_tool_connection_status.png) + +## Macros + +Query Tool Macros enable you to execute pre-defined SQL queries with a single key press. Pre-defined queries can contain the placeholder $SELECTION$. Upon macro execution, the placeholder will be replaced with the currently selected text in the Query Editor pane of the Query Tool. + +![Query Tool - Connection Status button](../images/query_tool_manage_macros.png) + +To create a macro, select the *Manage Macros* option from the *Macros* menu on the *Query Tool*. Select the key you wish to use, enter the name of the macro, and the query, optionally including the selection placeholder, and then click the *Save* button to store the macro. + +![Query Tool - Connection Status button](../images/query_tool_manage_macros_dialog.png) + +To clear a macro, select the macro on the *Manage Macros* dialogue, and then click the *Clear* button. + +![Query Tool - Connection Status button](../images/query_tool_macros_clear_row.png) + +The server will prompt you for confirmation to clear the macro. + +![Query Tool - Connection Status button](../images/query_tool_macros_clear_confirmation.png) + +To clear all macros, click on the *Clear* button on left side of the key. The server will prompt you for confirmation to clear all the rows. + +![Query Tool - Connection Status button](../images/query_tool_macros_clear_all.png) + +To execute a macro, simply select the appropriate shortcut keys, or select it from the *Macros* menu. + +![Query Tool - Connection Status button](../images/query_tool_macros_execution.png) diff --git a/product_docs/docs/pem/7.16/pem_ent_feat/03_pem_schema_diff_tool.mdx b/product_docs/docs/pem/7.16/pem_ent_feat/03_pem_schema_diff_tool.mdx new file mode 100644 index 00000000000..37e21c0db46 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_ent_feat/03_pem_schema_diff_tool.mdx @@ -0,0 +1,78 @@ +--- +title: "The PEM Schema Diff Tool" +--- + +**Schema Diff** is a feature that allows you to compare schema objects between two database schemas. Use the `Tools` menu to access Schema Diff. + +The Schema Diff feature allows you to: + +- Compare and synchronize the database schemas (from source to target). +- Visualize the differences between database schemas. +- List the differences in SQL statement for target schema objects. +- Generate synchronization scripts. + +!!! Note + The source and target databases must be of the same major version. + +Click on `Schema Diff` under the `Tools` menu to open a selection panel. Choose the source and target servers, databases, and schemas that will be compared. After selecting the objects, click on the `Compare` button. + +You can open multiple copies of `Schema Diff` in individual tabs simultaneously. To close a tab, click the `X` in the upper-right hand corner of the tab bar. + +![Schema Diff dialog](../images/schema_diff_dialog.png) + +Use the `Preferences` dialog to specify if `Schema Diff` should open in a new browser tab. Set `Open in new browser tab` option to `true`. + +The `Schema Diff` panel is divided into two panels; an `Object Comparison panel` and a `DDL Comparison panel`. + +## The Schema Diff Object Comparison Panel + +In the object comparison panel, you can select the source and target servers of the same major version, databases, and schemas to be compared. You can select any server listed under the browser tree whether it is connected or disconnected. If you select a server that is not connected then it will prompt you for the password before using the server. + +Next, select the databases that will be compared. The databases can be the same or different (and within the same server or from different servers). + +Lastly, select the source and target schemas which will be compared. + +![Schema Diff dialog - Compare button](../images/schema_diff_compare_button.png) + +After you select servers, databases, and schemas, click on the `Compare` button to obtain the `Comparison Result`. + +![Schema Diff dialog - Comparison Results](../images/schema_diff_comparison_results.png) + +Use the drop-down lists of Functions, Materialized Views, Tables, Trigger Functions, Procedures, and Views to view the DDL statements of all the schema objects. + +In the upper-right hand corner of the object comparison panel is a `Filter` option that you can use to filter the schema objects based on the following comparison criteria: + +- `Identical` – If the object is found in both schemas with the same SQL statement, then the comparison result is identical. +- `Different` – If the object is found in both schemas but have different SQL statements, then the comparison result is different. +- `Source Only` – If the object is found in source schema only and not in target schema, then the comparison result is source only. +- `Target Only` – If the object is found in target schema only and not in source schema, then the comparison result is target only. + +![Schema Diff dialog - Filter option](../images/schema_diff_filter_option.png) + +Click on any of the schema objects in the object comparison panel to display the DDL statements for that object in the `DDL Comparison` panel. + +## Schema Diff DDL Comparison Panel + +The `DDL Comparison` panel displays three columns: + +- The first column displays the DDL statement of the object from the source schema. +- The second column displays the DDL statement of the object from the target schema. +- The third column displays the difference in the SQL statement of the target schema object. + +![Schema Diff dialog - DDL Comparison panel](../images/schema_diff_DDL_comparison.png) + +You can review the DDL statements of all the schema objects to check for the differences in the SQL statements. + +You can also use the Schema Diff tool to generate a SQL script of the differences found in the target schema object based on the SQL statement of the source schema object. To generate the script, select the checkboxes of the schema objects in the object comparison panel and then click on the `Generate Script` button in the upper-right hand corner of the object comparison panel. + +![Schema Diff dialog - Generate Script button](../images/schema_diff_generate_script.png) + +Select the schema objects and click on the `Generate Script` button to open the `Query Tool` in a new tab, with the difference in the SQL statement displayed in the `Query Editor`. + +If you have clicked on the schema object to check the difference generated in the `DDL Comparison` Panel, and you have not selected the checkbox of the schema object, PEM will open the `Query Tool` in a new tab, with the differences in the SQL statements displayed in the `Query Editor`. + +![Schema Diff dialog - Generate Script - Query Editor](../images/schema_diff_generate_script_query_editor.png) + +You can also use the `Copy` button to copy the difference generated in the `DDL Comparison` panel. + +Apply the SQL Statement in the target schema to synchronize the schemas. diff --git a/product_docs/docs/pem/7.16/pem_ent_feat/04_performance_monitoring_and_management.mdx b/product_docs/docs/pem/7.16/pem_ent_feat/04_performance_monitoring_and_management.mdx new file mode 100644 index 00000000000..4a17f918b82 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_ent_feat/04_performance_monitoring_and_management.mdx @@ -0,0 +1,1196 @@ +--- +title: "Performance Monitoring and Management" +--- + +PEM contains built-in functionality that implements enterprise-wide performance monitoring of all managed servers. While you can customize many aspects of the various performance monitoring aspects of PEM, you can also elect to accept the recommended defaults that come out-of-the-box with the product. + +![The Global Overview dashboard](../images/global_overview.png) + +The top-level dashboard is the `Global Overview`. The Global Overview presents a status summary of all the servers and agents that are being monitored by the PEM server, a list of the monitored servers, and the state of any currently triggered alerts. + +## Using Dashboards to View Performance Information + +PEM displays performance statistics through a number of dashboards; each dashboard contains a series of summary views that contain charts, graphs and tables that display the statistics related to the selected object. + +The PEM client displays the `Global Overview` dashboard when it connects to the PEM server. Additional dashboards provide statistical information about monitored objects. These include the: + +**Alerts Dashboard** + +The Alerts dashboard displays the currently triggered alerts. If opened from the Global Overview, the dashboard displays the current alerts for all monitored nodes on the system; if opened from a node within a server, the report will reflect alerts related to that node, and all monitored objects that reside below that object in the tree control. + +**Audit Log Analysis dashboard** + +For Advanced Server users, the Audit Log Analysis dashboard allows you to browse the audit logs that have been collected from instances that have audit logging and collection enabled. + +**Database Analysis dashboard** + +The Database Analysis dashboard displays performance statistics for the selected database. + +**I/O Analysis dashboard** + +The I/O Analysis dashboard displays I/O activity across various areas such as object DML activity, log operations and more. + +**Memory Analysis dashboard** + +The Memory Analysis dashboard supplies statistics concerning various memory-related metrics for the Postgres server. + +**Object Activity Analysis dashboard** + +The Object Activity Analysis dashboard provides performance details on tables/indexes of a selected database. + +**Operating System Analysis dashboard** + +The Operating System Analysis dashboard supplies information regarding the performance of the underlying machine’s operating system. + +**Probe Log Analysis Dashboard** + +The Probe Log Analysis dashboard displays any error messages returned by a PEM agent. + +**Server Analysis dashboard** + +The Server Analysis dashboard provides general performance information about the overall operations of a selected Postgres server. + +**Server Log Analysis dashboard** + +The Server Log Analysis dashboard allows you to filter and review the contents of server logs that are stored on the PEM server. + +**Session Activity Analysis dashboard** + +The Session Activity Analysis dashboard provides information about the session workload and lock activity for the selected server + +**Session Waits Analysis dashboard** + +The Session Waits Analysis dashboard provides an overview of the current DRITA wait events for an Advanced Server session. + +**Storage Analysis dashboard** + +The Storage Analysis dashboard displays space-related metrics for tablespaces and objects. + +**System Waits Analysis dashboard** + +The System Waits Analysis dashboard displays a graphical analysis of system wait information for an Advanced Server session. + +**Streaming Replication Analysis dashboard** + +The Streaming Replication Analysis dashboard displays statistical information about WAL activity for a monitored server and allows you to monitor the status of Failover Manager clusters. + +There are two ways to open a dashboard; you can: + +- Select an active dashboard name from the `Dashboards` menu (accessed via the Management menu). +- Right click on the name of a monitored object in the tree control and select the name of the dashboard you would like to review from the Dashboards menu. + +Each dashboard is displayed on the `Monitoring` tab in the main panel of the client window. After opening a dashboard, you can navigate to other dashboards within the same tab. + +Each dashboard header includes navigation menus that allow you to navigate to other dashboards; use your browsers forward and back icons to scroll through previously-viewed dashboards. Use the Refresh icon to update the current dashboard. + +Options on the `Dashboard Configuration` dialog allow you to link the time lines of all of the line graphs on the dashboard. To open the `Dashboard Configuration` dialog, click the Settings icon displayed in the dashboard header. + +![The Dashboard Configuration dialog](../images/dashboard_configuration.png) + +Use fields on the `Dashboard Configuration` dialog to control attributes of the charts displayed on the dashboard: + +- Set the Link timelines of all the line charts slider to Enable to indicate that the specified timeline should be applied to line graphs displayed on the dashboard; if set to Disable, your preferences will be preserved for later use, but will not modify the amount of data displayed. +- Use the `Days` selector to specify the number of days of gathered data that should be displayed on line graphs. +- Use the `Hour(s)` selector to specify the number of hours of gathered data that should be displayed on line graphs. +- Check the box next to Remember configuration for this dashboard to indicate that the customized time span should be applied to the current dashboard only; if left unchecked, the time span will be applied globally to line graphs on all dashboards. + +Please note that settings specified on the `Dashboard Configuration` dialog are applied only to the current user's session. + +## Managing Custom Dashboards + +PEM displays performance statistics through a number of system-defined dashboards; each dashboard contains a series of summary views that contain charts, graphs and tables that display statistics related to the selected object. You can use the `Manage Dashboards` tab to create and manage custom dashboards that display the information that is most relevant to your system. + +![The Manage Dashboards tab](../images/manage_dashboard_tab.png) + +To create a custom dashboard, click the `Create New Dashboard` link (located in the Quick Links section of the Manage Dashboards tab). + +To modify an existing dashboard, click the edit icon to the left of a dashboard name. The dashboard editor will open, displaying the definition of the dashboard. When you've finished modifying the dashboard's definition, click the `Save` button to preserve your changes; click `Cancel` to exit without saving your changes. + +To delete a dashboard, click the delete icon to the left of a dashboard name. A popup will ask you to confirm that you wish to delete the dashboard; click `OK` to delete the selected dashboard. + +### Creating a Custom Dashboard + +You can use the PEM dashboard editor to create or modify a user-defined dashboard. The custom dashboard may include pre-defined charts, user-defined charts or a mix of pre-defined and user-defined charts. + +![The Create Dashboard editor](../images/pem_custom_dashboard_configure_dashboard.png) + +Use the fields in the `Configure` section to specify general information about the dashboard: + +- Specify a name for the dashboard in the `Name` field. The name specified will also be the title of the dashboard if the title is displayed. +- Use the `Level` drop-down listbox to specify the level of the PEM hierarchy within the PEM client on which the dashboard will be displayed. A dashboard may be accessed via the Dashboards menu on a Global level, an Agent level, the Server level or the Database level. Each selected level within the list will expose a different set of metrics on which the custom dashboard's charts may be based. +- Provide a description of the dashboard in the Description field. + +Provide information in the fields in the `Ops dashboard options` box if the dashboard will be used as an Ops dashboard: + +- Set the `Ops Dashboard?` field to Yes to instruct the server to create a dashboard that is formatted for display on an Ops monitor. +- Set the `Show Title?` field to Yes to display the dashboard name at the top of the Ops dashboard. +- Use the `Font` drop-down list box to select a custom font style for the title. The selected font style will be displayed in the Preview box. +- Use the `Font size` drop-down list box to select a custom font size for the title. The selected font style will be displayed in the Preview box. + +Use the `Permissions` box to specify the users that will be able to view the new dashboard: + +- Set the `Share with all slider` to Yes to instruct the server to allow all Teams to access the dashboard, or set Share with all to No to enable the Access permissions field. +- Use the `Access permissions` field to specify which roles can view the new dashboard. Click in the field, and select from the list of users to add a role to the list of users with dashboard access. + +When you've completed the `Configure Dashboard` section, click the arrow in the upper-right corner to close the section, and access the `Dashboard Layout Design` section. + +![Modifying a Section Header](../images/pem_custom_dashboard_add_section_name.png) + +Click the edit icon in a section header to specify a section name; then, click the add icon (+) to add a chart to the section. + +![Adding a Chart](../images/pem_custom_dashboard_add_chart.png) + +Use the arrows to the right of each chart category to display the charts available and select a chart. + +![Specifying placement details for a chart](../images/pem_custom_dashboard_chart_details.png) + +Use the chart detail selectors to specify placement details for the chart: + +- Use the `Chart width` selector to indicate the width of the chart; select 50% to display the chart in half of the dashboard, or 100% to use the whole dashboard width. + +- Use the `Chart alignment` selector to indicate the position of the chart within the section: + + Select `Left` to indicate that the chart should be left-justified. + + Select `Center` to indicate that the chart should be centered. + + Select `Right` to indicate that the chart should be right-justified. + +Please note that tables are always displayed centered. + +When creating or editing a custom dashboard, you can use drag and drop to re-arrange the charts within a section or to move a chart to a different section. + +To add another chart to your dashboard, click the add icon (+) in the section header. When you've finished editing the dashboard, click the `Save` button to save your edits and exit. + +To exit without saving your changes, click the `Cancel` button. + +### Creating an Ops Dashboard + +You can use the PEM dashboard editor to create a custom dashboard formatted for display on an Ops monitor. An Ops dashboard displays the specified charts and graphs, while omitting header information and minimizing extra banners, titles, and borders. + +![Ops dashboard options](../images/define_ops_dashboard.png) + +To create an `Ops dashboard`, provide detailed information about the Ops display in the `Ops dashboard options` section of the `Create Dashboard` dialog. + +- Set the `Ops Dashboard?` field to `Yes` to instruct the server to create a dashboard that is formatted for display on an Ops monitor. +- Set the `Show Title?` field to `Yes` to display the dashboard name at the top of the Ops dashboard. +- Use the `Font` drop-down list box to select a custom font style for the title. The selected font style will be displayed in the `Preview` box. +- Use the `Font size` drop-down list box to select a custom font size for the title. The selected font style will be displayed in the `Preview` box. + +After adding charts and tables to the Ops dashboard, click the `Save` button to save your work. You can then access the dashboard by navigating through the Dashboards menu of the hierarchy level specified in the `Level` field on the `New Dashboard` dialog. + +## Using the Manage Charts tab + +You can use the `Manage Charts` tab to access dialogs that allow you to create or modify a custom line chart or table, or import a Capacity Manager template for use in a custom chart. After defining a chart, you can display the chart on a custom dashboard. To open the `Manage Charts` tab, select `Manage Charts...` from the PEM client `Management` menu. + +![The Manage Charts tab](../images/pem_manage_charts.png) + +The `Manage Charts` tab provides a `Quick Links` menu that allows you to access dialogs to: + +- `Create a New Chart` for use on a custom dashboard. +- `Import a Capacity Manager` template to use as a template for creating a custom chart. +- Access online `Help`. + +The `Custom Charts` table displays a list of user-defined charts; when a chart is newly added, the font displays in green. When you add an additional chart or refresh the screen, the name of the chart is displayed in black. + +![The Custom Charts table](../images/pem_manage_charts_custom_chart.png) + +Use the search box in the upper-right hand corner of the `Custom Charts` table to search through your custom charts. Specify a: + +- Chart name +- Type +- Level +- Metrics Category + +Use icons to the left of a charts name in the `Custom Charts` table to manage a chart: + +- Click the edit icon to open the `Chart Configuration` wizard and modify aspects of the chart or table. +- Click the delete icon to delete the selected chart. + +### Creating a Custom Chart + +Click the `Create New Chart` icon in the `Quick Links` section of the `Manage Charts` tab to open the `Create Chart` wizard. The wizard will walk you through the steps required to define a new chart. + +![Specifying general information about the chart](../images/pem_create_new_chart_conf_chart.png) + +Use the fields on the `Configure Chart` dialog to specify general information about the chart: + +- Specify the name of the chart in the `Name` field. +- Use the drop-down listbox in the `Category` field to specify the category in which this chart will be displayed; when adding a custom chart to a custom dashboard, the chart will be displayed for selection in the category specified. +- Use the radio buttons in the `Type` field to specify if the chart will be a `Line chart` or a `Table`. +- Provide a description of the chart in the `Description` field. The description will be displayed to the user viewing the chart (on a custom dashboard) when they click the information icon. + +When you've completed the fields on the `Configure Chart` dialog, click `Next` to continue. + +![Specifying the metrics that will be displayed](../images/pem_create_new_chart_select_metrics.png) + +Use the fields on the `Select Metrics` dialog to select the metrics that will be displayed on the chart. + +- Use the `Metric level` drop-down listbox to specify the level of the PEM hierarchy from which you wish to select metrics. You can specify Agent, Database, or Server. Each level offers access to a unique set of probes and metrics. + +- Use the tree control in the Available metrics box to select the metrics that will be displayed on the chart. + + If you are creating a table, you may only select metrics from one probe; each node of the tree control lists the metrics returned by a single probe. Expand a node of the tree control, and check the boxes to the left of a metric name to include that metric data in the table. + + If you are creating a line chart, expand the nodes of the tree control and double-click each metric that you would like to include in the chart. + +- Use the fields in the Selected metrics panel to specify how the metric data will be displayed in your chart. The selection panel displays the name of the metric in the (non-modifiable) Metric \[Probe] column. You can: + + - Click the garbage can icon to delete a metric from the list of selected metrics. + - Use the drop-down listboxes in the `Selection Criteria` column to specify the order of the data displayed. + - Use the `Limit` field to specify the number of rows in a table or lines in a chart: + + The maximum number of lines allowed in a chart is 32. + + The maximum number of rows allowed in a table is 100. + +- If you are creating a line chart, PEM supports comparisons of cross-hierarchy metrics. + + - Click the `compare icon` to open a selection box that allows you to select one or more probe-specific attributes (i.e. CPUs, interfaces, databases, etc.) to compare in the chart. + - Click the `copy` icon to apply your selections to all of the metrics for the same probe. When the popup opens, click `Yes` to confirm that other selections for the same probe will be overwritten, or `No` to exit the popup without copying the attributes. + +When you've completed the fields on the `Select Metrics` dialog, click `Next` to continue. + +![Specifying chart options](../images/pem_create_new_chart_set_options.png) + +Use the fields on the `Set Options` dialog to specify display options for your chart: + +- Use the `Auto Refresh` field to specify the number of minutes between chart updates - choose a value from 1 to 120. The default auto refresh rate is 2 minutes. + +Use fields under the Line chart options heading to specify display preferences for a line chart: + +- Use the `Points to plot` field to specify the maximum number of points that will be plotted on the chart. +- Use the fields to the right of the Historical span label to specify how much historical data should be displayed on the chart: +- Use the `Day(s)` field to specify the number of days of historical data that should be included on the chart. +- Use the `Hour(s)` field to specify the number of hours of historical data that should be included on the chart. +- Use the `Minute(s)` field to specify the number of minutes of historical data that should be included on the chart. + +Use the fields in the `Data extrapolation` box to specify if PEM should generate extrapolated data based on historical data: + +- Click the `No Extrapolation` label to omit extrapolated data from the chart. +- Click the `Span` label to use the Days and Hours selectors to specify the period of time spanned by the metrics on the chart. +- Click the `Threshold` label to use threshold selectors to specify a maximum or minimum value for the chart. + +When you've completed the fields on the `Set Options` dialog, click `Next` to continue. + +![Specifying access permissions](../images/pem_create_new_chart_set_options.png) + +Use the fields on the `Set Permissions` dialog to specify display options for your chart. + +- Set the `Share with all slider` to `Yes` to indicate that the chart will be available to all authorized users, or `No` to restrict access to the users or groups specified in the Access permissions field. +- Use the `Access permissions` field to select the group or groups that will have access to the chart. + +![The chart definition is displayed on the Manage Charts tab](../images/pem_manage_charts_completed.png) + +When you've finished defining the chart, click `Finish` to save your edits and add your chart to the list on the `Manage Charts` tab. + +### Importing a Capacity Manager Template + +Click the `Import Capacity Manager Template` icon in the Quick Links section of the `Manage Charts` tab to open the `Create Chart` dialog, and use a Capacity Manager template as a starting point for a chart or table. + +![Importing a Capacity Manager template](../images/pem_manage_charts_imported_template.png) + +When the `Create Chart` dialog opens, provide information about the custom chart: + +- Use the drop-down listbox in the `Import capacity template` field to select the name of the template on which the chart will be based. +- Specify the name of the chart in the `Name` field. +- Use the drop-down listbox in the `Category` field to specify the category in which this chart will be displayed. When adding a custom chart to a custom dashboard, the chart will be displayed for selection in the Category specified. +- Use the radio buttons in the `Type` field to specify if the chart will be a `Line chart` or a `Table`. +- Provide a description of the chart in the `Description` field. The description will be displayed to the user viewing the chart (on a custom dashboard) when they click the information icon. + +Click `Next` to continue to the Select Metrics dialog. + +![The template metrics](../images/pem_manage_charts_imported_metrics.png) + +The `Select Metrics` window allows you to review the metrics specified by the selected template. The bottom panel of the chart editor displays the metrics that will be included in the chart. The metrics included in the chart are not modifiable via the chart editor; to modify the metrics, you must use the Capacity Manager utility to update the template. + +When you've reviewed the metrics, click `Next` to continue to the Set Options dialog. + +![Selecting chart options](../images/pem_manage_charts_imported_options.png) + +Use the fields on the `Set Options` window to specify display options for your chart: + +- Use the `Auto Refresh` field to specify the number of minutes between chart updates - choose a value from 1 to 120. The default auto refresh rate is 2 minutes. + +Use the fields in the `Data extrapolation` box to specify the time period covered by the chart. You can either: + +- click the `Historical days and extrapolated days` label and provide: + - the number of days of historical data that should be charted in the `Historical` field. + - the number of projected days that should be charted in the `Extrapolated` field. +- or, click the Historical days and threshold label and provide: + - the number of days of historical data that should be charted in the `Historical` field + - the `threshold` value at which the chart will end. + +When you've completed the Set Options window, click `Next` to continue. + +![Selecting permissions for the chart](../images/pem_manage_charts_imported_permissions.png) + +Use the fields on the `Set Permissions` window to specify display options for your chart: + +- Set the `Share with all slider` to Yes to indicate that the chart will be available to all authorized users, or No to restrict access to the users or groups specified in the Access permissions field. +- Use the `Access permissions` field to select the group or groups that will have access to the chart. + +When you've finished defining the chart, click `Finish` to save your edits and add your chart to the list on the `Manage Charts` tab. + +## Probes + +A `probe` is a scheduled task that retrieves information about the database objects that are being monitored by the PEM agent. PEM uses the collected information to build the graphs displayed on each homepage. The `Manage Probes` tab (accessed via the `Management` menu) allows you to modify the data collection schedule and the length of time that PEM will retain information returned by a specific probe. + +### System Probes + +Unless otherwise noted, Postgres Enterprise Manager enables the probes listed in the table below: + +| Probe Name | Information Monitored by Probe | Level | +| ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | +| Background Writer Statistics | This probe monitors information about the background writer. The information includes:
The number of timed checkpoints
The number of requested checkpoints
The number of buffers written (by checkpoint)
The number of buffers written (by background writer)
The number of background writer cycles
The number of background buffers written
The number of buffers allocated | Server | +| Blocked Session Information | This probe provides information about blocked sessions. | Server | +| CPU Usage | This probe monitors CPU Usage information. | Agent | +| Data and Log File Analysis | This probe monitors information about log files. The information includes:
The name of the log file
The directory in which the log file resides | Server | +| Database Statistics | This probe monitors database statistics. The information includes:
The number of backends
The number of transactions committed
The number of transactions rolled back
The number of blocks read
The number of blocks hit
The number of rows returned
The number of rows fetched
The number of rows inserted
The number of rows updated
The number of rows deleted | Server | +| Disk Busy Info | This probe monitors information about disk activity.
Note: This probe is not supported on Mac OS X, Solaris or HP-UX | Agent | +| Disk Space | This probe monitors information about disk space usage. The information includes:
The amount of disk space used
The amount of disk space available | Agent | +| EDB Audit Configuration | This probe monitors the audit logging configuration of EDB Postgres Advanced Server. | Server | +| Failover Manager Cluster Info | This probe monitors a Failover Manager cluster, returning information about the cluster. This probe is disabled unless a cluster name and path of the Failover Manager binary is provided on the Server Properties dialog. | Server | +| Failover Manager Node Status | This probe monitors a Failover Manager cluster, returning detailed about each node within the cluster. This probe is disabled unless a cluster name and path of the Failover Manager binary is provided on the Server Properties dialog. | Server | +| Function Statistics | This probe monitors a database, retrieving information about functions. The information includes:
Function names
Argument types
Return values | Database | +| Index Size | This probe monitors a database, retrieving information about indexes. The information includes:
The name of the index
The time the data was gathered
The size of the index (in MB's) | Database | +| Index Statistics | This probe monitors index statistics. The information includes:
The number of index scans
The number of rows read
The number of rows fetched
The number of blocks read
The number of blocks hit | Database | +| Installed Packages | This probe monitors the packages that are currently installed. The information gathered includes:
The name of the installed package
The version of the installed package
The date and time that the probe executed | Agent | +| IO Analysis | This probe monitors disk I/O information in. The information includes:
The number of blocks read
The number of blocks written
The date and time that the probe executed
Note: This probe is not supported on Mac OS X | Agent | +| Load Average | This probe monitors CPU load averages. The information includes:
The 1-minute load average
The 5-minute load average
The 15-minute load average
Note: This probe is not supported on Windows | Agent | +| Lock Information | This probe monitors lock information. The information includes:
The database name
The lock type
The lock mode
The process holding the lock | Server | +| Memory Usage | This probe monitors information about system memory usage. | Agent | +| Network Statistics | This probe monitors network statistics. The information includes:
The interface IP address
The number of packets sent
The number of packets received
The number of bytes sent
The number of bytes received
The link speed (in MB/second) | Agent | +| Number of Prepared Transactions | This probe stores the number of prepared transactions. | Server | +| Number of WAL Files | This probe monitors the number of WAL files. | Server | +| Object Catalog: Database | This probe monitors a list of databases and their properties The information includes:
The database name
The database encoding type
If the database allows user connections or system connections | Server | +| Object Catalog: Foreign Key | This probe monitors a list of foreign keys and their properties. The information includes:
The name of the table that contains the foreign key
The name of the table that the foreign key references
The name of the database in which the table resides
The name of the schema in which the table resides | Schema | +| Object Catalog: Function | This probe monitors a list of functions and their properties. The information includes:
The name of the function
The name of the schema in which the function resides
The name of the database in which the function resides | Schema | +| Object Catalog: Index | This probe monitors a list of indexes and their properties. The information includes:
The name of the index
The name of the table that the index is associated with
The name of the database in which the indexed table resides | Schema | +| Object Catalog: Schema | This probe monitors a list of schemas and their associated databases and servers. | Database | +| Object Catalog: Sequence | This probe monitors a list of sequences and their properties. | Schema | +| Object Catalog: Table | This probe monitors a list of table information. The information includes:
The table name
The name of the schema in which the table resides
The name of the database in which the schema resides
A Boolean indicator that indicates if the table has a primary key | Schema | +| Object Catalog: Tablespace | This probe monitors a list of tablespaces. | Server | +| Operating System Information | This probe monitors the operating system details and boot time. | Agent | +| Package Catalog | This probe monitors the packages that are currently available for installation. The information gathered includes:
The package name
The package version | Agent | +| PG HBA Conf | This probe monitors authentication configuration information from the pg_hba.conf file. | Server | +| Server Information | This probe monitors server information. | Server | +| Session Information | This probe monitors session information. The information includes:
The name of the session user
The date and time that the session connected to the server
The status of the session at the time that the information was gathered (idle, waiting, etc)
The client address and port number | Server | +| Settings | This probe monitors the values currently assigned to GUC variables. | Server | +| SQL Protect | This probe monitors a server, retrieving information about SQL injection attacks. | Server | +| Slony Replication | This probe monitors lag data for clusters replicated using Slony. | Database | +| Streaming Replication | This probe monitors a cluster that is using streaming replication, retrieving information about:
The sent Xlog location (in bytes)
The write Xlog location (in bytes)
The flush Xlog location (in bytes)
The replay Xlog location (in bytes)
The Xlog lag (in segments)
The Xlog lag (in pages) | Server | +| Streaming Replication Lag Time | This probe monitors a cluster that is using streaming replication, retrieving lag information about:
Replication lag time (in seconds)
Current status of replication (running/paused) | Server | +| Streaming Replication Database Conflicts | This probe monitors a database that is using streaming replication, retrieving information about any conflicts that arise. This includes information about queries that have been canceled due to:
The # of drop tablespace conflicts
The # of lock timeout conflicts
The # of old snapshot conflicts
The # of pinned buffer conflicts
The # of deadlock conflicts | Server | +| Table Bloat | This probe monitors information about the current table bloat. The information includes:
The name of the table
The name of the schema in which the table resides
The estimated number of pages
The estimated number of wasted pages
The estimated number of bytes per row | Database | +| Table Frozen XID | This probe monitors the frozen XID of each table. | Schema | +| Table Size | This probe monitors table statistics. The information includes:
The number of sequential scans
The number of sequential scan rows
The number of index scans
The number of index scan rows
The number of rows inserted
The number of rows updated
The number of rows deleted
The number of live rows
The number of dead rows
The last VACUUM
The last auto-vacuum
The last ANALYZE
The last auto-analyze
The number of pages estimated by ANALYZE
The number of rows estimated by ANALYZE | Database | +| Table Statistics | This probe monitors a list of tablespaces and their sizes. | Server | +| Tablespace Size | This probe monitors a list of tablespaces and their sizes. | Server | +| User Information | This probe monitors a list of the current users. The stored information includes:
The user name
The user type (superuser vs. non-superuser)
The server to which the user is connected | Server | +| WAL Archive Status | This probe monitors the status of the WAL archive. The stored information includes:
The # of WAL archives done
The # of WAL archives pending
The last archive time
The # of WAL archives failed
The time of the last failure | Server | +| xDB Replication | This probe monitors lag data for clusters replicated using xDB replication. | Database | + +### Customizing Probes + +A probe is a scheduled task that returns a set of performance metrics about a specific monitored object. A probe retrieves statistics from a monitored server, database, operating system or agent. You can use the `Manage Probes` tab to override the default configuration and customize the behavior of each probe. + +To open the `Manage Probes` tab, select `Manage Probes...` from the `Management` menu. The `Manage Probes` tab opens in the PEM client. + +![The Manage Probes tab](../images/pem_manage_probes_tab.png) + +The `Manage Probes` tab provides a set of Quick Links that you can use to create and manage probes: + +- Click the `Manage Custom Probes` icon to open the `Custom Probes` tab and create or modify a custom probe. +- Click the `Copy Probes` icon to open the Copy Probe dialog, and copy the probe configurations from the currently selected object to one or more monitored objects. + +A probe monitors a unique set of metrics for each specific object type (server, database, database object, or agent); select the name of an object in the tree control to review the probes for that object. + +To modify the properties associated with a probe, highlight the name of a probe, and customize the settings that are displayed in the Probes table: + +- Move the `Default` switch in the `Execution Frequency` columns to `N` to enable the Minutes and Seconds selectors, and specify a non-default value for the length of time between executions of the probe. +- Move the `Default` switch in the `Enabled?` column to `No` to change the state of the probe, and indicate if the probe is active or not active. + +!!! Note + If data from a disabled probe is used in a chart, the chart will display an information icon in the upper-left corner that allows you to enable the probe by clicking the provided link. + +- Move the `Default` switch in the `Data Retention` column to `No` to enable the Day(s) field and specify the number of days that information gathered by the probe is stored on the PEM server. + +The `Manage Probes` tab may display information about probes that cannot be modified from the current node. If a probe cannot be modified from the current dialog, the switches are disabled. Generally, a disabled probe can be modified from a node that is higher in the hierarchy of the PEM client tree control; select another object in the tree control to modify which probes are displayed or enabled in the `Manage Probes` tab. + +#### Creating a Custom Probe + +You can use the `PEM Custom Probes` tab to create a new probe or modify an existing user-defined probe. To open the `Custom Probes` tab, select the `Manage Custom Probes...` icon from the `Manage Probes` tab. + +![The Custom Probes dialog](../images/custom_probes.png) + +Use the `Show System Probes?` switch to display or conceal the system probes on the `Custom Probes` tab. + +You can use the `Custom Probes` tab to create a new probe or modify an existing probe. To create a new probe, click the `Add` icon in the upper-right corner of the tab; provide a name for the new probe in the `Probe Name` column. Then, select the `Edit` icon (located to the left of the probe name) to review or add the probe definition. + +![Defining a custom probe – the General tab](../images/custom_probes_general.png) + +Use the fields on the `General` tab to modify the definition of an existing probe or to specify the properties of a new probe: + +- Use the `Probe Name` field to provide a name for a new probe. + +- Use the `Collection method` field to specify the probe type. Use the drop-down listbox to select: + + - SQL - the probe will gather information via a SQL statement. + - WMI - the probe will gather information via a Windows Management Instrumentation extension. + - Batch - the probe will use a command-script or shell-script to gather information. + + Before creating a batch probe on a Linux system, you must modify the `agent.cfg` file, setting the `allow_batch_probes` parameter equal to `true`, and restart the PEM agent. The `agent.cfg` file is located in one of the following directories: + + > - If you have installed PEM using graphical installer: `/opt/edb/pem/agent/etc/agent.cfg` + > - If you have installed PEM using RPM: `/usr/edb/pem/agent/etc/agent.cfg` + + On 64-bit Windows systems, agent settings are stored in the registry. Before creating a batch probe, modify the registry entry for the `AllowBatchProbes` registry entry and restart the PEM agent. PEM registry entries are located in `HKEY_LOCAL_MACHINE\Software\Wow6432Node\EnterpriseDB\PEM\agent`. + + Please note that batch probes are platform-specific. If you specify a collection method of Batch, you must specify a platform type in the Platform field. + + To invoke a script on a Linux system, you must modify the entry for `batch_script_user` parameter of `agent.cfg` file and specify the user that should be used to run the script. You can either specify a non-root user or root for this parameter. If you do not specify a user, or the specified user does not exist, then the script will not be executed. Restart the agent after modifying the file. + + To invoke a script on a Windows system, set the registry entry for `AllowBatchJobSteps` to true and restart the PEM agent. + +- Use the `Target Type` drop-down listbox to select the object type that the probe will monitor. Target type is disabled if Collection method is WMI. + +- Use the `Minutes` and `Seconds` selectors to specify how often the probe will collect data. + +- Use the `Probe Enable?` switch to specify if the probe in enabled by default. Specify Yes to enable the probe by default, or No to specify that the probe is disabled by default. + +!!! Note + If data from a disabled probe is used in a chart, the chart will display an information icon in the upper-left corner that allows you to enable the probe by clicking the provided link. + +- Use the `Data Retention` field to specify the number of days that gathered information will be retained in the probe's history table. +- Use the switch next to `Discard from history` to specify if the server should create a history table for the probe. Select `Yes` to discard probe history, or `No` to retain the probe history in a table. +- Use the `Platform` drop-down listbox to specify the type of platform that the probe will monitor. This field is enabled only when the Collection method is Batch. + +![The Columns tab of the Custom Probes dialog](../images/custom_probes_columns.png) + +Use the `Columns` tab to define the columns in which the probe data will be stored. Navigate to the `Columns` tab, and click the `Add` button (in the upper-right corner) to define a new column. After a providing a column name in the `Name` field, click the `Edit` button (to the left of the new column name) to provide information about the column: + +- Provide a descriptive name for the column in the `Name` field. + +- The `Internal Name` field is not enabled for user-defined probes. + +- Use the `Column Type` drop-down listbox to specify if the column is a Key column (a primary key) or a Non key column. Non-key columns are generally metric items (values that can be graphed). + +- Use the `Data Type` drop-down listbox to specify the type of data that will be stored in the column. + +- Use the `Unit` field to specify the unit of measure that applies to the metric stored in the column. This unit is displayed on the Y-Axis of a custom chart or a Capacity Manager chart. This is an optional field. + +- Use the `Graphable` switch to specify if the defined metric may be graphed, and that the probe should be accessible from the Capacity Manager or Manage Charts dialogs. + +- Use the `Is PIT` switch to specify if the metric should be stored by point-in-time. + + 'Point-in-time' metrics are those metrics that change (increase or decrease) at any given point of time. For example, database size is a point-in-time metric; at any given point-in-time, the size of the database is fluctuating. Metrics that are not point-in-time (also referred to as cumulative metrics) are metrics whose size always increases over time. For example, Blocks Read and Tuples Read are cumulative metrics; the value stays the same or increases. + +- Use the `Calculate PIT` switch to specify that the server should calculate a point-in-time value for the metric data. `Calculate PIT` is disabled if `Is PIT` is `Yes`. + + PEM allows you to store point-in time-values of cumulative metrics as well. PEM subtracts the last collected value of a cumulative metric from the current value, and stores the difference as a point-in-time value. + +![The Code tab of the Custom Probes dialog](../images/custom_probes_code.png) + +Use the `Code` tab to specify the default code that will be executed by the probe: + +- If the probe is a SQL probe, you must specify the `SQL SELECT` statement invoked by the probe on the `Code` tab. The column names returned by the query must match the Internal Name specified on the `Columns` tab. The number of columns returned by the query, as well as the column name, data type, etc. must match the information specified on the `Columns` tab. + +- If the probe is a batch probe, you must specify the shell or .bat script that will be invoked when the probe runs. The output of the script should be as follows: + + The first line must contain the names of the columns provided on the `Columns` tab. Each column name should be separated by a tab (t) character. From the second line onwards, each line should contain the data for each column, separated by a tab character. + + If a specified column is defined as key column, you should ensure that the script does not produce duplicate data for that column across lines of output. The number of columns specified in the `Columns` tab and their names, data type, etc. should match with the output of the script output. + +- If the probe is a WMI probe, you must specify the WMI query as a `SELECT WMI` query. The column name referenced in the `SELECT` statement should be same as the name of the corresponding column specified on the `Column` tab. The column names returned by the query must match the `Internal Name` specified on the `Column` tab. The number of columns returned by the query, as well as the column name, data type, etc. must match the information specified on the Columns tab. + +![The Alternate Code tab of the Custom Probes dialog](../images/custom_probes_alt_code.png) + +Use the `Alternate Code` tab to provide code that will be invoked if the probe fires on a specific version of the server. To provide version-specific code, move the `Applies to any server version?` switch to `No`, and click the `Add` button. Then, use the `Database Version(s)` drop-down listbox to select a version, and click the `Edit` button (to the left of the version name) to provide the code that will execute when the probe fires. + +If you select a database version, and leave the `Probe Code` column blank, PEM will invoke the code specified on the `Code` tab when the probe executes on a server that matches that version. + +When you've finished defining the probe, click the `Save` icon (in the corner of the `Custom Probes` tab) to save the definition, and make the probe data available for use on custom charts and graphs. + +#### Deleting a Probe + +Use the `Delete` icon (located to the left of a probe name) to delete a user-defined probe. When you delete a probe, the probe is marked for deletion and will be deleted later (when custom probes are purged). During the deletion, the probe definition is deleted and any corresponding tables are dropped from the `pemdata` and `pemhistory` schemas. + +System probes are the built-in probes provided by PEM, and are part of the PEM schema. If you attempt to delete a system probe, the PEM client will display a notice, informing you that the probe cannot be deleted. + +![Attempting to delete a system probe](../images/delete_system_probe.png) + +#### Copying a Probe + +You can use the `Copy Probe Configuration...` dialog to copy probe definitions from one monitored object to one or more monitored objects of the same type. To open the `Copy Probe Configuration...` dialog, highlight the object from which you are copying probes in the PEM client tree control, and select `Manage Probes` from the `Management` menu. When the `Manage Probes` tab opens, click on `Copy Probe` to open the `Copy Probe Configuration` dialog: + +![The Copy Probe Configuration tree control](../images/copy_probe_config.png) + +The dialog will copy the probe definitions from the object through which the Copy Probe Configuration dialog was opened, to the location(s) selected on the tree control. + +Note that if you specify a parent node in the `Copy Probe Configuration` tree control, PEM will copy the probe configurations to each object (of the same type) that resides under that node in the tree control. For example, to copy the probe definitions from one schema to all schemas that reside within a database, select only the parent database of the target schemas. Please note that a red warning symbol is displayed to the left of the name of a listed target object if that object is the source of the probe that is being copied. + +When you have selected the target object or objects, click the `Configure Probes` button to copy the probe definitions to the location selected on the dialog. + +## Alerting + +PEM continually monitors registered servers and compares performance metrics against pre-defined and user-specified thresholds that constitute good or acceptable performance for each statistic. Any deviation from an acceptable threshold value triggers an alert. An alert is a system-defined or user-defined set of conditions that PEM compares to the system statistics. Alerts call your attention to conditions on registered servers that require your attention. + +### Viewing the Alerts via Global Dashboard + +When your system statistics deviate from the boundaries specified for that statistic, the alert triggers, displaying a high (red), low (yellow), or medium (orange) severity warning in the left-most column of the `Alert Status` table on the `Global Overview` dashboard. + +![The Alert Status table](../images/alerts_status_table.png) + +The PEM server includes a number of pre-defined alerts that are actively monitoring your servers. If the alert definition makes details available about the cause of the alert, you can click the down arrow to the right of the severity warning to access a dialog with detailed information about the condition that triggered the alert. + +![Alert details](../images/alert_details.png) + +PEM also provides an interface that allows you to create customized alerts. Each alert uses metrics defined on an alert template. An alert template defines how the server will evaluate the statistics for a resource or metric. The PEM server includes a number of pre-defined alert templates, or you can create custom alert templates. + +### Viewing the Alerts via Alerts Dashboard + +Use the `Dashboards` menu (on the `Monitoring` tab) to access the `Alerts` dashboard. The `Alerts` dashboard displays a summary of the active alerts and the status of each alert: + +![The Alerts Dashboard](../images/alerts_dashboard.png) + +The `Alerts Dashboard` header displays the date and time that the dashboard was last updated, and the number of current alerts. + +The `Alerts Overview` section displays a graphic representation of the active alerts, as well as a count of the current high, low and medium alerts. The vertical bar on the left of the graph provides the count of the alerts displayed in each column. Hover over a bar to display the alert count for the selected alert severity in the upper-right hand corner of the graph. + +The `Alert Details` table provides a list of the alerts that are currently triggered. The entries are prioritized from high-severity to lower-severity; each entry includes information that will allow you to identify the alert and recognize the condition that triggered the alert. Click the name of an alert to review detailed information about the alert definition. + +The `Alert Errors` table displays configuration-related errors (eg. accidentally disabling a required probe, or improperly configuring an alert parameter). You can use the information provided in the Error Message column to identify and resolve the conflict that is causing the error. + +#### Customizing the Alerts Dashboard + +You can customize tables and charts that appear on the Alerts dashboard. To customize a table or chart, click the Settings icon located in the upper-right corner. + +![Customizing a chart](../images/personalize_chart.png) + +Use fields on the Personalize chart configuration dialog to provide your display preferences: + +- Use the `Auto Refresh` field to specify the number of seconds between updates of the data displayed in the table or chart. +- If applicable, use the `Download as` field to indicate if you would like a chart to be downloaded as a JPEG image or a PNG image. +- If applicable, use the `Colours selectors` to specify the display colors that will be used on a chart. +- If applicable, set the `Show Acknowledged Alerts` switch to Yes indicate that you would like the table to display alerts that you have acknowledged with a checkbox in the Ack'ed column. Set the field to No to indicate that the table should hide any acknowledged alerts. The switch acts as a toggle; acknowledged alerts are not purged from the table content until the time specified in the alert definition passes. + +To save your customizations, click the `Save` icon (a check mark) in the upper-right corner; to delete any previous changes and revert to the default values, click the `Delete` icon. The `Save` and `Delete` drop-down menus allow you to specify if your preferences should be applied to `All Dashboards`, or to a selected server or database. + +### Managing Alerts + +Use the PEM Client's `Manage Alerts` tab to define, copy, or manage alerts. To open the `Manage Alerts` tab, select `Manage Alerts` from the `Management` menu. + +![The Manage Alerts tab](../images/alerting_manage_alerts.png) + +Use the `Quick Links` toolbar to open dialogs and tabs that will assist you when managing alerts: + +- Click `Copy Alerts` to open the `Copy Alert Configuration` dialog and copy an alert definition. +- Click `Alert Templates` to open the `Alert Template` tab, and modify or create an alert template. +- Click `Email Groups` to open the `Email Groups` tab, and modify or create an email group. +- Click `Webhooks` to open the `Webhooks` tab, and create or manage the webhooks endpoints. +- Click `Server Configurations` to open the `Server Configuration` dialog and review or modify server configuration settings. +- Click `Help` to open the PEM online help in a new tab of the PEM web interface. + +Use the table in the `Alerts` section of the `Manage Alerts` tab to create new alerts or manage existing alerts. + +#### Alert Templates + +An alert template is a prototype that defines the properties of an alert. An alert instructs the server to compare the current state of the monitored object to a threshold (specified in the alert template) to determine if a situation exists that requires administrative attention. + +You can use the `Alert Templates` tab to define a custom alert template or view the definitions of existing alert templates. To open the `Alert Templates` tab, select the `Manage Alerts...` menu option from the `Management` menu. When the `Manage Alerts` tab opens, select `Alert Templates` from the `Quick Links` toolbar. + +![The Alert Templates tab](../images/pem_alert_templates_tab.png) + +Use the `Show System Template` drop-down listbox to filter the alert templates that are displayed in the `Alert Templates` table. Use the listbox to select a level of the PEM hierarchy to view all of the templates for the selected level. + +**Defining a New Alert Template** + +To define a new alert template, use the `Show System Template` drop-down listbox to select None, and click the `Add` icon (+) located in the upper-right corner of the alert template table. The alert template editor opens. + +![The General tab](../images/pem_alert_templates_general.png) + +Use fields on the `General` tab to specify general information about the template: + +- Use the `Template name` field to specify a name for the new alert template. + +- Use the `Description` field to provide a description of the alert template. + +- Use the `Target type` drop-down listbox to select the type of object that will be the focus of the alert. + +- Use the `Applies to server` drop-down listbox to specify the server type (EDB Postgres Advanced Server or PostgreSQL) to which the alert will be applied; you can specify a single server type, or ALL. + +- Use the `History retention` field to specify the number of days that the result of the alert execution will be stored on the PEM server. + +- Use the `Threshold unit` field to specify the unit type of the threshold value. + +- Use fields in the `Auto create` box to indicate if PEM should use the template to generate an automatic alert. If enabled, PEM will automatically create an alert when a new server or agent (as specified by the Target type drop-down listbox) is added, and delete that alert when the target object is dropped. + + - Move the `Auto create?` slider to `Yes` to indicate that PEM should automatically create alerts based on the template. If you modify an existing alert template, changing the Auto create? slider from No to Yes, PEM will create alerts on the existing agents and servers. Please note that if you change the slider from Yes to No, the default threshold values in existing alerts will be erased, and cannot be recovered. + - Use the `Operator` drop-down listbox to select the operator that PEM will use when evaluating the current system values. + + Select a greater-than sign (>) to indicate that the alert should be triggered when the system values are greater than the values entered in the Threshold values fields. + + Select a less-than sign (<) to indicate that the alert should be triggered when the system values are less than the values entered in the Threshold values fields. + +- Use the threshold fields to specify the values that PEM will compare to the system values to determine if an alert should be raised. Please note that you must specify values for all three thresholds (Low, Medium, and High): + + Enter a value that will trigger a low-severity alert in the `Low` field. + + Enter a value that will trigger a medium-severity alert in the `Medium` field. + + Enter a value that will trigger a high-severity alert in the `High` field. + +- Use the `Check frequency` field to specify the default number of minutes between alert executions. This value specifies how often the server will invoke the SQL code specified in the definition and compare the result to the threshold value specified in the template. + +![The Probe Dependency tab of the Alert Templates dialog](../images/pem_alert_templates_pdtab.png) + +Use the fields on the `Probe Dependency` tab to specify the names of probes referred to in the SQL query specified on the SQL tab: + +- Use the `Probes` drop-down listbox to select from a list of the available probes; highlight a probe name, and click the `Add` button to add the probe to the list of probes used by the alert template. To remove a probe from the selected probes list, highlight the probe name, and click the `Delete` icon. + +![The Parameters tab of the Alert Templates dialog](../images/pem_alert_templates_paramtab.png) + +- Use fields on the `Parameters` tab to define the parameters that will be used in the SQL code specified on the `SQL` tab. Click the `Add` icon (+) and: + + Use the `Name` field to specify the parameter name. + + Use the `Data type` drop-down listbox to specify the type of parameter. + + Use the `Unit` field to specify the type of unit specified by the parameter. + +- Use the `Code` field on the `SQL` tab to provide the text of the SQL query that the server will invoke when executing the alert. The SQL query will provide the result against which the threshold value is compared; if the alert result deviates from the specified threshold value, an alert will be raised. + +![The SQL tab of the Alert Templates dialog](../images/pem_alert_templates_sqltab.png) + +Within the query, parameters defined on the `Parameters` tab should be referenced sequentially by the variable param\_`x`, where `x` indicates the position of the parameter definition within the parameter list. For example, param_1 refers to the first parameter in the parameter list, param_2 refers to the second parameter in the parameter list, and so on. + +The query can also include the following pre-defined variables: + +| **Variable Description** | **Variable Name** | +| ------------------------ | ------------------ | +| agent identifier | '${agent_id}' | +| server identifier | '${server_id}' | +| database name | '${database_name}' | +| schema name | '${schema_name}' | +| Table | '${object_name}' | +| index | '${object_name}' | +| sequence | '${object_name}' | +| function name | '${object_name}' | + +- Use the `Detailed Information SQL` field to provide a SQL query that will be invoked if the alert is triggered. The result set of the query may be displayed as part of the detailed alert information on the `Alerts` dashboard or `Global Overview` dashboard. + +!!! Note + If the specified query is dependent on one or more probes from different levels within the PEM hierarchy (server, database, schema, etc.), and a probe becomes disabled, any resulting alerts will be displayed as follows: + +- If the alert definition and the probe referenced by the query are from the same level within the PEM hierarchy, the server will display any alerts that reference the alert template on the `Alert Error` table of the `Global Alert` dashboard. +- If the alert definition and the probe referenced by the query are from different levels of the PEM hierarchy, the server will display any triggered alerts that reference the alert template on the `Alert Details` table of the hierarchy on which the alert was defined. + +Click the `Save` icon to save the alert template definition and add the template name to the Alert Templates list. After saving a custom alert template, you can use the Alerting dialog to define an alert based on the template. + +**Modifying or Deleting an Alert Template** + +To view the definition of an existing template (including PEM pre-defined alert templates), use the `Show System Template` drop-down listbox to select the type of object monitored. When you select the object type, the `Alert Templates` table will display the currently defined alert templates that correspond with that object type. + +Highlight a Template Name in the list, and click the Edit icon (at the left end of the row) to review the template definition. + +Use the tabs on the `Alert Templates` dialog to view detailed information about the alert template: + +- General information is displayed on the `General` tab. +- The names of probes that provide data for the template are listed on the `Probe Dependency` tab. +- The names of any parameters referred to in the SQL code are listed on the `Parameters` tab. +- The SQL code that defines the behavior of the alert is displayed on the `SQL` tab. + +To delete an alert template, highlight the template name in the alert templates table, and click the Delete icon. The alert history will persist for the length of time specified in the `History Retention` field in the template definition. + +#### Audit Log Alerting + +PEM provides alert templates that allow you to use the `Alerting` dialog to create an alert that will trigger when an `ERROR` or `WARNING` statement is written to a log file for a specific server or agent. To open the `Alerting` dialog, highlight the name of the server or agent in the PEM client Object browser tree control, and select `Alerting...` from the `Management` menu. + +To create an alert that will notify you of ERROR or WARNING messages in the log file for a specific server, create an alert that uses one of the following alert templates: + +Number of ERRORS in the logfile on server M in last X hours + +Number of WARNINGS in the logfile on server M in last X hours + +Number of ERRORS or WARNINGS in the logfile on server M in last X hours + +To create an alert that will notify you of ERROR or WARNING messages for a specific agent, create an alert that uses one of the following alert templates: + +Number of ERRORS in the logfile on agent M in last X hours + +Number of WARNINGS in the logfile on agent M in last X hours + +Number of ERRORS or WARNINGS in the logfile on agent M in last X hours + +Please note that this functionality is supported only on Advanced Server. + +#### Alerts + +Use the PEM Client's `Manage Alerts` tab to define, copy, or manage alerts. To open the `Manage Alerts` tab, select `Manage Alerts` from the `Management` menu. + +**Defining a New Alert** + +The `Manage Alerts` tab displays a table of alerts that are defined on the object currently selected in the PEM client tree control. You can use the `Alerts` table to modify an existing alert, or to create a new alert. + +![The Manage Alerts tab](../images/alerting_manage_alerts.png) + +To open the alert editor and create a new alert, click the Add icon (+) in the upper-right corner of the table. The editor opens as shown below. + +![The General tab of the alert editor](../images/alerting_define_new_alert.png) + +Use the fields on the `General` tab to provide information about the alert: + +- Enter the name of the alert in the `Name` field. +- Use the drop-down listbox in the `Template` field to select a template for the alert. An alert template is a function that uses one (or more) metrics or parameters to generate a value to which PEM compares user-specified alert boundaries. If the value returned by the template function evaluates to a value that is within the boundary of a user-defined alert (as specified by the Operator and Threshold values fields), PEM raises an alert, adds a notice to the Alerts overview display, and performs any actions specified on the template. +- Use the `Enable?` switch to specify if the alert is enabled (Yes) or disabled (No). +- Use the controls in the `Interval` box to specify how often the alert should confirm if the alert conditions are satisfied. Use the Minutes selector to specify an interval value. Use the Default switch to set or reset the Minutes value to the default (recommended) value for the selected template. +- Use controls in the `History retention` box to specify the number of days that PEM will store data collected by the alert. Use the `Days` selector to specify the number of days that the data will be stored. Use the Default switch to set or reset the `Days` value to the default value (30 days). +- Use controls in the `Threshold values` box to define the triggering criteria for the alert. When the value specified in the Threshold Values fields evaluates to greater-than or less-than the system value (as specified with the Operator), PEM will raise a Low, Medium or High level alert: +- Use the `Operator` drop-down listbox to select the operator that PEM will use when evaluating the current system values: + - Select a greater-than sign (>) to indicate that the alert should be triggered when the system values are greater than the values entered in the Threshold values fields. + - Select a less-than sign (<) to indicate that the alert should be triggered when the system values are less than the values entered in the Threshold values fields. +- Use the `threshold` fields to specify the values that PEM will compare to the system values to determine if an alert should be raised. Please note that you must specify values for all three thresholds (Low, Medium, and High): + - Enter a value that will trigger a low-severity alert in the `Low` field. + - Enter a value that will trigger a medium-severity alert in the `Medium` field. + - Enter a value that will trigger a high-severity alert in the `High` field. + +The `Parameter Options` table contains a list of parameters that are required by the selected template; the table displays both pre-defined parameters, and parameters for which you must specify a value. Please note that you must specify a value for any parameter that displays a prompt in the Value column. + +PEM can send a notification or execute a script if an alert is triggered, or if an alert is cleared. Use the `Notification` tab to specify how PEM will behave if an alert is raised. + +![The alert editor Notification tab](../images/alerting_define_notification.png) + +Use the fields in the `Email notification` box to specify the Email group that will receive an email notification if the alert is triggered at the specified level. Use the [Email Groups](#creating-an-email-group) tab to create an email group that contains the address of the user or users that will be notified when an alert is triggered. To access the `Email Groups` tab, click the `Email Groups` icon located in the `Quick Links` menu of the `Manage Alerts` tab. + +- To instruct PEM to send an email when a specific alert level is reached, set the slider next to an alert level to Yes, and use the drop-down listbox to select the pre-defined user or group that will be notified. + +Please note that you must configure the PEM Server to use an SMTP server to deliver email before PEM can send email notifications. + +![The alert editor Notification webhook tab](../images/alerting_define_notification_webhook.png) + +Use the `Webhook notification` box to specify one or multiple endpoints if the alert is triggered at the specified level. Use the [webhooks tab](#creating-webhook) to create a webhook endpoint that will receive the notifications when an alert is triggered. To access the `Webhooks` tab, click the `Webhooks` icon located in the `Quick Links` menu of the `Manage Alerts` tab. + +- Set the `Enable?` to `Yes` to send the alert notifictions to the webhook endpoint. +- Set the `Override default configuration?` to `Yes` to set the customized alert levels as per the requirement. Once it is set to `Yes` all the alert levels are enabled to configure. +- Use the dropdown to select a pre-defined endpoint that will be sent a notification for `Low alerts?`, `Medium alerts?`, `High alerts?` and `Cleared alerts?`. + +![The alert editor Notification SNMP tab](../images/alerting_define_notification_snmp.png) + +Use the `Trap notification` options to configure trap notifications for this alert: + +- Set the `Send trap` slider to `Yes` to send SNMP trap notifications when the state of this alert changes. +- Set the `SNMP Ver` to `v1`, `v2`, or `v3` to identify the SNMP version. +- Use the `Low alert`, `Med alert` and `High alert` sliders to select the level(s) of alert that will trigger the trap. For example, if you set the slider next to High alert to Yes, PEM will send a notification when an alert with a high severity level is triggered. + +Please note that you must configure the PEM Server to send notifications to an SNMP trap/notification receiver before notifications can be sent. For sending SNMP v3 traps, pemAgent will use 'User Security Model(USM)' which is in charge of authenticating, encrypting, and decrypting SNMP packets. + +Also note while sending SNMP v3 traps, agent will create snmp_boot_counter file. This file will get created in location mentioned by batch_script_dir parameter in agent.cfg, if this parameter is not configured or if directory is not accessible due to authentication restrictions then in operating systems temporary directory, if that is also not possible then in user’s home directory. + +![The alert editor Notification Nagios tab](../images/alerting_define_notification_nagios.png) + +Use the field in the `Nagios notification` box to instruct the PEM server to notify Nagios network-alerting software when the alert is triggered or cleared. For more details see [Using PEM with Nagios](#using-pem-with-nagios) + +- Set the `Submit passive service check result to Nagios` switch to `Yes` to instruct the PEM server to notify Nagios when the alert is triggered or cleared. + +![The alert editor script execution tab](../images/alerting_define_script_execution.png) + +Use the fields in the `Script execution` box to (optionally) define a script that will be executed if an alert is triggered, and to specify details about the script execution. + +- Set the `Execute script` slider to `Yes` to instruct PEM to execute the provided script if an alert is triggered. + +- Set the `Execute on alert cleared` slider to `Yes` to instruct PEM to execute the provided script when the situation that triggered the alert has been resolved. + +- Use the radio buttons next to `Execute script on` to indicate that the script should execute on the PEM Server or the Monitored Server. + +- Provide the script that PEM should execute in the `Code` field. You can provide a batch/shell script, or SQL code. Within the script, you can use placeholders for the following: + + `%AlertName%` - this placeholder will be replaced with the name of the triggered alert. + + `%ObjectName%` - this placeholder will be replaced with the name of the server or agent on which the alert was triggered. + + `%ThresholdValue%` - this placeholder will be replaced with the threshold value reached by the metric when the alert triggered. + + `%CurrentValue%` - this placeholder will be replaced with the current value of the metric that triggered the alert. + + `%CurrentState%` - this placeholder will be replaced with the current state of the alert. + + `%OldState%` - this placeholder will be replaced with the previous state of the alert. + + `%AlertRaisedTime%` - this placeholder will be replaced with the time that the alert was raised, or the most recent time that the alert state was changed. + + To invoke a script on a Linux system, you must modify the entry for the `batch_script_user` parameter of the `agent.cfg` file and specify the user that should be used to run the script. You can either specify a non-root user or root for this parameter. If you do not specify a user, or the specified user does not exist, then the script will not be executed. Restart the agent after modifying the file. + + To invoke a script on a Windows system, set the registry entry for `AllowBatchJobSteps` to true and restart the PEM agent. PEM registry entries are located in HKEY_LOCAL_MACHINE/Software/Wow6432Node/EnterpriseDB/PEM/agent. + +When you have defined the alert attributes, click the edit icon to close the alert definition editor, and then the save icon (in the upper-right corner of the `Alerts` table). To discard your changes, click the refresh icon; a popup will ask you to confirm that you wish to discard the changes. + +!!! Note + Suppose you need to use the alert configuration placeholder values in an external script. You can do it either by passing them as the command-line arguments or exporting them as environment variables. Please note that the external script must have proper execution permissions. + +- You can run the script with any of the placeholders as command-line argument. + + For eg: + + ```bash + #!/bin/bash + + bash /script.sh "%AlertName% %AlertLevel% %AlertDetails%" + ``` + +- You can define the environment variables for any of the placeholders and then use those environment variables in the script. + + For eg: + + ```bash + #!/bin/bash + + export AlertName=%AlertName% + export AlertState=%AlertState% + + bash /script.sh + ``` + +**Modifying an Alert** + +Use the `Alerts` table to manage an existing alert or create a new alert. Highlight an object in the PEM client tree control to view the alerts that monitor that object. + +![The Alerts table](../images/alerting_manage_alerts_table.png) + +You can modify some properties of an alert in the `Alerts` table: + +- The `Alert name` column displays the name of the alert; to change the alert name, simply replace the name in the table, and click the save icon. +- The `Alert template` column displays the name of the alert template that specifies properties used by the alert. You can use the drop-down listbox to change the alert template associated with an alert. +- Use the `Alert enable?` switch to specify if an alert is enabled (Yes) or disabled (No). +- Use the `Interval` column to specify how often PEM should check to see if the alert conditions are satisfied. Set the `Default` switch to `No` and specify an alternate value (in Minutes), or return the Default switch to `Yes` to reset the value to its default setting. By default, PEM will check the status of each alert once every minute. +- Use the `History retention` field to specify the number of days that PEM will store data collected by the alert. Set the `Default` switch to `No` and specify an alternate value (in Days), or return the Default switch to `Yes` to reset the value to its default setting. By default, PEM will recommend storing historical data for 30 days. + +After modifying an alert, click the save icon (located in the upper-right corner of the table) to make your changes persistent. + +Click the edit icon to the left of an alert name to open an editor that provides access to the complete alert definition to modify other alert attributes. + +![The Alert details dialog](../images/alert_details.png) + +Use fields on the `Alert details` dialog to modify the definition of the selected alert. When you've finished modifying the alert definition, click `Save` to preserve your changes, or `Cancel` to exit the dialog without saving any changes. + +**Deleting an Alert** + +To mark an alert for deletion, highlight the alert name in the Alerts table and click the delete icon to the left of the name; the alert will remain in the list, but in red strike-through font. + +![Deleting an alert](../images/alerting_manage_alerts_delete.png) + +The delete icon acts as a toggle; you can undo the deletion by clicking the delete icon a second time; when you click the `Save` icon, the alert definition will be permanently deleted. + +**Copying an Alert** + +To speed up the deployment of alerts in the PEM system, you can copy alert definitions from one object to one or more target objects. + +To copy alerts from an object, highlight the object in the PEM client tree control on the main PEM window, and select the `Copy Alerts...` option from the `Management` menu. When the `Manage Alerts` tab opens, click the `Copy Alerts` icon (located in the `Quick Links` toolbar) to open the `Copy Alert Configuration` dialog. + +![The Copy Alert Configuration dialog](../images/alert_copy.png) + +The `Copy Alert Configuration` dialog copies all alerts from the object highlighted in the PEM client tree control to the object or objects selected on the dialog. Expand the tree control to select a node or nodes to specify the target object(s). The tree control displays a red warning indicator next to the source object. + +To copy alerts to multiple objects at once, select a parent node of the target(s). For example, to copy the alerts from one table to all tables in a schema, you can simply select the checkbox next to the schema. PEM will only copy alerts to targets that are of the same type as the source object. + +Check the `Ignore duplicates` radio button to prevent PEM from updating any existing alerts on the target objects with the same name as those being copied. Use the `Replace duplicates` option to replace existing alerts with alerts of the same name from the source object. + +Click the `Configure Alerts` button to proceed to copy the alerts from the source object to all objects of the same type in, or under those objects selected on the `Copy Alert Configuration` dialog. + +#### Schedule Alert Blackout + +You can use the `Schedule Alert Blackout` option on the `Management` menu to schedule an alert blackout for your Postgres servers and PEM Agents during maintenance. Alerts will not be raised during a defined blackout period. + +To schedule an alert blackout, click on the `Management` menu and select `Schedule Alert Blackout`. + +![PEM Management Menu](../images/pem_management_menu.png) + +When the `Schedule Alert Blackout` dialog opens, use the tabs on the dialog to define the blackout period for servers and agents. Open the `Server` tab and click the Add icon (+) at the top right corner to add new row. + +![Schedule Alert Blackout - Server tab](../images/pem_alert_blackout_server_tab.png) + +Use the fields on the `Server` tab to provide information about an alert blackout period: + +- Use the `Start time` field to provide the date and time to start the alert blackout. +- Use the `Duration` field to provide the interval for which you want to blackout the alerts. +- Use the `Servers` field to provide the server name for which you want to blackout the alerts. You can also select multiple servers to blackout the alerts for those servers simultaneously. + +After providing details, you can save the details by clicking on `Save` button on the right bottom corner of the dialog. Once saved, it cannot be edited. The alerts will not be displayed on the `Alerts` dashboard for the scheduled interval of that particular server. + +You can also schedule a blackout period for PEM Agents via the `Agent` tab on the dialog. Open the `Agent` tab and click the Add icon (+) at the top right corner to add new row. + +![Schedule Alert Blackout - Agent tab](../images/pem_alert_blackout_agent_tab.png) + +Use the fields on the `Agent` tab to provide the information about about an alert blackout period: + +- Use the `Start time` field to provide the date and time to start the alert blackout. +- Use the `Duration` field to provide the interval for which you want to blackout the alerts. +- Use the `Agents` field to provide the Agent name for which you want to blackout the alerts. All server level alerts, for the servers bound to that particular agent will blackout. + +After providing details, you can save the details by clicking on `Save` button on the right bottom corner of the dialog. Once saved, it cannot be edited. The alerts will not be displayed on the `Alert` dashboard for the scheduled interval for that PEM agent. + +You can use `Clone` button from the top right corner of dialog, to clone the scheduling of alert blackout. Select the servers or agents you want to clone and then click on `Clone` button to create the cloned copy of all the selected servers or agents. You can edit newly created schedules as needed, and then click `Save`. + +You can use `Delete` button from the top right corner of dialog to remove a scheduled alert blackout. Select the servers or agents and then click on highlighted `Delete` button in the right top corner to remove the scheduled alerts associated with that server or agent. + +![Schedule Alert Blackout - Select servers](../images/pem_alert_blackout_select_servers.png) + +Select a server for which you wish to delete the scheduled alert backout and then click on the `Delete` button. The server will ask for confirmation before deleting that row. + +![Schedule Alert Blackout - Delete confirmation](../images/pem_alert_blackout_delete_confirm.png) + +You can use the `Reset` button to reset the details on the `Alert Blackout` dialog to the default settings. Please note that all saved blackouts will remain unaffected after resetting the current dialog values. + +## Notifications + +PEM can send a notification or execute a script if an alert is triggered, or if an alert is cleared. The Notifications can be send via following options: + +- SMTP +- Webhooks +- SNMP +- Nagios + +Use the `Notification` tab to specify how PEM will behave if an alert is raised. + +### SMTP + +Please note that you must configure the PEM Server to use an SMTP server to deliver email before PEM can send email notifications. + +#### Creating an Email Group + +Postgres Enterprise Manager monitors your system for conditions that require user attention. You can use an email group to specify the email addresses of users that the server will notify if current values deviate from threshold values specified in an alert definition. An email group has the flexibility to notify multiple users, or target specific users during user-defined time periods. + +Use the `Email Groups` tab to configure groups of SMTP email recipients. To access the `Email Groups` tab, select `Manage Alerts...` from the PEM client's `Management` menu; when the `Manage Alerts` tab opens, select `Email Groups` from the Quick Links toolbar. + +![The Email Groups tab](../images/email_groups_tab.png) + +The `Email Groups` tab displays a list of the currently defined email groups. Highlight a group name and click the Edit icon (at the far left end of the row) to modify an existing group. + +To define a new email group, click the Add icon (+) in the upper-right corner of the `Email Groups` table. The `Email Group` definition dialog opens. + +![Adding an email group](../images/email_group_add.png) + +Use the `Email Group` dialog to define an email group and its members: + +- Provide a name for the email group in the `Group Name` field. + +Each row within the email group definition will associate a unique set of email addresses with a specific time period. When an alert is triggered, the server will evaluate the times specified in each row and send the message to those group members whose definitions are associated with the time that the alert triggered. + +Click the Add icon (+) in the group members table to open the `Options` tab, and add the member addresses that will receive notifications for the time period specified: + +- Enter a comma-delimited list of recipient addresses in the `Reply` to Addresses field. +- Enter a comma-delimited list of addresses that will receive a copy of the email in the `CC Addresses` field. +- Enter a comma-delimited list of addresses that will receive a copy of the email (without the knowledge of other recipients) in the `Bcc Addresses` field. +- Enter the email address that messages to this group should be sent from in the `From Address` field. +- Use the `Subject prefix` field to provide a message that will be added to the start of each subject line when a notification is sent. +- Use the `From Time` and `To Time` time selectors to specify the time range for notifications to the group member(s) that are identified on this row. Provide the From Time and To Time values in the locale of the PEM client host, and the PEM server will translate the time into other time zones as required. + +When you've identified the member or members that will receive an email during a specific time period, click the Add icon to add a row to the table, and specify another time period and the email addresses that will be notified during those hours. When you've finished defining the email group, click the Save icon. + +#### Deleting an Email Group + +To delete an email group, highlight the name of the group in the `Email Group` table and click the Delete icon (located to the left of the group name). + +![Deleting an email group](../images/email_group_delete.png) + +The group name will be displayed in the `Email Group` table in red; click the Save icon to make the change persistent and remove the group from the table. + +After creating the email group, you can use the `Manage Alerts` tab to set up the `Notification` details for an alert that will direct notifications to the group. + +### Webhook + +Please note that you must configure the PEM Server to use webhooks to receive notification of alert events on threshold value violations in your configured applications. + +#### Creating Webhook + +Postgres Enterprise Manager monitors your system for conditions that require user attention. You can use a webhook to create the endpoints that will receive a notification if current values deviate from threshold values specified in an alert definition. PEM sends a notification to multiple webhook endpoints, or to specific target webhook endpoints based on the events triggered. + +Use the `Webhooks` tab to configure endpoint recipients. To access the `Webhooks` tab, select `Manage Alerts...` from the PEM client's `Management` menu; when the `Manage Alerts` tab opens, select `Webhooks` from the `Quick Links` toolbar. + +![Webhooks tab](../images/webhooks_tab.png) + +The `Webhooks` tab displays a list of the currently defined recipient applications as endpoints. Highlight an endpoint and click the edit icon (at the far left end of the row) to modify an existing endpoint. + +To define a new webhook, click the `Add` icon (+) in the upper-right corner of the table. + +![Webhooks - Add New Webhook - General Tab](../images/webhook_add.png) + +Use the `General` tab to define the basic details of the webhook: + +- Provide a name for the webhook in the `Name` field. +- Specify a webhook URL where all the notifications will be delivered in the `URL` field. +- Set the request method type used to make the call in the `Request Method` field i.e. `POST` or `PUT`. +- By default `webhooks` will be enabled; to disable a webhook set `Enable?` to `No`. + +!!! Note + The above `Enable?` setting will work only if `enable_webhook` parameter is set to true in `agent.cfg` file. By default, `enable_webhook` parameter is set to true only for the Agent running on the PEM Server Host. For all other Agents running on other hosts, it needs to be set to true manually. + +#### Defining a Webhook SSL configurations + +You can define the Webhook SSL parameters in the respective agent configuration file or registry in windows. You can find the list of Webhook SSL parameters [PEM Agent Configuration Parameters](/pem/latest/pem_agent/03_managing_pem_agent/) section. If you add or remove any of the agent configuration parameters, you must restart the agent to apply them. + +- On 32 bit Windows systems, PEM registry entries for Webhooks are located in `HKEY_LOCAL_MACHINE\\Software\\EnterpriseDB\\PEM\\agent\\WEBHOOK` +- On 64 bit Windows systems, PEM registry entries for Webhooks are located in `HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\EnterpriseDB\\PEM\\agent\\WEBHOOK` +- On Linux systems, PEM configuration options for Webhooks are stored in the agent.cfg file, located (by default) in `/usr/edb/pem/agent/etc` + +![Example - Webhook SSL Parameters in agent.cfg file](../images/webhook_ssl_config.png) + +![Example - Webhook SSL Parameters in windows registry](../images/webhook_ssl_config_windows.png) + +![Webhooks - Add New Webhook - HTTP Headers Tab](../images/webhook_add_headers.png) + +Use the `HTTP Headers` tab to define the header parameters to pass while calling the webhook endpoints: + +- All the values will be specified as a key and value pair. +- Specify a key parameter in the `Key` field and a value in the `Value` field. +- To add multiple `HTTP Headers`, click the `Add` icon (+) in the upper-right corner of the `HTTP Headers` table. +- To delete the `HTTP Headers`, click on `Delete` icon to the left of the `Key`; the alert will remain in the list, but in strike-through font. Click the `Save` button to reflect the changes. +- To edit the `HTTP Headers`, click on the `Edit` icon to the left of `Key`. + +![Webhooks - Add New Webhook - Payload Tab](../images/webhook_add_payload.png) + +Use the `Payload` tab to define the JSON data to be sent to the endpoint when an alert is triggered: + +- `Type` specifies data to be sent in format type (i.e. JSON). + +- Use `Template` to configure JSON data sent to endpoints. Within the `Template`, you can use placeholders for the following: + + - `%AlertID%` - the id of the triggered alert. + - `%AlertName%` - the name of the triggered alert. + - `%ObjectName%` - the name of the server or agent on which the alert was triggered. + - `%ObjectType%` - the type on which alert was generated. + - `%ThresholdValue%` - the threshold value reached by the metric when the alert triggered. + - `%CurrentValue%` - the current value of the metric that triggered the alert. + - `%CurrentState%` - the current state of the alert. + - `%OldState%` - the previous state of the alert. + - `%AlertRaisedTime%` - the time that the alert was raised, or the most recent time that the alert state was changed. + - `%AgentID%` - the id of the agent by which alert was generated. + - `%AgentName%` - the name of the agent by which alert was generated. + - `%ServerID%` - the id of the server on which alert was generated. + - `%ServerName%` - the name of the server on which alert was generated. + - `%ServerIP%` - the ip or address of the server on which alert was generated. + - `%ServerPort%` - the the port of the server on which alert was generated. + - `%DatabaseName%` - the name of the database on which alert was generated. + - `%SchemaName%` - the name of the schema on which alert was generated. + - `%PackageName%` - the name of the package on which alert was generated. + - `%DatabaseObjectName%` - the name of the database object name like table name, function name etc on which alert was generated. + - `%Parameters%` - the list of custom parameters used to generate the alert. + - `%AlertInfo%` - the detailed database object level information of the alert. + +- Click on the `Test Connection` button, to test notification delivery to the mentioned endpoint. + +![Webhooks - Add New Webhook - Notifications Tab](../images/webhook_add_notification.png) + +Use the `Notifications` tab to specify an alert level for webhook endpoints: + +- Set `All alerts` to `Yes` to enable all alert levels to send notifications. +- To instruct PEM to send an notification when a specific alert level is reached, set the slider next to an alert level to `Yes`. Please note that you must set `All alerts` to `No` to configure an individual alert level. + +#### Deleting a Webhook + +To mark a webhook for deletion, highlight the webhook name in the `Webhooks` table and click the delete icon to the left of the name; the alert will remain in the list, but in strike-through font. + +![Webhooks - Delete an existing webhook](../images/webhook_delete.png) + +The delete icon acts as a toggle; you can undo the deletion by clicking the delete icon a second time; when you save your work (by clicking the save icon), the webhook definition will be permanently deleted. + +### Using PEM with Nagios + +The PEM server can send a passive alert result to Nagios network-alerting software when a user-defined alert is triggered. To instruct the PEM server to notify Nagios of a triggered alert, you must: + +- Enable Nagios notification for each alert that will trigger a notification from the PEM server to Nagios. Please note that PEM alerting must be configured before you create the host.cfg file and services.cfg file. +- Configure Nagios-related behaviors of the PEM server. +- Create the host.cfg and services.cfg configuration files. +- If necessary, modify the Nagios configuration file and restart the Nagios server. +- Install the PEM Agent on the system where Nagios server is installed and register it with the PEM Server. Set `enable_nagios` configuration to `true` in the agent.cfg for that agent, and restart the agent service. + +After configuring the server to enable Nagios alerting, any triggered alerts will send a passive check result to the Nagios service. The syntax of a passive alert is: + +` PROCESS_SERVICE_CHECK_RESULT; ; ; ;` + +Where: + +`timestamp` is the date and time that the alert was triggered. + +`host_name` is the name of the server or agent. + +`service_name` is the name of the alert. + +`service_status` is the numeric service status value: + +0 if the service status is OK +1 if the service status is WARNING +2 if the service status is CRITICAL +3 if the service status is UNKNOWN + +The PEM server uses the following rules to evaluate the service status: + +- If the PEM alert level is CLEARED, the warning message will read OK. +- If the PEM alert level is LOW, the warning message will read WARNING. +- If the `is_nagios_medium_alert_as_critical` flag (specified in the PEM server configuration dialog) is set to FALSE and the alert level MEDIUM, the warning message will read WARNING. +- If the `is_nagios_medium_alert_as_critical` flag (specified in the PEM server configuration dialog) is set to TRUE and the alert level is MEDIUM, the warning message will read CRITICAL. +- If the PEM alert level is `HIGH`, the warning message will read `CRITICAL`. + +#### Enabling Nagios Notification for an Alert + +The PEM server maintains a unique set of notification properties for each enabled alert. Use the `Notification` tab of the `Manage Alerts` tab to specify that (when triggered), a given alert will send an alert notice to Nagios. + +To modify the notification properties of an alert, right-click on the name of the object monitored by the alert, and select `Manage Alerts...` from the `Management` menu. When the `Manage Alerts` tab opens, locate the alert, and then click the edit button to the left of the alert name in the `Alerts` list. When the edit pane opens, select the `Notification` tab. + +![The Notification tab](../images/nagios_alert_notification.png) + +To enable Nagios notification, move the slider next to `Submit passive service check result` to Nagios to `Yes`; before exiting the `Manage Alerts` tab, click the save icon to preserve your changes. + +#### Configuring Nagios-related behavior of the PEM Server + +You can use the `Server Configuration` dialog to provide information about your Nagios configuration to the PEM server. To open `Server Configuration` dialog, select `Server Configuration...` from the PEM client's `Management` menu. + +![Specify Nagios properties in the Server Configuration dialog](../images/nagios_server_configuration.png) + +Four server configuration parameters specify information about your Nagios installation and PEM server behavior related to Nagios: + +- Use the `nagios_cmd_file_name` parameter to specify the location of the Nagios pipeline file that will receive passive check alerts from PEM. The default value of this parameter is `/usr/local/nagios/var/rw/nagios.cmd`. If your `nagios.cmd` file resides in an alternate location, specify the file location in the Value field. + +- Move the slider in the `nagios_enabled` parameter to `Yes` to instruct the PEM server to send passive check alerts to Nagios. + +- Use the `nagios_medium_alert_as_critical` slider to specify the warning severity that the PEM server will pass to Nagios if a medium alert is triggered: + + If the `is_nagios_medium_alert_as_critical` flag is set to FALSE and the alert level is MEDIUM, the warning message will read WARNING. + + If the `is_nagios_medium_alert_as_critical` flag is set to TRUE and the alert level is MEDIUM, the warning message will read CRITICAL. + +- Use the `nagios_spool_retention_time` parameter to specify the number of days of notification history that will be stored on the PEM server. The default value is 7 days. + +After modifying parameter values, click the save icon (in the upper-right corner of the `Server Configuration` dialog) to preserve your changes. + +#### Creating the hosts.cfg and services.cfg File + +The `templates.cfg` file (by default, located in `/usr/local/nagios/etc/objects`) specifies the properties of a generic-host and generic-service. The properties specify the parameters used in the `hosts.cfg` and `services.cfg` files. + +In most cases (when PEM is installed in a default configuration), you will not be required to modify the `templates.cfg` file before creating the `hosts.cfg` and `services.cfg` files. If necessary, you can modify the `templates.cfg` file to specify alternate values for parameters or to create new templates. + +Before modifying the Nagios configuration file, use the following command to create a `hosts.cfg` file that contains information about the PEM hosts that reside on the local system: + +`psql -U postgres -p 5433 -d pem -A -t -c "select pem.create_nagios_host_config('generic-host')" > /usr/local/nagios/etc/objects/hosts.cfg` + +Then, use the following command to create a `services.cfg` file that contains information about the PEM services that reside on the local system: + +`psql -U postgres -p 5433 -d pem -A -t -c "select pem.create_nagios_service_config('generic-service')" > /usr/local/nagios/etc/objects/services.cfg` + +If you wish to use a `custom template.cfg` file entry, specify the entry name in place of generic-host or generic-service in the above commands. + +#### Modifying the Nagios Configuration File + +After creating the `host.cfg` and `services.cfg` files, you must specify their location in the Nagios configuration file (by default, `/usr/local/nagios/etc/nagios.cfg`). Modify the configuration file, adding entries that specify the location of the files: + +`cfg_file=/usr/local/etc/objects/hosts.cfg` + +`cfg_file=/usr/local/etc/objects/services.cfg` + +You can use the following command to confirm that Nagios is properly configured: + +`/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg` + +After confirming that Nagios is configured correctly, restart the Nagios service: + +`/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg` diff --git a/product_docs/docs/pem/7.16/pem_ent_feat/05_capacity_manager.mdx b/product_docs/docs/pem/7.16/pem_ent_feat/05_capacity_manager.mdx new file mode 100644 index 00000000000..1e52b158aab --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_ent_feat/05_capacity_manager.mdx @@ -0,0 +1,88 @@ +--- +title: "Capacity Manager" +--- + +PEM's Capacity Manager analyzes collected statistics (metrics) to generate a graph or table that displays the historical usage statistics of an object, and can project the anticipated usage statistics for an object. You can configure Capacity Manager to collect and analyze metrics for a specific host, server, database, or database object. + +You can tailor the content of the Capacity Manager report by choosing a specific metric (or metrics) to include in the report, the time range over which the metrics were gathered, and a high or low threshold for the metrics analyzed. You can also specify a start and end date for the Capacity Manager report. If the end date of the report specifies a time in the future, Capacity Manager will analyze the historical usage of the selected object to extrapolate the projected object usage in the future. + +To open Capacity Manager, select the `Capacity Manager...` option from the PEM client `Management` menu; the Capacity Manager wizard opens, displaying a tree control on the `Metrics` tab. + +![Capacity Manager dialog](../images/capacity_manager_opens.png) + +Expand the tree control on the `Metrics` tab to review the metrics for the node that you wish to analyze. Check the box to the left of the name of the metric to include the metric in your report. + +![Capacity Manager dialog - Metrics selection list](../images/capacity_manager_metrics.png) + +Capacity Manager will use the aggregation method specified with the Aggregation drop-down listbox (located at the bottom of the Metrics tab). The aggregation method instructs Capacity Manager how to evaluate and plot the metric values. Select from: + +- `Average`: Use the average of the values recorded during the time period. +- `Maximum`: Use the maximum value recorded during the time period. +- `Minimum`: Use the minimum value recorded during the time period. +- `First`: Use the first value recorded during the time period. + +To remove a metric from the Capacity Manager report, uncheck the box to the left of the name of a metric. + +Move the slider next to `Graph/chart metrics individually?` to `Yes` to instruct Capacity Manager to produce a separate report for each metric selected on the Metrics tab. If the option is set to No, all selected metrics will be merged into a single graph or table. + +Click the `Generate` button to display the report onscreen (accepting the default configuration options), or use the Options tab to customize sampling boundaries, report type and report destination. Please note that the times displayed on the Options tab are the time zone in which the PEM client resides. + +![Specify the time period, type, and destination of the report](../images/capacity_manager_options.png) + +Use the fields within the `Time Period` box to define the boundaries of the Capacity Manager report: + +- Use the `Period` drop-down listbox to select the type of time period you wish to use for the report. You can select: + +| Start time and end time | Specify a start date and an end date/time for the report. | +| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Start time and threshold | Specify a start date and time, and a threshold to determine the end time and date for the report. | +| Historical days and extrapolated days | Specify a start date for the report that is a number of days in the past, and an end date that is a number of days in the future. This option is useful for report templates that do not specify fixed dates. | +| Historical days and threshold | Specify a start date that is a number of days in the past, and end it when a threshold value is reached. | + +After specifying the type of time period for the report, select from other options in the Time Period box to define the time period for the report: + +- Use the date and time selectors next to the `Start time` field to specify the starting date and time of the sampling period, or select the number of Historical day(s) of data to include in the report. The date and time specified in the Start time field must not be later than the current date/time. + + By default, Capacity Manager will select a start time that is one week prior to the current date and time. + +- The end boundary for the report can be a time, a number of days in the future, or the point at which a selected metric reaches a user-specified threshold value. Use the date and time selectors next to the `End time` field to specify an end boundary for the report, or select the number of Extrapolated day(s) of data to include in the report. The time specified in the End time field must be later than the time specified in the Start time field. + + Note that if you select an end date and time in the future, Capacity Manager will use historical usage information to extrapolate anticipated future usage. Since the projected usage is based on the sampling of historical data, the accuracy of the future usage trend will improve with a longer sampling period. + + To specify a threshold value, use the drop-down listbox in the Threshold field to select a metric, an operator (Exceeds or Falls below), and enter a target value for the metric. If you choose to define the end of the report using a threshold, the Capacity Manager report will terminate when the value for the selected metric exceeds or falls below the specified value. + +The `cm_max_end_date_in_years` configuration parameter defines a default time value for the end boundary of a Capacity Manager report. If you specify a threshold value as the end boundary of a report, and the anticipated usage of the boundary is not met before the maximum time has passed, the report will terminate at the time specified by the cm_max_date_in_years parameter. By default, cm_max_end_date_in_years is 5; you can use the Server Configuration dialog to modify the value of cm_max_end_date_in_years. + +The fields in the `Report` box specify the report type and destination. Use the `Include on report` radio buttons to specify the type of report produced by Capacity Manager: + +- Select `Graph` to instruct Capacity Manager to display the report in the form of a line graph in the PEM client window. +- Select `Table of data` to instruct Capacity Manager to display a table containing the report data in the PEM client window. +- Select `Graph and table of data` to instruct Capacity Manager to display both a line graph and a data table in the PEM client window. + +Use the `Report destination` radio buttons to instruct Capacity Manager where to display or save the report: + +- Select `New` tab to instruct Capacity Manager to display the report on a new tab in the PEM client. You must select New tab to display the first generation of a Capacity Manager report; for subsequent reports, you may select Previous tab. +- Select `Previous` tab to instruct Capacity Manager to re-use a previously opened tab when displaying the report. +- Select `Download` the report as a file and specify a file name to instruct Capacity Manager to write the report to the specified file. + +When you have specified the report boundaries and selected the type and destination of the Capacity Manager report, click the `Generate` button to create the report. + +![The Capacity Manager report](../images/capacity_manager_report.png) + +Reports saved to file are stored in HTML format. You can review a Capacity Manager report with any web browser that supports Scalable Vector Graphics (SVG). Browsers that do not support SVG will be unable to display a Capacity Manager graph and may include unwanted characters. + +## Capacity Manager Templates + +After defining a report, you can save the definition as a template for future reports. Capacity Manager report templates may be accessed by all PEM users. To save a report definition as a template: + +1. Use the `Metrics and Options` tabs to define your report. +2. Click the `Save` button to open the `Save Template` dialog. + +![Saving a Capacity Manager Template](../images/save_capacity_manager_template.png) + +1. Provide a report name in the `Title` field, select a location to store the template in the tree control. +2. Click `OK`. + +When creating a report, you can use the `Load Template` button to browse and open an existing template. Once opened, the report definition may be modified if required, and optionally saved again, either as a new template, or overwriting the original template. + +Use the `Manage Templates` button open a dialog that allows you to rename or remove unwanted templates. diff --git a/product_docs/docs/pem/7.16/pem_ent_feat/06_audit_manager.mdx b/product_docs/docs/pem/7.16/pem_ent_feat/06_audit_manager.mdx new file mode 100644 index 00000000000..5c2be94a2f2 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_ent_feat/06_audit_manager.mdx @@ -0,0 +1,186 @@ +--- +title: "Audit Manager" +--- + +You can use the PEM Audit Manager to simplify audit log configuration for Advanced Server instances. With the Audit Manager, you can configure logging attributes such as: + +- How often log files are to be collected by PEM +- The type of database activities that are included in the log files +- How often (and when) log files are to be rotated + +Audit logs may include the following activities: + +- All connections made to the database instance +- Failed connection attempts +- Disconnections from the database instance +- All queries (SELECT statements) +- All DML statements (INSERT, UPDATE, DELETE) +- All DDL statements (e.g., CREATE, DROP, ALTER) + +Once the audit logs are stored on the PEM server, you can use the Audit Log dashboard to review the information in an easy-to-read form. The Audit Log dashboard allows you to filter the log file by timestamp range (when an activity occurred), the database on which the activity occurred, the user performing the activity, or the type of command being invoked. + +## Setting the Advanced Server Instance Service ID + +To configure logging for an Advanced Server instance, the server must be a PEM-managed server with a bound agent, and the server registration must include the name of a service script. When registering a new server, include the service name in the Service ID field on the Advanced tab of the New Server dialog. + +Before adding a service name to an existing (registered and connected) server, you must disconnect the server. Right click on the server name, and select `Disconnect server` from the context menu. Then, right click on the server name and select `Properties` from the context menu. Select the `Advanced` tab, and add a service name to the `Service ID` field. + +![The Service ID of the Advanced Server instance](../images/EPAS_instance.png) + +The Service ID field allows the PEM server to stop and start the service. + +- The name of the Advanced Server 11 service script is `edb-as-12`. +- The name of the Advanced Server 11 service script is `edb-as-11`. +- The name of the Advanced Server 10 service script is `edb-as-10`. +- The name of the Advanced Server 9.6 service script is `edb-as-9.6`. +- The name of the Advanced Server 9.5 (or prior) service script is ppas-9.`x`, where `x` specifies the version. +- The name of the PostgreSQL 9.6 service script is `postgresql-11`. +- The name of the PostgreSQL 9.6 service script is `postgresql-10`. +- The name of the PostgreSQL 9.6 service script is `postgresql-9.6`. + +## Setting the EDB Audit Configuration Probe + +Before configuring audit logging of Advanced Server servers, you must ensure that the EDB Audit Configuration probe is enabled. To open the `Manage Probes` tab and check the status of the probe, right click on the name of a registered Advanced Server server in the tree control, and select `Manage Probes...` from the `Management` menu. + +Ensure that the `Enabled` column in the `Probe Configuration` dialog is set to `Yes` for the `EDB Audit Configuration probe`. + +![The EDB Audit Configuration probe](../images/EDB_audit_config_probe.png) + +If EDB Audit Configuration is not enabled, use the `Enabled?` switch on the Manage Probes tab to enable it. + +## Configuring Audit Logging with the Audit Manager + +To open the `Audit manager` wizard, select `Audit Manager...` from the `Management` menu. The `Audit manager - Welcome` dialog opens. + +![The Audit Manager Welcome dialog](../images/audit_manager_intro.png) + +Click `Next` to continue. + +![Select the servers you wish to configure for auditing](../images/audit_manager_servers.png) + +Use the Select servers tree control to specify the servers to which the auditing configuration will be applied. To make a server available in the tree control, you must provide the `Service ID` on the `Advanced tab` of the `Create – Server` dialog when registering a server for monitoring by PEM. Note that only EDB Postgres Advanced Server supports auditing; PostgreSQL servers will not be included in the tree control. + +Click `Next` to continue. + +The `Auditing Parameters Configuration` dialog lets you enable or disable auditing and choose how often log records are collected into PEM. + +![The Auditing Parameters Configuration dialog](../images/audit_manager_config1.png) + +Use the fields on the `Auditing parameters configuration` dialog to specify auditing preferences: + +- Use the `Auditing` switch to Enable or Disable auditing on the specified servers. + +- Use the `Audit destination` drop-down to select a destination for the audit logs; select File or Syslog. Please note this feature is supported on Advanced Server 10 and newer releases only. + +- Use the `Import logs to PEM` switch to instruct PEM to periodically import log records from each server to the PEM Server. Set the switch to Yes to import log files; the default is No. + +- Use the `Collection frequency` drop-down listbox to specify how often PEM will collect log records from monitored servers when log collection is enabled. + +- Use the `Log format` drop-down listbox to select the raw log format that will be written on each server. If log collection is enabled, the PEM server will use CSV format. + +- Use the `File name` field to specify the format used when generating log file names. By default, the format is set to `audit-%Y-%m-%d_%H%M%S` where: + + `audit` is the file name specified in the Audit Directory Name field + `Y` is the year that the log was stored + `m` is the month that the log was stored + `d` is the day that the log was stored + `H` is the hour that the log was stored + `M` is the minute that the log was stored + `S` is the second that the log was stored + +- Check the box next to `Change Log Directory for selected servers?` and use the `Audit Directory Name` field to specify a directory name to which the audit logs will be written. The directory will reside beneath the data directory on the PEM server. + +- Use fields in the `Log directory` box to specify information about the directory in which the log files will be saved: + + Move the `Change log directory for selected servers?` switch to Yes to enable the Directory name field. + + Use the `Directory name` field to specify the name of the directory on each server into which audit logs will be written. The directory specified will be created as a sub-directory of the data directory on the server. + +Click `Next` to continue. + +The `Audit log configuration` dialog is only available if you have enabled auditing on the Auditing parameters configuration dialog. + +![The Audit Log Configuration dialog](../images/audit_manager_config2.png) + +Use the controls on the `Audit log configuration` dialog to specify log configuration details that will be applied to each server: + +- Use the `Connection attempts` switch to specify if connection attempts should be logged: + + `None` to disable connection logging. + + `All` to indicate that all connection attempts will be logged. + + `Failed` to log any connection attempts that fail. + +- Use the `Disconnection attempts` switch to specify if disconnections should be logged. Specify: + + `None` to specify that disconnections should not be logged. + + `All` to enable disconnection logging. + +- Use the `Log statements` field to specify the statement types that will be logged. Click within the field, and select from: + + `Select` - All statements that include the `SELECT` keyword will be logged. + + `Error` - All statements that result in an error will be logged. + + `DML` - All DML (Data Modification Language) statements will be logged. + + `DDL` - All DDL (Data Definition Language) statements (those that add, delete or alter data) will be logged. + + Check the box next to `Select All` to select all statement types. + + Check the box next to `Unselect All` to deselect all statement types. + +- Use the `Audit tag` field to specify a tracking tag for the collected logs. Please note that audit tagging functionality is available only for Advanced Server versions 9.5 and later. If you are defining auditing functionality for multiple servers, and one or more of the servers are version 9.5 or later, this field will be enabled, but if selected, tagging functionality will only apply to those servers that are version 9.5 or later. + +- Use the fields in the `Log rotation` box to specify how the log files are managed on each server: + + Use the `Enable?` switch to specify that logfiles should be rotated. Please note that a new log file should be used periodically to prevent a single file becoming unmanageably large. + + Use the `Day drop-down` listbox to select a day or days on which the log file will be rotated. + + Use the `Size (MB)` field to specify a size in megabytes at which the log file will be rotated. + + Use the `Time (seconds)` field to specify the number of seconds between log file rotations. + +Click `Next` to continue: + +![The Schedule Auditing Changes dialog](../images/audit_manager_finish.png) + +Use the `Schedule Auditing Changes` dialog to determine when auditing configuration changes are to take effect. + +- Select `Configure logging now?` if you want the auditing configuration changes to take place immediately. The affected database servers will be restarted so the auditing changes can take effect. +- Use the `Time?` selector to schedule the auditing configuration changes to take place at some point in the future. Select the desired date and time from the drop-down lists. The affected database servers will be restarted at the specified date/time to put the auditing changes into effect. + +Click `Finish` to complete the auditing configuration process. + +The Audit Manager will schedule a job to apply the configuration to each server. The job will consist of two tasks: one to update the audit logging configuration on the server, and one to restart the server with the new configuration. + +You can use the `Scheduled Tasks` tab to review a list of Scheduled jobs. To open the `Scheduled Tasks` tab, highlight the name of a server or agent and select `Scheduled Tasks...` from the `Management` menu. + +## Viewing the Log with the Audit Log Dashboard + +Use the Audit Log dashboard to view the audit log from Advanced Server database instances. + +To open the `Audit Log` dashboard, right click on a server or agent node, and select `Audit Log Analysis` from the `Dashboards` menu. You can also open the Audit Log dashboard by navigating through the `Dashboards` menu (located on the `Management` menu). + +![The Audit Log dashboard](../images/audit_log_analysis_dashboard.png) + +The Audit Log dashboard displays the audit records in reverse chronological order (newest records at the top, oldest records towards the bottom). + +To view older audit records that do not appear in the window, use the vertical scroll bar controlling the list of audit records (the innermost scroll bar of the two located on the right-hand side of the window). As you move the scroll bar towards the bottom of the window, older audit records are continuously loaded and displayed. + +You can use filtering to limit the number of audit records that are displayed. Click `Show Filters` to expose the filters panel. + +![The Audit Log dashboard filters panel](../images/audit_log_analysis_filter.png) + +Use the fields in the `filters panel` to provide certain selection criteria for the audit records you wish to display. + +- Use the `Start` field to specify a start date for the report. Click the mouse button in the field to open a calendar and select a start date. +- Use the `End` field to specify an end date for the report. Click the mouse button in the field to open a calendar and select an end date. +- Use the `User` field to display only those entries where the activity was initiated by the given Postgres user. +- Use the `Database` field to display only those entries where the activity was issued on the given database. +- Use the `Command type` field to display only those entries where the activity was of the given type. Command types you can specify are idle, authentication, and SELECT. (For viewing SQL statements from user applications, specify the idle command type.) + +Click `Filter` to apply the filtering criteria to the log entries. diff --git a/product_docs/docs/pem/7.16/pem_ent_feat/07_log_manager.mdx b/product_docs/docs/pem/7.16/pem_ent_feat/07_log_manager.mdx new file mode 100644 index 00000000000..1cb26ac98e1 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_ent_feat/07_log_manager.mdx @@ -0,0 +1,243 @@ +--- +title: "Log Manager" +--- + +You can use the PEM Log Manager to simplify server log configuration for Postgres instances. With the Log Manager, you can modify all of your server log parameters with a click: + +- Where log files are written +- How often log files are written +- The type of information written to log files +- The format of log file entries +- Log rotation properties + +To configure logging for a Postgres instance, the server must be registered as a PEM-managed server, and the registration information must include the name of a service script. + +To open the `Log Manager`, select the `Log Manager...` option from the `Management` menu of the PEM client. The wizard opens, welcoming you to the Log Manager. + +![The Log Manager welcome dialog](../images/lm_welcome.png) + +Click `Next` to continue to the `Server selection` dialog. + +![The Log Manager Server selection dialog](../images/lm_server_select.png) + +The `Server selection` dialog displays a list of the server connections monitored by PEM. Check the box next to the name of a server (or servers) to which the Log Manager wizard will apply the specified configuration. Log Manager is disabled for any server displaying a red exclamation mark to the left of its name in the Server selection tree control; there are several reasons that a server may not be enabled: + +- Only a server that specifies a `Service ID` on the `Advanced` tab of the `Properties` dialog can be configured by Log Manager. + + To provide a service ID, right click on the server name in the tree control, and select `Disconnect Server` from the context menu; if prompted, provide a password. Then, open the context menu for the server, and select `Properties`. Navigate to the `Advanced` tab, and provide the name of the service in the `Service ID` field; click `Save` to save your change and exit the dialog. + +- If the PEM agent bound to the server does not have sufficient privileges to restart the server, the server will be disabled. + +- If the PEM agent bound to the server is an older version than the associated PEM server, the server will be disabled. + +Click `Next` to continue. + +![The Log Manager Log configuration dialog](../images/lm_import_rotation.png) + +Use the options on the `Log configuration` dialog to specify how often log files will be inported to PEM and to specify log rotation details: + +Options within the `Import Logs` box specify how often log files will be imported to PEM: + +- Use the switch next to the `Import logs to PEM` label to specify if log files will be imported to PEM and displayed on the Server Log Analysis dashboard. +- Use the `Import Frequency` drop-down list box to specify how often log files are imported to PEM. + +Use the fields in the `Log rotation configuration` box to specify the maximum length (lifespan or size) of a log file: + +- Use the `Rotation Size` field to specify the maximum size in megabytes of an individual log file. The default value is 10 MB; when set to 0, no limit is placed on the maximum size of a log file. +- Use the `Rotation Time` field to specify the number of whole days that should be stored in each log file. The default value is 1 day. + +Use the `Truncation on Rotation` switch to specify server behavior for time-based log file rotation: + +- Select `ON` to specify that the server should overwrite any existing log file that has the same name that a new file would take. +- Select `OFF` to specify that the server should append any new log file entries to an existing log file with the same name that a new log file would take. This is the default behavior. + +Click `Next` to continue. + +![The Where to Log dialog](../images/lm_where_to_log.png) + +Use the fields on the `Where to log` dialog to specify where log files should be written. + +- Select an option from the `Log Destination` box to specify a destination for the server log output: + - Set the `stderr` switch to `Yes` to specify that log files should be written to stderr. + - Set the `csvlog` switch to `Yes` to specify that log files should be written to file in a comma-separated value format. This option is automatically enabled (and no longer editable) if you have selected `Import logs to PEM` on the `Schedule` dialog; if you are not importing server log files to PEM, this option is editable. + - Set the `syslog` switch to `Yes` to specify that log files should be written to the system log files. + - On Windows, set the `eventlog` switch to Yes to specify that log files should be written to the event log. + +- Use the options within the `Log collection` box to specify your collection preferences: + - Set the `Log Collector` switch to `Enable` to instruct the server to re-direct captured log messages (directed to STDERR) into log files. + - Set the `Log Silent Mode` switch to `Enable` to instruct the server to run silently in the background, disassociated from the controlling terminal. + +- Use options in the `Log Directory` box to specify log file location preferences: + - Set the `Change log directory for selected servers?` switch to `Yes` to specify that each set of log files should be maintained in a separate directory. + - Use the `Directory name` field to specify the directory to which log files will be written. The directory will reside beneath the pg_log directory under the installation directory of the monitored server. + +- Use the `Log File Name` field to specify a format for the log file name. If set to `DEFAULT`, the format is `enterprisedb-%Y-%m-%d_%H%M%S`, where: + - `enterprisedb` is the file name prefix + - `Y` is the year that the log was stored + - `m` is the month that the log was store + - `d` is the day that the log was stored + - `H` is the hour that the log was stored + - `M` is the minute that the log was store + - `S` is the second that the log was stored + +- When logging to syslog is enabled: + + - Use the `Syslog Facility` drop-down list box to specify which syslog facility should be used. + - Use the `Syslog Ident` field to specify the program name that will identify Advanced Server entries in system logs. + +Click `Next` to continue. + +![The Log Manager When to Log dialog](../images/lm_when_to_log.png) + +Use the fields on the `When to log` dialog to specify which events will initiate a log file entry. The severity levels (in order of severity, from most severe to least severe) are: + +- `panic` - Errors that cause all database sessions to abort. +- `fatal` - Errors that cause a session to abort. +- `log` - Information messages of interest to administrators. +- `error` - Errors that cause a command to abort. +- `warning` - Error conditions in which a command will complete but may not perform as expected. +- `notice` - Items of interest to users. This is the default. +- `info` - Information implicitly requested by the user. +- `debug5` through `debug1` - Detailed debugging information useful to developers. +- Use the `Client min messages` drop-down list box to specify the lowest severity level of message sent to the client application. +- Use the `Log min messages` drop-down list box to specify the lowest severity level that will be written to the server log. +- By default, when an error message is written to the server log, the text of the SQL statement that initiated the log entry is not included. Use the `Log min error statement` drop-down list box to specify a severity level that will trigger SQL statement logging. If a message is of the specified severity or higher, the SQL statement that produced the message will be written to the server log. +- Use the `Log min duration statement` drop-down list box to specify a statement duration (in milliseconds); any statements that exceed the specified number of milliseconds will be written to the server log. A value of `-1` disables all duration-based logging; a value of `0` logs all statements and their duration. +- Use the `Log temp files` field to specify a file size in kilobytes; when a temporary file reaches the specified size, it will be logged. A value of `-1` (the default) disables this functionality. +- Use the `Log autoVacuum min duration` field to specify a time length in milliseconds; if auto-vacuuming exceeds the length of time specified, the activity will be logged. A value of `-1` (the default) disables this functionality. + +Click `Next` to continue. + +![The Log Manager What to Log dialog](../images/lm_what_to_log.png) + +Use the fields on the `What to log` dialog to specify log entry options that are useful for debugging and auditing. + +The switches in the `Debug options` box instruct the server to include information in the log files related to query execution that may be of interest to a developer: + +- Set the `Parse tree` switch to Yes to instruct the server to include the parse tree in the log file. +- Set the `Rewriter output` switch to Yes to instruct the server to include query rewriter output in the log file. +- Set the `Execution plan` switch to Yes to instruct the server to include the execution plan for each executed query in the log file. + +When the `Indent Debug Options Output in Log` switch is set to `Yes`, the server indents each line that contains a parse tree entry, a query rewriter entry or query execution plan entry. While indentation makes the resulting log file more readable, it does result in a longer log file. + +Use the switches in the `General Options` box to instruct the server to include auditing information in the log file: + +- Set the `Checkpoints` switch to `Yes` to include checkpoints and restartpoints in the server log. +- Set the `Connections` switch to `Yes` to include each attempted connection to the server (as well as successfully authenticated connections) in the server log. +- Set the `Disconnections` switch to `Yes` to include a server log entry for each terminated session that provides the session information and session duration. +- Set the `Duration` switch to `Yes` to include the amount of time required to execute each logged statement in the server log. +- Set the `Hostname` switch to `Yes` to include both the IP address and host name in each server log entry (by default, only the IP address is logged). Please note that this may cause a performance penalty. +- Set the `Lock Waits` switch to `Yes` to instruct the server to write a log entry for any session that waits longer than the time specified in the deadlock_timeout parameter to acquire a lock. This is useful when trying to determine if lock waits are the cause of poor performance. + +Use the `Error verbosity` drop-down list box to specify the detail written to each entry in the server log: + +- Select `default` to include the error message, DETAIL, HINT, QUERY and CONTEXT in each server log entry. +- Select `terse` to log only the error message. +- Select `verbose` to include the error message, the DETAIL, HINT, QUERY and CONTEXT error information, SQLSTATE error code and source code file name, the function name, and the line number that generated the error. + +Use the `Prefix string` field to specify a printf-style string that is written at the beginning of each log file entry. For information about the options supported, please see the log_line_prefix documentation (in the Postgres core documentation), available at: + + + +Use the `Statements` drop-down list box to specify which SQL statements will be included in the server log. The default is none; valid options are: + +- Specify `none` to disable logging of SQL statements. +- Specify `ddl` to instruct the server to log ddl (data definition language) statements, such as CREATE, ALTER, and DROP. +- Specify `mod` to instruct the server to log all ddl statements, as well as all dml (data modification language) statements, such as INSERT, UPDATE, DELETE, TRUNCATE and COPY FROM. +- Specify `all` to instruct the server to log all SQL statements. + +Click `Next` to continue. + +![The Schedule Logging Changes dialog](../images/lm_scheduling.png) + +Use options on the `Schedule logging changes` dialog to specify when logging configuration changes will be applied: + +- Set the `Configure logging now` switch to `Yes` to specify that your configuration preferences will be enabled, and the server will restart when you have completed the Log Manager wizard. +- Set `Configure logging now` to `No` to use the Schedule it for some other time calendar selector to specify a convenient time for logging configuration preferences to be applied, and the server to restart. + +Note that when you apply the configuration changes specified by the Log Manager wizard, the server restart will temporarily interrupting use of the database server for users. + +Click `Finish` to exit the wizard, and either restart the server, or schedule the server restart for the time specified on the scheduling dialog. + +## Reviewing the Server Log Analysis Dashboard + +After invoking the Log Manager wizard, and importing your log files to PEM, you can use the `Server Log Analysis` dashboard to review the log files for a selected server. To open the `Server Log Analysis` dashboard, right-click on the name of a monitored server in the PEM client tree control, and navigate through the `Dashboards` menu, selecting `Server Log Analysis`. + +![The Server Log Analysis dashboard](../images/server_log_analysis_dashboard.png) + +The header information on the `Server Log Analysis` dashboard displays the date and time that the server was started, the date and time that the page was last updated, and the current number of triggered alerts. + +Entries in the `Server Log` table are displayed in chronological order, with the most-recent log entries first. Use the scroll bars to navigate through the log entries, or to view columns that are off of the display. + +Headings at the top of the server log table identify the information stored in each column; hover over a column heading to view a tooltip that contains a description of the content of each column. + +You can use filtering to limit the number of server log records that are displayed. Click `Show Filters` to expose the filters panel and define a filter. + +![Defining a Server Log filter](../images/server_log_analysis_filter.png) + +Use the fields within the `filter definition` box to describe the selection criteria that PEM will use to select a subset of a report for display: + +- Use the `From` field to specify a starting date for the displayed server log. +- Use the `To` field to specify an ending date for the displayed server log. +- Enter a role name in the `Username` field display only transactions performed by that user. +- Enter a database name in the `Database field` to specify that the server should limit the displayed records to only those transactions that were performed against the specified database. +- Use the `Command Type` field to specify a selection criteria for the commands that will be displayed in the filtered report. + +When you've described the criteria by which you wish to filter the server logs, click `Filter` to display the filtered server log in the `Server Log` table. + +## Postgres Log Analysis Expert + +The PEM Log Analysis Expert analyzes the log files of servers that are registered with Postgres Enterprise Manager, and produces a report that provides an analysis of your Postgres cluster's usage based on log file entries. You can use information on the Log Analysis Expert reports to make decisions about optimizing your cluster usage and configuration to improve performance. + +Before using the PEM Log Analysis Expert, you must specify the Service ID on the Advanced tab of the Server Properties dialog, and use the Log Manager wizard to enable log collection by the PEM server. + +To open the `Postgres Log Analysis Expert` wizard, select the `Postgres Log Analysis Expert...` option from the `Management` menu of the PEM client. The wizard's `Welcome` dialog opens; click `Next` to continue: + +![The Log Analysis Expert Welcome dialog](../images/pem_log_analysis_expert_welcome.png) + +The wizard's `Analyzer selection` dialog displays a list of Analyzers from which you can select. Each Analyzer generates a corresponding table, chart, or graph that contains information gleaned from the log files. + +![The Analyzer selection dialog](../images/pem_log_analysis_expert_select_analyzers.png) + +Check the box to the left of an Analyzer to indicate that the Log Analysis Expert should prepare the corresponding table, chart or graph. After making your selections, click `Next` to continue to the Server selection tree control. + +![The Server selection dialog](../images/pem_log_analysis_expert_select_servers.png) + +Use the tree control to specify which servers you would like the Postgres Log Analysis Expert to analyze. If you select multiple servers, the resulting report will contain the corresponding result set for each server in a separate (but continuous) list. Click `Next` to continue to the Report options dialog. + +![The Report options dialog](../images/pem_log_analysis_expert_report_options.png) + +Use the fields in the `Options` section to specify the analysis method and the maximum length of any resulting tables: + +- Use the `Aggregate method` drop-down to select the method used by the Log Analysis Expert to consolidate data for the selected time span. You can select from: + - `SUM` instructs the analyzer to calculate a value that is the sum of the collected values for the specified time span. + - `AVG` instructs the analyzer to calculate a value that is the average of the collected values for the specified time span. + - `MAX` instructs the analyzer to use the maximum value that occurs within a specified time span. + - `MIN` instructs the analyzer to use the minimum value that occurs within a specified time span. +- Use the `Time span` field to specify the number of minutes that the analyzer will incorporate into each calculation for a point on a graph. For example, if the Time span is 5 minutes, and the Aggregate method is AVG, each point on the given graph will contain the average value of the activity that occurred within a five minute time span. +- Use the `Rows limit` field to specify the maximum number of rows to include in a table. + +Use the fields in the `Time Intervals` section to specify the time range that the Log Analysis Expert will analyze: + +- Set `Relative days` to Yes to enable the (+/-)From date field and specify the number of days before or after the date and time selected in the From field. +- Use the `From` field to specify the starting date and time for the analysis. +- Use the `To` field to specify the ending date and time for the analysis. +- Use the `(+/-)` From date selector to specify the number of days before or after the From date that should be included in the analysis. + +When you've specified the report options, click `Next` to continue to the Report destination dialog. + +![The Report destination dialog](../images/pem_log_analysis_expert_report_finish.png) + +You can choose the default option and select `Finish` to view the Log Analysis Expert report in the PEM client's tabbed browser, or click the radio button next to Download the report to save a copy of the report to an HTML file for later use. + +If you have specified that the report should be saved to a file, the report will be downloaded. + +## Reviewing the Postgres Log Analysis Expert Report + +If you've elected to review the report immediately, the Postgres Log Analysis Expert report will be displayed in the PEM Client window. The report header displays the date and time that the report was generated, the time period that the report spans, and the aggregation method specified when defining the report. The name of the server for which information is displayed is noted at the start of each section of the report. + +The report displays the tables, graphs and charts that were selected in the Log Analysis Expert wizard. Use the `Jump To` button (located in the lower-right hand corner of the screen) to navigate to a specific graphic. + +![The Postgres Log Analysis Expert Report](../images/pem_log_analysis_expert_report.png) + +If the report contains an analysis of more than one monitored server, charts and tables will be displayed in sets; first the graphs, tables and charts that display statistics for one server, then the graphics for the next server in the report. diff --git a/product_docs/docs/pem/7.16/pem_ent_feat/08_sql_profiler.mdx b/product_docs/docs/pem/7.16/pem_ent_feat/08_sql_profiler.mdx new file mode 100644 index 00000000000..74b4c352258 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_ent_feat/08_sql_profiler.mdx @@ -0,0 +1,160 @@ +--- +title: "SQL Profiling and Analysis" +--- + +Most RDBMS experts agree that inefficient SQL code is the leading cause of most database performance problems. The challenge for DBAs and developers is to locate the poorly-running SQL code in large and complex systems, and then optimize that code for better performance. + +The SQL Profiler component allows a database superuser to locate and optimize poorly-running SQL code. Users of Microsoft SQL Server’s Profiler will find PEM’s SQL Profiler very similar in operation and capabilities. SQL Profiler is installed with each Advanced Server instance; if you are using PostgreSQL, you must download the SQL Profiler installer, and install the SQL Profiler product into each managed database instance you wish to profile. + +For each database monitored by SQL Profiler, you must: + +1. Edit the `postgresql.conf` file; you must include the SQL Profiler library in the shared_preload_libraries configuration parameter. + + For Linux installations, the parameter value should include: + + `$libdir/sql-profiler` + + on Windows, the parameter value should include: + + `$libdir/sql-profiler.dll` + +2. Create the functions used by SQL Profiler in your database. The SQL Profiler installation program places a SQL script (named sql-profiler.sql) in the `share/postgresql/contrib` subdirectory of the main PostgreSQL installation directory on Linux systems. On Windows systems, this script is located in the `share` subdirectory. You must invoke this script on the maintenance database specified when registering the server with PEM. + +3. Stop and re-start the server for the changes to take effect. + +Please note: if you have connected to the PEM server with the PEM client before configuring SQL Profiler, you must disconnect and reconnect with the server to enable SQL Profiler functionality. For more detailed information about installing and configuring the SQL Profiler plugin, please refer to the PEM Installation Guide, available from the EDB website at: + + + +## Creating a New SQL Trace + +SQL Profiler captures and displays a specific SQL workload for analysis in a SQL trace. You can start and review captured SQL traces immediately, or save captured traces for review at a later time. You can use SQL Profiler to create and store up to 15 named traces; use menu options to create and manage traces. + +### Creating a Trace + +You can use the `Create trace...` dialog to define a SQL Trace for any database on which SQL Profiler has been installed and configured. installed and configured. To access the dialog, highlight the name of the database in the PEM client tree control; navigate through the Management menu to the SQL Profiler pull-aside menu, and select Create trace.... + +![The Trace options tab](../images/sp_create_new_trace.png) + +Use the fields on the `Trace options` tab to specify details about the new trace: + +- Provide a name for the trace in the Name field. +- Click in the `User filter` field to specify the roles whose queries will be included the trace; optionally, check the box next to Select All to include queries from all roles. +- Click in the `Database filter` field to specify which databases to trace; optionally, check the box next to Select All to include queries against all databases. +- Specify a `trace size in the Maximum Trace File Size` field; SQL Profiler will terminate the trace when it reaches approximately the size specified. +- Specify Yes in the `Run Now` field to start the trace when you select the Create button; select No to enable fields on the Schedule tab. + +![The Create trace Schedule tab](../images/sp_create_new_trace_schedule.png) + +Use the fields on the `Schedule` tab to specify scheduling details for the new trace: + +- Use the `Start time` field to specify the starting time for the trace. +- Use the `End time` field to specify the ending time for the trace. +- Specify Yes in the `Repeat?` field to indicate that the trace should be repeated every day at the times specified; select No to enable fields on the Periodic job options tab. + +![The Create trace Periodic job options tab](../images/sp_create_new_trace_periodic_job.png) + +Fields on the `Periodic job options` tab specify scheduing details about a recurring trace. Use fields in the Days section to specify the days on which the job will execute: + +- Click in the `Week days` field to select the days of the week on which the trace will execute. +- Click in the `Month days` field to select the days of the month on which the trace will execute. +- Click in the `Months` field to select the months in which the trace will execute. + +Use fields in the `Times` section to specify a time schedule for the trace execution: + +- Click in the `Hours` field to select the hours at which the trace will execute. +- Click in the `Minutes` field to select the hours at which the trace will execute. + +When you've completed the `Create trace...` dialog, click `Create` to start the newly defined trace or to schedule the trace for a later time. + +![The SQL Profiler tab, displaying the trace results](../images/sp_create_new_trace_executed.png) + +If you elect to execute the trace immediately, the trace results will display in the PEM client. + +### Opening an Existing Trace + +To view a previous trace, highlight the name of the profiled database in the PEM client tree control; navigate through the `Management` menu to the SQL Profiler pull-aside menu, and select `Open trace....` You can also use the `SQL Profiler toolbar` menu to open a trace; select the `Open trace...` option. The Open trace... dialog opens. + +![Opening an existing trace](../images/sp_open_existing_trace.png) + +Highlight an entry in the trace list and click Open to open the selected trace. The selected trace opens in the SQL Profiler tab. + +### Filtering a Trace + +A filter is a named set of (one or more) rules, each of which can hide events from the trace view. When you apply a filter to a trace, the hidden events are not removed from the trace, but are merely excluded from the display. + +Click the Filter icon to open the `Trace Filter` dialog and create a rule (or set of rules) that define a filter. Each rule will screen the events within the current trace based on the identity of the role that invoked the event, or the query type invoked during the event. + +To open an existing filter, select the `Open` button; to define a new filter, click the `Add (+)` icon to add a row to the table displayed on the General tab and provide rule details: + +- Use the `Type` drop-down listbox to specify the trace field that the filter rule will apply to. +- Use the `Condition` drop-down listbox to specify the type of operator that SQL Profiler will apply to the Value when it filters the trace: + - Select `Matches to` filter events that contain the specified Value. + - Select `Does not match` to filter events that do not contain the specified Value. + - Select `Is equal to` to filter events that contain an exact match to the string specified in the Value field. + - Select `Is not equal` to to filter events that do not contain an exact match to the string specified in the Value field. + - Select `Starts with` to filter events that begin with the string specified in the Value field. + - Select `Does not start with` to filter events that do not begin with the string specified in the Value field. + - Select `Less than` to filter events that have a numeric value less than the number specified in the Value field. + - Select `Greater than` to filter events that have a numeric value greater than the number specified in the Value field. + - Select `Less than or equal to` to filter events that have a numeric value less than or equal to the number specified in the Value field. + - Select `Greater than or equal to` to filter events that have a numeric value greater than or equal to the number specified in the Value field. +- Use the `Value` field to specify the string, number or regular expression that SQL Profiler will search for. + +When you've finished defining a rule, click the Add (+) icon to add another rule to the filter. To delete a rule from a filter, highlight the rule and click the Delete icon. + +Click the `Save` button to save the filter definition to a file without applying the filter; to apply the filter, click `OK`. Select `Cancel` to exit the dialog and discard any changes to the filter. + +### Deleting a Trace + +To delete a trace, highlight the name of the profiled database in the PEM client tree control; navigate through the `Management` menu to the SQL Profiler pull-aside menu, and select `Delete trace(s)....` You can also use the SQL Profiler toolbar menu to delete a trace; select the `Delete trace(s)...` option. The `Delete traces` dialog opens. + +![The Delete traces… dialog](../images/sp_delete_trace.png) + +Click the icon to the left of a trace name to mark one or more traces for deletion and click `Delete`. The PEM client will acknowledge that the selected traces have been deleted. + +### Viewing Scheduled Traces + +To view a list of scheduled traces, highlight the name of the profiled database in the PEM client tree control; navigate through the `Management` menu to the SQL Profiler pull-aside menu, and select `Scheduled traces...` You can also use the SQL Profiler toolbar menu to the list; select the `Scheduled traces...` option. + +![Reviewing scheduled traces](../images/sp_scheduled_traces.png) + +The `Scheduled traces...` dialog displays a list of the traces that are awaiting execution. Click the edit button to the left of a trace name to access detailed information about the trace: + +- The `Status` field lists the status of the current trace. +- The `Enabled?` switch displays Yes if the trace is enabled; No if it is disabled. +- The `Name` field displays the name of the trace. +- The `Agent` field displays the name of the agent responsible for executing the trace. +- The `Last run` field displays the date and time of the last execution of the trace. +- The `Next run` field displays the date and time of the next scheduled trace. +- The `Created` field displays the date and time that the trace was defined. + +## Using the Index Advisor + +Index Advisor is distributed with Advanced Server 9.0 and above. Index Advisor works with SQL Profiler by examining collected SQL statements and making indexing recommendations for any underlying tables to improve SQL response time. The Index Advisor works on all DML (INSERT, UPDATE, DELETE) and SELECT statements that are invoked by a superuser. + +Diagnostic output from the Index Advisor includes: + +- Forecasted performance benefits from any recommended indexes +- The predicted size of any recommended indexes +- DDL statements you can use to create the recommended indexes + +Before using Index Advisor, you must: + +1. Modify the `postgresql.conf` file on each Advanced Server host, adding the index_advisor library to the shared_preload_libraries parameter. + +2. Install the `Index Advisor contrib` module. To install the module, use the psql client or PEM Query Tool to connect to the database, and invoke the following command: + + `\i /share/contrib/index_advisor.sql` + +3. Restart the server for your changes to take effect. + +Index Advisor can make indexing recommendations based on trace data captured by SQL Profiler. Simply highlight one or more queries in the `SQL Profiler Trace Data` pane, and click the `Index Advisor` toolbar button (or select Index Advisor from the View menu). For detailed usage information about Index Advisor, please see the EDB Postgres Advanced Server Guide. + +Please note: Index Advisor cannot analyze statements invoked by a non-superuser. If you attempt to analyze statements invoked by a non-superuser, the server log will include the following error: + +`ERROR: access to library "index_advisor" is not allowed`  + +For more information about configuring and using Index Advisor, please see the EDB Postgres Advanced Server Guide, available from EDB at: + +[https://www.enterprisedb.com/docs](/epas/latest/) diff --git a/product_docs/docs/pem/7.16/pem_ent_feat/09_tuning_wizard.mdx b/product_docs/docs/pem/7.16/pem_ent_feat/09_tuning_wizard.mdx new file mode 100644 index 00000000000..9b6e5161e1d --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_ent_feat/09_tuning_wizard.mdx @@ -0,0 +1,85 @@ +--- +title: "Tuning Wizard" +--- + +The Tuning Wizard reviews your PostgreSQL or Advanced Server installation, and recommends a set of configuration options that will help tune the installation to best suit its anticipated workload. Please note that benchmarking systems or systems with a high work load may require additional manual tuning to reach optimum performance. + +Before using the Tuning Wizard, you must specify the name of the service in the Service ID field on the Advanced tab of the server's Properties dialog. PEM will use the service name when restarting the service after tuning. + +The Tuning Wizard can only make recommendations for those servers that reside on the same server as their bound PEM agent. If you have specified a value of Yes in the Remote monitoring field when defining your server, the server will not be displayed in the Tuning Wizard tree control. + +To open the Tuning Wizard, select `Tuning Wizard...` from the `Management` menu of the PEM client. The Tuning Wizard opens, welcoming you. + +![The Tuning Wizard Welcome dialog](../images/tuning_wiz_welcome.png) + +Click `Next` to continue to the server selection dialog. + +![The Select Servers dialog](../images/tuning_wiz_server_sel.png) + +Expand the `Servers` node of the tree control to view a list of the servers that are currently monitored by PEM that are available for tuning. Check a box to the left of a server name to select the server for tuning. + +!!! Note + The Tuning Wizard displays a red warning symbol to the left of a server name in the tree control if the service name for that server is not provided on the server's Properties dialog. + +Click `Next` to continue to the Configuration dialog. + +![The Configuration dialog](../images/tuning_wiz_configuration.png) + +Select an option in the `Machine utilization` field to specify the type of work performed by the selected servers. The type of work performed by the server determines how the tuning wizard will allocate system resources: + +- Select `Dedicated` to dedicate the majority of the system resources to the database server. +- Select `Mixed use` to dedicate a moderate amount of system resources to the database server. +- Select `Developer workstation` to dedicate a relatively small amount of system resources to the database server. + +Select an option in the `Workload Selection` field to specify the type of workload typically performed on the selected server: + +- Select `OLTP` if the selected server is used primarily to process online transaction workloads. +- Select `Mixed` if the selected server provides a mix of transaction processing and data reporting. +- Select `Data warehouse` if the server is used for heavy data reporting. + +Click `Next` to continue to the `Tuning Changes Summary` dialog. + +![The Tuning Changes Summary dialog](../images/tuning_wiz_changes_sum.png) + +The tree control on the `Tuning Changes Summary` dialog displays the parameter setting modifications recommended for each server analyzed by the Tuning Wizard. Use the checkboxes next to a server or parameter name to select the recommendations that tuning wizard will either include in a preview report or apply: + +- A checked box to the left of a parameter name specifies that the Tuning Wizard will include the parameter setting. +- A checked box to the left of a server name specifies that the Tuning Wizard will include all parameter setting recommendations for the specified server. + +Specify which Tuning Wizard recommendations you wish to include in a report or apply, and click `Next` to continue. + +Use the `Schedule or Run?` dialog to either specify a time that PEM will apply the changes, or generate a report that details the recommended changes. + +The selected actions will apply to all of the changes noted on the Tuning Changes Summary. If you opt to generate a report, PEM will create a report that contains a list of the current values and recommended modifications to the configuration parameters selected on the Tuning Changes Summary dialog. Note that to implement changes, you will need to invoke the Tuning Wizard a second time, specifying the parameters you wish to modify on the `Tuning Changes Summary` dialog. + +Select `Schedule changes` to view and specify your scheduling options. + +![The Schedule or Run? dialog](../images/tuning_wiz_apply_changes.png) + +You can: + +- Set the `Configuration now?` slider to `Yes` to apply the tuning wizard's recommendations and restart the server now. +- Set the `Configuration now?` slider to `No` to enable the Time? field and use the calendar selector to specify a time for PEM to apply the tuning wizard's recommendations and restart the server. Note that if you schedule a time for the changes to be applied, you will not be provided with a preview of the change recommendations. + +Select `Generate report` to view your report options. + +![The Schedule or Run? dialog](../images/tuning_wiz_generate_report.png) + +You can: + +- Set the `View report now?` slider to `Yes` to display the Tuning Wizard report onscreen. +- Set the `View report now?` slider to `No` to enable the `Save the report to file` field and use the calendar selector to specify a file name and location to which PEM will write the Tuning Wizard report. + +Click the `Finish` button to either apply the Tuning Wizard's modifications or generate a report and exit the Tuning Wizard. + +![The Tuning Wizard report](../images/tuning_wiz_report.png) + +You can confirm that Tuning Wizard has implemented the recommended changes by reviewing the `postgresql.conf` file for the modified server. The Tuning Wizard adds a comment above each modified parameter in the postgresql.conf file when the change is applied. + +![Confirming a change in the postgresql.conf file](../images/tuning_wiz_confirm_chg.png) + +You can also confirm a parameter value by querying the server. For example, to confirm the value of the shared_buffers parameter, open a SQL command line using either the Query Tool (accessed through the Tools menu) or the psql client, and issue the command: + +`SHOW shared_buffers;` + +The value returned by the server will confirm that the parameter has been modified. diff --git a/product_docs/docs/pem/7.16/pem_ent_feat/10_postgres_expert.mdx b/product_docs/docs/pem/7.16/pem_ent_feat/10_postgres_expert.mdx new file mode 100644 index 00000000000..7448db0df40 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_ent_feat/10_postgres_expert.mdx @@ -0,0 +1,65 @@ +--- +title: "Postgres Expert - Best Practice Enforcement" +--- + +The Postgres Expert utility provides expert advice on how to best configure your Postgres servers for optimal performance, security, and more. Postgres Expert serves as a PostgreSQL 'DBA in a box' by analyzing your servers for deviations in best practices. Postgres Expert contains three specialized Experts: + +- The Configuration Expert. +- The Schema Expert. +- The Security Expert. + +You can select specific rules for each Expert to analyze, or accept all rules, and then review Postgres Expert reports detailing any best practice issues that require your attention. + +## Using the Postgres Expert Wizard + +To use the Postgres Expert wizard select the `Postgres Expert` option from the `Management` menu in the PEM client. When the wizard's `Welcome` window opens, click `Next` to continue. + +![The Postgres Expert Welcome dialog](../images/pe_welcome.png) + +The wizard displays a tree control that allows you to choose the `Experts and Rules` with which Postgres Expert will evaluate the specified server or database. + +![The PEM Agent Installer's Welcome dialog](../images/pe_select_rules.png) + +The tree control categorizes the rules under three Expert headings: + +- Select from the `Configuration Expert rules` to analyze the parameter settings of the server or operating system to find any adjustments that might improve system performance. +- Select from the `Schema Expert rules` to analyze schema objects (locating missing primary keys, foreign keys without indexes, etc). +- Select from the `Security Expert rules` to review the system to find security vulnerabilities. + +Use the checkmark indicator to the left of an expert or rule to indicate that the Postgres Expert should analyze the configuration of the selected servers for any best practice deviations related to the checked item. + +You can: + +- Check the box next to the name of an expert to select or deselect all of the configuration items listed under that node of the tree control. +- Check the box next to `Servers/Databases` to instruct Postgres Expert to review the selected server for all of the items in the tree control. +- Deselect the box next to `Servers/Databases` to to un-check all of the rules; then, navigate through the tree control, specifying only the items that you wish Postgres Expert to evaluate. + +After making your selections, click `Next` to continue to the Server/Databases tree control. + +![The Servers/Databases dialog](../images/pe_select_servers.png) + +Select or de-select the servers and databases that you would like Postgres Expert to analyze. If you select multiple servers or databases, the resulting report will contain a separate analysis of each target. When you've finished, click `Next` to select a report destination. + +![Specify a report destination](../images/pe_direct_output.png) + +You can select the default option and click `Finish` to view an onscreen report from Postgres Expert, or check the box next to Download the report to save a copy of the report to an HTML file for later use. If you choose to save the report to a file, the download will begin immediately. The file will be saved in your default download directory. + +## Reviewing Postgres Expert Recommendations + +Postgres Expert produces an easily navigated report that contains an analysis of the selected rules, categorized by high, medium, and low severities, for the selected servers. + +![The Postgres Expert report](../images/pe_report.png) + +The report header contains a summary of the report, and includes the date and time that the report was generated, the number of rules analyzed, and the number of deviations from best practices found by Postgres Expert. Use the `Jump to` drop-down listbox to select a server to navigate to the section of the report that targets recommendations for that server. + +The body of the report contains the detailed findings for each server selected for analysis. The findings are sorted by Expert; within each Expert heading, any rule violations are ranked by Severity. + +![The detailed recommendation for a rule](../images/pe_param_value.png) + +Click on each rule in the Postgres Expert report to display details and recommendations for that rule. Within each rule, section headings display: + +- The `Advisor` section lists the name of the Postgres Expert advisor that prompted the recommendation. +- The `Trigger` section displays a description of the rule that raised the alert. +- The `Recommended Value` section displays the value to which Postgres Expert recommends setting the selected parameter. +- The `Description` section displays information and advice about the parameter that caused the alert. +- The `Current Values` section displays the current value(s) of any parameter(s) that influence the Postgres Expert's evaluation. diff --git a/product_docs/docs/pem/7.16/pem_ent_feat/11_reports.mdx b/product_docs/docs/pem/7.16/pem_ent_feat/11_reports.mdx new file mode 100644 index 00000000000..9baeb0aed1e --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_ent_feat/11_reports.mdx @@ -0,0 +1,69 @@ +--- +title: "Reports" +--- + +You can generate the System Configuration report and Core Usage report for all locally and remotely managed servers. To generate this report, select `Reports` from the `Management` Menu. + +Reports has following options: + +- System Configuration Report (JSON) +- System Configuration Report (HTML) +- Core Usage Report (JSON) +- Core Usage Report (HTML) + +Please note that only superusers or the users with the pem_admin role permission can download the System Configuration or Core Usage reports. + +Also note that information in these reports will reflect the latest probe run time. + +## System Configuration Report + +The System Configuration Report provides detailed information about the PEM Agents group, PEM Server directory group and custom groups listed under browser tree. These groups can contain Postgres Enterprise Manager, PEM Agents and Database servers. You can download this report in HTML as well as in JSON format. + +The `Postgres Enterprise Manager Summary` provides details about: + +- The Postgres Enterprise Manager backend database server version +- Application version +- User name accessing the application +- Python version +- Flask version +- Platform specific information + +The `Summary` provides information about the number of agents and servers. + +![System Configuration Report - PEM Summary and Summary](../images/system_configuration_report_pem_summary_and_summary.png) + +The `Group: PEM Agents` panel provides details about the PEM agent, CPU cores, Disk Utilization, and Memory information. + +![System Configuration Report - PEM Agents](../images/system_configuration_report_pem_agents.png) + +The `Group: PEM Server Directory`, provides details about: + +- Database server version +- Host +- Port +- Database name +- Database size +- Tablespace size + +![System Configuration Report - Group Server Name](../images/system_configuration_report_pem_server_directory.png) + +Please note that here `Group Server Name` depends on the group name to which the server is added. + +## Core Usage Report + +The Core Usage report provides detailed information about number of cores specific to: + +- The server type +- Database version +- Platform and group name + +The report also gives detailed information about locally managed servers: + +- Type +- Host +- Port +- Platform +- Cores +- RAM + +![Core Usage Report](../images/core_usage_report.png) diff --git a/product_docs/docs/pem/7.16/pem_ent_feat/12_monitoring_failover_manager.mdx b/product_docs/docs/pem/7.16/pem_ent_feat/12_monitoring_failover_manager.mdx new file mode 100644 index 00000000000..6239f49a647 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_ent_feat/12_monitoring_failover_manager.mdx @@ -0,0 +1,62 @@ +--- +title: "Monitoring Failover Manager" +--- + +If you are using EDB Failover Manager to monitor your replication scenario, you must manually install and configure Failover Manager. For detailed information about installing Failover Manager, visit the EDB website at: + + + +To monitor the status of a Failover Manager cluster on the Streaming Replication dashboard, you must provide the following information on the `Advanced` tab of the `server Properties` dialog for each node of the cluster: + +- Use the `EFM Cluster Name` field to specify the name of the Failover Manager cluster. The cluster name is the prefix of the name of the cluster properties file. For example, if your cluster properties file is named efm.properties, your cluster name is efm. + +- Use the `EFM Installation Path` field to specify the location of the Failover Manager binary file. By default, the Failover Manager binary file is installed in `/usr/efm-/bin`. + + Where `` is the EFM Version. + +After registering your servers, the `Streaming Replication Analysis` dashboard will display status information about your EFM cluster near the bottom of the dashboard. + +![The Failover Manager cluster status report](../images/fm_cluster_status.png) + +The `Failover Manager Cluster Status` section of the Streaming Replication Analysis dashboard displays information about the monitored cluster: + +The `Failover Manager Cluster Information` table provides information about the Failover Manager cluster: + +- The `Properties` column displays the name of the cluster property. +- The `Values` column displays the current value of the property. + +The `Failover Manager Node Status` table displays information about each node of the Failover Manager cluster: + +- The `Agent Type` column displays the type of agent that resides on the node; the possible values are Primary, Replica, Witness, Idle, and Promoting. +- The `Address` column displays the IP address of the node. +- The `Agent` column displays the status of the agent that resides on the node. +- The `DB` column displays the status of the database that resides on the node. +- The `XLog Location` column displays the transaction log location of the database. +- The `Status Information` column displays any error-related information about the node. +- The `XLog` Information column displays any error-related information about the transaction log. +- The `VIP` column displays the VIP address that is associated with the node. +- The `VIP Status` column displays True if the VIP is active for the node, False if the VIP is not. + +## Replacing a Primary Node + +You can use the PEM client to replace the Primary node of a Failover Manager cluster with a replica node. To initiate the failover process, select `Replace Cluster Primary` from `Server` under the `Tools` menu. A dialog opens, asking you to confirm that you wish to replace the current primary node. + +![Replacing the Primary node of a cluster](../images/fm_replace_primary.png) + +Select `Yes` to remove the current primary node from the Failover Manager cluster and promote a replica node to the role of read/write primary node within a Failover Manager cluster. The node with the highest promotion priority (defined in Failover Manager) will become the new primary node. PEM will display a dialog, reporting the job status. + +![Confirmation of the promotion](../images/fm_job_result.png) + +When the job completes and the `Streaming Replication Analysis` dashboard refreshes, you can review the `Failover Manager Node Status` table to confirm that a replica node has been promoted to the role of primary within the Failover Manager cluster. + +## Switchover EFM Cluster + +You can use the PEM client to replace the primary node of a Failover Manager cluster with a replica node. To initiate the switchover process, select `Switchover EFM Cluster` from the `Tools` menu. A dialog opens, asking you to confirm that you wish to switchover EFM cluster. + +![Switchover EFM Cluster](../images/fm_switchover_cluster.png) + +Select `Yes` to start the Failover Manager switchover, and promote a replica node to the role of read/write primary node and reconfigure the primary database as a new replica within a Failover Manager cluster. The node with the highest promotion priority (defined in Failover Manager) will become the new primary node. PEM will display a dialog, reporting the job status. + +![Confirmation of the promotion](../images/fm_switchover_job_result.png) + +When the job completes and the `Streaming Replication Analysis` dashboard refreshes, you can review the `Failover Manager Node Status` table to confirm that a switchover occurred. diff --git a/product_docs/docs/pem/7.16/pem_ent_feat/13_monitoring_xdb_replication_cluster.mdx b/product_docs/docs/pem/7.16/pem_ent_feat/13_monitoring_xdb_replication_cluster.mdx new file mode 100644 index 00000000000..5db10e80ead --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_ent_feat/13_monitoring_xdb_replication_cluster.mdx @@ -0,0 +1,21 @@ +--- +title: "Monitoring an xDB Replication Cluster" +--- + +Before configuring PEM to retrieve statistics from an Advanced Server or PostgreSQL database that is part of an xDB replication scenario, you must manually install and configure xDB Replication. For more information about xDB replication solutions and documentation, please visit the EDB website at: + +[http://www.enterprisedb.com/products-services-training/products-overview/xdb-replication-server-multi-master](http://www.enterprisedb.com/products-services-training/products-overview/xdb-%20replication-server-multi-master) + +The PEM xDB Replication probe monitors lag data for clusters that use xDB multi-primary or single-primary replication that have a publication database that is an EDB Postgres Advanced Server or PostgreSQL database. Please note that if you have configured replication between other proprietary database hosts (i.e. Oracle or SQL Server) and Advanced Server or PostgreSQL, the probe cannot return lag information. + +![The Manage Probes tab](../images/pem_manage_probes_tab.png) + +By default, the `xDB Replication` probe is disabled. To enable the `xDB Replication` probe, right click on the name of the server, and select `Connect` from the context menu; if prompted, provide authentication information. After connecting, expand the server node of the tree control, and highlight the name of the replicated database. Then, select `Manage Probes...` from the `Management` menu. + +Use fields on the `Manage Probes` tab to configure the xDB Replication probe: + +- Move the `Default` slider to `No` to modify the Minutes and Seconds between probe executions. +- Use the `Enabled?` slider to instruct PEM to execute the xDB Replication probe. +- Set the `Default` slider in the `Data Retention` field to No to modify the number of days that PEM will store the information retrieved by the probe. + +After enabling the probe, you can use the metrics returned to create custom charts and dashboards in the PEM client. diff --git a/product_docs/docs/pem/7.16/pem_ent_feat/14_performance_diagnostic.mdx b/product_docs/docs/pem/7.16/pem_ent_feat/14_performance_diagnostic.mdx new file mode 100644 index 00000000000..c28b34bd8c1 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_ent_feat/14_performance_diagnostic.mdx @@ -0,0 +1,92 @@ +--- +title: "Performance Diagnostic" +--- + +You can use the Performance Diagnostic dashboard to analyze the database performance for Postgres instances by monitoring the wait events. To display the diagnostic graphs, PEM uses the data collected by EDB Wait States module. + +Peformance Diagnostic feature is supported for Advanced Server databases from PEM 7.6 version onwards and for PostgreSQL databases it is supported from PEM 8.0 onwards. + +!!! Note + For PostgreSQL databases, Performance Diagnostics is supported only for versions 10, 11, and 12 installed on the supported CentOS or RHEL platforms. + +For more information on EDB Wait States, see [EDB Postgres Advanced Server Guide](/epas/latest/epas_guide/13_performance_analysis_and_tuning/#edb-wait-states). + +You can analyze the Wait States data on multiple levels by narrowing down your selection of data. Each level of the graph is populated on the basis of your selection of data at the higher level. + +Prerequisite: + +- For PostgreSQL, you need to install `edb_wait_states_` package from `edb.repo` where `` is the version of PostgreSQL Server. You can refer to [EDB Build Repository](https://repos.enterprisedb.com/) for the steps to install this package. For Advanced Server, you need to install `edb-as-server-edb-modules`, Where `` is the version of Advanced Server. + +- Once you ensure that EDB Wait States module of EDB Postgres Advanced Server is installed, then configure the list of libraries in the `postgresql.conf` file as below: + + `shared_preload_libraries = '$libdir/edb_wait_states'` + +Restart the database server, and then create the following extension in the maintenance database: + +`CREATE EXTENSION edb_wait_states;` + +- You must have super user privileges to access the Performance Diagnostic dashboard. + +You get the following error while accessing the Performance Diagnostic dashboard if the above prerequisites are not met: + +![Performance Diagnostic Error dialog](../images/performance_diagnostic_error.png) + +To open the Performance Diagnostic dashboard, select `Server` and then `Performance Diagnostic...` from the `Tools` menu of the PEM client. + +![Performance Diagnostic dashboard](../images/performance_diagnostic_intro.png) + +By default, the top most Performance Diagnostic graph pulls the data of last one hour, starting from current date and time. This graph shows the time series containing the number of active sessions. Each point of this time series represents the active sessions and wait events at a particular time and last 15 seconds. These sessions may or may not be waiting for an wait event, or using the CPU at a particular point in time. This time series is generated based on the wait event samples collected by the `edb_wait_states` extension. + +You can also use the `Preferences` dialog to display Performance Diagnostic in a new browser tab. Use `Open in New Browser Tab?` to display the Performance Diagnostics dashboard in a new browser tab. + +The range selection in the first graph is 10 minutes. You can use the `Last` drop-down list box to select the duration for which you want to see the graph: select the last 1 hour, last 4 hours, last 12 hours, or last 24 hours. You can also select the date and time through which you want the data to be displayed. + +![Performance Diagnostic dashboard - Time Changes option](../images/performance_diagnostic_datetime_selection.png) + +The first graph displays the number of active sessions (and - wait event types) for the selected time interval. You can narrow down the timeline in the first graph to analyze the data for a specific time period. + +Next section plots the following graphs based on the selected time interval in the first graph: + +1. Donut graph - It shows total wait event types according to the time range selection in the first graph. It helps you understand how much time was spent by those session on waiting for an event. +2. Line graph - It plots a time series with each point representing the active sessions for each sample time. + +To differentiate each wait event types and the CPU usage clearly, the graph for each wait event type is displayed in a different color. + +Select a particular time on the `Line graph` for which you wish to analyze the wait events; the third section displays the wait event details in the Performance Diagnostics dashboard on the basis of your selected particular time in the second graph. The third section displays wait event details on three tabs: + +- The `SQL` tab displays the list of SQL queries having wait events for the selected sample time. +- The `Users` tab displays the details of the wait events grouped by users for selected sample time. +- The `Waits` tab displays the number of wait events belonging to each wait event type for the selected sample time. + +![Performance Diagnostic dashboard - Time range selection in the first Wait event types graph](../images/performance_diagnostic_timeseries_selection.png) + +You can click on the graph legends to show or hide a particular wait event type in all the graphs. This will make the analysis of a specific wait event type easier. + +![Performance Diagnostic dashboard - Show and hide a particular wait event type by click the respective graph legend](../images/performance_diagnostic_chart_legends.png) + +You can filter the data displayed in the rows under all the three tabs. You can also sort the data alphabetically by clicking on the column headers. + +SQL tab + +![Performance Diagnostic - SQL tab with filter applied](../images/performance_diagnostic_table_filter.png) + +Users tab + +![Performance Diagnostic - Users tab](../images/performance_diagnostic_users_table.png) + +Waits tab + +![Performance Diagnostic - Waits tab](../images/performance_diagnostic_wait_events.png) + +Click on the Eye icon in any row of the SQL tab to display a new tab with details of the query of that particular row. This page displays Query ID and its corresponding session IDs in a dropdown list at that particular selected sample time in the Query information section. You can select the session ID for the selected query for which you want to analyze the data. You will see the details corresponding to the selected session ID and query ID. The Query information table also displays the SQL query. If the SQL query is being displayed partially, click the down arrow at the bottom of the section to view the complete SQL query. + +The `Wait event types` section displays the total number of wait event types for the selected session ID and query ID. It shows two type of graphs: + +1. Donut graph - It shows the proportions of categorical data, with the size of each piece representing the proportion of each wait event type. +2. Timeline bar graph - It can be used to visualize trends in counts of wait event types over time. + +To differentiate clearly, each wait event type is represented by a different color in the bar graph. + +![Performance Diagnostic - Query dashboard](../images/performance_diagnostic_query_dashboard.png) + +The `Wait events` section has a table displaying all the wait events occured during the query execution. It displays data in decreasing order by number of the wait events. Second table displays the wait event with sample time occured over the period of whole query execution. It allows to analyze the wait events during the query execution over the period of time. It shows the actual samples collected by the EDB Wait States extension for that particular query ID and session ID. diff --git a/product_docs/docs/pem/7.16/pem_ent_feat/15_reference.mdx b/product_docs/docs/pem/7.16/pem_ent_feat/15_reference.mdx new file mode 100644 index 00000000000..fe5fc17aac7 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_ent_feat/15_reference.mdx @@ -0,0 +1,586 @@ +--- +title: "Reference" +--- + +The following sections are provided for reference; please note that the items referred to in the following tables are subject to change. + +## PEM Server Configuration Parameters - Reference + +You can use global configuration options to modify aspects of the PEM Server's behavior. Please note that the list of configuration parameters is subject to change. + +| **Parameter name** | **Value and Unit** | **Description** | +| ------------------------------------------------------------------------ | ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| audit_log_retention_time | 30 days | Specifies the number of days that an audit log will be retained on the PEM server. | +| auto_create_agent_alerts | true | Specifies whether to create default agent level alerts automatically when an agent is registered. | +| auto_create_server_alerts | true | Specifies whether to create default server level alerts automatically when a server is bound to an agent. | +| chart_disable_bullets | false | Enable/disable bullets on line charts on dashboards and Capacity Manager reports. | +| cm_data_points_per_report | 50 | Specifies the number of data points to plot on charts on Capacity Manager reports. | +| cm_max_end_date_in_years | 5 years | Specifies the maximum amount of time that the Capacity Manager will extrapolate data for. Ensures that threshold-based end dates of on reports do not get extrapolated indefinitely. | +| dash_alerts_timeout | 60 seconds | Specifies the number of seconds after which the components of the Alerts dashboard are auto-refreshed. | +| dash_db_comrol_span | 7 days | Specifies the number of days worth of data to plot on the Commit/Rollback Analysis chart on the Database Analysis dashboard and Server Analysis dashboard. | +| dash_db_comrol_timeout | 1800 seconds | Specifies the number of seconds after which the Commits/Rollbacks line chart is auto-refreshed on the Database Analysis dashboard and Server Analysis dashboard. | +| dash_db_connovervw_timeout | 300 seconds | Specifies the number of seconds after which the Connection Overview pie chart is auto-refreshed in the Database Analysis dashboard. | +| dash_db_eventlag_span | 7 days | Specifies the number of days worth of data to plot on the Number of Events Lag chart for slony replication on the Database Analysis dashboard. | +| dash_db_eventlag_timeout | 1800 seconds | Specifies the number of seconds after which the Number of Events Lag line chart for slony replication is auto-refreshed on the Database Analysis dashboard. | +| dash_db_hottable_rows | 25 rows | Specifies the number of rows to show on the HOT Table Analysis table on the Database Analysis dashboard. | +| dash_db_hottable_timeout | 300 seconds | Specifies the number of seconds after which the Hot Tables table is auto-refreshed in the Database Analysis dashboard. | +| dash_db_io_span | 7 days | Specifies the number of days worth of data to plot on the Database I/O Analysis chart on the Database Analysis dashboard and I/O Analysis dashboard. | +| dash_db_io_timeout | 1800 seconds | Specifies the number of seconds after which the Database I/O line chart is auto-refreshed on the Database Analysis dashboard and I/O Analysis dashboard. | +| dash_db_rowact_span | 7 days | Specifies the number of days worth of data to plot on the Row Activity Analysis chart on the Database Analysis dashboard, the I/O Analysis dashboard, and the Server Analysis dashboard. | +| dash_db_rowact_timeout | 1800 seconds | Specifies the number of seconds after which the Row Activity line chart is auto-refreshed on the Database Analysis dashboard, the I/O Analysis dashboard, and the Server Analysis dashboard. | +| dash_db_storage_timeout | 300 seconds | Specifies the number of seconds after which the Storage bar chart is auto-refreshed in the Database Analysis dashboard. | +| dash_db_timelag_span | 7 days | Specifies the number of days worth of data to plot on the Time Lag chart for Slony replication on the Database Analysis dashboard. | +| dash_db_timelag_timeout | 1800 seconds | Specifies the number of seconds after which the Time Lag line chart for Slony replication is auto-refreshed on the Database Analysis dashboard. | +| dash_db_useract_span | 7 days | Specifies the number of days worth of data to plot on the User Activity Analysis chart on the Database Analysis dashboard. | +| dash_db_useract_timeout | 1800 seconds | Specifies the number of seconds after which the User Activity line chart is auto-refreshed in the Database Analysis dashboard. | +| dash_efm_timeout | 300 seconds | Specifies the number of seconds after which the Failover Manager Node Status and Failover Manager Cluster Info line chart is auto-refreshed on the Streaming Replication dashboard. | +| dash_global_overview_timeout | 30 seconds | Specifies the number of seconds after which the components of the Global Overview dashboard are auto-refreshed. | +| dash_header_timeout | 60 seconds | Specifies the number of seconds after which the information on the header of all the dashboards are auto-refreshed. | +| dash_io_chkpt_span | 7 days | Specifies the number of days worth of data to plot on the Checkpoints chart on the I/O Analysis dashboard. | +| dash_io_chkpt_timeout | 1800 seconds | Specifies the number of seconds after which the Checkpoints line chart is auto-refreshed on the I/O Analysis dashboard. | +| dash_io_hotindx_timeout | 300 seconds | Specifies the number of seconds after which the Hot Indexes bar chart is auto-refreshed on the I/O Analysis dashboard. | +| dash_io_hottbl_timeout | 300 seconds | Specifies the number of seconds after which the Hot Tables bar chart is auto-refreshed on the I/O Analysis dashboard. | +| dash_io_index_objectio_rows | 25 rows | Specifies the number of rows displayed on the Index Activity table on the I/O Analysis dashboard and the Object Activity Analysis dashboard. | +| dash_io_index_objectio_timeout | 60 seconds | Specifies the number of seconds after which the Index Activity table is auto-refreshed on the I/O Analysis dashboard and the Object Activity Analysis dashboard. | +| dash_io_objectio_rows | 25 rows | Specifies the number of rows displayed in the Object I/O Details table on the I/O Analysis dashboard and Object Activity Analysis dashboard. | +| dash_io_objectio_timeout | 300 seconds | Specifies the number of seconds after which the Object I/O Details table is auto-refreshed on the I/O Analysis dashboard and Object Activity Analysis dashboard. | +| dash_memory_hostmemact_span | 7 days | Specifies the number of days worth of data to plot on the Host Memory Activity Analysis chart on the Memory Analysis dashboard. | +| dash_memory_hostmemact_timeout | 1800 seconds | Specifies the number of seconds after which the Host Memory Activity line chart is auto-refreshed on the Memory Analysis dashboard. | +| dash_memory_hostmemconf_timeout | 300 seconds | Specifies the number of seconds after which the Host Memory Configuration pie chart is auto-refreshed on the Memory Analysis dashboard and Server Analysis dashboard. | +| dash_memory_servmemact_span | 7 days | Specifies the number of days worth of data to plot on the server Memory Activity Analysis chart on the Memory Analysis dashboard. | +| dash_memory_servmemact_timeout | 1800 seconds | Specifies the number of seconds after which the Server Memory Activity line chart is auto-refreshed on the Memory Analysis dashboard. | +| dash_memory_servmemconf_timeout | 300 seconds | Specifies the number of seconds after which the Server Memory Configuration pie chart is auto-refreshed on the Memory Analysis dashboard. | +| dash_objectact_objstorage_rows | 15 rows | Specifies the number of rows to show on the Object Storage table on the Object Activity Analysis dashboard. | +| dash_objectact_objstorage_timeout | 300 seconds | Specifies the number of seconds after which the Object Storage table is auto-refreshed in the Object Activity Analysis dashboard. | +| dash_objectact_objtopindexes_timeout | 300 seconds | Specifies the number of seconds after which the Top 5 Largest Indexes bar chart is auto-refreshed in the Object Activity Analysis dashboard. | +| dash_objectact_objtoptables_timeout | 300 seconds | Specifies the number of seconds after which the Top 5 Largest Tables bar chart is auto-refreshed in the Object Activity Analysis dashboard. | +| dash_os_cpu_span | 7 days | Specifies the number of days worth of data to plot on the CPU chart on the Operating System Analysis dashboard. | +| dash_os_cpu_timeout | 1800 seconds | Specifies the number of seconds after which the CPU line chart is auto-refreshed on the Operating System Analysis dashboard. | +| dash_os_data_span | 7 days | Specifies the number of days worth of data to plot on the I/O line chart on the Operating System Analysis dashboard. | +| dash_os_disk_span | 7 days | Specifies the number of days worth of data to plot on the Utilisation chart on the Operating System Analysis dashboard. | +| dash_os_hostfs_timeout | 1800 seconds | Specifies the number of seconds after which the Host File System Details table is auto-refreshed on the Operating System Analysis dashboard. | +| dash_os_io_timeout | 1800 seconds | Specifies the number of seconds after which the I/O line chart is auto-refreshed on the Operating System Analysis dashboard. | +| dash_os_memory_span | 7 days | Specifies the number of days worth of data to plot on the Memory chart on the Operating System Analysis dashboard. | +| dash_os_memory_timeout | 1800 seconds | Specifies the number of seconds after which the Memory line chart is auto-refreshed on the Operating System Analysis dashboard. | +| dash_os_packet_span | 7 days | Specifies the number of days worth of data to plot on the Packet chart on the Operating System Analysis dashboard. | +| dash_os_packet_timeout | 1800 seconds | Specifies the number of seconds after which the Network Packets line chart is auto-refreshed on the Operating System Analysis dashboard. | +| dash_os_process_span | 7 days | Specifies the number of days worth of data to plot on the Process chart on the Operating System Analysis dashboard. | +| dash_os_process_timeout | 1800 seconds | Specifies the number of seconds after which the Process line chart is auto-refreshed on the Operating System Analysis dashboard. | +| dash_os_storage_timeout | 1800 seconds | Specifies the number of seconds after which the Storage pie chart is auto-refreshed on the Operating System Analysis dashboard. | +| dash_os_traffic_span | 7 days | Specifies the number of days worth of data to plot on the Traffic chart on the Operating System Analysis dashboard. | +| dash_os_traffic_timeout | 1800 seconds | Specifies the number of seconds after which the Traffic line chart is auto-refreshed on the Operating System Analysis dashboard. | +| dash_os_util_timeout | 1800 seconds | Specifies the number of seconds after which the Utilisation line chart is auto-refreshed on the Operating System Analysis dashboard. | +| dash_probe_log_timeout | 300 seconds | Specifies the number of seconds after which the Probe Log table is auto-refreshed on | +| dash_replication_archivestat_span | 7 days | Specifies the number of days worth of data to plot on the WAL Archive Status chart on the Streaming Replication Analysis dashboard. | +| dash_replication_archivestat_timeout | 1800 seconds | Specifies the number of seconds after which the WAL Archive Status line chart is auto-refreshed on the Streaming Replication dashboard. | +| dash_replication_pagelag_span | 7 days | Specifies the number of days worth of data to plot on the WAL Lag Pages chart on the Streaming Replication dashboard. | +| dash_replication_pagelag_timeout | 1800 seconds | Specifies the number of seconds after which the WAL Lag Pages line chart is auto-refreshed on the Streaming Replication dashboard. | +| dash_replication_segmentlag_span | 7 days | Specifies the number of days worth of data to plot on the WAL Lag Segments chart on the Streaming Replication dashboard. | +| dash_replication_segmentlag_timeout | 1800 seconds | Specifies the number of seconds after which the WAL Lag Segments line chart is auto-refreshed on the Streaming Replication dashboard. | +| dash_replication_timelag_span | 7 days | Specifies the number of days worth of data to plot on the Replication Lag Time chart on the Streaming Replication dashboard. | +| dash_replication_timelag_timeout | 1800 seconds | Specifies the number of seconds after which the Replication Lag Time line chart is auto-refreshed on the Streaming Replication dashboard. | +| dash_server_buffers_written | 168 hours | Specifies the number of days worth of data to plot on the Background Writer Statistics chart on the Server Analysis dashboard. | +| dash_server_buffers_written_timeout | 300 seconds | Specifies the number of seconds after which the Background Writer Statistics line chart is auto-refreshed on the Server Analysis dashboard. | +| dash_server_connovervw_timeout | 300 seconds | Specifies the number of seconds after which the Connection Overview pie chart is auto-refreshed in the Server Analysis dashboard. | +| dash_server_database_timeout | 300 seconds | Specifies the number of seconds after which the Databases table is auto-refreshed in the Server Analysis dashboard. | +| dash_server_dbsize_span | 7 days | Specifies the number of days worth of data to plot on the Database Size Analysis on the Server Analysis dashboard. | +| dash_server_dbsize_timeout | 1800 seconds | Specifies the number of seconds after which the Database Size line chart is auto-refreshed in the Server Analysis dashboard. | +| dash_server_disk_timeout | 1800 seconds | Specifies the number of seconds after which the Disk line chart is auto-refreshed in the Server Analysis dashboard. | +| dash_server_global_span | 7 days | Specifies the number of days worth of data to plot on the Disk line chart on the Server Analysis dashboard. | +| dash_server_sharedbuff_span | 7 days | Specifies the number of days worth of data to plot on the Shared Buffer chart on the Server Analysis dashboard. | +| dash_server_sharedbuff_timeout | 1800 seconds | Specifies the number of seconds after which the Shared Buffers line chart is auto-refreshed in the Server Analysis dashboard. | +| dash_server_tabspacesize_span | 7 days | Specifies the number of days worth of data to plot on the Tablespace Size chart on the Server Analysis dashboard. | +| dash_server_tabspacesize_timeout | 1800 seconds | Specifies the number of seconds after which the Tablespace Size line chart is auto-refreshed in the Server Analysis dashboard. | +| dash_server_useract_span | 7 days | Specifies the number of days worth of data to plot on the User Activity chart on the Server Analysis dashboard. | +| dash_server_useract_timeout | 1800 seconds | Specifies the number of seconds after which the User Activity line chart is auto-refreshed in the Server Analysis dashboard. | +| dash_sessact_lockact_timeout | 300 seconds | Specifies the number of seconds after which the Session Lock Activity table is auto-refreshed in the Session Activity Analysis dashboard. | +| dash_sessact_workload_timeout | 300 seconds | Specifies the number of seconds after which the Session Workload table is auto-refreshed in the Session Activity Analysis dashboard. | +| dash_sess_waits_nowaits_timeout | 300 seconds | Specifies the number of seconds after which the Session Waits By Number Of Waits pie | +| dash_sess_waits_timewait_timeout | 300 seconds | Specifies the number of seconds after which the Session Waits By Time Waited pie chart is auto-refreshed in the Session Waits Analysis dashboard. | +| dash_sess_waits_waitdtl_timeout | 300 seconds | Specifies the number of seconds after which the Session Waits Details table is auto-refreshed in the Session Waits Analysis dashboard. | +| dash_storage_dbdtls_timeout | 300 seconds | Specifies the number of seconds after which the Database Details table is auto-refreshed in the Storage Analysis dashboard. | +| dash_storage_dbovervw_timeout | 300 seconds | Specifies the number of seconds after which the Database Overview pie chart is auto-refreshed in the Storage Analysis dashboard. | +| dash_storage_hostdtls_timeout | 300 seconds | Specifies the number of seconds after which the Host Details table is auto-refreshed | +| dash_storage_hostovervw_timeout | 300 seconds | Specifies the number of seconds after which the Host Overview pie chart is auto-refreshed in the Storage Analysis dashboard. | +| dash_storage_tblspcdtls_timeout | 300 seconds | Specifies the number of seconds after which the Tablespace Details table is auto-refreshed in the Storage Analysis dashboard. | +| dash_storage_tblspcovervw_timeout | 300 seconds | Specifies the number of seconds after which the Tablespace Overview pie chart is auto-refreshed in the Storage Analysis dashboard. | +| dash_sys_waits_nowaits_timeout | 300 seconds | Specifies the number of seconds after which the System Waits By Number Of Waits pie chart is auto-refreshed in the System Waits Analysis dashboard. | +| dash_sys_waits_timewait_timeout | 300 seconds | Specifies the number of seconds after which the System Waits By Time Waited pie chart is auto-refreshed in the System Waits Analysis dashboard. | +| dash_sys_waits_waitdtl_timeout | 300 seconds | Specifies the number of seconds after which the System Waits Details table is auto-refreshed in the System Waits Analysis dashboard. | +| deleted_charts_retention_time | 7 days | Specifies the number of days that a custom chart (displayed on a user-defined dashboard) is stored. | +| deleted_probes_retention_time | 7 days | Specifies the number of days that a custom probe (displayed on a user-defined dashboard) is stored. | +| download_chart_format | jpeg | Specifies the format in which a downloaded chart will be stored. May be jpeg or png. | +| flapping_detection_state_change | 3 | Specifies the number of state changes detected within a specified interval to define a given alert as flapping. Flapping starts when more than `N` state changes have occurred over \[ `N` + 1 \* (min(probe_interval) \* 2)] minutes and the fine state is not None. Where the default value of `N` is 2 or 3, and min(probe_interval) is the smallest interval for all the probes used by the alert. Flapping ends when ZERO state changes have occurred over \[2 `N` \* min(probe_interval)] minutes. | +| job_retention_time | 30 days | Specifies the number of days that non-recurring scheduled tasks and their associated | +| long_running_transaction_minutes | 5 minutes | Specifies the number of minutes a query executes for before being considered long running. | +| nagios_cmd_file_name | <file_name> | Specifies nagios command file to which passive service check result will be sent. | +| nagios_enabled | t | Specifies whether alert notification will be submitted to nagios or not. | +| nagios_medium_alert_as_critical | f | Specifies whether medium level PEM alert will be considered as critical in nagios. | +| nagios_spool_retention_time | 7 days | Specifies the number of days to retain nagios messages in the spool table before they are discarded. | +| probe_log_retention_time | 30 days | Specifies the number of days that probe log records are retained. | +| reminder_notification_interval | 24 hours | Specifies the number of hours after which a reminder email is sent in case an alert has not been cleared. | +| server_log_retention_time | 30 days | Specifies the number of days that the server log is retained on the PEM server. | +| show_data_tab_on_graph | false | If 'true', a Data tab is added to each graph. Select the Data tab to review the data that is plotted on the graph. | +| smtp_authentication | false | Specifies whether to enable/disable authentication over SMTP. | +| smtp_enabled | true | Specifies whether to enable/disable sending of emails. | +| smtp_encryption smtp_password | false | Specifies whether to send SMTP email using an encrypted connection. Specifies the password to be used to connect to the SMTP server. | +| smtp_port | 25 | Specifies the SMTP server port to be used for sending email. | +| smtp_server | 127.0.0.1 | Specifies the SMTP server host address to be used for sending email. | +| smtp_spool_retention_time smtp_username | 7 days | Specifies the number of days to retain sent email messages in the spool table before they are discarded. Specifies the username to be used to connect to SMTP server. | +| snmp_community | public | Specifies the SNMP community used when sending traps. Used only with SNMPv1 and SNMPv2. | +| snmp_enabled | true | Specifies whether to enable/disable sending SNMP traps. | +| snmp_port | 162 | Specifies the SNMP server port to be used for sending SNMP traps. | +| snmp_server | 127.0.0.1 | Specifies the SNMP server host address to be used for sending SNMP traps. | +| snmp_spool_retention_time snmp_security_name snmp_security_engine_id | 7 days | Specifies the number of days to retain sent traps in the spool table before they are discarded. Specifies the user name or security name for sending SNMP traps. Used only with SNMPv3. Specifies the Engine id of the SNMP Agent on the SNMP Server. Used only with SNMPv3. | +| snmp_security_level snmp_context_name snmp_context_engine_id | NOAUTH_NOPRIV | Specifies Security level and its possible values can be: AUTH_NOPRIV - Authentication, No Privacy or AUTH_PRIV - Authentication, Privacy or NOAUTH_NOPRIV - no Authentication, no Privacy. Used only with SNMPv3. Specifies the Context name, the identifier for MIB objects when sending SNMP traps. Used only with SNMPv3 Specifies the Context engine id, the identifier for MIB objects when sending SNMP traps. If not specified, snmp_security_engine_id will be used. Used only with SNMPv3. | +| snmp_authentication_protocol | NONE | Specifies the authentication type for SNMP traps. Its possible values can be NONE,HMACMD5 or HMACSHA. Used only with SNMPv3. | +| snmp_privacy_protocol snmp_authentication_password snmp_privacy_password | NONE | Specifies the privacy protocol for SNMP traps. Its possible values can be NONE, DES, AES128, IDEA, AES192, or AES256. Used only with SNMPv3. Specifies the authentication password associated with security name mentioned in snmp_security_name. Used only for SNMPv3. Specifies the privacy password associated with security name mentioned in snmp_security_name. Used only for SNMPv3. | +| webclient_help_pg | EDB hosted documentation | Specifies the location of the online PostgreSQL core documentation. | + +## Capacity Manager Metrics - Reference + +Please Note that the Capacity Manager metrics available will vary by platform, and are subject to change. The available metrics may include the metrics described in the table below. + +| Metric Name | Description | +| ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| # Dead Tuples | The number of dead tuples in the selected table. | +| # Dead Tuples+ | The cumulative number of dead tuples in the selected table. | +| # Heap Tuples Fetched by Index Scans | The number of heap tuples fetched by index scans. | +| # Heap Tuples Fetched by Index Scans | The cumulative number of heap tuples fetched by index scans. | +| # Idle Backends+ | The cumulative number of currently idle backend clients. | +| # Index Scans | The number of index scans performed on the specified object. | +| # Index Scans+ | The cumulative number of index scans performed on the specified object. | +| # Index Tuples Read | The number of index tuples read. | +| # Index Tuples Read+ | The cumulative number of index tuples read. | +| # Live Tuples | The number of tuples visible to transactions. | +| # Live Tuples+ | The cumulative number of tuples visible to transactions. | +| # Pages Estimated by ANALYZE | The number of pages estimated by ANALYZE. | +| # Pages Estimated by ANALYZE+ | The cumulative number of pages estimated by ANALYZE. | +| # Sequential Scans | The number of sequential scans performed on the specific table. | +| # Sequential Scans+ | The cumulative number of sequential scans performed on the specific table. | +| # Sequential Scan Tuples | The number of tuples sequentially scanned in the specific table. | +| # Sequential Scan Tuples+ | The cumulative number of tuples sequentially scanned in the specific table. | +| # Tuples Deleted | The number of tuples deleted. | +| # Tuples Deleted+ | The cumulative number of tuples deleted. | +| # Tuples Estimated by ANALYZE | The number of live (visible) tuples estimated by ANALYZE. | +| # Tuples Estimated by ANALYZE+ | The cumulative number of live tuples estimated by ANALYZE. | +| # Tuples HOT Updated | The number of tuples HOT updated. In a HOT update, the new tuple resides in the same block as the original tuple and the tuples share an index entry. | +| # Tuples HOT Updated+ | The cumulative number of tuples HOT updated. | +| # Tuples Inserted | The number of tuples inserted into the specified table. | +| # Tuples Inserted+ | The cumulative number of tuples inserted into the specified table. | +| # Tuples Updated | The number of tuples updated in the selected table. | +| # Tuples Updated+ | The cumulative number of tuples updated in the selected table. | +| Blocks Hit | The number of blocks found in the cache. | +| Blocks Hit+ | The cumulative number of blocks found in the cache. | +| Blocks Read | The number of blocks read. | +| Blocks Read+ | The cumulative number of blocks read. | +| Blocks Read from InfiniteCache | The number of blocks read from InfiniteCache. | +| Blocks Read from InfiniteCache+ | The cumulative number of blocks read from InfiniteCache. | +| Blocks Written | The number of blocks written. | +| Blocks Written+ | The cumulative number of blocks written. | +| Buffers Allocated | The number of buffers allocated. | +| Buffers Allocated+ | The cumulative number of buffers allocated. | +| Buffers Written - Backends | The number of buffer blocks written to disk by server processe (processes connected to a client application). | +| Buffers Written - Backends+ | The cumulative number of buffer blocks written to disk by server processes. | +| Buffers Written - Checkpoint | The number of blocks written to disk by the checkpoint process. | +| Buffers Written - Checkpoint+ | The cumulative number of blocks written to disk by the checkpoint process. | +| Buffers Written - Cleaning Scan | The number of blocks written to disk by the autovacuum process. | +| Buffers Written - Cleaning Scan+ | The cumulative number of blocks written to disk by the autovacuum process. | +| Bytes Received (KB) | The number of bytes received from the client (in kilobytes). | +| Bytes Received (KB)+ | The cumulative number of bytes received (in kilobytes). | +| Bytes Sent (KB) | The number of bytes sent to the client (in kilobytes). | +| Bytes Sent (KB)+ | The cumulative number of bytes sent (in kilobytes). | +| Checkpoints - Timed | The number of checkpoint operations triggered by the checkpoint interval. | +| Checkpoints - Timed+ | The cumulative number of checkpoint operations triggered by the checkpoint interval. | +| Checkpoints - Untimed | The number of checkpoint operations triggered by checkpoint size. | +| Checkpoints - Untimed+ | The cumulative number of checkpoint operations triggered by checkpoint size. | +| Database Size (MB) | The size of the specified database (in megabytes). | +| Free RAM Memory | The amount of free RAM memory (in megabytes). | +| Free Swap Memory | The amount of free swap space on disk (in megabytes). | +| Heap Blocks Hit | The number of heap blocks found in the cache. | +| Heap Blocks Hit+ | The cumulative number of heap blocks found in the cache. | +| Heap Blocks Read | The number of heap blocks read. | +| Heap Blocks Read+ | The cumulative number of heap blocks read. | +| Index Blocks Hit | The number of index blocks found in the cache. | +| Index Blocks Hit+ | The cumulative number of index blocks found in the cache. | +| Index Blocks Read | The number of index blocks read. | +| Index Blocks Read+ | The cumulative number of index blocks read. | +| Index Size (MB) | The size of the specified index (in megabytes). | +| In Packets Discards | The number of inbound packets discarded. | +| In Packets Discards+ | The cumulative number of inbound packets discarded. | +| In Packets Errors | The number of inbound packets that contain errors. | +| In Packets Errors+ | The cumulative number of inbound packets that contain errors. | +| Link Bandwidth (Mbit/s) | The speed of the network adapter (in megabits per second). | +| Load Average - 15 Minute | CPU saturation (in percent) - 15 minute sampling average. | +| Load Average - 1 Minute | CPU saturation (in percent) - 1 minute sampling average. | +| Load Average - 5 Minute | CPU saturation (in percent) - 5 minute sampling average. | +| Load Percentage | CPU saturation in percent. | +| Number of Prepared Transactions+ | The cumulative number of prepared transactions. | +| Number of WAL Files+ | The cumulative number of write-ahead log files. | +| Out Packets Discards | The number of outbound packets discarded. | +| Out Packets Discards+ | The cumulative number of outbound packets discarded. | +| Out Packets Errors | The number of outbound packets that contain errors. | +| Out Packets Errors+ | The cumulative number of outbound packets that contain errors. | +| Packets Received | The number of packets received. | +| Packets Received+ | The cumulative number of packets received. | +| Packets Sent | The number of packets sent. | +| Packets Sent+ | The cumulative number of packets sent. | +| Size (MB) | The total size of the disk (in megabytes). | +| Size of Indexes (MB) | The size of indexes on the specified table (in megabytes). | +| Space Available (MB) | The current disk space available (in megabytes). | +| Space Used (MB) | The current disk space used (in megabytes). | +| Table Size (MB) | The size of the specified table (in megabytes). | +| Tablespace Size (MB) | The size of the specified tablespace (in megabytes). | +| Temp Buffers (MB) | The size of temporary buffers (in megabytes). | +| Toast Blocks Hit | The number of TOAST blocks found in the cache. | +| Toast Blocks Hit+ | The cumulative number of TOAST blocks found in the cache. | +| Toast Blocks Read | The number of TOAST blocks read. | +| Toast Blocks Read+ | The cumulative number of TOAST blocks read. | +| Total RAM Memory | The total amount of RAM memory on the system (in megabytes). | +| Total Swap Memory | The total amount of swap space on the system (in megabytes). | +| Total Table Size w/Indexes and Toast | The total size of the specified table (including indexes and associated oversized attributes). | +| Transactions Aborted | The number of aborted transactions. | +| Transactions Aborted+ | The cumulative number of aborted transactions. | +| Transactions Committed | The number of committed transactions. | +| Transactions Committed+ | The cumulative number of committed transactions. | +| Tuples Deleted | The number of tuples deleted from the specified table. | +| Tuples Deleted+ | The cumulative number of tuples deleted from the specified table. | +| Tuples Estimated by ANALYZE | The number of visible tuples in the specified table. | +| Tuples Estimated by ANALYZE+ | The cumulative number of visible tuples in the specified table. | +| Tuples Fetched | The number of tuples fetched from the specified table. | +| Tuples Fetched+ | The cumulative number of tuples fetched from the specified table. | +| Tuples HOT Updated | The number of tuples HOT updated. In a HOT update, the new tuple resides in the same block as the original tuple and the tuples share an index entry. | +| Tuples HOT Updated+ | The cumulative number of tuples HOT updated. In a HOT update, the new tuple resides in the same block as the original tuple and the tuples share an index entry. | +| Tuples Inserted | The number of tuples inserted into the specified table. | +| Tuples Inserted+ | The cumulative number of tuples inserted into the specified table. | +| Tuples Returned | The number of tuples returned in result sets. | +| Tuples Returned+ | The cumulative number of tuples returned in result sets. | +| Tuples Updated | The number of tuples updated in the specified table. | +| Tuples Updated+ | The cumulative number of tuples updated in the specified table. | +| WAL Segment Size (MB) | The segment size of the write-ahead log (in megabytes). | + +!!! Note + The '+' following the name of a metric signifies that the data for the metric is gathered cumulatively; those metrics that are not followed by the '+' sign are collected as a 'point-in-time' value. + +## PEM Probes – Reference + +A probe is a scheduled task that retrieves information about the database objects that are being monitored by the PEM agent. PEM uses the collected information to build the graphs displayed on each dashboard. The Manage Probes tab (accessed via the Management menu) allows you to modify the data collection schedule and the length of time that PEM will retain information returned by a specific probe. + +| Probe Name | Information Monitored by Probe | Level | +| ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | +| Background Writer Statistics | This probe monitors information about the background writer. The information includes:
The number of timed checkpoints
The number of requested checkpoints
The number of buffers written (by checkpoint)
The number of buffers written (by background writer)
The number of background writer cycles
The number of background buffers written
The number of buffers allocated | Server | +| Blocked Session Information | This probe provides information about blocked sessions. | Server | +| CPU Usage | This probe monitors CPU Usage information. | Agent | +| Data and Log File Analysis | This probe monitors information about log files. The information includes:
The name of the log file
The directory in which the log file resides | Server | +| Database Statistics | This probe monitors database statistics. The information includes:
The number of backends
The number of transactions committed
The number of transactions rolled back
The number of blocks read
The number of blocks hit
The number of rows returned
The number of rows fetched
The number of rows inserted
The number of rows updated
The number of rows deleted | Server | +| Disk Busy Info | This probe monitors information about disk activity.
Note: This probe is not supported on Mac OS X, Solaris or HP-UX | Agent | +| Disk Space | This probe monitors information about disk space usage. The information includes:
The amount of disk space used
The amount of disk space available | Agent | +| EDB Audit Configuration | This probe monitors the audit logging configuration of EDB Postgres Advanced Server. | Server | +| Failover Manager Cluster Info | This probe monitors a Failover Manager cluster, returning information about the cluster. This probe is disabled unless a cluster name and path of the Failover Manager binary is provided on the Server Properties dialog. | Server | +| Failover Manager Node Status | This probe monitors a Failover Manager cluster, returning detailed about each node within the cluster. This probe is disabled unless a cluster name and path of the Failover Manager binary is provided on the Server Properties dialog. | Server | +| Function Statistics | This probe monitors a database, retrieving information about functions. The information includes:
Function names
Argument types
Return values | Database | +| Index Size | This probe monitors a database, retrieving information about indexes. The information includes:
The name of the index
The time the data was gathered
The size of the index (in MB's) | Database | +| Index Statistics | This probe monitors index statistics. The information includes:
The number of index scans
The number of rows read
The number of rows fetched
The number of blocks read
The number of blocks hit | Database | +| Installed Packages | This probe monitors the packages that are currently installed. The information gathered includes:
The name of the installed package
The version of the installed package
The date and time that the probe executed | Agent | +| IO Analysis | This probe monitors disk I/O information in. The information includes:
The number of blocks read
The number of blocks written
The date and time that the probe executed
Note: This probe is not supported on Mac OS X | Agent | +| Load Average | This probe monitors CPU load averages. The information includes:
The 1-minute load average
The 5-minute load average
The 15-minute load average
Note: This probe is not supported on Windows | Agent | +| Lock Information | This probe monitors lock information. The information includes:
The database name
The lock type
The lock mode
The process holding the lock | Server | +| Memory Usage | This probe monitors information about system memory usage. | Agent | +| Network Statistics | This probe monitors network statistics. The information includes:
The interface IP address
The number of packets sent
The number of packets received
The number of bytes sent
The number of bytes received
The link speed (in MB/second) | Agent | +| Number of Prepared Transactions | This probe stores the number of prepared transactions. | Server | +| Number of WAL Files | This probe monitors the number of WAL files. | Server | +| Object Catalog: Database | This probe monitors a list of databases and their properties The information includes:
The database name
The database encoding type
If the database allows user connections or system connections | Server | +| Object Catalog: Foreign Key | This probe monitors a list of foreign keys and their properties. The information includes:
The name of the table that contains the foreign key
The name of the table that the foreign key references
The name of the database in which the table resides
The name of the schema in which the table resides | Schema | +| Object Catalog: Function | This probe monitors a list of functions and their properties. The information includes:
The name of the function
The name of the schema in which the function resides
The name of the database in which the function resides | Schema | +| Object Catalog: Index | This probe monitors a list of indexes and their properties. The information includes:
The name of the index
The name of the table that the index is associated with
The name of the database in which the indexed table resides | Schema | +| Object Catalog: Schema | This probe monitors a list of schemas and their associated databases and servers. | Database | +| Object Catalog: Sequence | This probe monitors a list of sequences and their properties. | Schema | +| Object Catalog: Table | This probe monitors a list of table information. The information includes:
The table name
The name of the schema in which the table resides
The name of the database in which the schema resides
A Boolean indicator that indicates if the table has a primary key | Schema | +| Object Catalog: Tablespace | This probe monitors a list of tablespaces. | Server | +| Operating System Information | This probe monitors the operating system details and boot time. | Agent | +| Package Catalog | This probe monitors the packages that are currently available for installation. The information gathered includes:
The package name
The package version | Agent | +| PG HBA Conf | This probe monitors authentication configuration information from the pg_hba.conf file. | Server | +| Server Information | This probe monitors server information. | Server | +| Session Information | This probe monitors session information. The information includes:
The name of the session user
The date and time that the session connected to the server
The status of the session at the time that the information was gathered (idle, waiting, etc)
The client address and port number | Server | +| Settings | This probe monitors the values currently assigned to GUC variables. | Server | +| SQL Protect | This probe monitors a server, retrieving information about SQL injection attacks. | Server | +| Slony Replication | This probe monitors lag data for clusters replicated using Slony. | Database | +| Streaming Replication | This probe monitors a cluster that is using streaming replication, retrieving information about:
The sent Xlog location (in bytes)
The write Xlog location (in bytes)
The flush Xlog location (in bytes)
The replay Xlog location (in bytes)
The Xlog lag (in segments)
The Xlog lag (in pages) | Server | +| Streaming Replication Lag Time | This probe monitors a cluster that is using streaming replication, retrieving lag information about:
Replication lag time (in seconds)
Current status of replication (running/paused) | Server | +| Streaming Replication Database Conflicts | This probe monitors a database that is using streaming replication, retrieving information about any conflicts that arise. This includes information about queries that have been canceled due to:
The # of drop tablespace conflicts
The # of lock timeout conflicts
The # of old snapshot conflicts
The # of pinned buffer conflicts
The # of deadlock conflicts | Server | +| Table Bloat | This probe monitors information about the current table bloat. The information includes:
The name of the table
The name of the schema in which the table resides
The estimated number of pages
The estimated number of wasted pages
The estimated number of bytes per row | Database | +| Table Frozen XID | This probe monitors the frozen XID of each table. | Schema | +| Table Size | This probe monitors table statistics. The information includes:
The number of sequential scans
The number of sequential scan rows
The number of index scans
The number of index scan rows
The number of rows inserted
The number of rows updated
The number of rows deleted
The number of live rows
The number of dead rows
The last VACUUM
The last auto-vacuum
The last ANALYZE
The last auto-analyze
The number of pages estimated by ANALYZE
The number of rows estimated by ANALYZE | Database | +| Table Statistics | This probe monitors a list of tablespaces and their sizes. | Server | +| Tablespace Size | This probe monitors a list of tablespaces and their sizes. | Server | +| User Information | This probe monitors a list of the current users. The stored information includes:
The user name
The user type (superuser vs. non-superuser)
The server to which the user is connected | Server | +| WAL Archive Status | This probe monitors the status of the WAL archive. The stored information includes:
The # of WAL archives done
The # of WAL archives pending
The last archive time
The # of WAL archives failed
The time of the last failure | Server | +| xDB Replication | This probe monitors lag data for clusters replicated using xDB replication. | Database | + +## PEM Pre-defined Alert Templates – Reference + +An alert definition contains a system-defined or user-defined set of conditions that PEM compares to the system statistics; if the statistics deviate from the boundaries specified for that statistic, the alert triggers, and the PEM client displays a warning on the \*Alerts Overview\* page, and optionally sends a notification to a monitoring user. + +The tables that follow list the system-defined alert templates that you can use to create an alert; please note that this list is subject to change, and may vary by system: + +### Templates applicable on Agent + +| Template Name | Description | +| ---------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| Load Average (1 minute) | 1-minute system load average. | +| Load Average (5 minutes) | 5-minute system load average. | +| Load Average (15 minutes) | 15-minute system load average. | +| Load Average per CPU Core (1 minutes) | 1-minute system load average per CPU core. | +| Load Average per CPU Core (5 minutes) | 5-minute system load average per CPU core. | +| Load Average per CPU Core (15 minutes) | 15-minute system load average per CPU core. | +| CPU utilization | Average CPU consumption. | +| Number of CPUs running higher than a | Number of CPUs running at greater than K% utilization threshold | +| Free memory percentage | Free memory as a percent of total system memory. | +| Memory used percentage | Percentage of memory used. | +| Swap consumption | Swap space consumed (in megabytes). | +| Swap consumption percentage | Percentage of swap area consumed. | +| Disk Consumption | Disk space consumed (in megabytes). | +| Disk consumption percentage | Percentage of disk consumed. | +| Disk Available | Disk space available (in megabytes). | +| Disk busy percentage | Percentage of disk busy. | +| Most used disk percentage | Percentage used of the most utilized disk on the system. | +| Total table bloat on host | The total space wasted by tables on a host, in MB. | +| Highest table bloat on host | The most space wasted by a table on a host, in MB. | +| Average table bloat on host | The average space wasted by tables on host, in MB. | +| Table size on host | The size of tables on host, in MB. | +| Database size on host | The size of databases on host, in MB. | +| Number of ERRORS in the logfile on agent N in last X hours. | The number of ERRORS in the logfile on agent N in last X hours | +| Number of WARNINGS in the logfile on agent N in last X hours | The number of WARNINGS in the logfile on agent N in last X hours. | +| Number of WARNINGS or ERRORS in the logfile on agent N in last X hours | The number of WARNINGS or ERRORS in the logfile on agent N in last X hours. | +| Package version mismatch | Check for package version mismatch as per catalog. | +| Total materialized view bloat on host | The total space wasted by materialized views on a host, in MB. | +| Highest materialized view bloat on host | The most space wasted by a materialized view on a host, in MB. | +| Average materialized view bloat on host | The average space wasted by materialized views on host, in MB. | +| Materialized view size on host | The size of materialized views on host, in MB. | +| Agent Down | Specified agent is currently down. | + +### Templates applicable on Server + +| Template Name | Description | +| --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| Total table bloat in server | The total space wasted by tables in server, in MB. | +| Largest table (by multiple of unbloated size) | Largest table in server, calculated as a multiple of its own estimated unbloated size; exclude tables smaller than N MB. | +| Highest table bloat in server | The most space wasted by a table in server, in MB. | +| Average table bloat in server | The average space wasted by tables in server, in MB. | +| Table size in server | The size of tables in server, in MB. | +| Database size in server | The size of databases in server, in MB. | +| Number of WAL files | Total number of Write Ahead Log files. | +| Number of prepared transactions | Number of transactions in prepared state. | +| Total connections | Total number of connections in the server. | +| Total connections as percentage of | Total number of connections in the server as a percentage of maximum | +| max_connections | connections allowed on server, settings. | +| Unused, non-superuser connections | Number of unused, non-superuser connections on the server, user_info, settings. | +| Unused, non-superuser connections as percentage of max_connections | Number of unused, non-superuser connections on the server as a percentage of max_connections of max_connections, user_info, settings. | +| Ungranted locks | Number of ungranted locks in server. | +| Percentage of buffers written by backends | The percentage of buffers written by backends vs. the total buffers written. | +| Percentage of buffers written by checkpoint | The percentage of buffers written by the checkpoints vs. the total buffers written. | +| Buffers written per second | Number of buffers written per second, over the last two probe cycles. | +| Buffers allocated per second | Number of buffers allocated per second, over the last two probe cycles. | +| Connections in idle state | Number of connections in server that are in idle state. | +| Connections in idle-in-transaction state | Number of connections in server that are in idle-in-transaction state. | +| Connections in idle-in-transaction state, as percentage of max_connections | Number of connections in server that are in idle-in-transaction state, as a percentage of maximum connections allowed on server, settings. | +| Long-running idle connections | Number of connections in the server that have been idle for more than N seconds. | +| Long-running idle connections and idle transactions | Number of connections in the server that have been idle or transactions idle-in-transaction for more than N seconds. | +| Long-running idle transactions | Number of connections in the server that have been idle in transaction for more than N seconds. | +| Long-running transactions | Number of transactions in server that have been running for more than N seconds. | +| Long-running queries | Number of queries in server that have been running for more than N seconds. | +| Long-running vacuums | Number of vacuum operations in server that have been running for more than N seconds. | +| Long-running autovacuums | Number of autovacuum operations in server that have been running for more than N seconds. | +| Committed transactions percentage | Percentage of transactions in the server that committed vs. that rolled-back over last N minutes. | +| Shared buffers hit percentage | Percentage of block read requests in the server that were satisfied by shared buffers, over last N minutes. | +| Tuples inserted | Tuples inserted into server over last N minutes. | +| InfiniteCache buffers hit percentage | Percentage of block read requests in the server that were satisfied by InfiniteCache, over last N minutes. | +| Tuples fetched | Tuples fetched from server over last N minutes. | +| Tuples returned | Tuples returned from server over last N minutes. | +| Dead Tuples | Number of estimated dead tuples in server. | +| Tuples updated | Tuples updated in server over last N minutes. | +| Tuples deleted | Tuples deleted from server over last N minutes. | +| Tuples hot updated | Tuples hot updated in server, over last N minutes. | +| Sequential Scans | Number of full table scans in server, over last N minutes. | +| Index Scans | Number of index scans in server, over last N minutes. | +| Hot update percentage | Percentage of hot updates in the server over last N minutes. | +| Live Tuples | Number of estimated live tuples in server. | +| Dead tuples percentage | Percentage of estimated dead tuples in server. | +| Last Vacuum | Hours since last vacuum on the server. | +| Last AutoVacuum | Hours since last autovacuum on the server. | +| Last Analyze | Hours since last analyze on the server. | +| Last AutoAnalyze | Hours since last autoanalyze on the server. | +| Percentage of buffers written by backends over the last N minutes | The percentage of buffers written by backends vs. the total buffers backends over last N | +| Table Count | Total number of tables in server. | +| Function Count | Total number of functions in server. | +| Sequence Count | Total number of sequences in server. | +| A user expires in N days | Number of days before a user's validity expires. | +| Index size as a percentage of table size | Size of the indexes in server, as a percentage of their tables' size. | +| Largest index by table-size percentage oc_index, table_size. | Largest index in server, calculated as percentage of its table's size. | +| Number of ERRORS in the logfile on server M in the last X hours | The number of ERRORS in the logfile on server M in last X hours. | +| Number of WARNINGS in the logfile on server M in the last X hours | The number of WARNINGS in logfile on server M in the last X hours. | +| Number of WARNINGS or ERRORS in the logfile on server M in the last X hours | The number of WARNINGS or ERRORS in the logfile on server M in the last X hours. | +| Number of attacks detected in the last N minutes | The number of SQL injection attacks occurred in the last N minutes. | +| Number of attacks detected in the last N minutes by username | The number of SQL injection attacks occurred in the last N minutes by username. | +| Number of replica servers lag behind the primary by write location | > Streaming Replication: number of replica servers lag behind the primary by write location. | +| Number of replica servers lag behind the primary by flush location | > Streaming Replication: number of replica servers lag behind the primary by flush location. | +| Number of replica servers lag behind the primary by replay location | > Streaming Replication: number of replica servers lag behind the primary by replay location. | +| Replica server lag behind the primary by write location | > Streaming Replication: replica server lag behind the primary by write location in MB. | +| Replica server lag behind the primary by flush location | > Streaming Replication: replica server lag behind the primary by flush location in MB. | +| Replica server lag behind the primary by replay location | > Streaming Replication: replica server lag behind the primary by replay location in MB. | +| Replica server lag behind the primary by size (MB) | > Streaming Replication: replica server lag behind the primary by size in MB. | +| Replica server lag behind the primary by WAL segments | > Streaming Replication: replica server lag behind the primary by WAL segments. | +| Replica server lag behind the primary by WAL pages | > Streaming Replication: replica server lag behind the primary by WAL pages. | +| Total materialized view bloat in server | The total space wasted by materialized views in server, in MB. | +| Largest materialized view (by multiple of unbloated size) | Largest materialized view in server, calculated as a multiple of its own estimated unbloated size; exclude materialized views smaller than N MB. | +| Highest materialized view bloat in server | The most space wasted by a materialized view in server, in MB. | +| Average materialized view bloat in server | The average space wasted by materialized views in server, in MB. | +| Materialized view size in server | The size of materialized view in server, in MB. | +| View Count | Total number of views in server. | +| Materialized View Count | Total number of materialized views in server. | +| Audit config mismatch | Check for audit config parameter mismatch | +| Server Down | Specified server is currently inaccessible. | +| Number of WAL archives pending | Streaming Replication: number of WAL files pending to be replayed at replica. | +| Number of minutes lag of replica server from primary server | > Streaming Replication: number of minutes replica node is lagging behind the primary node. | +| Log config mismatch | Check for log config parameter mismatch. | + +### Templates applicable on Database + +| Template Name | Description | +| ------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| Total table bloat in database | The total space wasted by tables in database, in MB. | +| Largest table (by multiple of unbloated size) | Largest table in database, calculated as a multiple of its own estimated unbloated size; exclude tables smaller than N MB. | +| Highest table bloat in database | The most space wasted by a table in database, in MB. | +| Average table bloat in database | The average space wasted by tables in database, in MB. | +| Table size in database | The size of tables in database, in MB. | +| Database size | The size of the database, in MB. | +| Total connections | Total number of connections in the database. | +| Total connections as percentage of max_connections | Total number of connections in the database as a percentage of maximum connections allowed on server, settings. | +| Ungranted locks | Number of ungranted locks in database. | +| Connections in idle state | Number of connections in database that are in idle state. | +| Connections in idle-in-transaction state | Number of connections in database that are in idle-in-transaction state | +| Connections in idle-in-transaction state,as percentage of max_connections | Number of connections in database that are in idle-in-transaction state, as a percentage of maximum connections allowed on server, settings. | +| Long-running idle connections | Number of connections in the database that have been idle for more than N seconds. | +| Long-running idle connections and idle transactions | Number of connections in the database that have been idle or idle-in-transaction for more than N seconds. | +| Long-running idle transactions | Number of connections in the database that have been idle in transaction for more than N seconds. | +| Long-running transactions | Number of transactions in database that have been running for more than N seconds. | +| Long-running queries | Number of queries in database that have been running for more than N seconds. | +| Long-running vacuums | Number of vacuum operations in database that have been running for more than N seconds. | +| Long-running autovacuums | Number of autovacuum operations in database that have been running for more than N seconds. | +| Committed transactions percentage | Percentage of transactions in the database that committed vs. that rolled-back over last N minutes. | +| Shared buffers hit percentage | Percentage of block read requests in the database that were satisfied by shared buffers, over last N minutes. | +| InfiniteCache buffers hit percentage | Percentage of block read requests in the database that were satisfied by InfiniteCache, over last N minutes. | +| Tuples fetched | Tuples fetched from database over last N minutes. | +| Tuples returned | Tuples returned from database over last N minutes. | +| Tuples inserted | Tuples inserted into database over last N minutes. | +| Tuples updated | Tuples updated in database over last N minutes. | +| Tuples deleted | Tuples deleted from database over last N minutes. | +| Tuples hot updated | Tuples hot updated in database, over last N minutes. | +| Sequential Scans | Number of full table scans in database, over last N minutes. | +| Index Scans | Number of index scans in database, over last N minutes. | +| Hot update percentage | Percentage of hot updates in the database over last N minutes. | +| Live Tuples | Number of estimated live tuples in database. | +| Dead Tuples | Number of estimated dead tuples in database. | +| Dead tuples percentage | Percentage of estimated dead tuples in database. | +| Last Vacuum | Hours since last vacuum on the database. | +| Last AutoVacuum | Hours since last autovacuum on the database. | +| Last Analyze | Hours since last analyze on the database. | +| Last AutoAnalyze | Hours since last autoanalyze on the database. | +| Table Count | Total number of tables in database. | +| Function Count | Total number of functions in database. | +| Sequence Count | Total number of sequences in database. | +| Index size as a percentage of table size | Size of the indexes in database, as a percentage of their tables' size. | +| Largest index by table-size percentage | Largest index in database, calculated as percentage of its table's size, oc_index, table_size. | +| Database Frozen XID | The age (in transactions before the current transaction) of the database's frozen transaction ID. | +| Number of attacks detected in the | The number of SQL injection attacks occurred in the last N minutes. last N minutes | +| Number of attacks detected in the | The number of SQL injection attacks occurred in the last N minutes by last N minutes by username. | +| Queries that have been cancelled due to dropped tablespaces | Streaming Replication: number of queries that have been cancelled due to dropped tablespaces. | +| Queries that have been cancelled due to lock timeouts | Streaming Replication: number of queries that have been cancelled due to lock timeouts. | +| Queries that have been cancelled due to old snapshots | Streaming Replication: number of queries that have been cancelled due to old snapshots. | +| Queries that have been cancelled due to pinned buffers | Streaming Replication: number of queries that have been cancelled due to pinned buffers. | +| Queries that have been cancelled due to deadlocks | Streaming Replication: number of queries that have been cancelled due to deadlocks. | +| Total events lagging in all slony clusters | Slony Replication: total events lagging in all slony clusters. | +| Events lagging in one slony cluster | Slony Replication: events lagging in one slony cluster. | +| Lag time (minutes) in one slony cluster | Slony Replication: lag time (minutes) in one slony cluster. | +| Total rows lagging in xdb single primary replication | > xDB Replication: Total rows lagging in xdb single primary replication | +| Total rows lagging in xdb multi primary replication | > xDB Replication: Total rows lagging in xdb multi primary replication. | +| Total materialized view bloat in database | The total space wasted by materialized views in database, in MB. | +| Largest materialized view (by multiple of unbloated size) | Largest materialized view in database, calculated as a multiple of its estimated unbloated size; exclude materialized views smaller than N MB. | +| Highest materialized view bloat in database | The most space wasted by a materialized view in database, in MB. | +| Average materialized view bloat in database | The average space wasted by materialized views in database, in MB. | +| Materialized view size in database | The size of materialized view in database, in MB. | +| View Count | Total number of views in database. | +| Materialized View Count | Total number of materialized views in database. | + +### Templates applicable on Schema + +| Template Name | Description | +| --------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | +| Total table bloat in schema | The total space wasted by tables in schema, in MB. | +| Largest table (by multiple of unbloated size) | Largest table in schema, calculated as a multiple of its own estimated unbloated size; exclude tables smaller than N MB. | +| Highest table bloat in schema | The most space wasted by a table in schema, in MB. | +| Average table bloat in schema | The average space wasted by tables in schema, in MB. | +| Table size in schema | The size of tables in schema, in MB. | +| Tuples inserted | Tuples inserted in schema over last N minutes. | +| Tuples updated | Tuples updated in schema over last N minutes. | +| Tuples deleted | Tuples deleted from schema over last N minutes. | +| Tuples hot updated | Tuples hot updated in schema, over last N minutes. | +| Sequential Scans | Number of full table scans in schema, over last N minutes. | +| Index Scans | Number of index scans in schema, over last N minutes. | +| Hot update percentage | Percentage of hot updates in the schema over last N minutes. | +| Live Tuples | Number of estimated live tuples in schema. | +| Dead Tuples | Number of estimated dead tuples in schema. | +| Dead tuples percentage | Percentage of estimated dead tuples in schema. | +| Last Vacuum | Hours since last vacuum on the schema. | +| Last AutoVacuum | Hours since last autovacuum on the schema. | +| Last Analyze | Hours since last analyze on the schema. | +| Last AutoAnalyze | Hours since last autoanalyze on the schema. | +| Table Count | Total number of tables in schema. | +| Function Count | Total number of functions in schema. | +| Sequence Count | Total number of sequences in schema. | +| Index size as a percentage of table size | Size of the indexes in schema, as a percentage of their table's size. | +| Largest index by table-size percentage | Largest index in schema, calculated as percentage of its table's size, oc_index, table_size | +| Materialized View bloat | Space wasted by the materialized view, in MB. | +| Total materialized view bloat in schema | The total space wasted by materialized views in schema, in MB. | +| Materialized view size as a multiple of unbloated size | Size of the materialized view as a multiple of estimated unbloated size. | +| Largest materialized view (by multiple of unbloated size) | Largest materialized view in schema, calculated as a multiple of its own estimated unbloated size; exclude materialized view smaller than N MB. | +| Highest materialized view bloat in schema | The most space wasted by a materialized view in schema, in MB. | +| Average materialized view bloat in schema | The average space wasted by materialized views in schema, in MB. | +| Materialized view size | The size of materialized view, in MB. | +| Materialized view size in schema | The size of materialized views in schema, in MB. | +| View Count | Total number of views in schema. | +| Materialized View Count | Total number of materialized views in schema. | +| Materialized View Frozen XID | The age (in transactions before the current transaction) of the materialized view's frozen transaction ID. | + +### Templates applicable on Table + +| Template Name | Description | +| ----------------------------------------- | ---------------------------------------------------------------------------------------------- | +| Table bloat | Space wasted by the table, in MB. | +| Table size | The size of table, in MB. | +| Table size as a multiple of ubloated size | Size of the table as a multiple of estimated unbloated size. | +| Tuples inserted | Tuples inserted in table over last N minutes. | +| Tuples updated | Tuples updated in table over last N minutes. | +| Tuples deleted | Tuples deleted from table over last N minutes. | +| Tuples hot updated | Tuples hot updated in table, over last N minutes. | +| Sequential Scans | Number of full table scans on table, over last N minutes. | +| Index Scans | Number of index scans on table, over last N minutes. | +| Hot update percentage | Percentage of hot updates in the table over last N minutes. | +| Live Tuples | Number of estimated live tuples in table. | +| Dead Tuples | Number of estimated dead tuples in table. | +| Dead tuples percentage | Percentage of estimated dead tuples in table. | +| Last Vacuum | Hours since last vacuum on the table. | +| Last AutoVacuum | Hours since last autovacuum on the table. | +| Last Analyze | Hours since last analyze on the table. | +| Last AutoAnalyze | Hours since last autoanalyze on the table. | +| Row Count | Estimated number of rows in a table. | +| Index size as a percentage of table size | Size of the indexes on table, as a percentage of table's size. | +| Table Frozen XID | The age (in transactions before the current transaction) of the table's frozen transaction ID. | + +### Global Templates + +| Template Name | Description | +| ------------- | --------------------------------------------------- | +| Agents Down | Number of agents that haven't reported in recently. | +| Servers Down | Number of servers that are currently inaccessible. | +| Alert Errors | Number of alerts in an error state. | diff --git a/product_docs/docs/pem/7.16/pem_ent_feat/index.mdx b/product_docs/docs/pem/7.16/pem_ent_feat/index.mdx new file mode 100644 index 00000000000..cd80fa4b990 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_ent_feat/index.mdx @@ -0,0 +1,16 @@ +--- +navTitle: Enterprise Features Guide +title: "PEM Enterprise Features Guide" +--- + +This guide will acquaint you with the tools and wizards that are built into the Postgres Enterprise Manager (PEM) web interface that make it easier for you to monitor and manage your system. + +This guide is not a comprehensive resource; rather, it is meant to serve as an aid to help you evaluate the tool and bring you up to speed with the basics of how to use the product. For more detailed information about using PEM's functionality, please see the online help made available by the PEM client. + +This document uses `Postgres` to mean either the PostgreSQL or EDB Postgres Advanced Server database. + +
+ +what's_new pem_query_tool pem_schema_diff_tool performance_monitoring_and_management capacity_manager audit_manager log_manager sql_profiler tuning_wizard postgres_expert reports monitoring_failover_manager monitoring_xdb_replication_cluster performance_diagnostic reference conclusion + +
diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_linux/01_whats_new.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_linux/01_whats_new.mdx new file mode 100644 index 00000000000..b86a17720a6 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_linux/01_whats_new.mdx @@ -0,0 +1,21 @@ +--- +title: "What's New" +--- + +The following changes have been made to Postgres Enterprise Manager to create version 8.0.1: + +Improved the overall performance, usability, and stability of the product by: + +- Allowing the dash (-) character in the superuser name that is provided during configuration. +- Gracefully closing the operating system resources during batch probe and command execution to avoid errors. +- Improved support for unicode string handling in pemAgent. +- Fixed a regression restoring BART backup when agent is not bound with the BART server. +- In addition to the above-listed items, a few other minor bugs have also been fixed. + +PEM 8.0.1 provides an option to hide or unhide the Dashboard, Statistics, Dependents, and Dependencies tabs. + +Features and Functionalities removed in recent versions of PEM: + +- PEM 8.0 and later is not supported on CentOS/RHEL 6.x. +- EDB ARK UI Management is not supported by PEM 7.16 and later. +- PEM 7.16 and later is not supported on Internet explorer version 11 and lesser. diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_linux/02_pem_hardware_software_requirements.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_linux/02_pem_hardware_software_requirements.mdx new file mode 100644 index 00000000000..119dc8d6bfd --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_linux/02_pem_hardware_software_requirements.mdx @@ -0,0 +1,41 @@ +--- +title: "PEM - Hardware and Software Requirements" +--- + + + +## Hardware Prerequisites + +For optimum performance when monitoring servers and rendering dashboards, we recommend installing PEM on a system with at least: + +- 4 CPU cores +- 8 GB of RAM +- 100 GB of Storage + +Additional disk space is required for data storage. Please note that resource usage will vary based on which probes are defined and enabled, and the activity level on the monitored databases. Monitoring server resources (as you use PEM) will let you know when you need to expand your initial system configuration. + +## Software Prerequisites + +**Platforms and Versions Support** + +For information about the platforms and versions supported by PEM, visit the EnterpriseDB website at: + + + +**Please note**: PEM 8.0.1 is no longer supported on CentOS/RHEL/OEL 6.x platforms. It is strongly recommended that EDB products running on these platforms be migrated to a supported platform. + +**Modifying the pg_hba.conf File** + +The `pg_hba.conf` file manages connections for the Postgres server. You must ensure that the `pg_hba.conf` file on each monitored server allows connections from the PEM server, the monitoring PEM Agent, and the host of the PEM-HTTPD server. + +For information about modifying the `pg_hba.conf` file, see the [PEM Administrator's Guide](https://www.enterprisedb.com/docs/pem/latest/pem_admin/). + +Information about managing authentication is also available in the [Postgres core documentation](https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html). + +**Firewall Restrictions** + +Please note that you must adjust your firewall to allow communication between PEM components. + +**Supported Locales** + +Currently, the PEM server and web interface support a locale of `English(US) en_US` and use of a period (.) as a language separator character. Using an alternate locale, or a separator character other than a period may result in errors. diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_linux/03_pem_architecture.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_linux/03_pem_architecture.mdx new file mode 100644 index 00000000000..7b0aaddc123 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_linux/03_pem_architecture.mdx @@ -0,0 +1,103 @@ +--- +title: "PEM Architecture" +--- + +Postgres Enterprise Manager (PEM) is a tool designed to monitor and manage multiple Postgres servers through a single GUI interface. PEM is capable of monitoring the following areas of the infrastructure: + +Note: The term Postgres refers to either PostgreSQL or EDB Postgres Advanced Server. + +- **Hosts** - One or more servers (physical or virtual) and their operating systems. +- **Servers** - One or more instances of PostgreSQL or EDB Postgres Advanced Server running on a host. +- **Databases** - One or more databases and the schema objects (tables, indexes, etc.) within them. + +PEM consists of a number of individual software components; the individual components are described below. + +- **PEM Server** - The PEM Server is used as the data repository for monitoring data and as a server to which both Agents and Clients connect. The PEM server consists of an instance of PostgreSQL and an associated database for storage of monitoring data, and a server that provides web services. +- **PEM Agent** - The PEM Agent is responsible for executing tasks and reporting statistics from the Agent host and monitored Postgres instances to the PEM server. A single PEM Agent can monitor multiple installed instances of Postgres that reside on one or many hosts. +- **PEM Web Client** - The PEM web interface allows you to manage and monitor Postgres servers and utilize PEM extended functionality. The web interface software is installed with the PEM server and is accessed via any supported web browser. +- **SQL Profiler** - SQL Profiler is a Postgres server plugin to record the monitoring data and query plans to be analysed by the SQL Profiler tool in PEM. This is an optional component of PEM, but the plugin must be installed into each instance of Postgres with which you wish to use the SQL Profiler tool. The SQL Profiler may be used with any supported version of an EDB distribution of a PostgreSQL server or Advanced Server (not just those managed through the PEM server). See the [PEM SQL Profiler Configuration Guide](/pem/latest/) for details and supported versions. + +**PEM architecture** + +The following architectural diagram illustrates the relationships between the PEM server, clients, and managed as well as unmanaged Postgres servers. + +![PEM Architecture](../images/pem_architecture.png) + +PEM Architecture + +## The PEM Server + +![PEM Server](../images/pem_server.png) + +PEM Server + +The PEM server consists of an instance of Postgres, an instance of the Apache web-server providing web services to the client, and a PEM Agent. PEM utilizes a server-side cryptographic plugin to generate authentication certificates. + +The instance of Postgres (a database server) and an instance of the Apache web-server ( HTTPD) can be on the same host or on separate hosts. + +- **Postgres Instance (Database server)** - This is the backend database server. It hosts a database named **pem** which acts as the repository for PEM Server. The **pem** database contains several schemas that store metric data collected from each monitored host, server, and database. + - **pem** - This schema is the core of the PEM application. It contains the definitions of configuration functions, tables, or views required by the application. + - **pemdata** - This schema stores the current snapshot of the monitored data. + - **pemhistory** - This schema stores the historical monitored data. +- **Apache Web Server (HTTPD)** - The PEM Web Application is deployed as a WSGI application with HTTPD to provide web services to the client. It is comprised of the following: + - **Web content presentation** - The presentation layer is created by the Web Application (for example Browser, login page,..). + - **Rest API** - The REST API allows integration with other apps and services. + - **Database Server Administration/Management** - Database server administration and management activities like CREATE, ALTER, DROP, etc. can be performed for managed as well as unmanaged servers. + - **Dashboard/Chart generation** - Internally, the web application includes functionality that generates Dashboards and Charts. + - **Management Tools** - The Audit Manager, Capacity Manager, Log Manager, Postgres Expert, Postgres Log Analysis Expert, and the Tuning Wizard are made available in the Web Application. + - Other tools provide functionality on managed or unmanaged servers: + - **SQL Profiler UI Integration** - SQL Profiler generates easily analyzed traces of session content. + - **Query Editor/Data View** - The Query editor allows you to query, edit, and view data. + - **Debugger** - The Debugger helps you debug queries. + - **Performance Diagnostics** - Performance Diagnostics help you analyze the performance of Postgres instances. + +We recommend that you use a dedicated machine to host production instances of the PEM backend database. The host may be subject to high levels of data throughput, depending on the number of database servers that are being monitored and the workloads the servers are processing. + +## The PEM Agent + +![PEM Agent](../images/pem_agent.png) + +PEM Agent + +The PEM Agent is responsible for the collection of monitoring data from the machine and operating system, as well as from each of the Postgres instances to which they are bound. Each PEM Agent can monitor one physical or virtual machine and is capable of monitoring multiple database servers locally - installed on the same system, or remotely - installed on other systems. It is also responsible for executing other tasks that may be scheduled by the user (for example, server shutdowns, SQL Profiler traces, user-defined jobs). + +A PEM Agent is installed by default on the PEM Server along with the installation of the PEM Server. It is generally referred to as a PEM Agent on the PEM Host. Separately, the PEM Agent can also be installed on the other servers hosting the Postgres instances to be monitored using PEM. + +Whether monitoring locally or remotely, the PEM Agent connects to the PEM Server using PostgreSQL’s libpq, using SSL certificate-based authentication. The PEM Agent installer in Windows and pemworker CLI in Linux is responsible for registering each agent with the PEM Server, and generating and installing the required certificates. + +Please note that there is only one-way traffic between the PEM Agent and PEM Server; the PEM Agent always connects to the PEM Server. + +The PEM Agent must be able to connect to each database server that it monitors. This connection is made over a TCP/IP connection (or optionally a Unix Domain Socket on Unix hosts), and may optionally use SSL. The user must configure the connection and authentication to the monitored server. + +Once configured, each agent collects statistics and other information on the host and each database server and database that it monitors. Each piece of information is known as a **metric** and is collected by a **probe**. Most probes will collect multiple metrics at once for efficiency. Examples of the metrics collected include: + +- Disk I/O statistics +- Network statistics +- Database server version string +- Database server configuration option (GUC) values +- Table access statistics +- Table and index sizes + +A list of PEM probes can be found [here](https://www.enterprisedb.com/docs/pem/latest/pem_online_help/04_toc_pem_features/12_pem_manage_probes/03_pem_probe_config/01_pem_probes/). + +By default, the PEM Agent bound to the database server collects the OS/Database monitoring statistics and also runs any scheduled tasks/jobs for that particular database server, storing data in the pem database on the PEM server. + +The Alert processing, SNMP/SMTP spoolers, and Nagios Spooler data is stored in the `pem` database on the PEM server and is then processed by the PEM Agent on the PEM Host by default. However, processing by other PEM Agents can be enabled by adjusting the SNMP/SMTP and Nagios parameters of the PEM Agents. + +To see more information about these parameters see [Server Configuration](https://www.enterprisedb.com/docs/pem/latest/pem_online_help/04_toc_pem_features/02_pem_server_config/01_pem_config_options/). + +## The PEM Web Client + +The PEM client is a web-based application that runs in supported browsers. The client's web interface connects to the PEM server and allows direct management of managed or unmanaged servers, and the databases and schemas that reside on them. + +The client allows you to use PEM functionality that makes use of the data logged on the server through features such as the dashboards, the Postgres Log Analysis Expert, and Capacity Manager. + +## The SQL Profiler Plugin + +You are not required to install the SQL Profiler plugin on every server, but you must install and configure the plugin on each server on which you wish to use the SQL Profiler. You may also want to install and configure SQL Profiler on un-monitored development servers. For ad-hoc use also, you may temporarily install the SQL Profiler plugin. + +The plugin is installed with the EDB Postgres Advanced Server distribution but must be installed separately for use with PostgreSQL. The SQL Profiler installer is available from the [EDB website](https://www.enterprisedb.com/downloads/edb-postgres-enterprise-manager). + +SQL Profiler may be used on servers that are not managed through PEM, but to perform scheduled traces, a server must have the plugin installed, and must be managed by an installed and configured PEM agent. + +For more information about using SQL Profiler, see the [PEM SQL Profiler Guide](https://www.enterprisedb.com/docs/pem/latest/pem_sqlprofiler/). diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/01_prerequisites_for_installing_pem_server.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/01_prerequisites_for_installing_pem_server.mdx new file mode 100644 index 00000000000..c9072287fd7 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/01_prerequisites_for_installing_pem_server.mdx @@ -0,0 +1,80 @@ +--- +title: "Prerequisites for Installing the PEM Server on Linux Platforms" +--- + +1. Install a backend database. + + When installing a PEM server on a Linux host, you must first install a backend database cluster which will hold the `pem` database. The PEM server’s backend database may be installed via package for Linux. The backend database must be one of the following versions: + + - EDB Postgres Advanced Server version 11 or above + + - PostgreSQL version 11 or above + + For detailed information about installing an Advanced Server or PostgreSQL database, please see the product documentation at the EDB website. + +2. Configure Postgres authentication on the backend database. + + The `pg_hba.conf` file on the backend database can be configured to use any supported authentication methods (for example: md5, trust,...) for connections. For information about modifying the `pg_hba.conf` file, see the [PostgreSQL core documentation](https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html). + +3. If you are using a PostgreSQL database, use the following command to install the `hstore contrib module`: + + ```text + yum install postgresql-contrib + ``` + + Where, `x` is the server version. + +4. Ensure that the `sslutils` extension is installed. + + - On an Advanced Server backend database, the `sslutils` extension is installed by default. + + - If you are using a PostgreSQL backend database, ensure you have access to the PostgreSQL community repository, and use the command: + + ```text + yum install sslutils_ + ``` + + Where, `x` is the server version. + + Please note that Debian 10 and Ubuntu 20 has increased the requirements to accept the certificates due to security reason. If a user wants to install the PEM Agent on any of the machines, they must upgrade `ssltuils` to 1.3 where 4096 bit RSA key and sha256 signature algorithm support has added.If the user does not upgrade `sslutils` to 1.3, then PEM Agent may fail to connect to the PEM backend database server, and it might log the error `ca md too weak`. + + +5. Adjust your firewall restrictions. + + If you are using a firewall, you must allow access to port `8443` on the PEM backend database: + + ```text + firewall-cmd --permanent --zone=public --add-port=8443/tcp + + firewall-cmd --reload + ``` + +6. Request credentials that allow you to access the EDB repositories: + To install the PEM Server, you must have credentials that allow access to the EDB repository. To request credentials for the repository, contact [EDB](https://www.enterprisedb.com/repository-access-request) . When using commands in the sections that follow, replace the `username` and `password` placeholders with the credentials provided by EDB + + +7. PEM is dependent on third-party components from the vendor repository, including the python3, libboost, openssl, snmp++, libcurl, etc. To ensure these components are up to date, you should update your operating system using following platform-specific commands. Minimum version require for openssl is 1.0.2k. + + To upgrade packages on a CentOS or RHEL 7.x host + + ```text + yum upgrade + ``` + + To upgrade packages on a CentOS or RHEL 8.x host + + ```text + dnf upgrade + ``` + + To upgrade packages on a Debian or Ubuntu host + + ```text + apt-get update + ``` + + To upgrade packages on a SLES host + + ```text + zypper update + ``` diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/02_installing_pem_server_and_apache_web_server_preferences.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/02_installing_pem_server_and_apache_web_server_preferences.mdx new file mode 100644 index 00000000000..489048ede18 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/02_installing_pem_server_and_apache_web_server_preferences.mdx @@ -0,0 +1,15 @@ +--- +title: "Web Server Hosting Preferences" +--- + +During the PEM server installation, you can specify your hosting preferences for the Apache Web Server(PEM-HTTPD): + +**To install the PEM Server and Apache Web Server (PEM-HTTPD) on the same host** + +Follow the installation steps; while running the configuration script, select the `Web Services and Database` option to install PEM Server and Apache Web Server on the same host. + +**To install the PEM Server and Apache Web Server (PEM-HTTPD) on separate hosts** + +Follow the installation steps on both the hosts. While running the configuration script, first configure the PEM Server host by selecting the `Database` option on first host and then configure an Apache Web Server (PEM-HTTPD) by selecting the `Web Services` option on the second host. + +For detailed information about configuring a PEM Server, see [Configuring the PEM Server on Linux Platforms](05_configuring_the_pem_server_on_linux/#configuring_the_pem_server_on_linux). diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/03_installing_pem_server_on_linux.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/03_installing_pem_server_on_linux.mdx new file mode 100644 index 00000000000..a2e97939480 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/03_installing_pem_server_on_linux.mdx @@ -0,0 +1,171 @@ +--- +title: 'Installing the PEM Server on Linux Platforms' +--- + +Before following the detailed instructions that install the PEM server on your specific platform, you must perform the prerequisite steps detailed in [Prerequisites for installing PEM Server](01_prerequisites_for_installing_pem_server/#prerequisites_for_installing_pem_server). + +## Installing the PEM Server on a CentOS or RHEL Host + +On a CentOS or RHEL system, you can use the `yum` package manager or `dnf` command to install a PEM Server; the installation tool you use will be dependent on the version of the host operating system. Before installing the server, you must ensure that your system contains the required prerequisite software listed below. + +**Install Version-Specific Software** + +Follow the version-specific instructions listed below to prepare your host system. + +- On a CentOS or RHEL 7.x host: + + ```text + yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm + ``` + +- On a CentOS or RHEL 8.x host: + + ```text + yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm + ``` + +!!! Note + You may need to enable the `[extras]` repository definition in the `CentOS-Base.repo` file (located in `/etc/yum.repos.d`). + +**If you are a Red Hat Network user** + +You must enable the `rhel--server-extras-rpms` repository, where `x` specifies the RHEL version. + +You must also enable the `rhel--server-optional-rpms` repository to use EPEL packages, where *x* specifies the RHEL version. You can make the repository accessible by enabling the `RHEL optional subchannel` for `RHN-Classic`. If you have a certificate-based subscription, then you must also enable `rhel--server-eus-optional-rpms` repository to use EPEL packages; please see the `Red Hat Subscription Management Guide` for more information about the required repositories. + +**Install and Configure the edb.repo File** + +To create an EnterpriseDB repository configuration file, assume superuser privileges and invoke the following command: + +```text +yum -y install https://yum.enterprisedb.com/edb-repo-rpms/edb-repo-latest.noarch.rpm +``` + +The repository configuration file is named `edb.repo`. The file resides in `/etc/yum.repos.d`. After creating the `edb.repo` file, use the following command to replace the `USERNAME` and `PASSWORD` placeholders in the `baseurl` specification with the <username> and <password> of a registered EDB user: + +```text +sed -i "s@:@USERNAME:PASSWORD@" /etc/yum.repos.d/edb.repo +``` + +**Install the PEM Server** + +After meeting the platform-specific prerequisites listed above, you can use yum or dnf to install the PEM Server: + +- On CentOS or RHEL 7.x or 8.x, you can use `yum` to install the PEM server : + + ```text + yum install edb-pem + ``` + +- On CentOS or RHEL 8.x, you can use `dnf` to install the PEM Server: + + ```text + dnf install edb-pem + ``` + +If you are doing a fresh installation of the PEM Server on a CentOS or RHEL 7.x host, the installer will also install `edb-python3-mod_wsgi` packages along with the installation as per requirement of the operating system. + +If you are upgrading the PEM Server on a CentOS or RHEL 7.x host, the `mod_wsgi system` package will be replaced by the `edb-python3-mod_wsgi` package as per the requirement of the operating system. + +When you install an RPM package that is signed by a source that is not recognized by your system, yum may ask for your permission to import the key to your local server. If prompted, and you are satisfied that the packages come from a trustworthy source, enter `y`, and press `Return` to continue. + +During the installation, yum may encounter a dependency that it cannot resolve. If it does, it will provide a list of the required dependencies that you must manually resolve. + +If you want to install PEM server on a machine that is in isolated network, you must first create PEM repository on that machine. For more information about creating PEM repository on an isolated network, see [Creating a PEM repository in an Isolated Network](04_creating_pem_repository_in_isolated_network/#creating_pem_repository_in_isolated_network). + +After installing PEM Server using `yum` or `dnf`, you need to configure the PEM Server. For more detailed information see [Configuring the PEM Server on Linux platforms](05_configuring_the_pem_server_on_linux/#configuring_the_pem_server_on_linux). + +## Installing the PEM Server on a Debian or Ubuntu Host + +The following steps will walk you through using the EDB `apt` repository to install a Debian package. + +!!! Note + You can also visit and select the platform and product to view the steps for installation. + +1. Log in as root on your Debian or Ubuntu host: + + ```text + sudo su - + ``` + +2. Configure the EDB repository: + + - For Debian 9: + + ```text + sh -c 'echo "deb https://username:password@apt.enterprisedb.com $(lsb_release - cs)-edb/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/edb-$(lsb_release -cs).list' + ``` + + Where `username:password` is to be replaced by the credentials provided by EDB. + + - For Debian 10: + + a. Set up the EnterpriseDB repository: + + ```text + sh -c 'echo "deb [arch=amd64] https://apt.enterprisedb.com/$(lsb_release -cs)-edb/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/edb-$(lsb_release -cs).list' + ``` + + b. Substitute your EnterpriseDB credentials for the `username` and `password` placeholders in the following command: + + ```text + sh -c 'echo "machine apt.enterprisedb.com login password " > /etc/apt/auth.conf.d/edb.conf' + ``` + +3. Add support to your system for secure APT repositories: + + ```text + apt-get install apt-transport-https + ``` + +4. Add the EBD signing key: + + ```text + wget -q -O -https://username:password@apt.enterprisedb.com/edb-deb.gpg.key | apt-key add –`` + ``` + +5. Update the repository metadata: + + ```text + apt-get update + ``` + +6. Use the following command to install the Debian package for the PEM server: + + ```text + apt-get install edb-pem + ``` + +When the installation completes, you must configure the PEM Server. For detailed information see [Configuring the PEM Server on Linux Platforms](05_configuring_the_pem_server_on_linux/#configuring_the_pem_server_on_linux). + +## Installing the PEM Server on a SLES Host + +Use the following command to add the EDB repository configuration files to your SLES host: + +```text +zypper addrepo https://zypp.enterprisedb.com/suse/edb-sles.repo +``` + +The command creates a repository configuration file named `edb.repo` in the `/etc/zypp/repos.d` directory. Modify the repository configuration file, adding the username and password of a registered EDB user. + +Before installing PEM, you must install prerequisite packages. Invoke the following commands, replacing *sp_no* with the service pack that you are using (i.e. SP4): + +```text +SUSEConnect -p sle-module-legacy/12/x86_64 + +SUSEConnect -p sle-sdk/12/x86_64 + +zypper addrepo https://download.opensuse.org/repositories/Apache:Modules/SLE_12_/Apache:Modules.repo + +zypper addrepo http://download.opensuse.org/repositories/Cloud:/OpenStack:/Newton:/cisco-apic:/2.3.1/SLE_12_/ pem_opensuse_boost +``` + +Then, refresh the repository and install the PEM server: + +```text +zypper refresh + +zypper install edb-pem +``` + +After installing PEM Server using `zypper`, you must configure the PEM Server. For detailed information see [Configuring the PEM Server on Linux Platforms](05_configuring_the_pem_server_on_linux/#configuring_the_pem_server_on_linux). diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/04_creating_pem_repository_in_isolated_network.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/04_creating_pem_repository_in_isolated_network.mdx new file mode 100644 index 00000000000..e9ab92d5403 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/04_creating_pem_repository_in_isolated_network.mdx @@ -0,0 +1,67 @@ +--- +title: "Creating a PEM Repository on an Isolated Network" +--- + +You can create a local repository to act as a host for the PEM RPM packages if the server on which you wish to upgrade PEM cannot directly access the EnterpriseDB repository. Please note that this is a high-level overview of the steps required; you may need to modify the process for your individual network. To create and use a local repository, you must: + +1. Use the following commands on a system with Internet access to download the dependencies for PEM: + + ```text + yum install yum-plugin-downloadonly + + mkdir / + + yum install --downloadonly --downloaddir=// edb-pem + + mkdir / + + yum install --downloadonly --downloaddir=// epel-release* + ``` + + Where `` and `` are the local directories that you create for downloading the RPMs. + +2. Copy the directories `/` and `/` to the machine that is in the isolated network. + +3. Create the repositories: + + ```text + createrepo / + + createrepo / + ``` + +4. Create a repository configuration file called `/etc/yum.repos.d/pem.repo` with connection information that specifies: + + ```text + [pemrepo] + name=PEM Repository + baseurl=file:///pem7/ + enabled=1 + gpgcheck=0 + ``` + +5. Create a repository configuration file called `/etc/yum.repos.d/epel.repo` with connection information that specifies: + + ```text + [epelrepo] + name=epel Repository + baseurl=file:///pem7/ + enabled=1 + gpgcheck=0 + ``` + +6. After specifying the location and connection information for your local repository, you can use `yum` commands to install or upgrade PEM server: + + To install PEM server: + + ```text + yum install edb-pem + ``` + + To upgrade PEM server: + + ```text + yum upgrade edb-pem + ``` + +For more information about creating a local yum repository, visit: diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/05_configuring_the_pem_server_on_linux.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/05_configuring_the_pem_server_on_linux.mdx new file mode 100644 index 00000000000..980aead66dd --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/05_configuring_the_pem_server_on_linux.mdx @@ -0,0 +1,63 @@ +--- +title: "Configuring the PEM Server on Linux Platforms" +--- + +Before configuring the PEM server, ensure that the `sslutils` extension and `hstore` contrib module are installed on your backend database. + +- For an Advanced Server backend database, the `sslutils` extension and `hstore` contrib module are by default installed along with Advanced Server. + +- For a PostgreSQL backend database, ensure you have access to the PostgreSQL community repository, and then install `sslutils` extension and `hstore` contrib module with the command: + + ```text + yum install sslutils_ postgresql-contrib + ``` + + Where, `x` is the server version. + +The PEM server package includes a script (`configure-pem-server.sh`) to help automate the configuration process for Linux platform installations. The script is installed in the `/usr/edb/pem/bin` directory. To invoke the script, use the command: + +```text +/usr/edb/pem/bin/configure-pem-server.sh +``` + +When invoking the script, you can include command line options to specify configuration properties; the script will prompt you for values that you omit on the command line. The accepted options are: + +!!! Note + If you are using the SSL certificates then make sure that all the SSL certificates are inside the data directory the backend database server. If the certificates are not inside the data directory then the PEM Server's configure script may fail as it looks in to the data directory while configuring the PEM Server. + +| **Option** | **Description** | +| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-acp` | Defines PEM Agent certificate path. The default is `/root/.pem`. | +| `-ci` | CIDR formatted network address range that Agents will connect to the server from, to be added to the server's `pg_hba.conf` file. For example, `192.168.1.0/24`. The default is `0.0.0.0/0`. | +| `-dbi` | The directory for the database server installation. For example, `/usr/edb/as12` for Advanced Server or `/usr/pgsql-12` for PostgreSQL. | +| `-ds` | The unit file name of the PEM database server. For Advanced Server, the default file name is `edb-as-12`; for PostgreSQL, it is `postgresql-12`. | +| `-ho` | The host address of the PEM database server. | +| `-p` | The port number of the PEM database server. | +| `-ps` | The service name of the pemagent; the default value is `pemagent`. | +| `-sp` | The superuser password of the PEM database server. This value is required. | +| `-su` | The superuser name of the PEM database server. | +| `-t` | The installation type: Specify 1 if the configuration is for web services and backend database, 2 if you are configuring web services, or 3 if you are configuring the backend database. If you specify 3, please note that the database must reside on the local host. | +| `-un` | To unregister the PEM Server. | + +If you do not provide configuration properties on the command line, you will be prompted for values by the script. When you invoke the script, choose from: + +1. `Web Services and Database` -Select this option if the web server and database both reside on the same host as the PEM server. + +2. `Web Services` -Select this option if the web server resides on a different host than the PEM server. + +3. `Database` -Select this option to configure the PEM backend database for use by the PEM server. Please note that the specified database must reside on the local host. + +!!! Note + If the web server (PEM-HTTPD) and the backend database (PEM Server) reside on separate hosts, configure the database server first (option 3), and then web services (option 2). The script will exit if the backend database is not configured before web services. + +After selecting a configuration option, the script will proceed to prompt you for configuration properties. When the script completes, it will create the objects required by the PEM server, or perform the configuration steps required. `1` To view script-related help, use the command: + +```text +/usr/edb/pem/bin/configure-pem-server.sh -help +``` + +After configuring the PEM server, you can access the PEM web interface in your browser. Navigate to: + +```text +https://:8443/pem +``` diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/06_installing_pem_agent_on_linux.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/06_installing_pem_agent_on_linux.mdx new file mode 100644 index 00000000000..8e89328d0d6 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/06_installing_pem_agent_on_linux.mdx @@ -0,0 +1,164 @@ +--- +title: "Installing a PEM Agent on Linux Platforms" +--- + +A PEM Agent may monitor one or more servers on one or more hosts. For comprehensive information about managing a PEM Agent, see the [PEM Agent User Guide](https://www.enterprisedb.com/docs/pem/latest/pem_agent/). + +## Installing a PEM Agent on a CentOS or RHEL Host + +On a CentOS or RHEL system, you can use the `yum` package manager or `dnf` command to install a PEM Agent; the installation tool you use will be dependent on the version of the host operating system. Before installing the agent, you must ensure that your system contains the required prerequisite software listed below. + +**Install Platform-Specific Software** + +- On a CentOS or RHEL 7.x host: + + ```text + yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm + ``` + +- On a CentOS or RHEL 8.x host: + + ```text + yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm + ``` + +!!! Note + You may need to enable the `[extras]` repository definition in the `CentOS-Base.repo` file (located in `/etc/yum.repos.d`). + +**If you are a Red Hat Network user** + +You must enable the `rhel--server-extras-rpms` repository, where `x` specifies the RHEL version. + +You must also enable the `rhel--server-optional-rpms` repository to use EPEL packages, where *x* specifies the RHEL version. You can make the repository accessible by enabling the `RHEL optional subchannel` for `RHN-Classic`. If you have a certificate-based subscription, then you must also enable `rhel--server-eus-optional-rpms` repository to use EPEL packages; please see the `Red Hat Subscription Management Guide` for more information about the required repositories. + +**Install and Configure the edb.repo File** + +To create an EnterpriseDB repository configuration file, assume superuser privileges and invoke the following command: + +```text +yum -y install https://yum.enterprisedb.com/edb-repo-rpms/edb-repo-latest.noarch.rpm +``` + +The repository configuration file is named `edb.repo`. The file resides in `/etc/yum.repos.d`. After creating the `edb.repo` file, use the following command to replace the `USERNAME` and `PASSWORD` placeholders in the `baseurl` specification with the <username> and <password> of a registered EDB user: + +```text +sed -i "s@:@USERNAME:PASSWORD@" /etc/yum.repos.d/edb.repo +``` + +**Installing the PEM Agent** + +- Use the `yum install` command to install the PEM Agent on CentOS or RHEL 7.x or 8.x: + + ```text + yum install edb-pem-agent + ``` + +- Also, you can use `dnf` command to install the PEM Agent on CentOS or RHEL 8.x: + + ```text + dnf install edb-pem-agent + ``` + +When the installation is complete, you can review a list of the installed packages and dependencies. + +![](../../images/pem_rpm_installation_agent.png) + +When you install an RPM package that is signed by a source that is not recognized by your system, yum may ask for your permission to import the key to your local server. If prompted, and you are satisfied that the packages come from a trustworthy source, enter `y`, and press `Return` to continue. + +During the installation, yum may encounter a dependency that it cannot resolve. If it does, it will provide a list of the required dependencies that you must manually resolve. + +After installing PEM Agent using `yum` or `dnf`, you need to register the PEM Agent. For detailed information see [Registering a PEM Agent](07_registering_a_pem_agent/#registering-a-pem-agent). + +## Installing a PEM Agent on a Debian or Ubuntu Host + +To install PEM on a Debian or Ubuntu host, you must have credentials that allow access to the EDB repository. To request credentials for the repository, [contact EDB](https://www.enterprisedb.com/repository-access-request) . + +The following steps will walk you through using the EDB apt repository to install a Debian package. When using the commands, replace the username and password with the credentials provided by EDB. + +1. Log in as root: + + ```text + sudo su - + ``` + +2. Configure the EDB repository: + + - For Debian 9: + + ```text + sh -c 'echo "deb https://username:password@apt.enterprisedb.com $(lsb_release - cs)-edb/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/edb-$(lsb_release -cs).list' + ``` + + Where `username:password` is to be replaced by the credentials provided by EDB. + + - For Debian 10: + + a. Set up the EnterpriseDB repository: + + ```text + sh -c 'echo "deb [arch=amd64] https://apt.enterprisedb.com/$(lsb_release -cs)-edb/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/edb-$(lsb_release -cs).list' + ``` + + b. Substitute your EnterpriseDB credentials for the `username` and `password` placeholders in the following command: + + ```text + sh -c 'echo "machine apt.enterprisedb.com login password " > /etc/apt/auth.conf.d/edb.conf' + ``` + +3. Add support to your system for secure APT repositories: + + ```text + apt-get install apt-transport-https + ``` + +4. Add the EBD signing key: + + ```text + wget -q -O -https://username:password@apt.enterprisedb.com/edb-deb.gpg.key | apt-key add – + ``` + +5. Update the repository metadata: + + ```text + apt-get update + ``` + +6. Use the following command to install the Debian package for the PEM Agent: + + ```text + apt-get install edb-pem-agent + ``` + +After installing PEM Agent using `apt-get`, you need to register the PEM Agent. For more detailed information see [Registering a PEM Agent](07_registering_a_pem_agent/#registering-a-pem-agent). + +## Installing a PEM Agent on a SLES Host + +Use the following command to add the EDB repository configuration files to your SLES host: + +```text +zypper addrepo https://zypp.enterprisedb.com/suse/edb-sles.repo +``` + +The command creates a repository configuration file named `edb.repo` in the `/etc/zypp/repos.d` directory. Modify the repository configuration file, adding the username and password of a registered EDB user. + +Before installing PEM, you must install prerequisite packages. Use the following commands replacing *sp_no* with the service pack that you are using (i.e. SP2 or SP3): + +```text +SUSEConnect -p sle-module-legacy/12/x86_64 + +SUSEConnect -p sle-sdk/12/x86_64 + +zypper addrepo https://download.opensuse.org/repositories/Apache:Modules/SLE_12_/Apache:Modules.repo + +zypper addrepo http://download.opensuse.org/repositories/Cloud:/OpenStack:/Newton:/cisco-apic:/2.3.1/SLE_12_/ pem_opensuse_boost +``` + +Then, you can refresh the repository and add a PEM agent: + +```text +zypper refresh + +zypper install edb-pem-agent +``` + +After installing the PEM Agent, you must register the agent. For more detailed information see [Registering a PEM Agent](07_registering_a_pem_agent/#registering-a-pem-agent). diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/07_registering_a_pem_agent.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/07_registering_a_pem_agent.mdx new file mode 100644 index 00000000000..639e96a9151 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/07_registering_a_pem_agent.mdx @@ -0,0 +1,67 @@ +--- +title: "Registering a PEM Agent" +--- + +Each PEM Agent must be *registered* with the PEM Server. The registration process provides the PEM server with the information it needs to communicate with the Agent. You can use the `pemworker` utility to register the Agent if you use the package to install a PEM Agent. + +The PEM Agent package places the PEM Agent in the `/usr/edb/pem/agent/bin` directory. To register an Agent, include the `--register-agent` keywords along with registration details when invoking the `pemworker` utility: + +```text +pemworker --register-agent +``` + +Append command line options to the command string when invoking the pemworker utility. Each option should be followed by a corresponding value: + +| Option | Description | +| ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `--pem-server` | Specifies the IP address of the PEM backend database server. This parameter is required. | +| `--pem-port` | Specifies the port of the PEM backend database server. The default value is 5432. | +| `--pem-user` | Specifies the name of the Database user (having superuser privileges) of the PEM backend database server. This parameter is required. | +| `--pem-agent-user` | Specifies the Agent user to connect the PEM server backend database server. | +| `--cert-path` | Specifies the complete path to the directory in which certificates will be created. If you do not provide a path, certificates will be created in: On Linux, ~/.pem On Windows, %APPDATA%/pem | +| `--config-dir` | Specifies the directory path where configuration file can be found. The default is the <pemworker path>/../etc. | +| `--display-name` | Specifies a user-friendly name for the Agent that will be displayed in the PEM Browser tree control. The default is the system hostname. | +| `--force-registration` | Include the force_registration clause to instruct the PEM server to register the Agent with the arguments provided; this clause is useful if you are overriding an existing Agent configuration. The default value is Yes. | +| `--group` | The name of the group in which the Agent will be displayed. | +| `--team` | The name of the database role, on the PEM backend database server, that should have access to the monitored database server. | +| `--owner` | The name of the database user, on the PEM backend database server, who will own the Agent. | +| `--allow_server_restart` | Enable the allow-server_restart parameter to allow PEM to restart the monitored server. The default value is True. | +| `--allow-batch-probes` | Enable the allow-batch-probes parameter to allow PEM to run batch probes on this Agent. The default value is False. | +| `--batch-script-user` | Specifies the operating system user that should be used for executing the batch/shell scripts. The default value is none; the scripts will not be executed if you leave this parameter blank or the specified user does not exist. | +| `--enable-heartbeat-connection` | Enable the enable-heartbeat-connection parameter to create a dedicated heartbeat connection between PEM Agent and server to update the active status. The default value is False. | +| `--enable-smtp` | When set to true for multiple PEM Agents (7.13 or lesser) it may send more duplicate emails. Whereas for PEM Agents (7.14 or higher) it may send lesser duplicate emails. | +| `--enable-snmp` | When set to true for multiple PEM Agents (7.13 or lesser) it may send more duplicate traps. Whereas for PEM Agents (7.14 or higher) it may send lesser duplicate traps. | +| `-o` | Specify if you want to override the configuration file options. | + +If you want to use any PEM feature for which a database server `restart` is required by the pemagent (such as Audit Manager, Log Manager, or the Tuning Wizard), then you must set the value for `allow_server_restart` to `true` in the `agent.cfg` file. + +!!! Note + When configuring a shell/batch script run by a PEM Agent that has PEM version 7.11 or later installed, the user for the `batch_script_user parameter` must be specified. It is strongly recommended that a non-root user is used to run the scripts. Using the root user may result in compromising the data security and operating system security. However, if you want to restore the `pemagent` to its original settings using the `root` user to run the scripts, then the `batch_script_user` parameter value must be set to `root`. + +Before any changes are made on the PEM database, the connecting agent is authenticated with the PEM database server. When invoking the `pemworker` utility, you must provide the password associated with the PEM server administrative user role (`postgres`). There are three ways to specify the administrative password; you can: + +- set the `PEM_MONITORED_SERVER_PASSWORD` environment variable. +- provide the password on the command line with the `PGPASSWORD` keyword. +- create an entry in the `.pgpass` file. + +Failure to provide the password will result in a password authentication error; you will be prompted for any other required but omitted information. When the registration is complete, the server will confirm that the Agent has been successfully registered. + +**Setting PEM Agent Configuration Parameters** + +The PEM Agent native package creates a sample configuration file named `agent.cfg.sample` in the `/usr/edb/pem/agent/etc` directory. When you register the PEM Agent, the `pemworker` program creates the actual Agent configuration file (named `agent.cfg`). Modify the `agent.cfg` file, changing the following configuration parameter value to `true`: + +`heartbeat_connection = true` + +By default, `heartbeat_connection` value is `false` but you can override the value during pemagent registration with `pemworker` utility using the `--enable-heartbeat-connection` option. + +Then, use a platform-specific command to start the PEM Agent service; + +On a CentOS or RHEL 7.x or 8.x host, use `systemctl` to start the service: + +```text +systemctl start pemagent +``` + +The service will confirm that it is starting the Agent; when the Agent is registered and started, it will be displayed on the `Global Overview` and in the `Object browser` of the PEM web interface. + +For information about using the `pemworker` utility to register a server, please see the [PEM Administrator's Guide](https://www.enterprisedb.com/docs/pem/latest/pem_admin/) diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/index.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/index.mdx new file mode 100644 index 00000000000..f476613360a --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/index.mdx @@ -0,0 +1,19 @@ +--- +title: "Installing Postgres Enterprise Manager" +--- + +The `edb-pem` package for Linux platforms installs the PEM Server, a PEM Agent, and the required software to connect to the PEM web interface with a supported browser. + +The PEM server uses a Postgres installation and backend database to manage data. The `pem` backend database is created when you configure PEM. + +For detailed information about installing the PEM Server, see [Installing the PEM Server on Linux](03_installing_pem_server_on_linux/#installing_pem_server_on_linux). For information about configuring a PEM Server see [Configuring the PEM Server on Linux](05_configuring_the_pem_server_on_linux/#configuring_the_pem_server_on_linux). + +The PEM Agent that is installed with the PEM server is capable of monitoring multiple servers that reside on the same host, or on remote hosts. Please note that the PEM functionality on servers monitored by a remote Agent may be limited. For detailed information about remote monitoring functionality see the [PEM Agent Privileges](/pem/latest/pem_online_help/02_toc_pem_agent/05_pem_agent_privileges/). + +For detailed information about installing and configuring a PEM Agent, see [Installing the PEM Agent on Linux](06_installing_pem_agent_on_linux/#installing_pem_agent_on_linux). + +
+ +prerequisites_for_installing_pem_server installing_pem_server_and_apache_web_server_preferences installing_pem_server_on_linux creating_pem_repository_in_isolated_network configuring_the_pem_server_on_linux installing_pem_agent_on_linux registering_a_pem_agent + +
diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_linux/05_the_pem_web_interface.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_linux/05_the_pem_web_interface.mdx new file mode 100644 index 00000000000..02610ff1d19 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_linux/05_the_pem_web_interface.mdx @@ -0,0 +1,33 @@ +--- +title: "The PEM Web Interface" +--- + +After installing a PEM server and Agent, you can configure PEM to start monitoring and managing PostgreSQL or Advanced Server instances. The PEM server installer installs the PEM web interface. You can use the interface to review information about objects that reside on monitored servers, or to review statistical information gathered by the PEM server. + +After installing and configuring PEM, you can use your browser to access the PEM web interface. Open your browser, and navigate to: + +`https://:8443/pem` + +Where `ip_address_of_PEM_host` specifies the IP address of the host of the PEM server. The `Postgres Enterprise Manager Web Login` window opens: + +![The PEM Web Login page](../images/pem_login.png) + +Use the fields on the `Postgres Enterprise Manager Login` window to authenticate yourself with the PEM server: + +- Provide the name of a `pem` database user in the `Username` field. For the first user connecting, this will be the name provided when installing the PEM server. +- Provide the password associated with the user in the `Password` field. + +Click the `Login` button to connect to the PEM server. + +![The Global Overview Dashboard](../images/global_overview.png) + +Before you can use the PEM web interface to manage or monitor a database server, you must *register* the server with the PEM server. When you register a server, you describe the connection to the server, provide authentication information for the connection, and specify any management preferences (optionally binding an Agent). + +A server may be managed or unmanaged: + +- A `managed` server is bound to a PEM Agent. The PEM Agent will monitor the server to which it is bound, and perform tasks or report statistics for display on the PEM dashboards. A managed server has access to extended PEM functionality such as Custom Alerting; when registering a server, you can also allow a managed server to be restarted by PEM as required. +- An `unmanaged` server is not bound to a PEM Agent; you can create database objects on an unmanaged server, but extended PEM functionality (such as Custom Alerting) is not supported on an unmanaged server. + +You must also ensure the `pg_hba.conf` file of the server that you are registering allows connections from the host of the PEM web interface. + +To access online help information about the PEM web interface, select `Help` from the menu bar. Additional information is available from the [EDB website](https://www.enterprisedb.com/docs/pem/latest/pem_online_help/). diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_linux/06_uninstalling_pem_components.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_linux/06_uninstalling_pem_components.mdx new file mode 100644 index 00000000000..3b8b3be8639 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_linux/06_uninstalling_pem_components.mdx @@ -0,0 +1,65 @@ +--- +title: "Uninstalling Postgres Enterprise Manager Components" +--- + +The process of uninstalling the PEM server or Agent is platform-specific. The name of the package for PEM server is `edb-pem` and for PEM Agent is `edb-pem-agent`. + +If you uninstall the PEM server package from a host, the PEM Agent package installed on the same host doesn't get uninstalled. But if you uninstall the PEM Agent package, then the PEM server package installed on the same host also gets uninstalled. + +## Uninstalling PEM components from CentOS or RHEL Hosts + +You can use variations of the `rpm`, `yum remove`, or `yum erase`, commands to remove the installed packages from CentOS or RHEL 7.x or 8.x hosts. Also you use `dnf remove` command to remove the installed package from CentOS or RHEL 8.x host. Note that removing a package does not damage the PEM data directory. + +- Include the `-e` option when invoking the rpm command to remove an installed package; the command syntax is: + + ```text + rpm -e package_name + ``` + +- You can use the `yum remove` command to remove the PEM Server or Agent package installed by yum. To remove a package, open a terminal window, assume superuser privileges, and enter the command: + + ```text + yum remove package_name + ``` + +- You can use the `yum erase` command to remove the pem server or Agent package along with the `edb-pem` and `edb-pem-docs` dependencies. To remove a package, open a terminal window, assume superuser privileges, and enter the command: + + ```text + yum erase package_name + ``` + +Where `package_name` is the name of the package that you would like to remove. + +- You can use `dnf remove` command to remove the pem server or Agent along with the `edb-pem` and `edb-pem-docs` dependencies on CentOS or RHEL 8.x hosts. To remove a package, open a terminal window, assume superuser privileges, and enter the command: + + ```text + dnf remove package_name + ``` + +## Uninstalling PEM components from Debian or Ubuntu hosts + +You can use `apt-get remove` or `apt-get purge` command to uninstall the PEM server or Agent package from a Debian or Ubuntu host: + +- To uninstall PEM server or Agent from a Debian or Ubuntu host without impacting the configuration files and data directories, invoke the following command: + + ```text + apt-get remove package_name + ``` + +- To uninstall PEM server or Agent along with the configuration files and data directory, invoke the following command: + + ```text + apt-get purge package_name + ``` + +Where `package_name` is the name of the package that you would like to remove. + +## Uninstalling PEM components from SLES hosts + +To uninstall PEM server or Agent from a SLES host, invoke the following command: + +```text +zypper remove package_name +``` + +Where `package_name` is the name of the package that you would like to remove. diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_linux/07_reference_linux_service_script.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_linux/07_reference_linux_service_script.mdx new file mode 100644 index 00000000000..bb026d6a42a --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_linux/07_reference_linux_service_script.mdx @@ -0,0 +1,15 @@ +--- +title: "Reference - Linux Service Script" +--- + +- A service script allows the PEM server to start, stop or restart the server if necessary when performing configuration management, certificate management, or other administrative tasks. + +- The Postgres server on which the PEM server resides must contain a service script. Postgres installers in Windows generated by EDB create a service script for you; if you are using a Postgres server from another source like native packages, you must provide a service script. + + On **CentOS or RHEL 7.x or 8.x**, the service script resides in the `/usr/lib/systemd/system` directory. + +- Service scripts are platform-specific. + +- For information about customizing a Postgres service, visit: + + diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_linux/index.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_linux/index.mdx new file mode 100644 index 00000000000..e2ed0050e8a --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_linux/index.mdx @@ -0,0 +1,15 @@ +--- +title: "PEM Installation Guide on Linux" +--- + +Postgres Enterprise Manager (PEM) is designed to assist database administrators, system architects, and performance analysts when administering, monitoring, and tuning PostgreSQL and Advanced Server database servers. PEM has been designed to manage and monitor a single server or multiple servers from a single console, allowing complete control over monitored databases. + +This document provides step-by-step instructions to guide you through the installation of Postgres Enterprise Manager on a Linux host. + +Throughout this guide, the term *Postgres* refers to either a PostgreSQL or an Advanced Server installation, where either is appropriate. + +
+ +whats_new pem_hardware_software_requirements pem_architecture installing_postgres_enterprise_manager the_pem_web_interface uninstalling_pem_components reference_linux_service_script conclusion + +
diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_windows/01_whats_new.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_windows/01_whats_new.mdx new file mode 100644 index 00000000000..b86a17720a6 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_windows/01_whats_new.mdx @@ -0,0 +1,21 @@ +--- +title: "What's New" +--- + +The following changes have been made to Postgres Enterprise Manager to create version 8.0.1: + +Improved the overall performance, usability, and stability of the product by: + +- Allowing the dash (-) character in the superuser name that is provided during configuration. +- Gracefully closing the operating system resources during batch probe and command execution to avoid errors. +- Improved support for unicode string handling in pemAgent. +- Fixed a regression restoring BART backup when agent is not bound with the BART server. +- In addition to the above-listed items, a few other minor bugs have also been fixed. + +PEM 8.0.1 provides an option to hide or unhide the Dashboard, Statistics, Dependents, and Dependencies tabs. + +Features and Functionalities removed in recent versions of PEM: + +- PEM 8.0 and later is not supported on CentOS/RHEL 6.x. +- EDB ARK UI Management is not supported by PEM 7.16 and later. +- PEM 7.16 and later is not supported on Internet explorer version 11 and lesser. diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_windows/02_pem_hardware_software_requirements.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_windows/02_pem_hardware_software_requirements.mdx new file mode 100644 index 00000000000..aa06c49b387 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_windows/02_pem_hardware_software_requirements.mdx @@ -0,0 +1,39 @@ +--- +title: "PEM - Hardware and Software Requirements" +--- + +## Hardware Prerequisites + +For optimum performance when monitoring servers and rendering dashboards, we recommend installing PEM on a system with at least: + +- 4 CPU cores +- 8 GB of RAM +- 100 GB of Storage + +Additional disk space is required for data storage. Please note that resource usage will vary based on which probes are defined and enabled, and the activity level on the monitored databases. Monitoring server resources (as you use PEM) will let you know when you need to expand your initial system configuration. + +## Software Prerequisites + +**Supported Platforms and Versions** + +For information about the platforms and versions supported by PEM, visit the EnterpriseDB website at: + + + +**Please note**: PEM 8.0.1 is no longer supported on CentOS/RHEL/OEL 6.x platforms. It is strongly recommended that EDB products running on these platforms be migrated to a supported platform. + +**Modifying the pg_hba.conf File** + +The `pg_hba.conf` file manages connections for the Postgres server. You must ensure that the `pg_hba.conf` file on each monitored server allows connections from the PEM server, the monitoring PEM agent, and the host of the PEM-HTTPD server. + +For information about modifying the `pg_hba.conf` file, see the [PEM Administrator's Guide](https://www.enterprisedb.com/docs/pem/latest/pem_admin/). + +Information about managing authentication is also available in the [PostgreSQL core documentation](https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html). + +**Firewall Restrictions** + +Please note that you must adjust your firewall to allow communication between PEM components. + +**Supported Locales** + +Currently, the PEM server and web interface support a locale of `English(US) en_US` and use of a period (.) as a language separator character. Using an alternate locale, or a separator character other than a period may result in errors. diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_windows/03_pem_architecture.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_windows/03_pem_architecture.mdx new file mode 100644 index 00000000000..85777001896 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_windows/03_pem_architecture.mdx @@ -0,0 +1,98 @@ +--- +title: "PEM Architecture" +--- + +Postgres Enterprise Manager (PEM) is a tool designed to monitor and manage multiple Postgres servers through a single GUI interface. PEM is capable of monitoring the following areas of the infrastructure: + +!!! Note + The term Postgres refers to either PostgreSQL or EDB Postgres Advanced Server. + +- **Hosts** - One or more servers (physical or virtual) and their operating systems. +- **Servers** - One or more instances of PostgreSQL or EDB Postgres Advanced Server running on a host. +- **Databases** - One or more databases and the schema objects (tables, indexes, etc.) within them. + +PEM consists of a number of individual software components; the individual components are described below. + +- **PEM Server** - The PEM Server is used as the data repository for monitoring data and as a server to which both Agents and Clients connect. The PEM server consists of an instance of PostgreSQL and an associated database for storage of monitoring data, and a server that provides web services. +- **PEM Agent** - The PEM Agent is responsible for executing tasks and reporting statistics from the Agent host and monitored Postgres instances to the PEM server. A single PEM Agent can monitor multiple installed instances of Postgres that reside on one or many hosts. +- **PEM Web Client** - The PEM web interface allows you to manage and monitor Postgres servers and utilize PEM extended functionality. The web interface software is installed with the PEM server and is accessed via any supported web browser. +- **SQL Profiler** - SQL Profiler is a Postgres server plugin to record the monitoring data and query plans to be analysed by the SQL Profiler tool in PEM. This is an optional component of PEM, but the plugin must be installed into each instance of Postgres with which you wish to use the SQL Profiler tool. The SQL Profiler may be used with any supported version of an EDB distribution of a PostgreSQL server or Advanced Server (not just those managed through the PEM server). See the [PEM SQL Profiler Guide](https://www.enterprisedb.com/docs/pem/latest/pem_sqlprofiler/) for details and supported versions. + +**PEM architecture** + +The following architectural diagram illustrates the relationships between the PEM server, clients, and managed as well as unmanaged Postgres servers. + +![PEM Architecture](../images/pem_architecture.png) + +## The PEM Server + +![PEM Server](../images/pem_server.png) + +The PEM server consists of an instance of Postgres, an instance of the Apache web-server providing web services to the client, and a PEM Agent. PEM utilizes a server-side cryptographic plugin to generate authentication certificates. + +The instance of Postgres (a database server) and an instance of the Apache web-server ( HTTPD) can be on the same host or on separate hosts. + +- **Postgres Instance (Database server)** - This is the backend database server. It hosts a database named **pem** which acts as the repository for PEM Server. The **pem** database contains several schemas that store metric data collected from each monitored host, server, and database. + - **pem** - This schema is the core of the PEM application. It contains the definitions of configuration functions, tables, or views required by the application. + - **pemdata** - This schema stores the current snapshot of the monitored data. + - **pemhistory** - This schema stores the historical monitored data. +- **Apache Web Server (HTTPD)** - The PEM Web Application is deployed as a WSGI application with HTTPD to provide web services to the client. It is comprised of the following: + - **Web content presentation** - The presentation layer is created by the Web Application (for example Browser, login page,..). + - **Rest API** - The REST API allows integration with other apps and services. + - **Database Server Administration/Management** - Database server administration and management activities like CREATE, ALTER, DROP, etc. can be performed for managed as well as unmanaged servers. + - **Dashboard/Chart generation** - Internally, the web application includes functionality that generates Dashboards and Charts. + - **Management Tools** - The Audit Manager, Capacity Manager, Log Manager, Postgres Expert, Postgres Log Analysis Expert, and the Tuning Wizard are made available in the Web Application. + - Other tools provide functionality on managed or unmanaged servers: + - **SQL Profiler UI Integration** - SQL Profiler generates easily analyzed traces of session content. + - **Query Editor/Data View** - The Query editor allows you to query, edit, and view data. + - **Debugger** - The Debugger helps you debug queries. + - **Performance Diagnostics** - Performance Diagnostics help you analyze the performance of Postgres instances. + +We recommend that you use a dedicated machine to host production instances of the PEM backend database. The host may be subject to high levels of data throughput, depending on the number of database servers that are being monitored and the workloads the servers are processing. + +## The PEM Agent + +![PEM Agent](../images/pem_agent.png) + +The PEM Agent is responsible for the collection of monitoring data from the machine and operating system, as well as from each of the Postgres instances to which they are bound. Each PEM Agent can monitor one physical or virtual machine and is capable of monitoring multiple database servers locally - installed on the same system, or remotely - installed on other systems. It is also responsible for executing other tasks that may be scheduled by the user (for example, server shutdowns, SQL Profiler traces, user-defined jobs). + +A PEM Agent is installed by default on the PEM Server along with the installation of the PEM Server. It is generally referred to as a PEM Agent on the PEM Host. Separately, the PEM Agent can also be installed on the other servers hosting the Postgres instances to be monitored using PEM. + +Whether monitoring locally or remotely, the PEM Agent connects to the PEM Server using PostgreSQL’s libpq, using SSL certificate-based authentication. The PEM Agent installer in Windows and pemworker CLI in Linux is responsible for registering each agent with the PEM Server, and generating and installing the required certificates. + +Please note that there is only one-way traffic between the PEM Agent and PEM Server; the PEM Agent always connects to the PEM Server. + +The PEM Agent must be able to connect to each database server that it monitors. This connection is made over a TCP/IP connection (or optionally a Unix Domain Socket on Unix hosts), and may optionally use SSL. The user must configure the connection and authentication to the monitored server. + +Once configured, each agent collects statistics and other information on the host and each database server and database that it monitors. Each piece of information is known as a **metric** and is collected by a **probe**. Most probes will collect multiple metrics at once for efficiency. Examples of the metrics collected include: + +- Disk I/O statistics +- Network statistics +- Database server version string +- Database server configuration option (GUC) values +- Table access statistics +- Table and index sizes + +A list of PEM probes can be found [here](https://www.enterprisedb.com/docs//pem/latest/pem_online_help/04_toc_pem_features/12_pem_manage_probes/03_pem_probe_config/01_pem_probes/). + +By default, the PEM Agent bound to the database server collects the OS/Database monitoring statistics and also runs any scheduled tasks/jobs for that particular database server, storing data in the pem database on the PEM server. + +The Alert processing, SNMP/SMTP spoolers, and Nagios Spooler data is stored in the `pem` database on the PEM server and is then processed by the PEM Agent on the PEM Host by default. However, processing by other PEM Agents can be enabled by adjusting the SNMP/SMTP and Nagios parameters of the PEM Agents. + +To see more information about these parameters see [Server Configuration](https://www.enterprisedb.com/docs/pem/latest/pem_online_help/04_toc_pem_features/02_pem_server_config/01_pem_config_options/). + +## The PEM Web Client + +The PEM client is a web-based application that runs in supported browsers. The client's web interface connects to the PEM server and allows direct management of managed or unmanaged servers, and the databases and schemas that reside on them. + +The client allows you to use PEM functionality that makes use of the data logged on the server through features such as the dashboards, the Postgres Log Analysis Expert, and Capacity Manager. + +## The SQL Profiler Plugin + +You are not required to install the SQL Profiler plugin on every server, but you must install and configure the plugin on each server on which you wish to use the SQL Profiler. You may also want to install and configure SQL Profiler on un-monitored development servers. For ad-hoc use also, you may temporarily install the SQL Profiler plugin. + +The plugin is installed with the EDB Postgres Advanced Server distribution but must be installed separately for use with PostgreSQL. The SQL Profiler installer is available from the [EDB website](https://www.enterprisedb.com/downloads/edb-postgres-enterprise-manager). + +SQL Profiler may be used on servers that are not managed through PEM, but to perform scheduled traces, a server must have the plugin installed, and must be managed by an installed and configured PEM agent. + +For more information about using SQL Profiler, see the [PEM SQL Profiler Guide](https://www.enterprisedb.com/docs/pem/latest/pem_sqlprofiler/) diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_windows/04_installing_postgres_enterprise_manager/01_installing_pem_server_on_windows.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_windows/04_installing_postgres_enterprise_manager/01_installing_pem_server_on_windows.mdx new file mode 100644 index 00000000000..52dbaaa4cda --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_windows/04_installing_postgres_enterprise_manager/01_installing_pem_server_on_windows.mdx @@ -0,0 +1,529 @@ +--- +title: "Installing the PEM Server on Windows" +--- + +At the heart of each PEM installation is the server. In a production environment, the server will typically be a dedicated machine, monitoring a large number of Postgres servers or a smaller number of busy servers. + +The PEM server backend database may be an EnterpriseDB distribution of the PostgreSQL or Advanced Server database server, or an existing Postgres server installed from another source. The Postgres backend database server must be version 11 or later, and will contain a database named `pem`, which is used by the PEM server as a repository. + +- If you would like to use an existing Postgres server to host the PEM server, the PEM server installer can create the `pem` database on the Postgres host. You must manually satisfy the software pre-requisites if you choose to use an existing server. + + For more information about using an existing Postgres server to host the PEM server backend database, see [Installing the PEM Server on an Existing Postgres Server](#installing-the-pem-server-on-an-existing-postgres-server) section. + +- If you do not wish to use an existing installation of Postgres as the PEM server host, the PEM server installer can install PostgreSQL, satisfy the server host's software pre-requisites, and create an instance (a PostgreSQL database cluster) that contains the `pem` database. This is the simplest PEM server installation option. + +- PEM-HTTPD is made available for Postgres installations through the PEM server installer or the StackBuilder utility. If PEM-HTTPD is already installed on the host, the PEM server installer will review and update the existing installation if required. If the PEM server host does not contain an existing PEM-HTTPD installation, the PEM server installer will add it. + +- Before installing the PEM server, you must decide if you wish to run PostgreSQL and PEM-HTTPD on the same host or on separate hosts. If you intend to run the PostgreSQL database server and PEM-HTTPD on different hosts, then you must run the PEM server installer twice – once on each host, as detailed in [Installing the PEM Server and PEM-HTTPD on Separate Hosts](#installing-the-pem-server-and-pem-httpd-on-separate-hosts) section. + +The PEM server installer will also install the software required to access the server via the PEM web interface. You can access the web interface with a supported version of your browser. + +![The PEM web interface](../../images/pem_web_interface.png) + +You can use the web interface to review information about objects that reside on monitored servers, manage databases and database objects that reside on monitored servers, or review statistical information gathered by the PEM server. + +!!! Note + If you are using the SSL certificates then make sure that all the SSL certificates are inside the data directory the backend database server. If the certificates are not inside the data directory then the PEM Server's configuration may fail as it looks in to the data directory while configuring the PEM Server. + +## Installing the PEM Server and PEM-HTTPD on the Same Host + +The easiest PEM server installation configuration consists of a PEM backend database server (hosted on a PostgreSQL database installed with the PEM server installer) and a PEM-HTTPD service that reside on the same host. In this configuration, the PEM server installer will provide the pre-requisite software for the backend host register the service (on Windows). + +To invoke the PEM server installer on a Windows system, right click the installer icon and select `Run as Administrator`. The installer displays a `Welcome` dialog. + +![PEM Server Wizard - Welcome dialog](../../images/pem_server_on_same_host_welcome_wizard.png) + +Click `Next` to continue to the `License Agreement` dialog. + +![PEM Server Wizard - License Agreement dialog](../../images/pem_server_on_same_host_license_agreement.png) + +Carefully review the license agreement before highlighting the appropriate radio button and accepting the agreement. Click `Next` to continue to the `Installation Directory` dialog. + +![PEM Server Wizard - Installation directory dialog](../../images/pem_server_on_same_host_installation_directory.png) + +Use the `Installation Directory` dialog to specify the location of the PEM server: + +- By default, the PEM server is installed in `C:\Program Files\edb\pem` on Windows. Accept the default location, or use the `Installation Directory` button to open a browser dialog and select the directory in which the PEM server will be installed. +- Use the `Show advanced options` check box to instruct the installer to open the `Advanced options` dialog. +- Use the `Advanced options` dialog when installing the Postgres database server and the PEM-HTTPD on different hosts, or if you wish the PEM server to reside on an existing Postgres server installation. + +To install the PostgreSQL server packaged with the installer and PEM-HTTPD on the same host, leave the `Show advanced options` box unchecked and click `Next`. + +The PEM server installer will perform a pre-installation check for PEM-HTTPD, Language Pack, and PostgreSQL 13. If the installer does not locate these packages, it will inform you in the `Dependency missing` dialog. + +!!! Note + By default EDB Language Pack is installed in `C:\edb\languagepack\v1`. + +![PEM Server Wizard - Dependencies check dialog](../../images/pem_server_on_same_host_prerequisites_checks.png) + +If the dependencies are missing, the PEM server installer will launch the respective installation wizards; follow the onscreen directions presented by the installation wizards for each package. + +After installing any missing dependencies, the installation process continues by displaying the `Database Server Installation Details` dialog. + +![PEM Server Wizard - Database Server Installation details dialog](../../images/pem_server_on_same_host_pgsql_credentials.png) + +The information provided on the `Database Server Installation Details` dialog enables the installer to connect to the PostgreSQL server. Provide the `User name` and `Password` of a database superuser. After supplying the requested information, click `Next` to continue to the `pemAgent Service Account` dialog. + +![PEM Server Wizard - pemAgent Service Account Password dialog](../../images/pem_server_on_same_host_pemagent_service_account_password.png) + +After providing the name and password of the Postgres database superuser, you may be prompted for the password to the user account under which the PEM agent will run. If prompted, provide the password, and press `Next` to continue to the `Network Details` dialog. + +![Supply the network address from which the agent will connect](../../images/pem_server_on_same_host_network_details.png) + +Use the `Network Details` dialog to specify the CIDR-style network address from which the PEM agents will connect to the server (the *client-side* address). + +You may specify the address of a network host, or a network address range. For example, if you wish to monitor database servers with the addresses `192.168.10.23`, `192.168.10.76` and `192.168.10.184`, enter `192.168.10.0/24` to allow connections with hosts in that network. + +The specified address will be added to the server's `pg_hba.conf` file. You can specify additional network addresses by manually adding entries to the `pg_hba.conf` file on the PostgreSQL server if required, using the initial entry as a template. + +When you've added the `Network address`, click `Next` to continue to the `Agent Details` dialog. + +The PEM server installer will install a PEM agent on the host on which the server resides, to monitor the server and provide alert processing and garbage collection services. A certificate will also be installed in the location specified in the `Agent certificate path` field. + +![PEM Server Wizard - Agent Description and Certificate Path dialog](../../images/pem_server_on_same_host_agent_details.png) + +Enter an alternate description or select an alternate agent certificate path for the PEM agent, or accept the defaults. Click `Next` to continue to the `Ready to Install` dialog. + +![PEM Server Wizard - Ready to Install dialog](../../images/pem_server_on_same_host_installation_begins.png) + +The wizard is now ready to install the PEM server. + +Click `Back` to modify any of the options previously selected, or `Next` to continue with the installation. + +![PEM Server Wizard - Installation in progress](../../images/pem_server_on_same_host_installation_in_progress.png) + +During the installation process, the installer will copy files to the system, and set up the database and web services required to run PEM. When the installation completes, a popup dialog opens confirming that the webservice has been configured, and is listening on port `8443`, and that the `pem` database has been created and configured. + +![PEM Server Wizard - pem database created](../../images/pem_server_on_same_host_db_pem_created.png) + +Click `OK` to acknowledge that the webservice has been configured, and that the `pem` database has been created, and continue to the `Completed`… dialog. + +![PEM server Wizard - Installation Finish dialog](../../images/pem_server_on_same_host_installation_complete.png) + +## Installing the PEM Server and PEM-HTTPD on Separate Hosts + +To use separate hosts for the PEM server backend database and PEM-HTTPD, you must: + +1. Invoke the PEM server installer on the host of the Postgres server that will contain the `pem` database. During the installation, select the `Database` option on the `Advanced options` dialog, and provide connection information for the Postgres server. +2. Modify the `pg_hba.conf` file of the Postgres installation on which the PEM server (and `pem` database) resides, allowing connections from the host of the PEM-HTTPD server. +3. Invoke the PEM server installer on the host of the PEM-HTTPD server, selecting the `Web Services` option on the `Installation Type` dialog. + +To invoke the PEM server installer on a Windows system, right click the installer icon and select `Run as Administrator`. The installer displays a `Welcome` dialog. + +![PEM Server Wizard - Welcome dialog](../../images/pem_server_on_separate_host_welcome_wizard.png) + +Click `Next` to continue to the `License Agreement` dialog. + +![PEM Server Wizard - License Agreement dialog](../../images/pem_server_on_separate_host_license_agreement.png) + +Carefully review the license agreement before highlighting the appropriate radio button and accepting the agreement; click `Next` to continue. + +![PEM Server Wizard - Installation Directory dialog](../../images/pem_server_on_separate_host_installation_directory.png) + +Use fields on the `Installation Directory` dialog to specify the directory in which the PEM server will reside, and to access the `Advanced options` dialog: + +- By default, the PEM server is installed in the `C:\Program Files\edb\pem` on Windows. Accept the default location, or use the `Installation Directory` field to open a browser dialog and select the directory in which the PEM server will be installed. +- To install the PEM server and PEM-HTTPD on separate hosts, you must use the `Advanced options` dialog to specify the installation type (`Web Services` or `Database`). Select the `Show advanced options` check box to instruct the installer to include the `Advanced options` dialog in the installation process. + +Click `Next` to continue to the `Advanced Options` dialog. + +![PEM Server Wizard - Advanced Options dialog](../../images/pem_server_on_separate_host_web_services_and_database.png) + +Use the radio buttons on the `Advanced options` dialog to specify the component or components that you would like to install: + +- Select `Web Services and Database` to indicate that the Postgres server and PEM-HTTPD will both reside on the current host. If you select the `Web Services and Database` option, the PEM server installer will allow you to specify which Postgres server you wish to use for the PEM server before checking for a PEM-HTTPD installation. +- Select `Web Services` to install PEM-HTTPD on the current host, while using a Postgres database server that resides on another host to host the PEM server and `pem` database. + +!!! Note + You must complete the PEM server installation process on the host of the PEM server (and `pem` backend database), selecting `Database` on the `Advanced options` dialog, and modifying the connection properties of the `pg_hba.conf` file on the PEM server before using the `Web Services` option to install PEM-HTTPD. + +This option invokes the installation steps documented in [Installing Web Services](#installing-web-services) section. + +- Select `Database` to use an existing Postgres server (version 11 or greater), or to install only the database server that is distributed with the PEM server installer. This option invokes the installation steps documented in [Specifying a Database Host](#specifying-a-database-host). + +After selecting an installation option, click `Next` to continue. + +### Specifying a Database Host + +Selecting the `Database` option on the `Advanced options` dialog allows you to specify connection information for the host on which the PEM server backend database (named `pem`) will reside. + +![PEM Server Wizard - Advanced options - select database dialog](../../images/pem_server_on_separate_host_advanced_options_dialog_select_database.png) + +Click `Next` to continue to the `Database Server Selection` dialog. + +![Selecting a database server](../../images/pem_server_on_separate_host_database_server_selection.png) + +Use the drop-down listbox on the `Database Server Selection` dialog to select a host for the PEM server backend database. You can: + +- Select a host from existing Postgres installations that reside on the current host. + +!!! Note + You may be required to add the `sslutils` package to your installation. + +- Select the `PostgreSQL x` option to install the Postgres server that is distributed with the PEM server installer where `x` is the PostgreSQL database server version. If you decide to use the version of PostgreSQL that is bundled with the PEM server installer, the EnterpriseDB one-click PostgreSQL installer will open and walk you through the installation. +- Select `Other Database Server` to specify connection information for a Postgres server that was not installed using a one-click graphical installer from EnterpriseDB. For information about the software pre-requisites for the PEM server database host, please see [Preparing the Postgres Server](#preparing-the-postgres-server) section. + +Click `Next` to continue. + +If the PEM server will reside on an existing Postgres server, the `Database Server Installation Details` dialog shown in opens. + +![PEM Server Wizard - Database Server Installation Details dialog](../../images/pem_server_on_separate_host_database_server_installation_details.png) + +The information required on the `Database Server Installation Details` dialog may vary; the PEM server installer will ask you to provide only the information about the selected installation that it cannot locate: + +- Specify the name of a Postgres database superuser in the `User` field. +- Specify the password associated with that user in the `Password` field. + +Click `Next` to continue. + +If prompted, provide the system password for the service account under which the PEM agent will run. + +![PEM Server Wizard - PEM Agent Service Account Password](../../images/pem_server_on_separate_pem_agent_service_account.png) + +click `Next` to continue to the `Network Details` dialog. + +![PEM Server Wizard - Network Details dialog](../../images/pem_server_on_separate_host_network_details.png) + +Use the `Network Details` dialog to specify the CIDR-style network address from which PEM agents will connect to the server (the `client-side` address). The specified address will be added to the server's `pg_hba.conf` file. + +!!! Note + You can specify additional network addresses by manually adding entries to the `pg_hba.conf` file on the PostgreSQL server. + +Accept the default (specifying the localhost), or specify a `Network address` range, and click `Next` to continue to the `Agent Details` dialog. + +The PEM server installer will install a PEM agent on the host on which the server resides, to monitor the server and provide alert processing and garbage collection services. A certificate will also be installed in the location specified in the `Agent certificate path` field. + +![PEM Server Wizard - Agent Description and Certificate Path dialog](../../images/pem_server_on_separate_host_database_agent_details.png) + +You can enter an alternate description or an alternate agent certificate path for the PEM agent, or accept the defaults. Click `Next` to continue. + +![PEM Server Wizard - Ready to Install dialog](../../images/pem_server_on_separate_host_installation_begins.png) + +The wizard is now ready to install the PEM server. Click `Back` to modify any of the options previously selected, or `Next` to proceed with the installation. + +![PEM Server Wizard - Installation in progress](../../images/pem_server_on_separate_host_installation_in_progress.png) + +During the installation process, the installer will copy files to the system, and set up the PEM server's backend database. A popup dialog opens confirming that the `pem` database has been created and configured. + +![PEM Server Wizard - pem database created](../../images/pem_server_on_separate_host_pem_db_created.png) + +Click `OK` to acknowledge that the `pem` database has been created, and continue to the `Completed…` dialog. + +![PEM server Wizard - Finish Installation dialog](../../images/pem_server_on_separate_host_installation_complete.png) + +When the database portion of the PEM server installation is complete, you can invoke the PEM server on another host to install (or upgrade) PEM-HTTPD. + +### Installing Web Services + +Selecting the `Web Services` radio button on the `Advanced options` dialog instructs the PEM server installer to either install PEM-HTTPD on the current host or update an existing PEM-HTTPD installation. + +![PEM Server Wizard - Advanced Options - Web Services option](../../images/pem_server_on_separate_host_installing_web_services_advanced_options.png) + +!!! Note + The current host may not be the host of the PEM backing database. + +Before selecting this option, you must have: + +- Completed an installation of the PEM server installer on a host system, during which you specified a backing database for the PEM server. +- Modified the `pg_hba.conf` file on the PEM server database host to allow connections from the PEM-HTTPD host, and restarted the database server. + +When you select the `Web Services` option and click `Next`, the PEM server installer will check the current host for existing PEM-HTTPD and LanguagePack installations. + +If the installer does not locate the components, the installer will inform you that one or more dependencies are missing. + +![PEM Server Wizard - Missing dependencies dialog](../../images/pem_server_on_separate_host_web_services_checking_components.png) + +Click `Next` to instruct the server to install LanguagePack + +![PEM Server Wizard - Installing LanguagePack](../../images/pem_server_on_separate_host_installing_web_services_installing_missing_dependency_languagepack.png) + +After installing language pack, the installer will invoke the PEM-HTTPD setup wizard. + +![PEM Server Wizard - Installing PEM-HTTPD wizard](../../images/pem_server_on_separate_host_PEM_httpd_installation_wizard.png) + +Follow the onscreen instructions of the `PEM-HTTPD Setup Wizard`. When the wizard completes the installation, click `Finish` to open the `Database Server Installation Details` dialog. + +![PEM Server Wizard - Database Server Installation Details dialog](../../images/pem_server_on_separate_host_webservices_installing_database_server.png) + +Use the fields on the `Database Server Installation Details` dialog to provide connection information for the Postgres installation that is hosting the PEM server installation: + +- Enter the name or IP address of the PEM server host in the `Host` field. +- Enter the port number on which the Postgres server is listening in the `Port` field. +- Enter the name of a Postgres database superuser in the `User` field. +- Enter the password associated with the Postgres superuser in the `Password` field. + +Click `Next` to continue. Before completing the PEM server installation, the installer will contact the database host. The `pg_hba.conf` file on the PEM database host must be configured to accept connections from the host of the httpd server and the firewall must allow a connection for the installation to continue. The PEM server installer will complete the PEM server installation, adding only those items that must reside on the host of the PEM-HTTPD server. + +## Installing the PEM Server on an Existing Postgres Server + +You can use an existing Postgres server (version 11 or later) to host the PEM server and the `pem` database. Postgres installers and pre-requisite software extensions are freely available on the [EnterpriseDB website](https://www.enterprisedb.com/downloads). + +This section provides information about configuring an existing Postgres server for a PEM server installation. + +!!! Note + The steps that follow should be considered guidelines only; the actual steps required to configure your Postgres installation will vary depending on the configuration of your Postgres server. + +The following versions of Postgres are pre-configured to contain the `sslutils` extension and a service script; no additional preparation is required to use the following Postgres versions as a PEM backend database server: + +- PostgreSQL 11 or later (as bundled with the PEM Server installer) +- Advanced Server 11 or later + +### Preparing the Postgres Server + +Before installing the PEM server on an existing Postgres server, you must: + +- Ensure that the Postgres server contains an installation of the `sslutils` extension. For more information, see [Installing the sslutils Extension](#installing-the-sslutils-extension) section. +- Register the server with the Windows service manager. For more information, see the [Registering the Service](#registering-the-service) section. + +After preparing the server, you can use the PEM server installer to install PEM on the existing Postgres server. + +### Installing the sslutils Extension + +The Postgres server on which the PEM server will reside must contain the `sslutils` extension. The `sslutils` package is freely available for download from the [EDB website](https://www.enterprisedb.com/downloads/modified-gpl-source-code) + +When the web page opens, select the link for the `SRC- SSL Utils 1.3` package. When the download completes, extract the file, and copy it into the Postgres installation directory. + +Remember: You are *not* required to manually add the `sslutils` extension when using the following Postgres installations: + +- PostgreSQL 9.6 or later (as distributed with the PEM server installer) +- Advanced Server 9.6 or later + +`sslutils` must be built with the same compiler that was used to compile the backend Postgres installation. If you are using a backend Postgres database that was installed on a Windows platform using a PostgreSQL one-click installer (from EnterpriseDB) or an Advanced Server installer, you must use Visual Studio to build `sslutils`. + +While specific details of the installation process will vary by platform and compiler, the basic steps are the same. You must: + +1. Copy the `sslutils` package to the Postgres installation directory. + +2. Open the command line of the appropriate compiler, and navigate into the `sslutils` directory. + +3. Use the following commands to build `sslutils`: + + ```text + SET USE_PGXS=1 + + SET GETTEXTPATH= + + SET OPENSSLPATH= + + SET PGPATH= + + SET ARCH=x86 + + REM Set ARCH x64 for 64 bit + + msbuild sslutils.proj /p:Configuration=Release + ``` + + Where: + + `path_to_gettext` specifies the location of the `GETTEXT` library and header files. + + `path_to_openssl` specifies the location of the `openssl` library and header files. + + `path_to_pg_installation_dir` specifies the location of the Postgres installation. + +4. Copy the compiled `sslutils` files to the appropriate directory for your installation. The `sslutils` directory will contain the following files: + + ```text + sslutils--1.3.sql + + sslutils--unpackaged--1.3.sql + + sslutils--pemagent.sql.in + + sslutils.dll + ``` + + Copy the `.dll` libraries and `.sql` files into place: + + ```text + COPY sslutils*.sql* "%PGPATH%\share\extension\" + + COPY sslutils.dll "%PGPATH%\lib\" + ``` + +### Registering the Service + +When you install a PostgreSQL or an Advanced Server database using an installer from EnterpriseDB, the installer will register the service for you. + +If you are using Windows to host the PEM backend database, you must register the name of the Postgres server with the Windows service manager. If you are using a Postgres server that was created using an EnterpriseDB installer, the service will be registered automatically. If you are manually building the installation, you can use the `register` clause of the Postgres `pg_ctl` command to register the service. The syntax of the command is: + +```text +pg_ctl register [-N ] [-U ] + | [-P ] [-D ] +``` + +Where: + + `service name` specifies the name of the Postgres cluster. + + `user_name` specifies the name of an operating system user with sufficient privileges to access the Postgres installation directory and start the Postgres service. + + `password` specifies the operating system password associated with the user. + + `data_directory` specifies the location of the Postgres data directory. + +For more information about using the `pg_ctl` command and the available command options, see the + + [Postgres core documentation](http://www.postgresql.org/docs/current/static/app-pg-ctl.html) + +### Invoking the PEM Server Installer + +After preparing the existing Postgres server, invoke the PEM server installer. Assume Administrative privileges and navigate into the directory that contains the installer. Then, invoke the installer with the command: + +```text +pem_server-7..-- +``` + +Where *x* is the major and minor versions of PEM and platform is the platform. + +The installer displays a `Welcome` dialog. + +![PEM server Wizard - Welcome dialog](../../images/pem_server_existing_pg_welcome_wizard.png) + +Click `Next` to continue to the `License Agreement` dialog. + +![PEM Server Wizard - License Agreement dialog](../../images/pem_server_existing_pg_license_agreement.png) + +Carefully review the license agreement before highlighting the appropriate radio button and accepting the agreement; click `Next` to continue to the `Installation Directory` dialog. + +![PEM Server Wizard - Installation Directory dialog](../../images/pem_server_existing_pg_installation_directory.png) + +Use the `Installation Directory` dialog to specify the location of the PEM server and access the `Advanced options` dialog: + +- Use the `Installation Directory` field to open a browser dialog and select the directory in which the PEM server will be installed. +- If you are installing the PEM server on an existing server, check the box next to `Show advanced options` to instruct the installer to include the `Advanced options` dialog in the installation process. + +Click `Next` to continue. + +![PEM Server Wizard - Advanced Options dialog](../../images/pem_server_existing_pg_advanced_options.png) + +Use the radio buttons on the `Advanced options` dialog to specify an installation type. Select: + +- `Web Services and Database` if both the Postgres server and the PEM-HTTPD server will reside on the current host. This option is valid if you are using an existing Postgres server to host the PEM server, or using the PEM server installer to install the Postgres server on which the PEM server will reside. + + If you select `Web Services and Database`, the PEM server installer will check the current host for a PEM-HTTPD installation, and upgrade or install PEM-HTTPD if necessary. + +- `Web Services` if only the PEM-HTTPD server will reside on the current host. See [Installing Web Services](#installing-web-services) section for more information about invoking this option. + +- `Database` if you are installing only the PEM server (and creating the `pem` backend database) on the current host. This option is valid if you are using an existing Postgres server to host the PEM server, or using the PEM server installer to install the PostgreSQL server on which PEM will reside. + +After selecting an installation option, click `Next` to continue. + +![PEM Server Wizard - Database Server Selection dialog](../../images/pem_server_existing_pg_database_server_selection.png) + +Use the drop-down listbox on the `Database Server Selection` dialog to select a backend database for the PEM server: + +- Select the name of a Postgres server on the current host that was installed using a Postgres one-click installer or Advanced Server installer. +- Select the `PostgreSQL x (Packaged)` option to instruct the installation wizard to install and use the PostgreSQL server that is packaged with the PEM server installer. Where `x` is the version of the PostgreSQL database server. +- Select `Other Database Server` to instruct the PEM server installer to use a Postgres database that was installed from a source other than an EnterpriseDB installer (i.e. from an rpm, or built from source). + +!!! Note + The selected database server must include an installation of the `sslutils` contrib module, and a registered service (on Windows). + +For information about Preparing the Postgres Server, please see [this section](#preparing-the-postgres-server). + +If you selected `Web Services and Database` on the `Advanced options` dialog, the installation wizard will check the current host for an existing PEM-HTTPD installation, and upgrade or install the service as needed. + +If you selected `Database` on the `Advanced options` dialog, the `Database Server Installation Details` dialog opens. + +![PEM Server Wizard - Database Server Installation Details dialog](../../images/pem_server_existing_pg_installation_db_server_details.png) + +Use the fields on the `Database Server Installation Details` dialog to describe the connection to the Postgres server that will host the PEM server: + +- Enter the name of a database superuser in the `User` field. +- Enter the password associated with the superuser in the `Password` field. + +Click `Next` to continue. + +![PEM Server Wizard - PEM Agent Service Account - Administrator's Password](../../images/pem_server_existing_pg_administrators_password.png) + +Provide the administrators password under which PEM Agent service will run. + +Click `Next` to continue. + +![PEM Server Wizard - Network Details dialogsx](../../images/pem_server_existing_pg_network_details.png) + +Use the `Network Details` dialog to specify the CIDR-style network address from which the PEM agents will connect to the server (the `client-side` address). The specified address will be added to the server's `pg_hba.conf file.` + +You can specify additional network addresses by manually adding entries to the `pg_hba.conf` file on the PostgreSQL server if required, using the initial entry as a template. + +When you've added the `Network address`, click `Next` to continue to the `Agent Details` dialog. + +The PEM server installer will install a PEM agent to the host on which the server resides, to monitor the server and provide alert processing and garbage collection services. A certificate will also be installed in the location specified in the `Agent certificate` path field. + +![PEM Server Wizard - Agent Description and Certificate Path dialog](../../images/pem_server_existing_pg_agent_details.png) + +You can enter an alternate description or an alternate agent certificate path for the PEM agent, or accept the defaults. Click `Next` to continue to the `Ready to Install` dialog. + +![PEM Server Wizard - Ready to Install dialog](../../images/pem_server_existing_pg_installation_begins.png) + +The wizard is now ready to install the PEM server. Click `Back` to modify any of the options previously selected, or `Next` to continue with the installation. + +![PEM Server Wizard - Installation in progress](../../images/pem_server_existing_pg_installation_in_progress.png) + +During the installation process, the installer will copy files to the system, and set up the PEM server's backend database. A popup dialog opens confirming that the `pem` database has been created and configured. + +![PEM Server Wizard - pem database created](../../images/pem_server_existing_pg_pem_db_created.png) + + Click `OK` to acknowledge that the pem database has been created, and continue to the `Completed…` dialog. + +![PEM server Wizard - Finish Installation](../../images/pem_server_existing_pg_installation_complete.png) + +If you are using a PEM-HTTPD service that resides on a separate host, you must: + +- Modify the `pg_hba.conf` file on the Postgres server host to allow connections between the hosts. +- Invoke the PEM server installer on the host of the PEM-HTTPD server. See [Installing Web Services](#installing-web-services) section for more information about installing PEM-HTTPD. + +## Invoking the Server Installer from Command Line + +The command line options of the PEM server and PEM agent installers offer functionality in situations where a graphical installation may not work because of limited resources or system configuration. You can: + +- Include the `--mode unattended` option when invoking the installer to perform an installation without additional user input. + +Not all command line options are suitable for all platforms. For a complete reference guide to the command line options, include the `--help` option when you invoke the installer. + +### Invoking the PEM Server Installer in Unattended Mode + +You can perform an unattended PEM server installation by providing installation preferences on the command line when invoking the installer. Please note that the system on which you are installing the PEM server must have internet access. + +You must have Administrative privileges to install the PEM server. Before invoking the PEM server installer, you must install the following dependencies: + +- PostgreSQL +- pem-httpd +- Language Pack + +You can use the PEM server installer to satisfy the dependencies of the PEM server; use the following command to extract the dependencies. Navigate to the location of the installer, and use the following command to extract the dependencies: + +```text +pem-server-7..-windows-x64.exe --extract-dependents C:\ +``` + +In our example, the files are extracted to the `C:\` directory. After extracting the files, you must install each program. Navigate into the directory that contains the files (in our example, `C:\)`, and enter: + +```text +edb-languagepack--windows-x64.exe --mode unattended +pem-httpd--windows-x64.exe --mode unattended +postgresql--windows-x64.exe --mode unattended +``` + +Then, you can invoke the PEM server installer: + +```text +pem-server-7..-windows-x64.exe --mode unattended +--existing-user --existing-password + --pgport --pguser postgres +--agent_description pem-agent --systempassword +--agent-crt-path C:\edb`` +``` + +Where: + +- `registered_edb_user` specifies the name of a registered EnterpriseDB user. To register, visit the [EDB website](https://www.enterprisedb.com/user/register) +- `edb_user_password` specifies the password associated with the EDB user account. +- `port` specifies the port used by the backing PostgreSQL database; by default, the PostgreSQL database uses port `5432`. +- `cidr_address_range` specifies the address range that will be added to the `pg_hba.conf` file of the PEM server's backing database to allow connections from the agents that will be monitored by the server. You may wish to specify a network range (for example, 192.168.2.0/24) to provide server access to agents that reside on the same network. +- `windows_password` specifies the password associated with the Windows Administrator's account. + +!!! Note + when invoked in unattended mode, the PostgreSQL installer creates a user named `postgres`, with a password of `postgres`. diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_windows/04_installing_postgres_enterprise_manager/02_installing_pem_agent_on_windows.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_windows/04_installing_postgres_enterprise_manager/02_installing_pem_agent_on_windows.mdx new file mode 100644 index 00000000000..ec6b56fa99b --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_windows/04_installing_postgres_enterprise_manager/02_installing_pem_agent_on_windows.mdx @@ -0,0 +1,113 @@ +--- +title: "Installing a PEM Agent on Windows" +--- + +To invoke the PEM Agent installer, assume `Administrative` privileges and navigate into the directory that contains the installer. Then, invoke the installer with the command: + +```text +pem_agent-7..--platform.exe +``` + +The `Setup…` page opens, welcoming you to the PEM Agent installer. + +![PEM Agent Wizard - Welcome dialog](../../images/pem_agent_welcome_dialog.png) + +Click `Next` to continue to the `License Agreement`. + +![PEM Agent Wizard - License Agreement dialog](../../images/pem_agent_windows_license_agreement.png) + +Carefully review the license agreement before highlighting the appropriate radio button and accepting the agreement; click `Next` to continue to the `Installation Directory` dialog. + +![PEM Agent Wizard - Installation Directory dialog](../../images/pem_agent_windows_installation_directory.png) + +By default, the PEM Agent is installed in the `C:\Program Files (x86)\edb\pem` directory.You can accept the default installation directory, or modify the contents of the `Installation Directory` field, specifying an alternate installation directory for the PEM agent. + +By default, the PEM Agent installer places a certificate in the Administrator’s `%APPDATA%\pem` directory. Check the `Show advanced options` box to indicate that you would like the PEM agent installer to include a dialog that allows you to specify an alternate path for the certificate file. + +Check the box next to `Register now?` to instruct the installer to register the newly installed PEM Agent with the PEM server. + +Click `Next` to continue to the `PEM Server Installation Details` dialog. + +![PEM Agent Wizard - PEM Server Installation details dialog](../../images/pem_agent_pem_server_windows_installation_details.png) + +Enter the connection details for the PEM server on the `PEM server installation details` dialog: + +- Specify the name or IP address of the system on which the PEM database server resides in the `Host` field. Please note: If the PEM-HTTPD web server and PEM database are hosted on different systems, you must specify *the host of the PEM database*. +- Specify the name of the database superuser in the `User Name` field. +- Specify the password associated with the database superuser in the `Password` field. +- Specify the port that PostgreSQL is monitoring in the `Port` field. + +Click `Next` to continue to `pemAgent Service Account`. The installer will attempt to connect to the server to verify that the details are correct. + +!!! Note + The PEM server must allow connections from the PEM Agent installer. If you encounter a connection error, confirm the connection properties specified on the `PEM Server Installation Details` dialog are correct, and confirm that the `pg_hba.conf` file (on the PEM server) will allow a connection to the server described in the error message. + +![PEM Agent Wizard - pemAgent Service Account password dialog](../../images/pem_agent_service_account_windows_password.png) + +Provide the password for the edb account under which the pemAgent service will run. The Agent certificate and key files will be created in `C:\Users\edb\AppData\Roaming\pem` directory. Click `Next` to continue to `Agent Details` dialog. + +![PEM Agent Wizard - Naming PEM Agent dialog](../../images/pem_agent_windows_agent_details.png) + +The tree control displayed in the `Browser` panel of the PEM web interface displays the value entered in the `Description` field to identify the PEM agent. Specify a descriptive name for the agent, such as the hostname of the machine the agent is installed on, or a name that reflects the host's functionality. + +Provide a descriptive name, or accept the default provided by the PEM Agent host, and click `Next` to continue. + +If you checked the `Show advanced options` checkbox, the `Advanced options` dialog opens. + +![PEM Agent Wizard - Advanced Options - Certificate Path dialog](../../images/pem_agent_windows_advanced_options_certificate_path.png) + +By default, the PEM Agent installer places the certificate in the `C:\Program Files (x86)\edb\pem` directory. Specify an alternate path for the certificate or accept the default and click `Next`. + +The wizard is now ready to install the PEM Agent; click `Back` to amend the installation directory, or `Next` to continue. + +![PEM Agent Wizard - Ready to install](../../images/pem_agent_windows_installation_ready_to_begin.png) + +Click `Next` on the `Ready to Install` dialog to instruct the installer to copy files to the system and register the Agent on the PEM server. + +![PEM Agent Wizard - Installation in progress](../../images/pem_agent_windows_installation_in_progress.png) + +The PEM Agent installer displays progress bars to mark the PEM Agent's installation progress. + +![PEM Agent Wizard - Finish Installation dialog](../../images/pem_agent_windows_installation_complete.png) + +When the installation has completed, the PEM Agent will be running and reporting operating system and host data to the PEM server. To start monitoring Postgres instances on the host of the PEM agent, they must now be added to PEM’s enterprise directory and bound to the agent. + +## Invoking the Agent Installer from the Command Line + +The command line options of the PEM Agent installers offer functionality in situations where a graphical installation may not work because of limited resources or system configuration. You can: + +- Include the `--mode unattended` option when invoking the installer to perform an installation without additional user input. + +Not all command line options are suitable for all platforms. For a complete reference guide to the command line options, include the `--help` option when you invoke the installer. + +### Invoking the PEM Agent Installer in Unattended Mode + +You can perform an unattended PEM server installation by providing installation preferences on the command line when invoking the installer. Please note that the system on which you are installing the PEM server must have internet access. + +Before invoking the PEM Agent installer in unattended mode, you must: + +- Install the PEM server; the `pg_hba.conf` file of the PEM server must allow connections from the host of the PEM Agent. +- Ensure that the monitored Postgres database has SSL enabled, and is accepting connections. + +You must have Administrator privileges to install the PEM Agent. Use the following command to invoke the PEM Agent installer in unattended mode: + +```text +pem-agent-7..-windows-x64.exe --mode unattended +--pghost --pgport +--pguser postgres --pgpassword +--agent_description +``` + +Where: + +- `pem_server_host_address` specifies the IP address of the host of the PEM server. +- `pem_server_port` specifies the port used by the backing PEM database; by default, the database uses port `5432`. +- `pguser_password` specifies the password associated with the PEM database superuser. +- `agent_name` specifies a descriptive name for the PEM Agent. + +```text +EnterpriseDB is the leading provider of value-added products and services for the Postgres community. Please visit our website at www.enterprisedb.com. +``` + +!!! Note + When configuring a shell/batch script run by a Windows Agent that has PEM 7.11 or later version installed, the `AllowBatchJobSteps` parameter must be set to `True` in the `agent.cfg` file. The PEM agent will not execute any batch/shell script by default. diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_windows/04_installing_postgres_enterprise_manager/index.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_windows/04_installing_postgres_enterprise_manager/index.mdx new file mode 100644 index 00000000000..1d10d6e64d5 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_windows/04_installing_postgres_enterprise_manager/index.mdx @@ -0,0 +1,21 @@ +--- +title: "Installing Postgres Enterprise Manager" +--- + + + +The PEM server graphical installer for Windows installs and configures the PEM server, a PEM agent, and the software required to connect to the PEM web interface with your choice of browser. + +The PEM server uses a Postgres installation and backing database to manage data. The `pem` backing database gets created while installing the PEM Server through installer. + +For detailed information about using the PEM server graphical installer, see [Installing the PEM Server on Windows](01_installing_pem_server_on_windows/#installing_pem_server_on_windows). + +The PEM agent graphical installer for Windows installs and registers the PEM agent. The PEM agent that is installed with the PEM server is capable of monitoring multiple servers that reside on the same host, or on remote hosts. Please note that the PEM functionality on servers monitored by a remote agent may be limited. + +For detailed information about using the PEM agent graphical installer, see [Installing a PEM Agent on Windows](02_installing_pem_agent_on_windows/#installing_pem_agent_on_windows). + +
+ +installing_pem_server_on_windows installing_pem_agent_on_windows + +
diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_windows/05_the_pem_web_interface.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_windows/05_the_pem_web_interface.mdx new file mode 100644 index 00000000000..3c196c9a37b --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_windows/05_the_pem_web_interface.mdx @@ -0,0 +1,39 @@ +--- +title: "The PEM Web Interface" +--- + +After installing a PEM Server and Agent, you can configure PEM to start monitoring and managing PostgreSQL or Advanced Server instances. The PEM Server installer installs the PEM web interface. You can use the interface to review information about objects that reside on monitored servers, or to review statistical information gathered by the PEM Server. + +After installing and configuring PEM, you can use any supported browser to access the PEM web interface. Open your browser, and navigate to: + + `https://:8443/pem` + +Where `ip_address_of_PEM_host` specifies the IP address of the host of the PEM Server. The `Postgres Enterprise Manager Web Login` window opens: + +![The PEM Web Login page](../images/pem_login.png) + +Use the fields on the `Postgres Enterprise Manager Login` window to authenticate yourself with the PEM Server: + +- Provide the name of a `pem` database user in the `Username` field. For the first user connecting, this will be the name provided when installing the PEM server. +- Provide the password associated with the user in the `Password` field. + +Click the `Login` button to connect to the PEM Server. + +![The Global Overview Dashboard](../images/global_overview.png) + +Before you can use the PEM web interface to manage or monitor a database server, you must *register* the server with the PEM Server. When you register a server, you describe the connection to the server, provide authentication information for the connection, and specify any management preferences (optionally binding an agent). + +A server may be managed or unmanaged: + +- A `managed` server is bound to a PEM Agent. The PEM Agent will monitor the server to which it is bound, and perform tasks or report statistics for display on the PEM dashboards. A managed server has access to extended PEM functionality such as Package Management or Custom Alerting; when registering a server, you can also allow a managed server to be restarted by PEM as required. +- An `unmanaged` server is not bound to a PEM Agent; you can create database objects on an unmanaged server, but extended PEM functionality (such as Package Management or Custom Alerting) is not supported on an unmanaged server. + +You must also ensure the `pg_hba.conf` file of the server that you are registering allows connections from the host of the PEM web interface. + +To access online help information about the PEM web interface, select `Help` from the menu bar. Additional information is available in .pdf and .html format from the [EDB website](https://www.enterprisedb.com/docs/pem/latest/) + +- The `PEM Administrator's Guide` contains information about registering and managing servers, agents, and users. +- The `PEM Enterprise Features Guide` contains information about using the tools and wizards that are part of the web interface. +- The `PEM Agent User Guide` contains helpful information about managing your PEM Agents. +- The `PEM Upgrade and Migration Guide` contains information about upgrading PEM to its latest version from a previous version. +- The `PEM PgBouncer Configuration Guide` contains information about using PgBouncer with your PEM installation. diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_windows/06_uninstalling_pem_components.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_windows/06_uninstalling_pem_components.mdx new file mode 100644 index 00000000000..104cf62a148 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_windows/06_uninstalling_pem_components.mdx @@ -0,0 +1,13 @@ +--- +title: "Uninstalling Postgres Enterprise Manager Components" +--- + +If you uninstall the PEM server from a host, the PEM agent installed on the same host is uninstalled. But if you uninstall the PEM agent, then the PEM server installed on the same host will not be uninstalled. + +You can use the Windows `Add/Remove Programs` application to remove PEM components from a Windows host. Select the `Add/Remove Programs` option from the Windows `Control Panel`. When the `control panel` opens, locate the name of the PEM component in the program list. Click the `Remove` button to remove the component. + +You can also invoke the uninstaller that resides at the following location: + + For the PEM Server, `C:\Program Files\edb\pem\server\uninstall-pemserver` + + For the PEM Agent, `C:\Program Files\edb\pem\agent\uninstall-pemagent` diff --git a/product_docs/docs/pem/7.16/pem_inst_guide_windows/index.mdx b/product_docs/docs/pem/7.16/pem_inst_guide_windows/index.mdx new file mode 100644 index 00000000000..aeca01bb425 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_inst_guide_windows/index.mdx @@ -0,0 +1,18 @@ +--- +navTitle: Windows Installation Guide +title: "PEM Installation Guide on Windows" +--- + +Postgres Enterprise Manager (PEM) is designed to assist database administrators, system architects, and performance analysts when administering, monitoring, and tuning PostgreSQL and Advanced Server database servers. PEM has been designed to manage and monitor a single server or multiple servers from a single console, allowing complete control over monitored databases. + +This document provides step-by-step instructions to guide you through the installation of Postgres Enterprise Manager. + +Throughout this guide, the term *Postgres* refers to either a PostgreSQL or an Advanced Server installation, where either is appropriate. + +Language pack installers contain supported languages that may be used with EDB Postgres Advanced Server and EDB PostgreSQL database installers. The language pack installer allows you to install Perl, TCL/TK, and Python without installing supporting software from third party vendors. For more information about installing and using Language Pack, please see the *EDB Postgres Language Pack Guide*, available from the EDB Website. + +
+ +whats_new pem_hardware_software_requirements pem_architecture installing_postgres_enterprise_manager the_pem_web_interface uninstalling_pem_components conclusion + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/01_pem_architecture.mdx b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/01_pem_architecture.mdx new file mode 100644 index 00000000000..77b5728c9bd --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/01_pem_architecture.mdx @@ -0,0 +1,99 @@ +--- +title: "PEM Architecture" +--- + + + +Postgres Enterprise Manager (PEM) is a tool designed to monitor and manage multiple Postgres servers through a single GUI interface. PEM is capable of monitoring the following areas of the infrastructure: + +Note: The term Postgres refers to either PostgreSQL or EDB Postgres Advanced Server. + +- **Hosts** - One or more servers (physical or virtual) and their operating systems. +- **Servers** - One or more instances of PostgreSQL or EDB Postgres Advanced Server running on a host. +- **Databases** - One or more databases and the schema objects (tables, indexes, etc.) within them. + +PEM consists of a number of individual software components; the individual components are described below. + +- **PEM Server** - The PEM Server is used as the data repository for monitoring data and as a server to which both Agents and Clients connect. The PEM server consists of an instance of PostgreSQL and an associated database for storage of monitoring data, and a server that provides web services. +- **PEM Agent** - The PEM Agent is responsible for executing tasks and reporting statistics from the Agent host and monitored Postgres instances to the PEM server. A single PEM Agent can monitor multiple installed instances of Postgres that reside on one or many hosts. +- **PEM Web Client** - The PEM web interface allows you to manage and monitor Postgres servers and utilize PEM extended functionality. The web interface software is installed with the PEM server and is accessed via any supported web browser. +- **SQL Profiler** - SQL Profiler is a Postgres server plugin to record the monitoring data and query plans to be analysed by the SQL Profiler tool in PEM. This is an optional component of PEM, but the plugin must be installed into each instance of Postgres with which you wish to use the SQL Profiler tool. The SQL Profiler may be used with any supported version of an EnterpriseDB distribution of a PostgreSQL server or Advanced Server (not just those managed through the PEM server). See the [PEM SQL Profiler Configuration Guide](/pem/latest/) for details and supported versions. + +**PEM architecture** + +The following architectural diagram illustrates the relationships between the PEM server, clients, and managed as well as unmanaged Postgres servers. + +![PEM Architecture](../images/pem_architecture.png) + +## **The PEM Server** + +![PEM Server](../images/pem_server.png) + +The PEM server consists of an instance of Postgres, an instance of the Apache web-server providing web services to the client, and a PEM Agent. PEM utilizes a server-side cryptographic plugin to generate authentication certificates. + +The instance of Postgres (a database server) and an instance of the Apache web-server ( HTTPD) can be on the same host or on separate hosts. + +- **Postgres Instance (Database server)** - This is the backend database server. It hosts a database named **pem** which acts as the repository for PEM Server. The **pem** database contains several schemas that store metric data collected from each monitored host, server, and database. + - **pem** - This schema is the core of the PEM application. It contains the definitions of configuration functions, tables, or views required by the application. + - **pemdata** - This schema stores the current snapshot of the monitored data. + - **pemhistory** - This schema stores the historical monitored data. +- **Apache Web Server (HTTPD)** - The PEM Web Application is deployed as a WSGI application with HTTPD to provide web services to the client. It is comprised of the following: + - **Web content presentation** - The presentation layer is created by the Web Application (for example Browser, login page,..). + - **Rest API** - The REST API allows integration with other apps and services. + - **Database Server Administration/Management** - Database server administration and management activities like CREATE, ALTER, DROP, etc. can be performed for managed as well as unmanaged servers. + - **Dashboard/Chart generation** - Internally, the web application includes functionality that generates Dashboards and Charts. + - **Management Tools** - The Audit Manager, Capacity Manager, Log Manager, Postgres Expert, Postgres Log Analysis Expert, and the Tuning Wizard are made available in the Web Application. + - Other tools provide functionality on managed or unmanaged servers: + - **SQL Profiler UI Integration** - SQL Profiler generates easily analyzed traces of session content. + - **Query Editor/Data View** - The Query editor allows you to query, edit, and view data. + - **Debugger** - The Debugger helps you debug queries. + - **Performance Diagnostics** - Performance Diagnostics help you analyze the performance of Advanced Server. + +We recommended that you use a dedicated machine to host production instances of the PEM backend database. The host may be subject to high levels of data throughput, depending on the number of database servers that are being monitored and the workloads the servers are processing. + +## **The PEM Agent** + +![PEM Agent](../images/pem_agent.png) + +The PEM Agent is responsible for the collection of monitoring data from the machine and operating system, as well as from each of the Postgres instances to which they are bound. Each PEM Agent can monitor one physical or virtual machine and is capable of monitoring multiple database servers locally - installed on the same system, or remotely - installed on other systems. It is also responsible for executing other tasks that may be scheduled by the user (for example, server shutdowns, SQL Profiler traces, user-defined jobs). + +A PEM Agent is installed by default on the PEM Server along with the installation of the PEM Server. It is generally referred to as a PEM Agent on the PEM Host. Separately, the PEM Agent can also be installed on the other servers hosting the Postgres instances to be monitored using PEM. + +Whether monitoring locally or remotely, the PEM Agent connects to the PEM Server using PostgreSQL’s libpq, using SSL certificate-based authentication. The PEM Agent installer in Windows and pemworker CLI in Linux is responsible for registering each agent with the PEM Server, and generating and installing the required certificates. + +Please note that there is only one-way traffic between the PEM Agent and PEM Server; the PEM Agent always connects to the PEM Server. + +The PEM Agent must be able to connect to each database server that it monitors. This connection is made over a TCP/IP connection (or optionally a Unix Domain Socket on Unix hosts), and may optionally use SSL. The user must configure the connection and authentication to the monitored server. + +Once configured, each agent collects statistics and other information on the host and each database server and database that it monitors. Each piece of information is known as a **metric** and is collected by a **probe**. Most probes will collect multiple metrics at once for efficiency. Examples of the metrics collected include: + +- Disk I/O statistics +- Network statistics +- Database server version string +- Database server configuration option (GUC) values +- Table access statistics +- Table and index sizes + +A list of PEM probes can be found [here](../04_toc_pem_features/12_pem_manage_probes/03_pem_probe_config/01_pem_probes/#pem_probes). + +By default, the PEM Agent bound to the database server collects the OS/Database monitoring statistics and also runs any scheduled tasks/jobs for that particular database server, storing data in the pem database on the PEM server. + +The Alert processing, SNMP/SMTP spoolers, and Nagios Spooler data is stored in the pem database on the PEM server and is then processed by the PEM Agent on the PEM Host by default. However, processing by other PEM Agents can be enabled by adjusting the SNMP/SMTP and Nagios parameters of the PEM Agents. + +To see more information about these parameters see [Server Configuration](../04_toc_pem_features/02_pem_server_config/#pem_server_config). + +## **The PEM Web Client** + +The PEM client is a web-based application that runs in supported browsers. The client's web interface connects to the PEM server and allows direct management of managed or unmanaged servers, and the databases and schemas that reside on them. + +The client allows you to use PEM functionality that makes use of the data logged on the server through features such as the dashboards, the Postgres Log Analysis Expert, and Capacity Manager. + +## **The SQL Profiler Plugin** + +You are not required to install the SQL Profiler plugin on every server, but you must install and configure the plugin on each server on which you wish to use the SQL Profiler. You may also want to install and configure SQL Profiler on un-monitored development servers. For ad-hoc use also, you may temporarily install the SQL Profiler plugin. + +The plugin is installed with the EDB Postgres Advanced Server distribution but must be installed separately for use with PostgreSQL. The SQL Profiler installer is available from the [EnterpriseDB website](http://www.enterprisedb.com/download-postgres-enterprise-manager). + +SQL Profiler may be used on servers that are not managed through PEM, but to perform scheduled traces, a server must have the plugin installed, and must be managed by an installed and configured PEM agent. + +For more information about using SQL Profiler, see the [PEM SQL Profiler Configuration Guide](/pem/latest/) diff --git a/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/02_pem_server_logon.mdx b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/02_pem_server_logon.mdx new file mode 100644 index 00000000000..1da73953e33 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/02_pem_server_logon.mdx @@ -0,0 +1,30 @@ +--- +title: "PEM Server Logon" +--- + + + +The PEM web interface uses Apache to connect to the PEM server on port 8080 of the IP address on which the PEM server is installed. To connect to PEM, open your browser of choice, and navigate to: + +> *<ip_address_of_PEM_host>:8080/pem* + +Where `ip_address_of_PEM_host` specifies the IP address of the host of the PEM server. + +![PEM login window](../images/pem_logon.png) + +Use the fields on the Login window to authenticate yourself with the PEM server: + +- Provide the name of a `pem` database user in the `Username` field. Users logon to PEM using user credentials setup as `login roles` on the PostgreSQL database used by the PEM server. By default, the `postgres` superuser account will be used for the initial logon. + + We strongly recommend you create an individual role for each user. You can create a login role with the `CREATE ROLE` SQL statement, or by defining a role with the PEM client `Create - Login/Group Role` dialog. To access the dialog, connect to the PEM server database; right-click the `Login/Group Roles` node in the tree control, and select `New Login Role...` from the `Create` pull-aside menu. Roles must be granted permissions and role memberships to properly use PEM: + + - users that are members of the `pem_user` role are essentially `read-only` users; they may view dashboards, change the database server connection options, but they will not be able to install agents or configure the server directory, alerts, probes, or run any of the wizard/dialog based components of PEM. + - users that are members of the `pem_admin` role have the same read permissions as members of the pem_user role, plus sufficient privileges to configure the servers, directory, alerts and probes. + - `administrative` users must be added to the pem_admin role and explicitly granted the create role privilege. in addition to the permissions granted through membership in the pem_admin role, the create role privilege allows an administrator to create additional pem users, and to install and register new agents. + - users can be member of one of the [PEM roles](04_pem_roles/#pem_roles) to give right to run a particular component, to manage, or to configure PEM. + +- Provide the password associated with the user in the `Password` field. + +After providing your credentials, click `Login` to connect to the PEM client. PEM opens, displaying the `Global Overview` Dashboard: + +![PEM global overview dashboard](../images/global_overview.png) diff --git a/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/03_pem_managing_configuration_settings.mdx b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/03_pem_managing_configuration_settings.mdx new file mode 100644 index 00000000000..0b342264ca3 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/03_pem_managing_configuration_settings.mdx @@ -0,0 +1,19 @@ +--- +title: "Managing Configuration Settings" +--- + + + +There are multiple configuration files that are read at startup by Postgres Enterprise Manager. These are as follows: + +- `config.py`: This is the main configuration file, and should not be modified. It can be used as a reference for configuration settings, that may be overridden in one of the following files. +- `config_distro.py`: This file is read after `config.py` and is intended for packagers to change any settings that are required for their Postgres Enterprise Manager distribution. This may typically include certain paths and file locations. This file is optional, and may be created by packagers in the same directory as `config.py` if needed. +- `config_local.py`: This file is read after `config_distro.py` and is intended for end users to change any default or packaging specific settings that they may wish to adjust to meet local preferences or standards.This file is optional, and may be created by users in the same directory as `config.py` if needed. + +The default `config.py` file is shown below for reference: + +
+ +../../web/config.py + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/04_pem_roles.mdx b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/04_pem_roles.mdx new file mode 100644 index 00000000000..421fb02b850 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/04_pem_roles.mdx @@ -0,0 +1,59 @@ +--- +title: "Roles for managing PEM" +--- + + + +You can use the `Login/Group Role` dialog to allow a role with limited privileges to access PEM features such as the Audit Manager, Capacity Manager, or SQL Profiler. PEM pre-defined roles allow access to PEM functionality; roles that are assigned membership in these roles can access the associated feature. + +![Role dialog membership tab](../images/role_dialog_membership.png) + +When defining a user, use the `Membership` tab to specify the roles in which the new user is a member. The new user will share the privileges associated with each role in which it is a member. For a user to have access to PEM extended functionality, the role must be a member of the pem_user role and the pre-defined role that grants access to the feature. Use the `Roles` field to select pre-defined role names from a drop down list. + +Check the checkbox to the right of the role name to allow administrative access to the functionality. + +The `SQL` tab displays the SQL command that the server will execute when you click `Save`. + +![Role based membership example](../images/pem_roles_membership_example.png) + +The examples shown above creates a login role named `acctg_clerk` that will have access to the Audit Manager; the role can make unlimited connections to the server at any given time. + +You can use PEM pre-defined roles to allow access to the functionality listed in the table below: + +| Value | Parent Role | Description | +| -------------------------------- | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| pem_super_admin | | Role for administration/management/configuration of all the objects within Postgres Enterprise Manager console. | +| pem_admin | pem_super_admin | Role for administration/management/configuration of all the agents, servers, or monitored objects that are visible to a user having pem_admin role. A user with pem_admin role can view and manage only those objects where this role has been mentioned in the Team field under the server's properties. | +| pem_user | | Role for having read-only access to all the agents, servers, or monitored objects that are visible to a user having pem_user role. A user with pem_user role can view only those objects where this role has been mentioned in the Team field under the server's properties. | +| pem_config | pem_admin | Role for configuration management of Postgres Enterprise Manager. | +| pem_component | pem_admin | Role to run/execute all wizard/dialog based components. | +| pem_rest_api | pem_admin | Role to access the REST API. | +| pem_server_service_manager | pem_admin | Role for allowing to restart/reload the monitored database server (if server-id provided). | +| pem_manage_schedule_task | pem_admin | Role to configure the schedule tasks. | +| pem_manage_alert | pem_admin | Role for managing/configuring alerts, and its templates. | +| pem_config_alert | pem_config, pem_manage_alert | Role for configuring the alerts on any monitored objects. | +| pem_manage_probe | pem_admin | Role to create, update, delete the custom probes, and change custom probe configuration. | +| pem_config_probe | pem_config, pem_manage_probe | Role for probe configuration (history retention, execution frequency, enable/disble the probe) on all visible monitored objects. | +| pem_database_server_registration | pem_admin | Role to register a database server. | +| pem_comp_postgres_expert | pem_component | Role to run the Postgres Expert. | +| pem_comp_auto_discovery | pem_component | Role to run the Auto discovery of a database server dialog. | +| pem_comp_log_analysis_expert | pem_component | Role to run the Log Analysis Expert. | +| pem_comp_sqlprofiler | pem_component | Role to run the SQL Profiler. | +| pem_manage_efm | pem_admin | Role to manage Failover Manager functionalities. | +| pem_comp_capacity_manager | pem_component | Role to run the Capacity Manager. | +| pem_comp_log_manager | pem_component | Role to run the Log Manager. | +| pem_comp_audit_manager | pem_component | Role to run the Audit Manager. | +| pem_comp_tuning_wizard | pem_component | Role to run the Tuning Wizard. | +| pem_comp_bart | pem_component | Role to configure and manage BART server. | + +
+ +
+ +Note + +
+ +The difference between pem_admin role and pem_super_admin role is that a user with pem_admin role can view and manage only those objects where the role has been mentioned in the Team field under the server's properties, while a user with pem_super_admin role can view and manage all the objects within Postgres Enterprise Manager console. + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/05_group_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/05_group_dialog.mdx new file mode 100644 index 00000000000..ec785d49c8b --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/05_group_dialog.mdx @@ -0,0 +1,17 @@ +--- +title: "The Group Dialog" +--- + + + +Use the `Group` dialog to add a new group to the PEM client tree control. You can use a group to simplify management of related servers or agents. + +![Create Group dialog](../images/create_group.png) + +Use the `Name` field to specify a name that will identify the group in the `PEM` browser tree control. + +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. + +To add a server or agent to a group, right-click on the name of a server or agent, and select `Properties...` to open the properties dialog. Then, use the drop-down listbox in the `Group` field to select the group in which the object should reside. diff --git a/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/06_auto_discovery_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/06_auto_discovery_dialog.mdx new file mode 100644 index 00000000000..fad595cb115 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/06_auto_discovery_dialog.mdx @@ -0,0 +1,39 @@ +--- +title: "Automatic Discovery of Servers" +--- + + + +Use the `Auto Discovery` dialog to instruct a PEM agent to locate database servers that reside on a monitored system, and add a binding that allows the agent to monitor the selected server. + +To enable auto discovery for a specific agent, you must enable the `Server Auto Discovery` probe. To access the `Manage Probes` tab, highlight the name of a PEM agent in the PEM client tree control, and select `Manage Probes...` from the `Management` menu. When the Manage Probes tab opens, confirm that the slider control in the `Enabled?` column is set to `Yes`. + +To open the `Auto Discovery` dialog, highlight the name of a PEM agent in the PEM client tree control, and select `Auto Discovery...` from the `Management` menu. + +![Auto Discovery dialog](../images/auto_discovery.png) + +When the `Auto Discovery` dialog opens, the `Discovered Database Servers` box will display a list of servers that are not currently monitored by a PEM agent. Check the box next to a server name to display information about the server in the `Server Connection Details` box, and provide any missing information to bind the server to the currently selected agent in the `Agent Connection Details` box. + +Use the `Select All` button to select the box next to all of the displayed servers, or `Unselect All` to unselect all of the boxes to the left of the server names. + +The fields in the `Server Connection Details` box provide information about the server that PEM will monitor: + +- Accept or modify the name of the monitored server in the `Name` field. The specified name will be displayed in the tree control of the PEM client. +- Use the `Server group` drop-down listbox to select the server group under which the server will be displayed in the PEM client tree control. +- Use the `Host name/address` field to specify the IP address of the monitored server. +- The `Port` field displays the port that is monitored by the server; this field may not be modified. +- Provide the name of the service in the `Service ID` field. Please note that the service name must be provided to enable some PEM functionality. +- By default, the `Maintenance database` field indicates that the selected server uses a `postgres` maintenance database. Customize the content of the `Maintenance database` field for your installation. + +The fields in the `Agent Connection Details` box specify the properties that the PEM agent will use when connecting to the server: + +- The `Host` field displays the IP address that will be used for the PEM agent binding. +- The `Username` field displays the name that will be used by the PEM agent when connecting to the selected server. +- The `Password` field displays the password associated with the specified user name. +- Use the drop-down listbox in the `SSL mode` field to specify your SSL connection preferences. + +When you've finished specifying the connection properties for the servers that you are binding for monitoring, click the `OK` button to save the properties. Click `Cancel` to exit without preserving any changes. + +![Auto Discovery example](../images/auto_discovery_example.png) + +The dialog shown above displays the values required to bind an instance of Advanced Server for monitoring by PEM. diff --git a/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/07_pem_define_connection.mdx b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/07_pem_define_connection.mdx new file mode 100644 index 00000000000..ac098e6ac67 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/07_pem_define_connection.mdx @@ -0,0 +1,104 @@ +--- +title: "Defining a server" +--- + + + +Use the `Create - Server` dialog to describe a new server connection, bind the server to a PEM agent, and display the server to the PEM tree control. + +![Create Server dialog - General tab](../images/create_server_general_tab.png) + +Use the fields on the `General` tab to describe the general properties of the server: + +- Use the `Name` field to specify a user-friendly name for the server. The name specified will identify the server in the PEM client tree control. +- You can use [groups](05_group_dialog/#group_dialog) to organize your servers and agents in the PEM client tree control. Using groups can help you manage large numbers of servers more easily. For example, you may want to have a production group, a test group, or LAN specific groups. Use the `Group` drop-down listbox to select the group in which the new server will be displayed. +- Use the `Team` field to specify a PostgreSQL role name. Only PEM users who are members of this role, who created the server initially, or have superuser privileges on the PEM server will see this server when they logon to PEM. If this field is left blank, all PEM users will see the server. +- Use the `Background` color selector to select the color that will be displayed in the PEM tree control behind database objects that are stored on the server. +- Use the `Foreground` color selector to select the font color of labels in the PEM tree control for objects stored on the server. +- Check the box next to `Connect now?` to instruct PEM to attempt a connection to the database server when you click the Save button on the Create - Server dialog. Leave the `Connect now?` checkbox unchecked if you do not want to establish a connection to the server immediately. If you do not select the `Connect now?` option, the connection parameters are not validated until you attempt a connection. +- Provide notes about the server in the `Comments` field. + +![Create Server dialog - Connection tab](../images/create_server_connection_tab.png) + +Use fields on the `Connection` tab to specify connection details for the server: + +- Specify the IP address of the server host, or the fully qualified domain name in the `Host name/address` field. On Unix based systems, the address field may be left blank to use the default PostgreSQL Unix Domain Socket on the local machine, or may be set to an alternate path containing a PostgreSQL socket. If you enter a path, the path must begin with a "/". +- Specify the port number of the host in the `Port` field. +- Use the `Maintenance database` field to specify the name of the initial database that PEM will connect to, and that will be expected to contain the [pgAgent](../10_pgagent/#pgagent) schema and adminpack objects if installed (both are optional). On an Advanced Server database, the maintenance database is named 'edb'. On PostgreSQL 8.1 and above, the maintenance DB for PostgreSQL is named 'postgres'; on earlier versions 'template1' is often used, though it is preferrable to create a 'postgres' database for this purpose to avoid cluttering the template database. +- Specify the name that will be used when authenticating with the server in the `Username` field. +- Provide the password associated with the specified user in the `Password` field. +- Check the box next to `Save password?` to instruct the PEM server to save the password in encrypted format on the PEM server backend database server for later reuse. Password will be stored per server per user basis, hence - it won't be shared with other team members. To remove a password, disconnect from the server, click on the 'Clear Saved Password' menu item under Object/Context menu of the database server. +- Use the `Role` field to specify the name of the role that is assigned the privileges that the client should use after connecting to the server. This allows you to connect as one role, and then assume the permissions of another role when the connection is established (the one you specified in this field). The connecting role must be a member of the role specified. + +![Create Server dialog - SSL tab](../images/create_server_ssl_tab.png) + +Use the fields on the `SSL` tab to configure SSL. + +- Use the drop-down list box in the `SSL mode` field to select the type of SSL connection the server should use. For more information about using SSL encryption, see [Section 33.18 of the Postgres documentation](https://www.postgresql.org/docs/current/static/libpq-ssl.html). + +You can use the platform-specific File manager dialog to upload files that support SSL encryption to the server. To access the File manager dialog, click the icon that is located to the right of each of the following fields. + +- Use the `Client certificate` field to specify the file containing the client SSL certificate. This file will replace the default `~/.postgresql/postgresql.crt` if PEM is installed in Desktop mode, and `//.postgresql/postgresql.crt` if PEM is installed in Web mode. This parameter is ignored if an SSL connection is not made. +- Use the `Client certificate key` field to specify the file containing the secret key used for the client certificate. This file will replace the default `~/.postgresql/postgresql.key` if PEM is installed in Desktop mode, and `//.postgresql/postgresql.key` if PEM is installed in Web mode. This parameter is ignored if an SSL connection is not made. +- Use the `Root certificate` field to specify the file containing the SSL certificate authority. This file will replace the default `~/.postgresql/root.crt`. This parameter is ignored if an SSL connection is not made. +- Use the `Certificate revocation list` field to specify the file containing the SSL certificate revocation list. This list will replace the default list, found in `~/.postgresql/root.crl`. This parameter is ignored if an SSL connection is not made. +- When `SSL compression?` is set to `True`, data sent over SSL connections will be compressed. The default value is `False` (compression is disabled). This parameter is ignored if an SSL connection is not made. + +`WARNING:` certificates, private keys, and the revocation list are stored in the per-user file storage area on the server, which is owned by the user account under which the PEM server process is run. This means that administrators of the server may be able to access those files; appropriate caution should be taken before choosing to use this feature. + +![Crreate Server dialog - SSH Tunnel tab](../images/create_server_ssh_tunnel_tab.png) + +Use the fields on the `SSH Tunnel` tab to configure SSH Tunneling. You can use a tunnel to connect a database server (through an intermediary proxy host) to a server that resides on a network to which the client may not be able to connect directly. + +- Set `Use SSH tunneling` to `Yes` to specify that PEM should use an SSH tunnel when connecting to the specified server. +- Specify the name or IP address of the SSH host (through which client connections will be forwarded) in the `Tunnel host` field. +- Specify the port of the SSH host (through which client connections will be forwarded) in the `Tunnel port` field. +- Specify the name of a user with login privileges for the SSH host in the `Username` field. +- Specify the type of authentication that will be used when connecting to the SSH host in the `Authentication` field. + - Select `Password` to specify that PEM will use a password for authentication to the SSH host. This is the default. + - Select `Identity file` to specify that PEM will use a private key file when connecting. +- If the SSH host is expecting a private key file for authentication, use the `Identity file` field to specify the location of the key file. +- If the SSH host is expecting a password, use the `Password` field to specify the password, or if an identity file is being used, the passphrase. + +![Create Server dialog - Advanced tab](../images/create_server_advanced_tab.png) + +Use fields on the `Advanced` tab to specify details that are used to manage the server: + +- Specify the IP address of the server host in the `Host Address` field. +- Use the `DB restriction` field to specify a SQL restriction that will be used against the [pg_database](http://www.postgresql.org/docs/current/interactive/catalog-pg-database.html) table to limit the databases displayed in the tree control. For example, you might enter: `'live_db', 'test_db'` to instruct the PEM browser to display only the live_db and test_db databases. +- Use the `Password file` field to specify the location of a password file (.pgpass). The .pgpass file allows a user to login without providing a password when they connect, and it must be present on the PEM server. For more information, see [Section 33.15 of the Postgres documentation](http://www.postgresql.org/docs/current/static/libpq-pgpass.html). Please note: Use of a password file is only supported when PEM is using libpq v10.0 or later to connect to the server. +- Use the `Service ID` field to specify parameters to control the database service process. For servers that are stored in the Enterprise Manager directory, enter the service ID. On Windows machines, this is the identifier for the Windows service. On \*nix machines, this is the name of the init script used to start the server in /etc/init.d. An example of an ID on all platforms is `postgresql-9.0`. For local servers, the setting is operating system dependent: + - If the PEM client is running on a Windows machine, it can control the postmaster service if you have enough access rights. Enter the name of the service. In case of a remote server, it must be prepended by the machine name (e.g. PSE1\\pgsql-8.0). PEM will automatically discover services running on your local machine. + - If the PEM client is running on a Unix machine, it can control processes running on the local machine if you have enough access rights. Enter a full path and needed options to access the pg_ctl program. When executing service control functions, PEM will append status/start/stop keywords to this. For example: `sudo /usr/local/pgsql/bin/pg_ctl -D /data/pgsql` +- If the server is a member of a [Failover Manager](../04_toc_pem_features/19_monitoring_a_failover_manager_cluster/#monitoring_a_failover_manager_cluster) cluster, you can use PEM to monitor the health of the cluster and to replace the primary node if necessary. To enable PEM to monitor Failover Manager, use the `EFM cluster name` field to specify the cluster name. The cluster name is the prefix of the name of the Failover Manager cluster properties file. For example, if the cluster properties file is named `efm.properties`, the cluster name is `efm`. +- If you are using PEM to monitor the status of a [Failover Manager](../04_toc_pem_features/19_monitoring_a_failover_manager_cluster/#monitoring_a_failover_manager_cluster) cluster, use the `EFM installation path` field to specify the location of the Failover Manager binary file. By default, the Failover Manager binary file is installed in `/usr/efm-2.x/bin`, where `x` specifies the Failover Manager version. + +![Create Server dialog - PEM Agent tab](../images/create_server_pem_agent_tab.png) + +Use fields on the `PEM Agent` tab to specify connection details for the PEM agent: + +- Specify `Yes` in the `Remote monitoring?` field to indicate that the PEM agent does not reside on the same host as the monitored server. When remote monitoring is enabled, agent level statistics for the monitored server will not be available for custom charts and dashboards, and the remote server will not be accessible by some PEM utilities (such as Audit Manager, Capacity Manager, Log Manager, Postgres Expert and Tuning Wizard). +- Use the drop-down listbox to the right of the `Bound agent` label to select a PEM agent . One agent can monitor multiple Postgres servers. +- Enter the IP address or socket path that the agent should use when connecting to the database server in the `Host` field. By default, the agent will use the host address shown on the `General` tab. On a Unix server, you may wish to specify a socket path, e.g. `/tmp`. +- Enter the `Port` number that the agent will use when connecting to the server. By default, the agent will use the port defined on the `Properties` tab. +- Use the drop-down listbox in the `SSL` field to specify an SSL operational mode; select from require, prefer, allow, disable, verify-ca or verify-full. + +| Mode | Description: | +| ----------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| require | To require SSL encryption for transactions between the server and the agent. | +| prefer | To use SSL encryption between the server and the agent if SSL encryption is available. | +| allow | To allow the connection to use SSL if required by the server. | +| disable | To disable SSL encryption between the agent and the server. | +| verify-ca | To require SSL encryption, and to require the server to authenticate using a certificate registered by a certificate authority. | +| verify-full | To require SSL encryption, and to require the server to authenticate using a certificate registered by a `trusted` certificate authority. | + +> For information about using SSL encryption, see [Section 31.17 of the Postgres documentation](http://enterprisedb.com/docs/en/9.6/pg/libpq-ssl.html). + +- Use the `Database` field to specify the name of the Postgres Plus database to which the agent will initially connect. +- Specify the name of the user that agent should use when connecting to the server in the `User name` field. Note that if the specified user is not a database superuser, then some of the features will not work as expected. If you are using Postgres version 10 or above, you can use the `pg_monitor` role to grant the required privileges to a non-superuser. For information about `pg_monitor` role, see [Default Roles](https://www.postgresql.org/docs/current/default-roles.html). +- Specify the password that the agent should use when connecting to the server in the `Password` field, and verify it by typing it again in the `Confirm password` field. If you do not specify a password, you will need to configure the authentication for the agent manually; you can use a `.pgpass` file for example. +- Specify `Yes` in the `Allow takeover?` field to specify that another agent may be signaled (for example, by a fencing script) to monitor the server. This feature allows an agent to take responsibility for the monitoring of the database server if, for example, the server is part of a [high availability](../02_toc_pem_agent/02_pem_agent_binding/02_pem_agent_ha/#pem_agent_ha) failover process. + +If you experience connection problems, please visit the [connection problems](11_connect_error/#connect_error) page. + +To view the properties of a server, right-click on the server name in the PEM client tree control, and select the `Properties...` option from the context menu. To modify a server's properties, disconnect from the server before opening the `Properties` dialog. diff --git a/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/08_pem_define_aws_instance_connection.mdx b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/08_pem_define_aws_instance_connection.mdx new file mode 100644 index 00000000000..708cbcc37b5 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/08_pem_define_aws_instance_connection.mdx @@ -0,0 +1,63 @@ +--- +title: "Defining and Monitoring Postgres instances on AWS" +--- + +There are two scenarios in which you can monitor a Postgres instance on an AWS host with PEM: + +> - Postgres Instance running on AWS EC2 +> - Postgres Instance running on AWS RDS + +## Monitoring a Postgres Instance Running on AWS EC2 + +After creating a Postgres instance on AWS EC2, you can use the PEM server to register and monitor your instance. The following scenarios are currently supported: + +> - Postgres instance and PEM Agent running on the same AWS EC2 and a PEM Server running on your local machine. +> - Postgres instance and PEM Agent running on the same local machine and a PEM Server running on AWS EC2. +> - Postgres instance and PEM Agent running on the same AWS EC2 and a PEM Server running in different AWS EC2. + +
+ +
+ +Note + +
+ +In the first two scenarios, you must configure the VPN on AWS EC2 , so the AWS EC2 instance can access the `pem` database. Please contact your network administrator to setup the VPN if needed. + +
+ +The PEM Agent running on AWS EC2 or on your local machine should be registered to the PEM Server. Please note that when registering the PEM Agent with the PEM Server you should use the hostname of AWS EC2 instance. For more details on registering the PEM Agent see, [PEM Self Registration](../02_toc_pem_agent/07_pem_agent_self_registration/#pem_agent_self_registration). + +You can register the Postgres instance running on AWS EC2 on PEM Server using the `Create - Server` dialog. For more details on registering the server using `Create - Server` dialog see, [Define a Server](07_pem_define_connection/#pem_define_connection). Use the `PEM Agent` tab on the `Create - Server` dialog to bind the registered PEM Agent with the Postgres instance. + +When the PEM Agent is registered to the PEM Server and your Postgres instance that is running on AWS EC2 is registered to the PEM Server, you can monitor your instance with PEM. + +## Monitoring a Postgres Instance Running on AWS RDS + +While creating an AWS RDS database, choose `PostgreSQL` when prompted for `Engine options`. After creating a `Postgres(RDS)` instance on AWS, use `Create - Server` dialog to add the `Postgres(RDS)` instance to the PEM Server. Using this dialog you can describe a new server connection, bind the server to a PEM Agent, and display the server to the PEM browser tree control. + +For detailed information on the `Create - Server` dialog and configuration details for each tab, see [Define a Server](07_pem_define_connection/#pem_define_connection). + +The `PEM Agent` tab in the `Create - Server` dialog must have the `Remote Monitoring` field set to `Yes` to monitor the `Postgres(RDS)` instance on AWS instance using PEM Server. + +![Create Server dialog - PEM Agent tab](../images/create_server_pem_agent_tab_remote_monitoring.png) + +As the PEM Agent will be monitoring the Postgres(RDS) AWS instance remotely, the functionality will be limited as described below: + +| **Feature Name** | **Works with remote PEM Agent** | **Comments** | +| ---------------------------- | ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Audit Manager | No | | +| Capacity Manager | Limited | There will be no correlation between the database server and operating system metrices. | +| Log Manager | No | | +| Manage Alerts | Limited | When you run an alert script on the database server, it will run on the machine where the bound PEM Agent is running, and not on the actual database server machine. | +| Manage Charts | Yes | | +| Manage Dashboards | Limited | Some dashboards may not be able to show complete data. For example, the operating system information of the database server will not be displayed as it is not available. | +| Manage Probes | Limited | Some of the PEM probes will not return information, and some of the functionalities may be affected. For details about probe functionality, see the [PEM Agent Guide](/pem/latest/pem_agent/). | +| Postgres Expert | Limited | The Postgres Expert will provide partial information as operating system information is not available. | +| Postgres Log Analysis Expert | No | The Postgres Log Analysis Expert will not be able to perform an analysis as it is dependent on the logs imported by log manager, which will not work as required. | +| Scheduled Tasks | Limited | Scheduled tasks will work only for database server; scripts will run on a remote Agent. | +| Tuning Wizard | No | | +| System Reports | Yes | | +| Core Usage Reports | Limited | The Core Usage report will not show complete information. For example, the platform, number of cores, and total RAM will not be displayed. | +| Managing BART | No | BART requires password less authentication between two machines, where database server and BART are installed. An AWS RDS instance doesn't allow to use host access. | diff --git a/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/09_pem_connect_to_server.mdx b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/09_pem_connect_to_server.mdx new file mode 100644 index 00000000000..0f4b0567bcc --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/09_pem_connect_to_server.mdx @@ -0,0 +1,26 @@ +--- +title: "Connect to server" +--- + + + +After defining a server connection, use the `Connect to Server` dialog to authenticate with a server and access the objects stored on the server. To access the dialog, right click on the server name in the PEM client tree control, and select `Connect Server` from the context menu. + +![PEM Connect to Server dialog](../images/connect_to_server.png) + +If prompted, provide authentication information for the selected server: + +> - Use the `Password` field to provide the password of the user that is associated with the defined server. +> - Check the box next to `Save Password` to instruct the server to save the password for future connections; if you save the password, you will not be prompted when reconnecting to the database server with this server definition. + +The browser displays a message in a green status bar in the lower right corner when the server connects successfully. + +If you receive an error message while attempting a connection, verify that your network is allowing PEM and the host of the database server to communicate. For detailed information about a specific error message, please see the [Connection Error](11_connect_error/#connect_error) help page. + +To review or modify connection details, right-click on the name of the server, and select `Properties...` from the context menu. + +## Disconnecting from a Server + +To disconnect from a server, right-click on the server name in the `Browser` tree control and select Disconnect Server from the context menu. A popup will ask you to confirm that you wish to disconnect the selected server. + +![PEM Disconnect Server dialog](../images/disconnect_server.png) diff --git a/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/10_control_server.mdx b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/10_control_server.mdx new file mode 100644 index 00000000000..5fa54ee4272 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/10_control_server.mdx @@ -0,0 +1,10 @@ +--- +title: "Controlling a Server" +--- + + + +If you provided a `Service ID` on the `Advanced` tab of the [Server](07_pem_define_connection/#pem_define_connection) property dialogue, the PEM server can control the database service process. + +> - If the PEM client is running on a Windows machine, it can control the postmaster service if you have sufficient access rights. In case of a remote server, the service name must be prepended by the machine name (e.g. PSE1pgsql-8.0). +> - If the PEM client is running on a Unix machine, it can control processes running on the local machine if you have sufficient access rights. When executing service control functions, PEM will append status/start/stop keywords to the service name provided. diff --git a/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/11_connect_error.mdx b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/11_connect_error.mdx new file mode 100644 index 00000000000..0708b940c6a --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/11_connect_error.mdx @@ -0,0 +1,45 @@ +--- +title: "Connection error" +--- + + + +When connecting to a PostgreSQL server, you may get an error message. If you encounter an error message, please review the message carefully; each error message attempts to incorporate the information you'll need to resolve the problem. For more details about specific errors, please locate the error message in the list below: + +**Connection to the server has been lost** + +![Connection to the server has been lost](../images/ce_timeout.png) + +This error message indicates that the connection attempt has taken longer than the specified threshold; there may be a problem with the connection properties provided on the `Server` dialog, network connectivity issues, or the server may not be running. + +**could not connect to Server: Connection refused** + +![Could not connect to server](../images/ce_not_running.png) + +If pgAdmin displays this message, there are two possible reasons for this: + +- the database server isn't running - simply start it. +- the server isn't configured to accept TCP/IP requests on the address shown. + +For security reasons, a PostgreSQL server "out of the box" doesn't listen on TCP/IP ports. Instead, it must be enabled to listen for TCP/IP requests. This can be done by adding **tcpip = true** to the postgresql.conf file for Versions 7.3.x and 7.4.x, or **listen_addresses='\*'** for Version 8.0.x and above; this will make the server accept connections on any IP interface. + +For further information, please refer to the PostgreSQL documentation about [runtime configuration](http://www.postgresql.org/docs/current/interactive/runtime-config.html). + +**FATAL: no pg_hba.conf entry** + +![No pg_hba.conf entry](../images/ce_error_hba.png) + +If pgAdmin displays this message when connecting, your server can be contacted correctly over the network, but is not configured to accept your connection. Your client has not been detected as a legal user for the database. + +To connect to a server, the pg_hba.conf file on the database server must be configured to accept connections from the host of the pgAdmin client. Modify the pg_hba.conf file on the database server host, and add an entry in the form: + +> - **host template1 postgres 192.168.0.0/24 md5** for an IPV4 network +> - **host template1 postgres ::ffff:192.168.0.0/120 md5** for an IPV6 network + +For more information, please refer to the PostgreSQL documentation about [client authentication](http://www.postgresql.org/docs/current/interactive/client-authentication.html). + +**FATAL: password authentication failed** + +![Password authentication failed](../images/ce_password_failed.png) + +- The `password authentication failed for user` error message indicates there may be a problem with the password you entered. Retry the password to confirm you entered it correctly. If the error message returns, make sure that you have the correct password, that you are authorized to access the server, and that the access has been correctly configured in the server's postgresql.conf configuration file. diff --git a/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/index.mdx new file mode 100644 index 00000000000..c596e78a3c0 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/01_toc_pem_getting_started/index.mdx @@ -0,0 +1,27 @@ +--- +title: "PEM Getting Started" +--- + + + +You can use either a graphical installer or an RPM package to install the PEM server and PEM agent; for detailed installation instructions, please see the Postgres Enterprise Manager Installation Guide, available at [www.enterprisedb.com](http://www.enterprisedb.com). + +Contents: + +
+ +pem_architecture pem_server_logon pem_managing_configuration_settings pem_roles + +
+ +Each `server` in the PEM client tree control defines a set of connection and authentication properties that creates a connection to a Database server. The server can optionally bind the server to a PEM agent, defining a `managed` server, or not specify an agent binding, defining an `unmanaged` server. The process of defining the connection to a server is referred to as registering a server. You can use the `Auto Discovery` dialog to simplify the process of registering a managed server, or register a server manually. + +You can (optionally) use the `Server Group` dialog to create server groups to organize the server connections within the tree control for easier server management. To open the `Server Group` dialog, open the `Object` menu, and select `Server Group` from the `Create` menu. + +Contents: + +
+ +group_dialog auto_discovery_dialog pem_define_connection pem_define_aws_instance_connection pem_connect_to_server control_server connect_error + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/01_pem_agent_properties.mdx b/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/01_pem_agent_properties.mdx new file mode 100644 index 00000000000..cfbb3e42721 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/01_pem_agent_properties.mdx @@ -0,0 +1,31 @@ +--- +title: "PEM Agent Properties" +--- + + + +The `PEM Agent Properties` dialog provides information about the PEM agent from which the dialog was opened; to open the dialog, right-click on an agent name in the PEM client tree control, and select `Properties` from the context menu. + +![PEM Agent Properties dialog - General tab](../images/pem_agent_properties.png) + +- The `Description` field displays a modifiable description of the PEM agent. This description is displayed in the tree control of the PEM client. +- You can use [groups](../01_toc_pem_getting_started/05_group_dialog/#group_dialog) to organize your servers and agents in the PEM client tree control. Use the `Group` drop-down listbox to select the group in which the agent will be displayed. +- Use the `Team` field to specify the name of the group role that should be able to access servers monitored by the agent; the servers monitored by this agent will be displayed in the PEM client tree control to connected team members. Please note that this is a convenience feature. The `Team` field does not provide true isolation, and should not be used for security purposes. +- The `Heartbeat interval` fields displays the length of time that will elapse between reports from the PEM agent to the PEM server. Use the selectors next to the `Minutes` or `Seconds` fields to modify the interval. + +![PEM Agent Properties dialog - Job Notifications tab](../images/pem_agent_job_notification_properties.png) + +Use the fields on the `Job Notifications` tab to configure the email notification settings on agent level: + +- Use the `Override default configuration?` switch to specify if you want the agent level job notification settings to override the default job notification settings. If you select Yes for this switch, you can use the rest of the settings on this dialog to define when and to whom the job notifications should be sent. Please note that the rest of the settings on this dialog work only if you enable the `Override default configuration?` switch. +- Use the `Email on job completion?` switch to specify if the job notification should be sent on the successful job completion. +- Use the `Email on a job failure?` switch to specify if the job notification should be sent on the failure of a job. +- Use the `Email group` field to specify the email group to whom the job notification should be sent. + +![PEM Agent Properties dialog - Agent Configurations tab](../images/pem_agent_configurations_properties.png) + +`Agent Configurations` tab lists down all the current configurations and capabilities of a agent. + +- The `Parameter` column displays list of parameters. +- The `Value` column displays current value of the corresponding parameter. +- The `Category` column displays category of the corresponding parameter, it can be either "configuration" or "capability". diff --git a/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/02_pem_agent_binding/01_pem_agent_config_params.mdx b/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/02_pem_agent_binding/01_pem_agent_config_params.mdx new file mode 100644 index 00000000000..b405bb5acba --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/02_pem_agent_binding/01_pem_agent_config_params.mdx @@ -0,0 +1,59 @@ +--- +title: "PEM Agent Configuration Parameters" +--- + + + +A number of user-configurable parameters and registry entries control the behavior of the PEM Agent. With the exception of the PEM_MAXCONN (or pem_maxconn) parameter, we strongly recommend against modifying any of the configuration parameters or registry entries listed below without first consulting EnterpriseDB support experts. + +> - On 32 bit Windows systems, PEM registry entries are located in HKEY_LOCAL_MACHINE\\Software\\EnterpriseDB\\PEM\\agent +> - On 64 bit Windows systems, PEM registry entries are located in HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\EnterpriseDB\\PEM\\agent +> - On Linux systems, PEM configuration options are stored in the agent.cfg file, located (by default) in /usr/edb/pem/agent/etc + +| **Parameter Name** | **Description** | **Value (if applicable)** | +| ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| PEM_HOST (on Windows) or pem_host (on Linux) | The IP address or hostname of the PEM server. | By default, set to 127.0.0.1. | +| PEM_PORT (on Windows) or pem_port (on Linux) | The database server port to which the agent connects to communicate with the PEM server. | By default, the PEM server monitors port 5432. | +| AgentID (on Windows) or agent_id (on Linux) | A unique identifier assigned to the PEM agent. | The first agent is assigned an identifier of '1', the second agent is assigned an identifier of '2', and so on. | +| AgentUser (on Windows) or agent_user (on Linux) | User to connect the PEM database server | If present, and not set to empty string, it will be used to connect the PEM database server. | +| AgentCrtPath (on Windows) or agent_ssl_crt (on Linux) | The complete path to the PEM agent's certificate file. | By default, on Windows, C:\\Users\\user_name\\AppData\\Roaming\\pem/agent.crt. By default on Linux, /root/.pem/agent.crt. | +| AgentKeyPath (on Windows) or agent_ssl_key (on Linux) | The complete path to the PEM agent's key file. | By default, on Windows, C:\\Users\\user_name\\AppData\\Roaming\\pem/agent.key. By default on Linux, /root/.pem/agent.key. | +| AgentFlagDir (on Windows) or agent_flag_dir (on Linux) | Used for HA support. Specifies the directory path checked for requests to take over monitoring another server. Requests are made in the form of a file in the specified flag directory. | Not set by default. This option allows you to override the hard-coded default. | +| LogLevel (on Windows) or log_level (on Linux) | Log level specifies the type of event that will be written to the PEM log files. | Log level may be set to: error, debug1, debug2, or warning By default, log level is set to `warning` | +| log_location (on Linux only) | Specifies the location of the PEM worker log file. | On Linux, /var/log/pem/worker.log. On Windows, Logs & errors will be reported in the Application event log. | +| agent_log_location (on Linux only) | Specifies the location of the PEM agent log file. | On Linux, /var/log/pem/agent.log. On Windows, Logs & errors will be reported in the Application event log. | +| ShortWait (on Windows) or short_wait (on Linux) | The minimum length of time (in seconds) that the PEM agent will wait before checking which probes are next in the queue (waiting to run). | By default, 10 seconds. | +| LongWait (on Windows) or long_wait (on Linux) | The maximum length of time (in seconds) that the PEM agent will wait before attempting to connect to the PEM server if an initial connection attempt fails. | By default, 30 seconds. | +| AlertThreads (on Windows) or alert_threads (on Linux) | The number of alert threads to be spawned by the agent. | Set to 1 for the agent that resides on the host of the PEM server; should be set to 0 for all other agents. | +| EnableSMTP (on Windows) or enable_smtp (on Linux) | When set to true for multiple PEM Agents (7.13 or lesser) and PEM backend database (9.4 or lesser) then it may send more duplicate emails. Whereas for PEM Agents (7.14 or higher) and PEM backend database (9.5 or higher) then it may send lesser duplicate emails. | By default, set to true for the agent that resides on the host of the PEM server; false for all other agents. | +| EnableSNMP (on Windows) or enable_snmp (on Linux) | When set to true for multiple PEM Agents (7.13 or lesser) and PEM backend database (9.4 or lesser) then it may send more duplicate traps. Whereas for PEM Agents (7.14 or higher) and PEM backend database (9.5 or higher) then it may send lesser duplicate traps. | By default, set to true for the agent that resides on the host of the PEM server; false for all other agents. | +| enable_nagios (on Linux only) | When set to true, Nagios alerting is enabled. | By default, set to true for the agent that resides on the host of the PEM server; false for all other agents. | +| EnableWebhook (on Windows) or enable_webhook (on Linux) | When set to true, Webhook alerting is enabled. | By default, set to true for the agent that resides on the host of the PEM server; false for all other agents. | +| MaxWebhookRetries (on Windows) or max_webhook_retries (on Linux) | Set maximum number of times pemAgent should retry to call webhooks on failure. | Default 3. | +| ConnectTimeout (on Windows) or connect_timeout (on Linux) | The maximum length of time (in seconds, written as a decimal integer string) that the agent will wait for a connection. | Not set by default. If set to 0, the agent will wait indefinitely. | +| AllowServerRestart (on Windows) or allow_server_restart (on Linux) | If set to TRUE, the agent can restart the database server that it monitors. Some PEM features may be enabled/disabled, depending on the value of this parameter. | By default, set to TRUE. | +| MaxConnections (on Windows) or max_connections (on Linux) | The maximum number of probe connections used by the connection throttler. | By default, set to 0 (an unlimited number of connections). | +| ConnectionLifetime (on Windows) or connection_lifetime (on Linux) | Use ConnectionLifetime (or connection_lifetime) to specify the minimum number of seconds an open but idle connection is retained. This parameter is ignored if the value specified in MaxConnections is reached and a new connection (to a different database) is required to satisfy a waiting request. | By default, set to 0 (a connection is dropped when the connection is idle after the agent's processing loop completes a cycle in which the connection has not been used). | +| HeartbeatConnection (on Windows) or heartbeat_connection (on Linux) | When set to TRUE, a dedicated connection used for sending the heartbeats. | By default, set to FALSE. | +| AllowBatchProbes (on Windows) or allow_batch_probes (on Linux) | If set to TRUE, the user will be able to create batch probes using custom probes feature. | By default, set to FALSE. | +| BatchScriptDir (on Windows) or batch_script_dir (on Linux) | Provide the path where script file (for alerting) will be stored. | On Windows, C:Usersuser_nameAppDataLocalTemp. On Linux, set to /tmp. | +| AllowBatchJobSteps (on Windows) or batch_script_user | Provide the username who will run the script. | On Windows, set to TRUE and restart PEM Agent. Entries located in HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\EnterpriseDB\\PEM\\agent. On Linux, Restart the agent after modifying the file. If you do not specify a user, or the specified user does not exist, then the script will not be executed. | +| ConnectionCustomSetup (on Windows) or connection_custom_setup (on Linux) | Use this parameter to provide SQL code that will be invoked each time a new connection with the monitored server is established. | By default, no value is provided. | +| ca_file (Linux only) | Provide the path where the CA certificate resides. | By default, /opt/PEM/agent/share/certs/ca-bundle.crt | +| WebhookSSLKey (on Windows) or webhook_ssl_key (on Linux) | The complete path to the webhook's SSL client key file. | | +| WebhookSSLCrt (on Windows) or webhook_ssl_crt (on Linux) | The complete path to the webhook's SSL client certificate file. | | +| WebhookSSLCaCrt (on Windows) or webhook_ssl_ca_crt (on Linux) | The complete path to the webhook's SSL ca certificate file. | | +| WebhookSSLCrl (on Windows) or webhook_ssl_crl (on Linux) | The complete path of the CRL file to validate webhook server certificate. | | +| AllowInsecureWebhooks (on Windows) or allow_insecure_webhooks (on Linux) | When set to true, allow webhooks to call with insecure flag. | false | + +
+ +
+ +Note + +
+ +If you add or remove any of the parameter in the `agent.cfg` file then agent must be restarted to apply the changes. + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/02_pem_agent_binding/02_pem_agent_ha.mdx b/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/02_pem_agent_binding/02_pem_agent_ha.mdx new file mode 100644 index 00000000000..8620771e0d4 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/02_pem_agent_binding/02_pem_agent_ha.mdx @@ -0,0 +1,19 @@ +--- +title: "High Availability Integration" +--- + + + +In high availability (HA) configurations, the database servers that are being monitored may be moved ("failed over") to a different host in the event of any problems, such as a hardware failure. There are numerous ways to maintain a backup server using features of Postgres and external tools. Please consult the Postgres documentation for further details. + +In order to run in an HA environment, it is recommended that a PEM agent be installed on both the primary host machine, and any secondary machines that may be used as backups. The server is bound to the agent running on the primary host in the [normal fashion](./#binding_pem_agent). + +When the clustering solution initiates a failover of Postgres from one server to another, the PEM agent on the server that is taking over the running of the database may be instructed to take over the monitoring of the database server as well. The server must first be configured to allow "takeovers" using the `Allow takeover?` [configuration option](../../01_toc_pem_getting_started/07_pem_define_connection/#pem_define_connection) on the `PEM Agent` tab of the server configuration dialogue. + +To instruct the agent to takeover the monitoring of a server, the failover process must simply create a file in a special "flag" directory which will instruct the agent to take responsibility for the specified server. A command such as the following could be added to a failover script on a Linux server for example: + +`touch /tmp/pem/agent-AGENTID/takeover-server-SERVERID` where `AGENTID` is the numeric ID of the agent that should takeover the monitoring of the server, and `SERVERID` is the numeric ID of the server that should be taken over. The IDs may be found by logging into the PEM client, and selecting the Agent or Server and viewing the ID values on the `Properties` pane of the main window. + +The agent will take over monitoring of the failed-over server within approximately 30 seconds in a standard configuration of PEM. + +The flag directory used by the agent is `$TMPDIR/pem/agent-AGENTID` by default (where $TMPDIR is as set for the user account under which the agent runs, usually `root` on Linux/Unix, or `Administrator` on Windows). The directory path can be overridden using the `AgentFlagDir` configuration option in the registry on Windows, or the `agent_flag_dir` option in the agent configuration file on other platforms. diff --git a/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/02_pem_agent_binding/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/02_pem_agent_binding/index.mdx new file mode 100644 index 00000000000..a0111599d31 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/02_pem_agent_binding/index.mdx @@ -0,0 +1,46 @@ +--- +title: "Binding an Agent to a Server" +--- + + + +The PEM agent runs as a service (on Windows) or as a daemon (on Linux), and is responsible for implementing scheduled tasks on the PEM server on behalf of the server. The PEM server installer automatically installs and configures an agent that is responsible for monitoring the PEM server. The PEM agent installer will setup and configure the agent to start automatically at boot time, however the agent can also be manually [started](../03_pem_agent_start_pem_agent/#pem_agent_start_pem_agent) if required. + +To create a binding for a registered server, right click on the name of the server in the tree control, and select `Properties` from the context menu. Open the `PEM Agent` tab: + +![PEM server agent binding options](../../images/connect_pem_agent.png) + +Use the fields on the `PEM Agent` tab to associate the server (defined on the Connection tab) with a PEM agent: + +Use fields on the `PEM Agent` tab to specify connection details for the PEM agent: + +- Specify `Yes` in the `Remote monitoring?` field to indicate that the PEM agent does not reside on the same host as the monitored server. When remote monitoring is enabled, agent level statistics for the monitored server will not be available for custom charts and dashboards, and the remote server will not be accessible by some PEM utilities (such as Audit Manager, Capacity Manager, Log Manager, Postgres Expert and Tuning Wizard). +- Select an Enterprise Manager agent using the drop-down listbox to the right of the `Bound agent` label. One agent can monitor multiple Postgres servers. +- Enter the IP address or socket path that the agent should use when connecting to the database server in the `Host` field. By default, the agent will use the host address shown on the `General` tab. On a Unix server, you may wish to specify a socket path, e.g. `/tmp`. +- Enter the `Port` number that the agent will use when connecting to the server. By default, the agent will use the port defined on the `Properties` tab. +- Use the drop-down listbox in the `SSL` field to specify an SSL operational mode; specify require, prefer, allow, disable, verify-ca or verify-full. +- Use the `SSL` field to specify an SSL operational mode. + +| Mode | Specify: | +| ----------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| require | To require SSL encryption for transactions between the server and the agent. | +| prefer | To use SSL encryption between the server and the agent if SSL encryption is available. | +| allow | To allow the connection to use SSL if required by the server. | +| disable | To disable SSL encryption between the agent and the server. | +| verify-ca | To require SSL encryption, and to require the server to authenticate using a certificate registered by a certificate authority. | +| verify-full | To require SSL encryption, and to require the server to authenticate using a certificate registered by a `trusted` certificate authority. | + +> For information about using SSL encryption, see [Section 31.17 of the Postgres documentation](http://enterprisedb.com/docs/en/9.0/pg/libpq-ssl.html). + +- Use the `Database` field to specify the name of the Postgres Plus database to which the agent will initially connect. +- Specify the name of the user that agent should use when connecting to the server in the `User name` field. Note that if the specified user is not a database superuser, then some of the features will not work as expected. If you are using Postgres version 10 or above, you can use the `pg_monitor` role to grant the required privileges to a non-superuser. For information about `pg_monitor` role, see [Default Roles](https://www.postgresql.org/docs/current/default-roles.html). +- Specify the password that the agent should use when connecting to the server in the `Password` field, and verify it by typing it again in the `Confirm password` field. If you do not specify a password, you will need to configure the authentication for the agent manually; you can use a `.pgpass` file for example. +- Specify `Yes` in the `Allow takeover?` field to specify that the server may be "taken over" by another agent. This feature allows an agent to take responsibility for the monitoring of the database server if, for example, the server has been moved to another host as part of a [high availability](02_pem_agent_ha/#pem_agent_ha) failover process. + +Contents: + +
+ +pem_agent_config_params pem_agent_ha + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/03_pem_agent_start_pem_agent.mdx b/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/03_pem_agent_start_pem_agent.mdx new file mode 100644 index 00000000000..1695315f6de --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/03_pem_agent_start_pem_agent.mdx @@ -0,0 +1,35 @@ +--- +title: "Controlling the PEM Agent" +--- + + + +On Linux platforms, the name of the service script that controls a PEM agent is `pemagent`. You can use the pemagent service script to control the PEM agent. Enter: + +> `/etc/init.d/pem_agent action` + +Where `action` specifies the action taken by the service. Specify: + +- start to start the service. +- stop to stop the service. +- restart to stop and then start the service. +- status to check the status of the service. + +To determine if a service is running on RHEL or CentOS version 7.x, open a command line, and issue the command: + +> `systemctl pemagent action` + +Where `action` is the action taken by the service. You can specify: + +- start to start the service. +- stop to stop the service. +- restart to stop and then start the service. +- status to inquire about the current status of the service. + +## Controlling the PEM Agent on Windows + +The Windows operating system includes a graphical service controller (the Windows `Services` applet) that displays the server status, and offers point-and-click service control. The Services applet can be accessed through the Windows Control Panel. When the utility opens, use the scroll bar to navigate through the listed services to highlight the `Postgres Enterprise Manager - pemAgent` service name. + +- Use the Stop the service option to stop a service. +- Use the Pause the service option to instruct Postgres to reload a service's configuration parameters. +- Use the Start the service option to start a service. diff --git a/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/04_pem_agent_ha.mdx b/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/04_pem_agent_ha.mdx new file mode 100644 index 00000000000..739e641c66d --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/04_pem_agent_ha.mdx @@ -0,0 +1,19 @@ +--- +title: "High Availability Integration" +--- + + + +In high availability (HA) configurations, the database servers that are being monitored may be moved ("failed over") to a different host in the event of any problems, such as a hardware failure. There are numerous ways to maintain a backup server using features of Postgres and external tools. Please consult the Postgres documentation for further details. + +In order to run in an HA environment, it is recommended that a PEM agent be installed on both the primary host machine, and any secondary machines that may be used as backups. The server is bound to the agent running on the primary host in the [normal fashion](02_pem_agent_binding/#binding_pem_agent). + +When the clustering solution initiates a failover of Postgres from one server to another, the PEM agent on the server that is taking over the running of the database may be instructed to take over the monitoring of the database server as well. The server must first be configured to allow "takeovers" using the `Allow takeover?` [configuration option](../01_toc_pem_getting_started/07_pem_define_connection/#pem_define_connection) on the `PEM Agent` tab of the server configuration dialogue. + +To instruct the agent to takeover the monitoring of a server, the failover process must simply create a file in a special "flag" directory which will instruct the agent to take responsibility for the specified server. A command such as the following could be added to a failover script on a Linux server for example: + +`touch /tmp/pem/agent-AGENTID/takeover-server-SERVERID` where `AGENTID` is the numeric ID of the agent that should takeover the monitoring of the server, and `SERVERID` is the numeric ID of the server that should be taken over. The IDs may be found by logging into the PEM client, and selecting the Agent or Server and viewing the ID values on the `Properties` pane of the main window. + +The agent will take over monitoring of the failed-over server within approximately 30 seconds in a standard configuration of PEM. + +The flag directory used by the agent is `$TMPDIR/pem/agent-AGENTID` by default (where $TMPDIR is as set for the user account under which the agent runs, usually `root` on Linux/Unix, or `Administrator` on Windows). The directory path can be overridden using the `AgentFlagDir` configuration option in the registry on Windows, or the `agent_flag_dir` option in the agent configuration file on other platforms. diff --git a/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/05_pem_agent_privileges.mdx b/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/05_pem_agent_privileges.mdx new file mode 100644 index 00000000000..adda32f835a --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/05_pem_agent_privileges.mdx @@ -0,0 +1,30 @@ +--- +title: "PEM Agent Privileges" +--- + + + +By default, the PEM agent is installed with `root` privileges for the operating system host and superuser privileges for the database server. These privileges allow the PEM agent to invoke unrestricted probes on the monitored host and database server about system usage, retrieving and returning the information to the PEM server. + +Please note that PEM functionality diminishes as the privileges of the PEM agent decrease. For complete functionality, the PEM agent should run as `root` and on the same host as the database server. + +> - If the PEM agent is run under the database server's service account, PEM probes will not have complete access to the statistical information used to generate reports, and functionality will be limited to the capabilities of that account. +> - If the PEM agent is run under another lesser-privileged account, functionality will be limited even further. +> - If the PEM agent is installed on a different host and is monitoring the database server remotely, then the functionality will be limited. + +| **Feature Name** | **Works with root User** | **Works with non-root User** | **Works with remote PEM Agent** | +| ---------------------------- | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Audit Manager | yes | The Audit Log Manager may be unable to apply requested modifications if the service cannot be restarted. The user running PEM Agent may be different from the user who owns the data directory of the database server, so user running PEM Agent may not be able to change the configuration and also may not be able to restart the services of the database server. | no | +| Capacity Manager | yes | yes | yes

NOTE: There will be no co-relation between the database server and operating system metrices
| +| Log Manager | yes | The Log Manager may be unable to apply requested modifications if the service cannot be restarted. The user running PEM Agent may be different from the user who owns the data directory of the database server, so user running the PEM Agent may not be able to change the configuration and also may not be able to restart the services of the database server. | no | +| Manage Alerts | yes | yes | yes

NOTE: When run alert script on the database server is selected, it will run on the machine, where bound PEM Agent is running, and not on the actual database server machine.
| +| Manage Charts | yes | yes | yes | +| Manage Dashboards | yes | Some dashboards may not be able to show complete data. For example, columns such as swap usage, CPU usage, IO read, and IO write will be displayed as 0 in the session activity dashboard. | Some dashboards may not be able to show complete data. For example, the operating system information of the database server will not be displayed as not available. | +| Manage Probes | yes | Some of the PEM probes will not return information, and some of functionalities may be affected. For details about probe functionality, see the [PEM Agent Guide](/pem/latest/pem_agent/). | Some of the PEM probes will not return information, and some of the functionalities may be affected. | +| Postgres Expert | yes | The Postgres Expert will be able to access the configuration expert and schema expert, but not the security expert. | The Expert will provide partial information as operating system information is not available. | +| Postgres Log Analysis Expert | yes | The Postgres Log Analysis Expert may not be able to do the analysis as it is dependent on the logs imported by log manager, which will not work as required. | The Postgres Log Analysis Expert will not be able to do the analysis as it is dependent on the logs imported by log manager, which will not work as required. | +| Scheduled Tasks | yes | For Linux if user is the same as batch_script_user in agent.cfg then shell script will run. | Scheduled tasks will work only for database server; scripts will run on a remote Agent. | +| Tuning Wizard | yes | The Tuning Wizard will be unable to run if the service cannot be restarted. The user running PEM Agent may be different from the user who owns the data directory of the database server, so user running PEM Agent may not be able to change the configuration and also may not be able to restart the services of the database server. | no | +| System Reports | yes | yes | yes | +| Core Usage Reports | yes | yes | The Core Usage report will not show complete information. For example, the platform, number of cores, and total RAM will not be displayed. | +| Managing BART | yes | BART and the BART scanner may not be able to start/reload. | no

NOTE: BART requires password less authentication between two machines, where database server and BART are installed.
| diff --git a/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/06_pem_agent_config_params.mdx b/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/06_pem_agent_config_params.mdx new file mode 100644 index 00000000000..b405bb5acba --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/06_pem_agent_config_params.mdx @@ -0,0 +1,59 @@ +--- +title: "PEM Agent Configuration Parameters" +--- + + + +A number of user-configurable parameters and registry entries control the behavior of the PEM Agent. With the exception of the PEM_MAXCONN (or pem_maxconn) parameter, we strongly recommend against modifying any of the configuration parameters or registry entries listed below without first consulting EnterpriseDB support experts. + +> - On 32 bit Windows systems, PEM registry entries are located in HKEY_LOCAL_MACHINE\\Software\\EnterpriseDB\\PEM\\agent +> - On 64 bit Windows systems, PEM registry entries are located in HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\EnterpriseDB\\PEM\\agent +> - On Linux systems, PEM configuration options are stored in the agent.cfg file, located (by default) in /usr/edb/pem/agent/etc + +| **Parameter Name** | **Description** | **Value (if applicable)** | +| ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| PEM_HOST (on Windows) or pem_host (on Linux) | The IP address or hostname of the PEM server. | By default, set to 127.0.0.1. | +| PEM_PORT (on Windows) or pem_port (on Linux) | The database server port to which the agent connects to communicate with the PEM server. | By default, the PEM server monitors port 5432. | +| AgentID (on Windows) or agent_id (on Linux) | A unique identifier assigned to the PEM agent. | The first agent is assigned an identifier of '1', the second agent is assigned an identifier of '2', and so on. | +| AgentUser (on Windows) or agent_user (on Linux) | User to connect the PEM database server | If present, and not set to empty string, it will be used to connect the PEM database server. | +| AgentCrtPath (on Windows) or agent_ssl_crt (on Linux) | The complete path to the PEM agent's certificate file. | By default, on Windows, C:\\Users\\user_name\\AppData\\Roaming\\pem/agent.crt. By default on Linux, /root/.pem/agent.crt. | +| AgentKeyPath (on Windows) or agent_ssl_key (on Linux) | The complete path to the PEM agent's key file. | By default, on Windows, C:\\Users\\user_name\\AppData\\Roaming\\pem/agent.key. By default on Linux, /root/.pem/agent.key. | +| AgentFlagDir (on Windows) or agent_flag_dir (on Linux) | Used for HA support. Specifies the directory path checked for requests to take over monitoring another server. Requests are made in the form of a file in the specified flag directory. | Not set by default. This option allows you to override the hard-coded default. | +| LogLevel (on Windows) or log_level (on Linux) | Log level specifies the type of event that will be written to the PEM log files. | Log level may be set to: error, debug1, debug2, or warning By default, log level is set to `warning` | +| log_location (on Linux only) | Specifies the location of the PEM worker log file. | On Linux, /var/log/pem/worker.log. On Windows, Logs & errors will be reported in the Application event log. | +| agent_log_location (on Linux only) | Specifies the location of the PEM agent log file. | On Linux, /var/log/pem/agent.log. On Windows, Logs & errors will be reported in the Application event log. | +| ShortWait (on Windows) or short_wait (on Linux) | The minimum length of time (in seconds) that the PEM agent will wait before checking which probes are next in the queue (waiting to run). | By default, 10 seconds. | +| LongWait (on Windows) or long_wait (on Linux) | The maximum length of time (in seconds) that the PEM agent will wait before attempting to connect to the PEM server if an initial connection attempt fails. | By default, 30 seconds. | +| AlertThreads (on Windows) or alert_threads (on Linux) | The number of alert threads to be spawned by the agent. | Set to 1 for the agent that resides on the host of the PEM server; should be set to 0 for all other agents. | +| EnableSMTP (on Windows) or enable_smtp (on Linux) | When set to true for multiple PEM Agents (7.13 or lesser) and PEM backend database (9.4 or lesser) then it may send more duplicate emails. Whereas for PEM Agents (7.14 or higher) and PEM backend database (9.5 or higher) then it may send lesser duplicate emails. | By default, set to true for the agent that resides on the host of the PEM server; false for all other agents. | +| EnableSNMP (on Windows) or enable_snmp (on Linux) | When set to true for multiple PEM Agents (7.13 or lesser) and PEM backend database (9.4 or lesser) then it may send more duplicate traps. Whereas for PEM Agents (7.14 or higher) and PEM backend database (9.5 or higher) then it may send lesser duplicate traps. | By default, set to true for the agent that resides on the host of the PEM server; false for all other agents. | +| enable_nagios (on Linux only) | When set to true, Nagios alerting is enabled. | By default, set to true for the agent that resides on the host of the PEM server; false for all other agents. | +| EnableWebhook (on Windows) or enable_webhook (on Linux) | When set to true, Webhook alerting is enabled. | By default, set to true for the agent that resides on the host of the PEM server; false for all other agents. | +| MaxWebhookRetries (on Windows) or max_webhook_retries (on Linux) | Set maximum number of times pemAgent should retry to call webhooks on failure. | Default 3. | +| ConnectTimeout (on Windows) or connect_timeout (on Linux) | The maximum length of time (in seconds, written as a decimal integer string) that the agent will wait for a connection. | Not set by default. If set to 0, the agent will wait indefinitely. | +| AllowServerRestart (on Windows) or allow_server_restart (on Linux) | If set to TRUE, the agent can restart the database server that it monitors. Some PEM features may be enabled/disabled, depending on the value of this parameter. | By default, set to TRUE. | +| MaxConnections (on Windows) or max_connections (on Linux) | The maximum number of probe connections used by the connection throttler. | By default, set to 0 (an unlimited number of connections). | +| ConnectionLifetime (on Windows) or connection_lifetime (on Linux) | Use ConnectionLifetime (or connection_lifetime) to specify the minimum number of seconds an open but idle connection is retained. This parameter is ignored if the value specified in MaxConnections is reached and a new connection (to a different database) is required to satisfy a waiting request. | By default, set to 0 (a connection is dropped when the connection is idle after the agent's processing loop completes a cycle in which the connection has not been used). | +| HeartbeatConnection (on Windows) or heartbeat_connection (on Linux) | When set to TRUE, a dedicated connection used for sending the heartbeats. | By default, set to FALSE. | +| AllowBatchProbes (on Windows) or allow_batch_probes (on Linux) | If set to TRUE, the user will be able to create batch probes using custom probes feature. | By default, set to FALSE. | +| BatchScriptDir (on Windows) or batch_script_dir (on Linux) | Provide the path where script file (for alerting) will be stored. | On Windows, C:Usersuser_nameAppDataLocalTemp. On Linux, set to /tmp. | +| AllowBatchJobSteps (on Windows) or batch_script_user | Provide the username who will run the script. | On Windows, set to TRUE and restart PEM Agent. Entries located in HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\EnterpriseDB\\PEM\\agent. On Linux, Restart the agent after modifying the file. If you do not specify a user, or the specified user does not exist, then the script will not be executed. | +| ConnectionCustomSetup (on Windows) or connection_custom_setup (on Linux) | Use this parameter to provide SQL code that will be invoked each time a new connection with the monitored server is established. | By default, no value is provided. | +| ca_file (Linux only) | Provide the path where the CA certificate resides. | By default, /opt/PEM/agent/share/certs/ca-bundle.crt | +| WebhookSSLKey (on Windows) or webhook_ssl_key (on Linux) | The complete path to the webhook's SSL client key file. | | +| WebhookSSLCrt (on Windows) or webhook_ssl_crt (on Linux) | The complete path to the webhook's SSL client certificate file. | | +| WebhookSSLCaCrt (on Windows) or webhook_ssl_ca_crt (on Linux) | The complete path to the webhook's SSL ca certificate file. | | +| WebhookSSLCrl (on Windows) or webhook_ssl_crl (on Linux) | The complete path of the CRL file to validate webhook server certificate. | | +| AllowInsecureWebhooks (on Windows) or allow_insecure_webhooks (on Linux) | When set to true, allow webhooks to call with insecure flag. | false | + +
+ +
+ +Note + +
+ +If you add or remove any of the parameter in the `agent.cfg` file then agent must be restarted to apply the changes. + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/07_pem_agent_self_registration.mdx b/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/07_pem_agent_self_registration.mdx new file mode 100644 index 00000000000..4e70ed3256c --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/07_pem_agent_self_registration.mdx @@ -0,0 +1,37 @@ +--- +title: "PEM Agent Self Registration" +--- + + + +Each PEM agent must be `registered` with the PEM server. The registration process provides the PEM server with the information it needs to communicate with the agent. The PEM agent graphical installer supports agent self-registration, but you can use the `pemworker` utility to register the agent if you skip PEM agent registration during a graphical installation or use an RPM package to install a PEM agent. + +The RPM installer places the PEM worker utility in the `/usr/edb/pem/agent/bin` directory. Use the following commands to register an agent: + +- **On Linux**: pemworker −−register-agent \[register-options] +- **On Windows**: pemworker.exe REGISTER \[register-options] + +The following information is required when registering an agent with the PEM Server; you will be prompted for information if it is not provided on the command line: + +| Parameters | Command-line options | Optional | Description | Default Value | +| ---------------------------- | ---------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | +| **PEM Database Server Host** | −−pem-server <hostname/address> | No | Address/Host name of the PEM database server | | +| **PEM Admin User** | −−pem-user <username> | No | `PEM Admin User` to connect to the PEM database server. | | +| **PEM Database Server Port** | −−pem-port <port number> | Yes | Port on which PEM database server is running. | 5432 | +| **Agent Certificate Path** | −−cert-path <certificate path> | Yes | Path, where certificates need to be created. | On Linux, "~/.pem" On Windows, “%APPDATA%/pem” | +| **Agent Display Name** | −−display-name <agent_name> | Yes | Display name of the PEM Agent. | System hostname | +| **Agent Group** | −−group <group_name> | Yes | The name of the group in which the agent will be displayed. | | +| **Agent Team** | −−team <team_name> | Yes | The name of the group role that may access the PEM Agent. | | +| **Agent Owner** | −−owner <owner_name> | Yes | The name of the owner of the PEM Agent. | | +| **Force registration** | −−force-registration | Yes | Forcefully registers the agent to the PEM server with the arguments provided. It can be used to override the existing agent configuration. | | +| **Enable Heartbeat** | −−enable-heartbeat-connection | Yes | Agent to use dedicated connection to update the heartbeat. | false | +| **Agent User** | −−pem-agent-user | Yes | Use this user to connect the PEM database server. Specify, it when you would like to use a connection pooler between PEM Agent and PEM database server. It will generate the SSL Ceriticates, which will used by the pemworker to connect to the PEM database server instead, for this user instead of the default agent user.

**NOTE:** Specified user must be a member of 'pem_agent' role.
| | + +!!! Note + You can use the `PEM_SERVER_PASSWORD` environment variable to set the password of the `PEM Admin User`. If the `PEM_SERVER_PASSWORD` is not set, the server will use the `PGPASSWORD` or `pgpass file` when connecting to the **PEM Database Server**. + +Example: + +![PEM agent self registration](../images/pem_agent_self_registration.png) + +Refer the [PEM Worker Usage Guide](#pem_worker_usage_output). diff --git a/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/08_pem_agent_server_registration.mdx b/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/08_pem_agent_server_registration.mdx new file mode 100644 index 00000000000..a6b8a0817d4 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/08_pem_agent_server_registration.mdx @@ -0,0 +1,58 @@ +--- +title: "Register/Unregister database server using PEM Agent" +--- + + + +You can use the `pemworker` utility to register a database server for monitoring. The RPM installer places the utility in the `/usr/edb/pem/agent/bin` directory. Use the following commands to register a server: + +- **On Linux**: pemworker −−register-server \[register-server-options] +- **On Windows**: pemworker.exe REGISTER-SERVER \[register-server-options] + +Use the parameters in the table that follow to provide connection information for a Postgres database server that you wish to register for monitoring by the PEM Server. Please note that the pg_hba.conf file on the database server must be configured to allow connections from the PEM server. + +Properties that begin with −−asb (agent server binding) define the binding for an agent that does not reside on the same host as the database server. These properties are optional if you have a PEM agent installed on the host of the database server. You will be prompted for required information if you do not include it on the command line. + +| Parameters | Command-line options | Optional | Description | Default Value | +| ---------------------------------------------------------------------------------- | ------------------------------------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | +| **PEM Admin User** | −−pem-user <username> | No | The name of the `PEM Admin User` that will connect to the monitored server. | | +| **Server Host** | −−server-addr <host name/address> | No | Host name/address of the monitored server. | | +| **Server Port** | −−server-port <port> | No | Port on which database server is running. | | +| **Server Database** | −−server-database <name> | No | The database to which PEM will connect. | | +| **Server User** | −−server-user <name> | No | The database user role that will be used by the agent for monitoring purposes. | | +| **Server Service Name** | −−server-service-name <name> | Yes | Name of the system level service, which controls the operations like start, stop, restart, reload, etc. of the server. | | +| **Remote Monitoring?** | −−remote-monitoring <yes/no> | No | `no` if the monitored server resides on the same machine as the bound PEM agent, `yes` if the agent is on another host. | no | +| - **EDB Failover Manager**

Cluster Name
| −−efm-cluster-name <name> | Yes | Name of EDB Failover Manager Cluster associated with this server. | | +| **EDB Failover manager** **Installation Path** | −−efm-install-path <path> | Yes | Installation path of EDB Failover Manager associated with this server. | | +| **Server Display Name** | −−display-name <server_name> | Yes | Display name of the registred server. | System hostname | +| **Host Name** | −−asb-host-name <name_of_host> | Yes | The name of the host to which the agent is connecting. | The value specified by the −−server-addr property. | +| **Host Port** | −−asb-host-port <port_number> | Yes | The port number that the agent will use when connecting to the database. | The value specified by the −−server-port property. | +| **Host DB** | −−asb-host-db <database_name> | Yes | The name of the database to which the agent will connect. | The value specified by the −−server-database property. | +| **Host User Name** | −−asb-host-user <database_user> | Yes | The database user name that the agent will supply when authenticating with the database. | The value specified by the −−server-user property. | +| **SSL Mode** | −−asb-ssl-mode <certificate path> | Yes | Type of SSL authentication that will be used for connections. Supported values include `prefer`, `require`, `disable`, `verify-CA`, `verify-full`. | prefer | +| **Server Group** | −−group <group_name> | Yes | Specify the name of the server group in which the server will be displayed. | | +| **Server Team** | −−team <team_name> | Yes | Specify the name of the group role that will be allowed to access the server. | | +| **Owner** | −−owner <owner_name> | Yes | Specify the name of the role that will own the monitored server. | | + +Use the **PEM_MONITORED_SERVER_PASSWORD** environment variable to set the password of the user of the database server which is to be registered. When registering the database server, the pemworker utility will bind the server to the `PEM Agent` associated with the pemworker utility. The PEM server will use the specified user name (`Server User`) and password specified in the **PEM_MONITORED_SERVER_PASSWORD** environment variable when monitoring the database server. + +Use the **PEM_SERVER_PASSWORD** environment variable to provide the password of the user of the PEM database server. If the `PEM_SERVER_PASSWORD` is not set, the server will use the `PGPASSWORD` or `pgpass file` when connecting to the **PEM Database Server**. + +## To unregister a database server + +You can use the pemworker utility to unregister a server: + +- **On Linux**: pemworker −−unregister-server \[unregister-server-options] +- **On Windows**: pemworker.exe UNREGISTER-SERVER \[unregister-server-options] + +Include the following information when unregistering a database server from the `PEM Server`; you will be prompted for required information if you do not include it on the command line: + +| Parameters | Command-line options | Optional | Description | Default Value | +| ------------------ | ------------------------------------ | -------- | ---------------------------------------------------- | ------------- | +| **PEM Admin User** | −−pem-user <username> | No | `PEM Admin User` to connect the PEM database server. | | +| **Server Host** | −−server-addr <host name/address> | No | Host name/address of the database server. | | +| **Server Port** | −−server-port <port> | No | Port on which database server is running. | | + +The command will unregister the server from the `PEM Server` for the specified combination of `Server Host` and `Server Port`, which is being monitored by the `PEM Agent`. + +For more information, refer the [PEM Worker Usage Guide](#pem_worker_usage_output). diff --git a/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/index.mdx new file mode 100644 index 00000000000..f62a609ec08 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/02_toc_pem_agent/index.mdx @@ -0,0 +1,23 @@ +--- +title: "Managing a PEM Agent" +--- + + + +The PEM agent is responsible for implementing scheduled tasks on the PEM server on behalf of the server. The agent runs as a service (on Windows) or as a daemon (on Linux). The PEM server installer automatically installs and configures an agent that is responsible for monitoring the PEM server; you can use the PEM agent installer to add additional agents. + +Contents: + +
+ +pem_agent_properties pem_agent_binding pem_agent_start_pem_agent pem_agent_ha + +
+ +The PEM agent has a number of configuration parameters that control agent behaviors and enable PEM functionality. For a list of the parameters, see: + +
+ +pem_agent_privileges pem_agent_config_params pem_agent_self_registration pem_agent_server_registration + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/03_toc_pem_client/01_pem_browser_window.mdx b/product_docs/docs/pem/7.16/pem_online_help/03_toc_pem_client/01_pem_browser_window.mdx new file mode 100644 index 00000000000..3fad162c3ea --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/03_toc_pem_client/01_pem_browser_window.mdx @@ -0,0 +1,194 @@ +--- +title: "PEM Main Browser Window" +--- + + + +The PEM client features a menu bar and a window divided into two panes: the `Browser` tree control in the left pane, and a tabbed browser in the right pane. + +![PEM browser window](../images/pem_browser_window.png) + +[Menus](03_pem_menu_bar/#pem_menu_bar) displayed across the top of the browser window provide quick, context-sensitive access to PEM features and functionality. + +## The PEM Client Object Browser + +The `Browser` tree control provides access to information and management options for the database objects that reside on each server. The tree control expands to display a hierarchical view of the servers and objects that are monitored by the PEM server. You can use context menu options (accessed by right-clicking on nodes of the tree control) to create new objects, and modify and delete existing objects if your role holds the required privileges. + +Expand nodes in the tree control to display a hierarchical view of the database objects that reside on a selected server: + +- Use the plus sign (+) to the left of a node to expand a segment of the tree control. +- Click the minus sign (-) to the left of a node to close that node. + +Right-click on a node of the tree control to access a context-sensitive menu and perform common tasks. Context menu options may include one or more of the following selections: + +| Option | Action | +| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Add named restore point` | Click to create and enter the name of a restore point.
| +| `Backup...` | Click to open the [Backup...](../05_toc_pem_management_basics/06_backup_dialog/#backup_dialog) dialog to backup database objects.
| +| `Backup Globals...` | Click to open the [Backup Globals...](../05_toc_pem_management_basics/07_backup_globals_dialog/#backup_globals_dialog) dialog to backup cluster objects.
| +| `Backup Server...` | Click to open the [Backup Server...](../05_toc_pem_management_basics/08_backup_server_dialog/#backup_server_dialog) dialog to backup a server.
| +| `Connect Server` | Click to establish a connection with the selected server.
| +| `Create` | Click to access a context menu that provides context-sensitive selections.Your selection opens a `Create` dialog for creating a new object. | +| `CREATE Script` | Click to open the [Query tool](05_keyboard_shortcuts/#query-tool) to edit or view the CREATE script.
| +| `CREATE Script` | Click to open the [Query tool](05_keyboard_shortcuts/#query-tool) to edit or view the CREATE script.
| +| `Dashboards` | Click through for quick access to PEM dashboards.
| +| `Delete/Drop` | Click to delete the currently selected object from the server.
| +| `Disconnect Database...` | Click to terminate a database connection.
| +| `Disconnect Server...` | Click to refresh the currently selected object.
| +| `Drop Cascade` | Click to delete the currently selected object and all dependent objects from the server.
| +| `Debugging` | Click to access the [Debugger](05_keyboard_shortcuts/#debugger) tool.
| +| `Grant Wizard` | Click to access the [Grant Wizard](../05_toc_pem_management_basics/01_grant_wizard/#grant_wizard) tool.
| +| `Maintenance...` | Click to open the [Maintenance...](../05_toc_pem_management_basics/04_maintenance/01_maintenance_dialog/#maintenance_dialog) dialog to VACUUM, ANALYZE, REINDEX, or CLUSTER.
| +| `Management` | Click to access management tasks that are relevant to the node.
| +| `Properties...` | Click to review or modify the currently selected object's properties.
| +| `Refresh...` | Click to refresh the currently selected object.
| +| `Reload Configuration...` | Click to update configuration files without restarting the server.
| +| `Restore...` | Click to access the [Restore](../05_toc_pem_management_basics/09_restore_dialog/#restore_dialog) dialog to restore database files from a backup.
| +| `View Data` | Use the `View Data` option to access the data stored in a selected table with the `Data Output` tab of the `Query Tool`.
| + +The context-sensitive menus associated with `Tables` and nested `Table` nodes provides additional display options: + +| Option | Action | +| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Import/Export...` | Click open the Import/Export... <import_export_data> dialog to import data to or export data from the selected table.
| +| `Reset Statistics` | Click to reset statistics for the selected table.
| +| `Scripts` | Click to open the [Query tool](05_keyboard_shortcuts/#query-tool) to edit or view the selected script from the flyout menu.
| +| `Truncate` | Click to remove all rows from a table.
| +| `Truncate Cascade` | Click to remove all rows from a table and its child tables.
| +| `View First 100 Rows` | Click to access [the data grid](../08_toc_pem_developer_tools/04_editgrid/#editgrid) that displays the first 100 rows of the selected table.
| +| `View Last 100 Rows` | Click to access [the data grid](../08_toc_pem_developer_tools/04_editgrid/#editgrid) that displays the last 100 rows of the selected table.
| +| `View All Rows` | Click to access [the data grid](../08_toc_pem_developer_tools/04_editgrid/#editgrid) that displays all rows of the selected table.
| +| `View Filtered Rows...` | Click to access the `Data Filter` popup to apply a filter to a set of data.
| + +## The PEM Tabbed Browser Window + +The main panel of the PEM client contains a collection of tabs that display information about the object currently selected in the tree control. + +![PEM browser - Welcome dashboard tab](../images/pem_browser_dashboard_welcome.png) + +The `Dashboard` tab is context-sensitive; when you navigate to the `Dashboard` tab from a server group or the `PEM Agents` node, the EDB Postgres `Welcome` window opens, allowing you to: + +- Click the `Add New Server` icon to open the [Create - Server dialog](../01_toc_pem_getting_started/07_pem_define_connection/#pem_define_connection) to define a connection to a server. +- Click the `Configure PEM` icon to open the [Server Configuration dialog](../04_toc_pem_features/02_pem_server_config/#pem_server_config) and modify server parameters. +- Click the `Getting Started` icon to open a new tab, displaying the PEM Getting Started Guide at the EnterpriseDB website. +- Click the `EDB Website` icon to navigate to the home page of the EnterpriseDB website. The EnterpriseDB website features news about upcoming events and other projects. +- Click the `PostgreSQL Website` icon to navigate to the PostgreSQL project website. The PostgreSQL site features news about recent releases and other project information. +- Click the `EDB Blogs` icon to navigate to the EDB Blog page, where you can review the most-recent employee posts to Postgres related blogs. + +Highlight the name of an agent or server and navigate to the `Dashboard` tab to review session or server activity for the currently selected object. + +![PEM browser - Dashboard tab](../images/pem_browser_dashboard_statistics.png) + +When opened from the name of an agent or server, the `Dashboard` tab provides a graphical analysis of usage statistics: + +- The `Server sessions` or `Database sessions` graph displays the interactions with the server or database. +- The `Transactions per second` graph displays the commits, rollbacks, and total transactions per second that are taking place on the server or database. +- The `Tuples In` graph displays the number of tuples inserted, updated, and deleted on the server or database. +- The `Tuples out` graph displays the number of tuples fetched and returned from the server or database. +- The `Block I/O` graph displays the number of blocks read from the filesystem or fetched from the buffer cache (but not the operating system's file system cache) for the server or database. +- The `Server activity` tabbed panel displays tables that contain session information, session locks, prepared transactions and configuration. + +![PEM browser - Properties tab](../images/pem_browser_properties.png) + +Navigate to the `Properties` tab to review the properties of the item currently highlighted in the tree control. + +![PEM browser - SQL tab](../images/pem_browser_sql.png) + +The `SQL` tab displays the SQL code used to generate the object currently selected in the Browser tree control. + +![PEM browser - Statistics tab](../images/pem_browser_statistics.png) + +The `Statistics` tab displays the statistics gathered for each object on the tree control; the statistics displayed in the table vary by the type of object that is highlighted. Click a column heading to sort the table by the data displayed in the column; click again to reverse the sort order. The following table lists some of the statistics that may be displayed: + +| Panel | Description | +| ------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `PID` | The process ID associated with the row. | +| `User` | The name of the user that owns the object. | +| `Database` | displays the database name. | +| `Backends` | displays the number of current connections to the database. | +| `Backend start` | The start time of the backend process. | +| `Xact Committed` | displays the number of transactions committed to the database within the last week. | +| `Xact Rolled Back` | displays the number of transactions rolled back within the last week. | +| `Blocks Read` | displays the number of blocks read from memory (in megabytes) within the last week. | +| `Blocks Hit` | displays the number of blocks hit in the cache (in megabytes) within the last week. | +| `Tuples Returned` | displays the number of tuples returned within the last week. | +| `Tuples Fetched` | displays the number of tuples fetched within the last week. | +| `Tuples Inserted` | displays the number of tuples inserted into the database within the last week. | +| `Tuples Updated` | displays the number of tuples updated in the database within the last week. | +| `Tuples Deleted` | displays the number of tuples deleted from the database within the last week. | +| `Last statistics reset` | displays the time of the last statistics reset for the database. | +| `Tablespace conflicts` | displays the number of queries canceled because of recovery conflict with dropped tablespaces in database. | +| `Lock conflicts` | displays the number of queries canceled because of recovery conflict with locks in database. | +| `Snapshot conflicts` | displays the number of queries canceled because of recovery conflict with old snapshots in database. | +| `Bufferpin conflicts` | displays the number of queries canceled because of recovery conflict with pinned buffers in database. | +| `Temporary files` | displays the total number of temporary files, including those used by the statistics collector. | +| `Size of temporary files` | displays the size of the temporary files. | +| `Deadlocks` | displays the number of queries canceled because of a recovery conflict with deadlocks in database. | +| `Block read time` | displays the number of milliseconds required to read the blocks read. | +| `Block write time` | displays the number of milliseconds required to write the blocks read. | +| `Size` | displays the size (in megabytes) of the selected database. | + +![PEM browser - Dependencies tab](../images/pem_browser_dependencies.png) + +The `Dependencies` tab displays the objects on which the currently selected object depends. To ensure the integrity of the database structure, the server makes sure that you do not accidentally drop objects that other objects depend on; you must use DROP CASCADE to remove an object on which another object depends. + +The `Dependencies` table displays: + +- The `Type` field specifies the parent object type. +- The `Name` field specifies the identifying name of the parent object. +- The `Restriction` field describes the dependency relationship between the currently selected object and the parent. + +![PEM browser - Dependents tab](../images/pem_browser_dependents.png) + +The `Dependents` tab displays a table of objects that depend on the object currently selected in the `pgAdmin` browser. A dependent object can be dropped without affecting the object currently selected in the `pgAdmin` tree control. + +- The `Type` field specifies the dependent object type. +- The `Name` field specifies the identifying name for the dependent object. +- The `Restriction` field describes the dependency relationship between the currently selected object and the parent. +- Navigate to the `Monitoring` tab to access information presented on [PEM dashboards](../04_toc_pem_features/01_dashboards/#dashboards). Dashboards display statistical information about the objects monitored by the PEM server. + +![PEM browser - Global Overview tab](../images/global_overview.png) + +PEM will open additional tabs when you access PEM functionality through the `Management` or `Tools` dialogs. Right-click the current tab and select from a context menu that allows you to customize the display for your working style: + +- Click `Remove Panel` to remove the currently selected panel. +- Click `Float Panel` to detach the currently selected panel, repositioning it for convenience. +- Click `Add Panel` and select from the context menu to display the pgAdmin or PostgreSQL project website. + +The PEM client will preserve any adjustments when you exit the program; to reset the PEM client to its original format, select `Reset Layout` from the `File` menu. + +## Using Chart, Graph and Table Controls + +Use the icons in the upper-right corner of each graphic on a PEM Client dashboard to control, download, and customize the charts, graphs and tables displayed in the PEM client. + +![PEM Agent and Server Status](../images/chart_icons.png) + +Use the `Refresh` icon ![refresh](../images/lgrefresh.png) to display the most-recent content available from the PEM probes. + +Select the `Download` icon ![download](../images/lgdownload.png) to download a .jpeg or .png image of the chart or graph. By default, the file will be in .jpeg format; to save the file as a .png, use the `Personalize` icon to modify the download format. + +Select the `Fullscreen` icon ![fullscreen](../images/lgfullscreen.png) to expand the chart or graph to fill the main pane of the PEM client. + +Select the `Personalize` ![personal](../images/lgpersonalize.png) icon to modify the display properties of the chart or graph for your session only. + +Use the `Information` ![info](../images/lginformation.png) icon to access information about the chart or graph. + +**Personalizing a Graphic** + +When you select the `Personalize` icon, the `Personalize chart configuration` dialog opens: + +![PEM personalize chart options](../images/personalize_chart.png) + +Use controls on the `Personalize chart configuration` dialog to modify the properties of the graphic: + +- Use the `Auto Refresh` control to increase or decrease the number of seconds between refreshes. +- Use the `Auto Refresh` field to specify the number of seconds between updates of the data displayed in the table or chart. +- If applicable, use the `Download as` field to indicate if you would like a chart to be downloaded as a JPEG image or a PNG image. +- If applicable, use the `Colours` selectors to specify the display colors that will be used on a chart. +- If applicable, set the `Show Acknowledged Alerts` switch to `Yes` indicate that you would like the table to display alerts that you have acknowledged with a checkbox in the `Ack'ed` column. Set the field to `No` to indicate that the table should hide any acknowledged alerts. The switch acts as a toggle; acknowledged alerts are not purged from the table content until the time specified in the alert definition passes. + +After personalizing the display properties, use the controls in the upper-right hand corner to apply your changes: + +- Use the `Delete` icon to reset the properties of the graphic to their default settings; use the drop-down listbox to access a menu that allows you to apply the change to only this instance of the graphic, or to the same graphic when displayed on other dashboards. +- Use the `Save` icon to save your changes to the properties for the graphic; use the drop-down listbox to access a menu that allows you to apply the change to only this instance of the graphic, or to the same graphic when displayed on other dashboards. +- Click the X to close the dialog without changing the properties of the graphic. diff --git a/product_docs/docs/pem/7.16/pem_online_help/03_toc_pem_client/02_pem_toolbar.mdx b/product_docs/docs/pem/7.16/pem_online_help/03_toc_pem_client/02_pem_toolbar.mdx new file mode 100644 index 00000000000..1270bc87da5 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/03_toc_pem_client/02_pem_toolbar.mdx @@ -0,0 +1,13 @@ +--- +title: "Browser Toolbar" +--- + + + +The browser toolbar provides shortcut buttons for frequently used features like View Data and the Query Tool which are most frequently used in PEM. This toolbar is visible on the Browser panel. Buttons get enabled/disabled based on the selected browser node. + +![Browser Toolbar](../images/pem_toolbar.png) + +- Use the [Query Tool](05_keyboard_shortcuts/#query-tool) button to open the Query Tool in the current database context. +- Use the [View Data](../08_toc_pem_developer_tools/04_editgrid/#editgrid) button to view/edit the data stored in a selected table. +- Use the [Filtered Rows](../08_toc_pem_developer_tools/04_editgrid/01_viewdata_filter/#viewdata_filter) button to access the Data Filter popup to apply a filter to a set of data for viewing/editing. diff --git a/product_docs/docs/pem/7.16/pem_online_help/03_toc_pem_client/03_pem_menu_bar.mdx b/product_docs/docs/pem/7.16/pem_online_help/03_toc_pem_client/03_pem_menu_bar.mdx new file mode 100644 index 00000000000..3c900b49320 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/03_toc_pem_client/03_pem_menu_bar.mdx @@ -0,0 +1,139 @@ +--- +title: "The PEM Menu Bar" +--- + + + +The PEM menu bar provides access to commands and features that you can use to manage your database servers and the objects that reside on those servers. If an option is disabled: + +- The database server to which you are currently connected may not support the selected feature. +- The selected menu option may not be valid for the current object (by design). +- The role that you have used to connect to the server may have insufficient privileges to change the selected object. + +Context-sensitive menus across the top of the PEM web interface allow you to customize your environment and provide access to the enterprise management features of PEM. + +**The File Menu** + +![PEM File menu](../images/pem_file_menu.png) + +Use the `File` menu to access the following options: + +| Menu Option | Action | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Preferences | Click to open the [Preferences](04_preferences/#preferences) dialog to customize your PEM client settings. | +| Lock Layout | Click to open a sub-menu to select the level for locking the UI layout. This can also be changed from the Browser -> Display settings tab [preferences](04_preferences/#preferences). | +| Server Configuration | Click to open the Server Configuration dialog and update your PEM server configuration settings. | +| Reset Layout | If a workspace panel is popped out by mistake or intentionally it can be reset back to default using Reset Layout. | + +**The Object Menu** + +![PEM Object menu](../images/pem_object_menu.png) + +The `Object` menu is context-sensitive. Use the `Object` menu to access the following options: + +| Menu Option | Action | +| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Create | Click `Create` to access a context menu that provides context-sensitive selections. Your selection opens a `Create` dialog for creating a new object. | +| Refresh... | Click to refresh the currently selected object. | +| Connect Server | Click to open the [Connect to Server](../01_toc_pem_getting_started/09_pem_connect_to_server/#pem_connect_to_server) dialog to establish a connection with a server. | +| CREATE Script | Click to open the [Query tool](05_keyboard_shortcuts/#query-tool) to edit or view the selected script. | +| Disconnect Server/Database | Click to disconnect the selected server. | +| Remove Server | Click to remove the selected server from the browser tree. | +| BART | Click to access a context menu that provides options for removing BART configuration, taking a BART backup, or revalidate the BART configuration. | +| Clear Saved Password | If you have saved the database server password, click to clear the saved password. Enabled only after password is saved. | +| Clear SSH Tunnel Password | If you have saved the ssh tunnel password, click to clear the saved password. Enabled only after password is saved. | +| Drop Cascade | Click to delete the currently selected object and all dependent objects from the server. | +| Properties... | Click to review or modify the currently selected object's properties | +| Delete/Drop | Click to delete the currently selected object from the server. | +| Connect Database | Click to connect to selected database. | +| Trigger(s) | Click to `Disable` or `Enable` trigger(s) for the currently selected table. | +| Truncate | Click to remove all rows from a table (Truncate) or to remove all rows from a table and its child tables (Truncate Cascade). | +| View/Edit Data | Click to access a context menu that provides several options (All Rows, First 100 Rows, Last 100 Rows, Filtered Rows) for viewing data. | +| Count Rows | Click to count the number of rows of the selected table. | +| Reset Statistics | Click to reset the statistics of the selected table. | +| Scripts | Click to CREATE, DELETE, INSERT, SELECT and UPDATE script for the selected table. | + +**The Management Menu** + +![PEM Management menu](../images/pem_management_menu.png) + +Use the `Management` menu to access the following PEM features: + +| Menu Option | Action | +| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Audit Manager... | Click to open the [Audit Manager](../04_toc_pem_features/04_audit_manager/#audit_manager) and configure auditing on your monitored servers. | +| Auto Discovery... | Click to open the [Auto Discovery](../01_toc_pem_getting_started/06_auto_discovery_dialog/#auto_discovery_dialog) dialog to instruct a PEM agent to locate and bind monitored database servers. | +| Capacity Manager... | Click to open the [Capacity Manager](../04_toc_pem_features/08_capacity_manager/#capacity_manager) dialog and analyze historical or project future resource usage. | +| Log Manager... | Click to open the [Log Manager](../04_toc_pem_features/03_log_manager/#log_manager) dialog and configure log collection for a server. | +| Manage Alerts... | Click to access the [Manage Alerts](../04_toc_pem_features/09_pem_alerting/01_pem_alerting_dialog/#pem_alerting_dialog) tab and create or modify alerting behavior. | +| Manage Charts... | Click to open the [Manage Charts](../04_toc_pem_features/10_pem_manage_charts/#pem_manage_charts) tab to create or modify PEM charts. | +| Manage Dashboards... | Click to open the [Manage Dashboards](../04_toc_pem_features/11_pem_manage_dashboards/01_pem_custom_dashboard/#pem_custom_dashboard) dialog to VACUUM, ANALYZE, REINDEX, or CLUSTER. | +| Manage Probes... | Click to open the [Manage Probes](../05_toc_pem_management_basics/04_maintenance/01_maintenance_dialog/#maintenance_dialog) dialog to VACUUM, ANALYZE, REINDEX, or CLUSTER. | +| Postgres Expert... | Click to open the [Postgres Expert](../04_toc_pem_features/07_pem_postgres_expert/#pem_postgres_expert) wizard and perform a static analysis of your servers and databases. | +| Postgres Log Analysis Expert... | Click to access the [Postgres Log Analysis Expert](../04_toc_pem_features/05_pem_log_analysis_expert/#pem_log_analysis_expert) dialog analyze log file contents for usage trends. | +| Scheduled Tasks... | Click to open the [Scheduled Tasks](../04_toc_pem_features/18_pem_task_view/#pem_task_view) tab and review tasks that are pending or recently completed. | +| Schedule Alert Blackout... | Click to open the [Schedule Alert Blackout](../04_toc_pem_features/13_pem_alert_blackout/#pem_alert_blackout) dialog and schedule the alerts blackout for your servers and agents. | +| Tuning Wizard... | Click to open the [Tuning Wizard](../04_toc_pem_features/06_tuning_wizard/#tuning_wizard) dialog to generate a set of tuning recommendations for your server. | +| Reports | Click to open the [Reports](../04_toc_pem_features/21_reports/#reports) dialog to generate the system configuration report and core usage report for your server. | + +**The Dashboards Menu** + +![PEM Dashboards menu](../images/pem_dashboards_menu.png) + +The `Dashboards` menu is context-sensitive; use the `Dashboards` menu to access the following options: + +| Menu Option | Action | +| --------------------- | ------------------------------------------------------------------------------------------- | +| Alerts | Click to open the Alerts Dashboard for the selected node. | +| Audit Log | Click to open the Audit Log Analysis Dashboard for the selected node. | +| Database Server | Click to open the Database Analysis Dashboard for the selected node. | +| Memory | Click to open the Memory Analysis Dashboard for the selected node | +| Server Log | Click to open the Server Log Analysis Dashboard for the selected node. | +| Session Activity | Click to open the Session Activity Analysis Dashboard for the selected node. | +| Storage | Click to open the Storage Analysis Dashboard for the selected node. | +| Streaming Replication | Click to open the Streaming Replication Analysis Dashboard for the selected node. | +| System Wait | Click to open the System Wait Analysis Dashboard for the selected node. | +| I/O Analysis | Click to open the I/O Analysis Dashboard for the selected node. | +| Object Activity | Click to open the Object Activity Analysis Dashboard for the selected node. | +| Session Waits | Click to open the Session Waits Analysis Dasbhoard for the selected node. | +| Operating System | Click to open the Operating System Analysis Dashboard for the selected node. | +| Probe Log | Click to open the Probe Log Analysis Dashboard for the selected node. | +| Custom Dashboards | Click to open the Custom Dashboards. It will list custom dashboards configured by the user. | + +**The Tools Menu** + +![PEM Tools menu](../images/pem_tool_menu.png) + +Use the `Tools` menu to access the following options: + +| Menu Option | Action | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Schema Diff | Click to open the [Schema Diff](../08_toc_pem_developer_tools/05_schema_diff/#schema_diff_feature) dialog to compare the schema objects between two database schemas. | +| Search objects | Click to open the Search Objects dialog to search the database objects within a database. | +| Server | Click to access the various server related tools such as Add Named Restore Point, Performance Diagnostics, Queue Server Startup, Queue Server Shutdown, Replace Cluster Primary, Switchover EFM Cluster and SQL Profiler. | +| Query Tool | Click to open the [Query tool](05_keyboard_shortcuts/#query-tool) for the currently selected object. | +| Storage Manager | Click to open the [Storage manager](../05_toc_pem_management_basics/05_storage_manager/#storage_manager) to upload, delete or download the backup files. | +| Reload Configuration | Click to update configuration files without restarting the server. | +| Pause replay of WAL | Click to pause the replay of the WAL log. | +| Resume replay of WAL | Click to resume the replay of the WAL log. | +| Import/Export... | Click to open the Import/Export data... dialog to import or export data from a table. | +| Maintenance... | Click to open the Maintenance... dialog to VACUUM, ANALYZE, REINDEX, or CLUSTER. | +| Backup... | Click to open the [Backup...](../05_toc_pem_management_basics/06_backup_dialog/#backup_dialog) dialog to backup database objects. | +| Backup Globals... | Click to open the [Backup Globals...](../05_toc_pem_management_basics/07_backup_globals_dialog/#backup_globals_dialog) dialog to backup cluster objects. | +| Backup Server... | Click to open the [Backup Server...](../05_toc_pem_management_basics/08_backup_server_dialog/#backup_server_dialog) dialog to backup a server. | +| Restore... | Click to access the [Restore](../05_toc_pem_management_basics/09_restore_dialog/#restore_dialog) dialog to restore database files from a backup. | +| Grant Wizard... | Click to access the [Grant Wizard](../05_toc_pem_management_basics/01_grant_wizard/#grant_wizard) tool. | +| Schedule Backup | Click to access the Schedule Backup dialog for BART backups. | + +**The Help Menu** + +![PEM Help menu](../images/pem_help_menu.png) + +Use the options on the `Help` menu to access online help documents or to review information about the PEM installation: + +| Menu Option | Action | +| --------------------------------- | -------------------------------------------------------------------------------- | +| Online Help | Click to open documentation for Postgres Enterprise Manager. | +| REST API Reference | Click to open the REST API Reference. | +| EnterpriseDB Website | Click to open the EnterpriseDB website in a browser window. | +| About Postgres Enterprise Manager | Click to locate versioning and user information for Postgres Enterprise Manager. | diff --git a/product_docs/docs/pem/7.16/pem_online_help/03_toc_pem_client/04_preferences.mdx b/product_docs/docs/pem/7.16/pem_online_help/03_toc_pem_client/04_preferences.mdx new file mode 100644 index 00000000000..a707e873c81 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/03_toc_pem_client/04_preferences.mdx @@ -0,0 +1,277 @@ +--- +title: "PEM Client Preferences" +--- + + + +Use options on the `Preferences` dialog to customize the behavior of the PEM web interface. To open the dialog, select `Preferences` from the `File` menu. The left pane of the `Preferences` dialog displays a tree control; each node of the tree control provides access to options that are related to the node under which they are displayed. + +- Use the plus sign (+) to the left of a node name to expand a segment of the tree control. +- Use the minus sign (-) to the left of a node name to close that node. + +**The BART Servers Node** + +Use the `Nodes` panel to select the BART Servers that will be displayed in the Browser tree control of BART Servers: + +![Preferences dialog - BART Servers Nodes section](../images/preferences_bart_servers_nodes.png) + +- Slide the switch located next to BART Servers to show or hide the BART Servers in the browser tree. + +**The Browser Node** + +Use the fields on the `Browser` node of the tree control to personalize your workspace. + +![Preferences dialog - Browser Display options](../images/preferences_browser_display.png) + +Use the fields on the `Display` panel to specify general display preferences: + +- When the `Enable browser tree animation?` switch is set to `True`, the client will display the animated tree control; if the switch is `False`, the tree control will be unanimated. +- When the `Auto-expand sole children` switch is set to `True`, child nodes will be automatically expanded if a treeview node is expanded and has only a single child. +- Use the `Browser tree state saving interval` field to set the treeview state saving interval. A value of `-1` will disable the treeview state saving functionality. +- When the `Confirm before closing properties with unsaved changes` switch is set to `True`, pgAdmin will warn you before closing the properties dialog of an object if there are any unsaved changes. On user confirmation, the properties dialog will close. +- When the `Confirm on close or refresh` switch is set to `True`, pgAdmin will attempt to catch browser close or refresh events and prompt before allowing them to continue. +- When the `Show system objects?` switch is set to `True`, the client will display system objects such as system schemas (for example, `pg_temp`) or system columns (for example, `xmin` or `ctid`) in the tree control. +- When the `Enable dialogue/notification animation?` switch is set to `True`, the client will display the animated dialogues/notifications; if the switch is `False`, the tree control will be unanimated. +- Set `Show hidden groups?` to `True` to display hidden groups in the Browser tree control. +- Set `Show system objects?` to `True` to display system objects such as system schemas (for example, `pg_temp`) or system columns (for example, `xmin` or `ctid`) in the Browser tree control. +- Use the `Lock layout` field to lock the UI layout at different levels. + +| Option | Action | +| ----------------- | ----------------------------------------------------------------- | +| `None` | No locking. Every panel is resizable and dockable.
| +| `Prevent docking` | This will disable the docking/undocking of the panels
| +| `Full` | This will disable resizing, docking/undocking of the panels
| + +- When the `Show system objects?` switch is set to `True`, the client will display system objects such as system schemas (for example, `pg_temp`) or system columns (for example, `xmin` or `ctid`) in the tree control. + +Use the fields on the `Keyboard shortcuts` panel to configure shortcuts for the main window navigation: + +![Preferences dialog - Browser keyboard Shortcuts section](../images/preferences_browser_keyboard_shortcuts.png) + +- Use controls on the `Keyboard shortcuts` panel to specify the combination of modifier keys that define shortcuts for the PEM main window. + +Use the fields on the `Nodes` panel to select the object types that will be displayed in the `Browser` tree control: + +![Preferences dialog - Browser Nodes section](../images/preferences_browser_nodes.png) + +- The panel displays a list of database objects; slide the switch located next to each object type to `Show` or `Hide` the database object. When querying system catalogs, you can reduce the number of object types displayed to increase speed. + +Use fields on the `Properties` panel to specify browser properties: + +![Preferences dialog - Browser Properties section](../images/preferences_browser_properties.png) + +- Include a value in the `Count rows if estimated less than` field to perform a SELECT count(`) if the estimated number of rows in a table (as read from the table statistics) is below the specified limit. After performing the SELECT count(`), pgAdmin will display the row count. The default is 2000. +- Provide a value in the `Maximum job history rows` field to limit the number of rows to show on the statistics tab for pgAgent jobs. The default is 250. + +Use field on *Tab settings* panel to specify the tab related properties. + +Preferences dialog browser properties section + +- Use *Debugger tab title placeholder* field to customize the Debugger tab title. +- When the *Dynamic tab size* If set to True, the tabs will take full size as per the title, it will also applicable for already opened tabs +- When the *Open in new browser tab* filed is selected for Query tool, Schema Diff or Debugger, it will open in a new browser tab when invoked. +- Use the *Query tool tab title placeholder* field to customize the query tool tab title. +- Use *View/Edit tab title placeholder* field to customize the View/Edit Data tab title. + +**The Dashboards Node** + +Expand the `Dashboards` node to specify your dashboard display preferences. + +![Preferences dialog - Dashboard Display options](../images/preferences_dashboard_display.png) + +- When the `Show activity?` switch is set to `True`, activity tables will be displayed on dashboards. +- When the `Show graph data points?` switch is set to `True`, data points will be visible on graph lines. +- When the `Show graphs?` switch is set to `True`, graphs will be displayed on dashboards. +- When the `Show mouse hover tooltip?` switch is set to `True`, a tooltip will appear on mouse hover on the graph lines giving the data point details. + +Use the fields on the `Graphs` panel to specify your display preferences for the graphs on the `Dashboard` tab: + +![Preferences dialog - Dashboard Graph options](../images/preferences_dashboard_graphs.png) + +Use the fields on the `Graphs` panel to specify your display preferences for the graphs on the `Dashboard` tab: + +- Use the `Block I/O statistics refresh rate` field to specify the number of seconds between block I/O statistic samples displayed in graphs. +- Use the `Session statistics refresh rate` field to specify the number of seconds between session statistic samples displayed in graphs. +- Use the `Transaction throughput refresh rate` field to specify the number of seconds between transaction throughput samples displayed in graphs. +- Use the `Tuples in refresh rate` field to specify the number of seconds between tuples-in samples displayed in graphs. +- Use the `Tuples out refresh rate` field to specify the number of seconds between tuples-out samples displayed in graphs. + +**The Debugger Node** + +Expand the `Debugger` node to specify your debugger display preferences. + +Use the fields on the `Keyboard shortcuts` panel to configure shortcuts for the debugger window navigation: + +![Preferences dialog - Debugger Keyboard Shortcuts section](../images/preferences_debugger_keyboard_shortcuts.png) + +**The Miscellaneous Node** + +Expand the `Miscellaneous` node to specify miscellaneous display preferences. + +![Preferences dialog - User Language section](../images/preferences_misc_user_language.png) + +- Use the `User language` drop-down listbox to select the display language for the PEM web interface. + +![Preferences dialog - Themes section](../images/preferences_misc_themes.png) + +- Use the `Themes` drop-down listbox to select the theme for PEM. You'll also get a preview just below the drop down. Note that, to apply the theme you need to refresh the PEM page. + +**The Paths Node** + +Expand the `Paths` node to specify the locations of supporting utility and help files. + +![Preferences dialog - Binary path section](../images/preferences_paths_binary.png) + +Use the fields on the `Binary paths` panel to specify the path to the directory that contains the utility programs (pg_dump, pg_restore, and pg_dumpall) for monitored databases: + +- Use the `EDB Advanced Server Binary Path` field to specify the location of the EDB Postgres Advanced Server utility programs. If this path is not set, pgAdmin will attempt to find the utilities in standard locations used by EnterpriseDB. +- Use the `Greenplum Database Binary Path` field to specify the location of the Greenplum database utility programs. If this path is not set, pgAdmin will attempt to find the utilities in standard locations used by Greenplum. +- Use the `PostgreSQL Binary Path` field to specify the location of the PostgreSQL utility programs. If this path is not set, pgAdmin will attempt to find the utilities in standard locations used by PostgreSQL. + +![Preferences dialog - Paths Help section](../images/preferences_paths_help.png) + +Use the fields on the `Help` panel to specify the location of help files. + +- Use the `EDB Advanced Server Help Path` field to specify the path to EDB Postgres Advanced Server documentation. +- Use the `PostgreSQL Help Path` field to specify the path to PostgreSQL documentation. + +Please note: the default help paths include the `VERSION` placeholder; the $VERSION$ placeholder will be replaced by the current database version. + +**The Performance Diagnostic Node** + +Expand the `Performance Diagnostic` node to specify your preferences for the Performance Diagnostic tool. + +![Preferences dialog - Performance Diagnostic Display option](../images/preferences_performance_diagnostic_display.png) + +Use the fields on the `Performance Diagnostic` panel to control the Performance Diagnostic output. + +- Use the `Default graph selection` field to specify the default selection range in hours for performance diagnostic graphs. +- When the `Open in new browser tab?` switch is set to True, the Performance Diagnostic tool will be opened in a new browser tab. + +**The Query Tool Node** + +Expand the `Query Tool` node to access panels that allow you to specify your preferences for the Query Editor tool. + +![Preferences dialog - Query Tool Auto completion option](../images/preferences_sql_auto_completion.png) + +Use the fields on the `Auto Completion` panel to set the auto completion options. + +- When the `Keywords in uppercase` switch is set to `True`, keywords are displayed in upper case. + +![Preferences dialog - Query Tool CSV Output option](../images/preferences_sql_csv_output.png) + +Use the fields on the `CSV Output` panel to control the CSV output. + +- Use the `CSV field separator` drop-down listbox to specify the separator character that will be used in CSV/TXT output. +- Use the `CSV quote character` drop-down listbox to specify the quote character that will be used in CSV/TXT output. +- Use the `CSV quoting` drop-down listbox to select the fields that will be quoted in the CSV/TXT output; select `Strings`, *All*, or `None`. +- Use the `Replace null values with` option to replace null values with specified string in the output file. Default is set to 'NULL'. + +![Preferences dialog - Query Tool Display options](../images/preferences_sql_display.png) + +Use the fields on the `Display` panel to specify your preferences for the Query Tool display. + +- When the `Connection status` switch is set to `True`, each new instance of the Query Tool will display connection and transaction status. +- Use the `Connection status refresh rate` field to specify the number of seconds between connection/transaction status updates. +- Use the `Query info notifier timeout` field to control the behaviour of the notifier that is displayed when query execution completes. A value of `-1` will disable the notifier, and a value of 0 will display it until clicked. If a positive value above zero is specified, the notifier will be displayed for the specified number of seconds. The default is `5`. + +![Preferences dialog - Sqleditor Editor settings](../images/preferences_sql_editor.png) + +Use the fields on the `Editor` panel to change settings of the query editor. + +- When the `Brace matching?` switch is set to `True`, the editor will highlight pairs of matched braces. +- When the `Code folding?` switch is set to `False`, the editor will disable code folding. Disabling will improve editor performance with large files. +- Use the `Font size` field to specify the font size that will be used in text boxes and editors. +- When the `Insert bracket pairs?` switch is set to `True`, the editor will automatically insert paired brackets. +- When the `Line wrapping` switch is set to `True`, the editor will implement line-wrapping behavior. +- When the `Plain text mode?` switch is set to `True`, the editor mode will be changed to text/plain. Keyword highlighting and code folding will be disabled. This will improve editor performance with large files. + +![Preferences dialog - Query Tool Explain options](../images/preferences_sql_explain.png) + +Use the fields on the `Explain` panel to specify the level of detail included in a graphical EXPLAIN. + +- When the `Show Buffers?` switch is set to `True`, graphical explain details will include information about buffer usage. +- When the `Show Costs?` switch is set to `True`, graphical explain details will include information about the estimated startup and total cost of each plan, as well as the estimated number of rows and the estimated width of each row. +- When the `Show Timing?` switch is set to `True`, graphical explain details will include the startup time and time spent in each node in the output. +- When the `Verbose output?` switch is set to `True`, graphical explain details will include extended information about the query execution plan. + +Use the fields on the `Keyboard shortcuts` panel to configure shortcuts for the Query Tool. + +![Preferences dialog - Query Tool Keyboard Shortcuts section](../images/preferences_sql_keyboard_shortcuts.png) + +Use the fields on the `Options` panel to manage Query Tool preferences. + +![Preferences dialog - Query Tool Options section](../images/preferences_sql_options.png) + +- When the `Auto-Commit?` switch is set to `True`, each successful query is committed after execution. +- When the `Auto-Rollback?` switch is set to `True`, failed queries are rolled back. +- When the `Prompt to save unsaved data changes?` switch is set to `True`, the editor will prompt the user to saved unsaved data when exiting the data editor. +- When the `Prompt to save unsaved query changes?` switch is set to `True`, the editor will prompt the user to saved unsaved query modifications when exiting the query tool. +- When the `Prompt to commit/rollback active transactions?` switch is set to `True`, the editor will prompt the user to commit or rollback changes when exiting the Query Tool while the current transaction is not committed. +- When the `Sort View Data results by primary key columns?` If set to `True`, data returned when using the View/Edit Data - All Rows option will be sorted by the Primary Key columns by default. When using the First/Last 100 Rows options, data is always sorted. + +Preferences dialog SQL Formatting section + +Use the fields on the *SQL formatting* panel to specify your preferences for reformatting of SQL. + +- Use the *Command-first notation* option to specify whether to place commas before or after column names. +- Use the *Identifier case* option to specify whether to change identifiers (object names) into upper, lower, or capitalized case. +- Use the *Keyword case* option to specify whether to change keywords into upper, lower, or capitalized case. +- Use the *Re-indent aligned?* option to specify that indentations of statements should be changed, aligned by keywords. +- Use the *Re-indent?* option to specify that indentations of statements should be changed. +- Use the *Spaces around operators?* option to specify whether or not to include spaces on either side of operators. +- Use the *Strip comments?* option to specify whether or not comments should be removed. +- Use the *Tab size* option to specify the number of spaces per tab or indent. +- Use the *Use spaces?* option to select whether to use spaces or tabs when indenting. +- Use the *Wrap after N characters* option to specify the column limit for wrapping column separated lists (e.g. of column names in a table). If set to 0 (zero), each item will be on it's own line. + +![Preferences dialog - SQL Results Grid section](../images/preferences_sql_results_grid.png) + +Use the fields on the `Results grid` panel to specify your formatting preferences for copied data. + +- Use the `Result copy field separator` drop-down listbox to select the field separator for copied data. +- Use the `Result copy quote character` drop-down listbox to select the quote character for copied data. +- Use the `Result copy quoting` drop-down listbox to select which type of fields require quoting; select `All`, *None*, or `Strings`. + +**The SQL Profiler Node** + +Use fields on the `Display` panel to specify SQL Profiler preferences. + +![Preferences dialog - SQL Profiler Display section](../images/preferences_sql_profiler_display.png) + +Set `Open in New Browser Tab?` to `True` to open SQL Profiler in a new browser tab when SQL Profiler is invoked. + +Use the fields on the Keyboard shortcuts panel to configure shortcuts for toolbar buttons on SQL profiler trace window. + +![Preferences dialog - Sql Profiler Keyboard Shortcuts section](../images/preferences_sql_profiler_keyboard_shortcuts.png) + +**The Scheduled Tasks Node** + +Use fields on the `Options` panel to specify Scheduled Tasks preferences. + +![Preferences dialog - Scheduled Tasks Options section](../images/preferences_scheduled_tasks_options.png) + +Use the `Auto refresh interval` field to specify the number of seconds between automatic refreshes; a value of 0 disables auto refresh. + +**The Schema Diff Node** + +Expand the `Schema Diff` node to specify your display preferences. + +![Preferences dialog - Schema Diff Display section](../images/preferences_schema_diff.png) + +Use the *Ignore owner* switch to ignores the owner while comparing the objects. + +Use the `Ignore whitespaces` switch to ignores the whitespaces while comparing the string objects. Whitespace includes space, tabs, and CRLF. + +**The Storage Node** + +Expand the `Storage` node to specify your storage preferences. + +![Preferences dialog - Storage Options section](../images/preferences_storage_options.png) + +Use the fields on the `Options` panel to specify storage preferences. + +- Use the `File dialog view` drop-down listbox to select the style of icons and display format that will be displayed when you open the file manager; select `List` to display a list view, or `Grid` to display folder icons. +- Use the `Last directory visited` field to specify the name of the folder in which the file manager will open. +- Use the `Maximum file upload size(MB)` field on the `Options` panel of the **Storage** node to specify the maximum file size for an upload. +- When the `Show hidden files and folders?` switch is set to `True`, the file manager will display hidden files and folders. diff --git a/product_docs/docs/pem/7.16/pem_online_help/03_toc_pem_client/05_keyboard_shortcuts.mdx b/product_docs/docs/pem/7.16/pem_online_help/03_toc_pem_client/05_keyboard_shortcuts.mdx new file mode 100644 index 00000000000..e348ccae3b2 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/03_toc_pem_client/05_keyboard_shortcuts.mdx @@ -0,0 +1,135 @@ +--- +title: "Keyboard Shortcuts" +--- + +Keyboard shortcuts are provided in pgAdmin to allow easy access to specific functions. Alternate shortcuts can be configured through File > Preferences if desired.˝ + +## Main Browser Window + +When using main browser window, the following keyboard shortcuts are available: + +| Shortcut for all platforms | Function | +| -------------------------- | ------------------------------------------- | +| Alt+Shift+F | Open the File menu | +| Alt+Shift+O | Open the Object menu | +| Alt+Shift+L | Open the Tools menu | +| Alt+Shift+H | Open the Help menu | +| Alt+Shift+B | Focus the browser tree | +| Alt+Shift+\[ | Move tabbed panel backward | +| Alt+Shift+] | Move tabbed panel forward | +| Alt+Shift+Q | Open the Query Tool in the current database | +| Alt+Shift+V | View Data in the selected table/view | +| Alt+Shift+C | Open the context menu | +| Alt+Shift+N | Create an object | +| Alt+Shift+E | Edit object properties | +| Alt+Shift+D | Delete the object | +| Alt+Shift+G | Direct debugging | + +## Dialog Tabs + +Use the shortcuts below to navigate the tabsets on dialogs: + +| Shortcut for all platforms | Function | +| -------------------------- | ------------------- | +| Control+Shift+\[ | Dialog tab backward | +| Control+Shift+] | Dialog tab forward | + +## Property Grid Controls + +Use the shortcuts below when working with property grid controls: + +| Shortcut for all platforms | Function | +| -------------------------- | ---------------------------------------- | +| Control+Shift+A | Add row in Grid | +| Tab | Move focus to the next control | +| Shift+Tab | Move focus to the previous control | +| Return | Pick the selected an item in a combo box | +| Control+Shift+A | Add row in Grid | + +## SQL Editors + +When using the syntax-highlighting SQL editors, the following shortcuts are available: + +| Shortcut (Windows/Linux) | Shortcut (Mac) | Function | +| ------------------------ | -------------------- | ----------------------------------- | +| Alt + Left | Option + Left | Move to the beginning of the line | +| Alt + Right | Option + Right | Move to the end of the line | +| Ctrl + Alt + Left | Cmd + Option + Left | Move left one word | +| Ctrl + Alt + Right | Cmd + Option + Right | Move right one word | +| Ctrl + / | Cmd + / | Comment selected code (Inline) | +| Ctrl + . | Cmd + . | Uncomment selected code (Inline) | +| Ctrl + Shift + / | Cmd + Shift + / | Comment/Uncomment code (Block) | +| Ctrl + a | Cmd + a | Select all | +| Ctrl + c | Cmd + c | Copy selected text to the clipboard | +| Ctrl + r | Cmd + r | Redo last edit un-done | +| Ctrl + v | Cmd + v | Paste text from the clipboard | +| Ctrl + z | Cmd + z | Undo last edit | +| Tab | Tab | Indent selected text | +| Shift + Tab | Shift + Tab | Un-indent selected text | +| Alt + g | Option + g | Jump (to line:column) | +| Ctrl + Space | Ctrl + Space | Auto-complete | +| Ctrl + f | Cmd + f | Find | +| Ctrl + g | Cmd + g | Find next | +| Ctrl + Shift + g | Cmd + Shift + g | Find previous | +| Ctrl + Shift + f | Cmd + Shift + f | Replace | + +## Query Tool + +When using the Query Tool, the following shortcuts are available: + +| Shortcut (Windows/Linux) | Shortcut (Mac) | Function | +| ------------------------ | ------------------ | ------------------------- | +| F5 | F5 | Execute query | +| F6 | F6 | Save data changes | +| F7 | F7 | EXPLAIN query | +| Shift + F7 | Shift + F7 | EXPLAIN ANALYZE query | +| F8 | F8 | Execute query to CSV file | +| <accesskey> + o | <accesskey> + o | Open file | +| <accesskey> + s | <accesskey> + s | Save file | +| <accesskey> + n | <accesskey> + n | Find option drop down | +| <accesskey> + c | <accesskey> + c | Copy row(s) | +| <accesskey> + p | <accesskey> + p | Paste row(s) | +| <accesskey> + d | <accesskey> + d | Delete row(s) | +| <accesskey> + f | <accesskey> + f | Filter dialog | +| <accesskey> + i | <accesskey> + i | Filter options drop down | +| <accesskey> + r | <accesskey> + r | Row limit | +| <accesskey> + q | <accesskey> + q | Cancel query | +| <accesskey> + l | <accesskey> + l | Clear option drop down | +| <accesskey> + x | <accesskey> + x | Execute option drop down | +| <accesskey> + t | <accesskey> + t | Display connection status | +| <accesskey> + y | <accesskey> + y | Copy SQL on history panel | + +## Debugger + +When using the Debugger, the following shortcuts are available: + +| Shortcut (Windows/Linux) | Shortcut (Mac) | Function | +| ------------------------ | ------------------ | ---------------------------- | +| <accesskey> + i | <accesskey> + i | Step in | +| <accesskey> + o | <accesskey> + o | Step over | +| <accesskey> + c | <accesskey> + c | Continue/Restart | +| <accesskey> + t | <accesskey> + t | Toggle breakpoint | +| <accesskey> + x | <accesskey> + x | Clear all breakpoints | +| <accesskey> + s | <accesskey> + s | Stop | +| Alt + Shift + q | Option + Shift + q | Enter or Edit values in Grid | + +## Inner Tab and Panel Navigation + +When using the Query Tool and Debugger, the following shortcuts are available for inner panel navigation: + +| Shortcut (Windows/Linux) | Shortcut (Mac) | Function | +| ------------------------ | ----------------- | ----------------------------------- | +| Alt + Shift + ] | Alt + Shift + ] | Move to next tab within a panel | +| Alt + Shift + \[ | Alt + Shift + \[ | Move to previous tab within a panel | +| Alt + Shift + Tab | Alt + Shift + Tab | Move between inner panels | + +## Access Key + +<accesskey> is browser and platform dependant. The following table lists the default access keys for supported browsers. + +| Browser | Windows | Linux | Mac | +| ----------------- | ----------- | ----------- | ------------- | +| Internet Explorer | Alt | Alt | | +| Chrome | Alt | Alt | Ctrl + Option | +| Firefox | Alt + Shift | Alt + Shift | Ctrl + Option | +| Safari | Alt | | Ctrl + Option | diff --git a/product_docs/docs/pem/7.16/pem_online_help/03_toc_pem_client/06_search_objects.mdx b/product_docs/docs/pem/7.16/pem_online_help/03_toc_pem_client/06_search_objects.mdx new file mode 100644 index 00000000000..0cb25e66b92 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/03_toc_pem_client/06_search_objects.mdx @@ -0,0 +1,17 @@ +--- +title: "Search objects" +--- + + + +Search objects dialog + +With this dialog, you can search for almost any kind of objects in a database. + +You can access it by right clicking a database or any of its child nodes and select "Search objects". You can also access it by hitting the shortcut (default ALT+SHIFT+S). + +The minimum pattern length are 3 characters. The search performed is non-casesensitive and will find all objets whose name contains the pattern. You can only search for object names currently. Examples are: abc, %ab%, ab%c, %%%, etc. + +The result is presented in the grid with object name, object type and the object tree path in the browser tree. You can double click on a result row to select the object in the browser tree. If the object is greyed out, this means that you have not enabled those object types in the [preferences](04_preferences/#preferences), so you can't double click on it. You can click on the ellipsis appended to the function and procedure names to see there arguments. + +You can filter based on a particular object type by selecting one from the object type dropdown. If the search button is hit when one of the object type is selected then only those types will be fetch from the database. An object type will not be visible in the dropdown if the database server does not support it or if it is not enabled from the [preferences](04_preferences/#preferences). diff --git a/product_docs/docs/pem/7.16/pem_online_help/03_toc_pem_client/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/03_toc_pem_client/index.mdx new file mode 100644 index 00000000000..55b88c9a69e --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/03_toc_pem_client/index.mdx @@ -0,0 +1,37 @@ +--- +title: "The PEM Client" +--- + + + +The Postgres Enterprise Manager client provides a powerful and intuitive user interface that you can use to manage Advanced Server and PostgreSQL databases. The client interface is easily customized, and will preserve your preferences between sessions. Client features include: + +> - auto-detection and support for objects discovered at run-time +> - a live SQL query tool with direct data editing +> - support for administrative queries +> - a syntax-highlighting SQL editor +> - powerful graphical management dialogs and tools for common tasks +> - a responsive, context-sensitive behavior +> - supportive error messages +> - helpful hints +> - online help and information for dialogs and tools. + +The PEM client features a highly-customizable display that features drag-and-drop panels that you can arrange to make the best use of your desktop environment. The application is installed during the PEM server installation; use your browser of choice to connect to the client. + +The client tree control (the *Browser*) provides an elegant overview of the managed servers, and the objects that reside on each server. Right-click on a node within the tree control to access context-sensitive menus that provide quick access to management tasks for the selected object. The tabbed browser window provide quick access to statistical information about each object in the tree control, tools and utilities, and extended PEM features. The client opens an additional feature tab each time you access the extended functionality offered by PEM; you can open, close, and re-arrange tabs as needed. + +You can search for objects in the database using the [Search objects](06_search_objects/#search_objects) + +Contents: + +
+ +pem_browser_window pem_toolbar pem_menu_bar preferences keyboard_shortcuts search_objects + +
+ +Please note that database changes made from other users or clients will not cause a browser refresh. It is generally advisable to manually refresh an object before modifying it. You may find some options are disabled when you are reviewing object properties or making menu selections. If this is the case: + +- The database server to which you are currently connected may not support the selected feature. +- The selected property cannot be modified by design. +- The role that you have used to connect to the server may have insufficient privileges to change the selected object. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/01_alerts_dashboard.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/01_alerts_dashboard.mdx new file mode 100644 index 00000000000..6df4c7245ca --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/01_alerts_dashboard.mdx @@ -0,0 +1,72 @@ +--- +title: "The Alerts Dashboard" +--- + + + +The Alerts Dashboard displays the currently triggered alerts; if opened from the Global Overview, the dashboard displays the current alerts for all monitored nodes on the system. If the Alerts Dashboard is opened from a node within a monitored hierarchy, the report will reflect alerts related to that node, and all monitored objects that reside below that object in the tree control. + +![Alerts dashboard](../../images/alerts_dashboard.png) + +Use parameters on the [PEM Server Configurations](../02_pem_server_config/#pem_server_config) dialog to specify the auto-refresh rate for the `Alerts` dashboard. To access the `Server Configuration` dialog, select `Server Configuration...` from the PEM web interface `Management` menu. + +The `Alerts Dashboard` header includes the date and time that the page was last updated and a current count of triggered alerts. + +The `Alerts Overview` provides an overview of triggered alerts. The right-most bar indicates the total number of configured alerts that are **not** currently in an alert state; the three left-most bars indicate the number of Low, Medium and High alerts for the selected object. The vertical key on the left side of the graph provides an alert count. + +The `Alert Details` table lists the currently triggered alerts for the selected object; if opened from the global overview, the Alert Details table lists all of the currently triggered alerts for all monitored objects. Click a column heading to sort the table by the contents of a selected column; click a second time to reverse the sort order. The table contains detailed information about each alert: + +- An alert level icon displays in red for a `High` severity alert, in orange for a `Medium` severity alert, and in yellow for a `Low` severity alert. +- Use the arrow to the right of the alert level icon to access a dialog with detailed information about the alert. Within the dialog, the `Details` tab displays detailed information about the condition that triggered the alert; the `Parameters` tab displays the values of parameters used in the alert definition. Not all alerts return data that can be viewed on the `Details` dialog; for information about which templates display detailed metrics, please see the [alert templates list](../09_pem_alerting/03_pem_alert_templates/#pem_alert_templates) + +![Alert details](../../images/alert_details.png) + +- The `Ack'ed` column provides a checkbox to allow you to acknowledge an alert to prevent additional notifications being sent. This flag is cleared automatically if the alert condition clears and is then detected again. +- The `Alert Type` column indicates the severity of the alert. +- The `Name` column displays the names of the currently triggered alerts. Click the name of an alert to open the `Alerting` configuration dialogue that defines the alert. +- The `Value` column displays the value of the metric that triggered the alert. +- If applicable, the `Agent` column indicates the name of the agent on which the alert is defined. +- If applicable, the `Server` column indicates the name of the server triggering the error message. +- If applicable, the `Database` column indicates the name of the database on which the alert is defined. +- If applicable, the `Schema` column indicates the name of the schema on which the alert is defined. +- If applicable, the `Package` column indicates the name of the package on which the alert is defined. +- If applicable, the `Object` column indicates the name of the monitored object on which the alert is defined. +- If the alert definition includes specified parameters, the parameter values are displayed in the `Additional Params` column. +- If the alert definition includes additional specified parameters, the additional parameter values are displayed in the `Additional Params Value` column. +- The `Alerting Since` column displays the date and time that the alert triggered. + +The `Alert Errors` table displays configuration-related errors (eg.accidentally disabling a required probe, or improperly configuring an alert parameter): + +![Alert Errors table chart](../../images/alert_errors_table.png) + +- An alert indicator in the left-most column indicates that the alert was triggered by an Error. +- The `Alert Type` column indicates the severity of the alert. +- The `Name` column displays the name of the alert. Click an alert name to open the configuration dialogue for the alert. +- The `Value` column displays the value of the metric that triggered the alert, if applicable. +- If applicable, the `Agent` column displays the name of the agent triggering the alert. +- If applicable, the `Server` column displays the name of the server triggering the alert. +- If applicable, the `Database` column indicates the name of the database on which the alert is defined. +- If applicable, the `Schema` column indicates the name of the schema on which the alert is defined. +- If applicable, the `Package` column indicates the name of the package on which the alert is defined. +- If applicable, the `Object` column indicates the name of the monitored object on which the alert is defined. +- The `Error Message` column describes the condition that triggered the alert. +- The `Error Timestamp` column displays the date and time that the alert was triggered. + +## Customizing the Alerts Dashboard + +You can customize tables and charts that appear on the Alerts dashboard. To open the `Personalize chart configuration` dialog, click the wrench icon in the upper-right corner. + +![Alert customize chart](../../images/alerts_customize_chart.png) + +The fields displayed on the dialog will vary based on the table or chart from which the dialog is opened. + +![Alert customize table](../../images/alerts_customize_table.png) + +Use fields on the `Personalize chart configuration` dialog to provide your display preferences: + +- Use the `Auto Refresh` field to specify the number of seconds between updates of the data displayed in the table or chart. +- If applicable, use the `Download as` field to indicate if you would like a chart to be downloaded as a JPEG image or a PNG image. +- If applicable, use the `Colours` selectors to specify the display colors that will be used on a chart. +- If applicable, set the `Show Acknowledged Alerts` switch to `Yes` indicate that you would like the table to display alerts that you have acknowledged with a checkbox in the `Ack'ed` column. Set the field to `No` to indicate that the table should hide any acknowledged alerts. The switch acts as a toggle; acknowledged alerts are not purged from the table content until the time specified in the alert definition passes. + +To save your customizations, click the save icon (a check mark) in the upper-right corner; to delete any previous changes and revert to the default values, click the delete icon. Save and Delete drop-down menus allow you to specify if your preferences should be applied to `All Dashboards`, or to a selected server or database. Use the close icon to close the `Personalize chart configuration` dialog without preserving your changes. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/02_audit_log_dashboard.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/02_audit_log_dashboard.mdx new file mode 100644 index 00000000000..0c93fc69fe3 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/02_audit_log_dashboard.mdx @@ -0,0 +1,37 @@ +--- +title: "The Audit Log Analysis Dashboard" +--- + + + +The Audit Log Dashboard allows you to browse the audit logs that have been collected from Advanced Server instances which have enabled audit logging and collection with the [Audit Manager](../04_audit_manager/#audit_manager). If the Audit Log Dashboard is opened from the Global level, it will display logs from all servers. If opened from the Agent level, it will show logs from all servers monitored by that Agent. If opened from the Server level, it will show logs from that server only. + +![Audit Log analysis dashboard](../../images/audit_log_analysis_dashboard.png) + +The `Audit Log Dashboard` header includes the date and time that the page was last updated, and a current count of triggered alerts. + +Audit Log table entries are loaded on demand in batches; to load additional entries, scroll to the end of the log and the additional rows will be automatically loaded from the database and added to the table. Log entries are show in chronological order, most recent first. + +- The `Id` column identifies the PEM agent that monitors the server that initiated the recorded transaction. +- The `Server` column identifies the server that initiated the recorded transaction. +- The `Timestamp` column shows the date and time that the log entry was made. +- The `User Name` column shows the user which executed the statment in the audit log entry. +- the `Database Name` column shows the database on which the statment in the audit log entry was executed. +- The `Process ID` column shows the ID of the process which executed the statement in the audit log entry. +- The `Session ID` column shows the ID of the session in which the statement in the audit log entry was executed. +- The `Transaction ID` column shows the ID of the transaction in which the statement in the audit log entry was executed. +- The `Connection From` column shows the client's address from where the session was connected. +- The `Command` column shows the type of command executed. +- The `Message` column shows the message associated with the audit log entry. + +Click `Show Filters` to display a panel that you can use to filter the audit log entries that are shown in the table below; click on `Hide Filters` to close the panel. + +![Audit Log analysis dashboard filters](../../images/audit_log_analysis_filter.png) + +Use the fields within the filter definition box to describe a selection criteria that PEM will use to select a subset of a report for display: + +- Use the date and time selectors in the `From` field to specify a starting date and time for the displayed log entries. +- Use the date and time selectors in the `To` field to specify an ending date and time for the displayed log entries. +- Enter a username in the `Username` field to show log entries for the specified user only. +- Enter a database name in the `Database` field to show log entries for the specified database only. +- Enter a command type (for example; 'SELECT', 'authentication' or 'idle') in the `Command Type` field to show log entries of that type only. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/03_database_analysis_dashboard.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/03_database_analysis_dashboard.mdx new file mode 100644 index 00000000000..fa70e3fa2f9 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/03_database_analysis_dashboard.mdx @@ -0,0 +1,50 @@ +--- +title: "The Database Analysis Dashboard" +--- + + + +The Database Analysis dashboard provides a high-level overview of database activity for the selected database, including a comparative storage analysis of the 5 largest tables/indexes, user activity analysis, weekly I/O analysis, and an activity analysis of the tables that reside in the selected database. + +![Database analysis dashboard](../../images/database_analysis_dashboard.png) + +Use parameters on the [PEM Server Configurations](../02_pem_server_config/#pem_server_config) dialog to specify the auto-refresh rate for the dashboard. To access the `Server Configuration` dialog, select `Server Configuration...` from the PEM web interface `Management` menu. + +The Database Analysis dashboard header displays the date and time that the server started, the date and time that the Database Analysis dashboard was last updated, and the number of alerts currently triggered for the specified database (and monitored objects that reside within that database). + +The `Storage` bar graph plots the relative size of the 5 largest tables and indexes that reside within the selected database. The vertical key on the left side of the graph indicates each table or index in megabytes; the key on the right side of the chart identifies the tables and indexes by name. + +The `Users` section of the Database Analysis dashboard displays information about user connections: + +- The `User Activity` graph plots the active and idle connections over the previous week. The vertical key on the left side of the chart indicates the connection count. +- The `Connection Overview` chart provides a comparative display of the active and idle connections currently established with the server (when the most recent probe executed). + +The graphs in the `I/O` section present an analysis of I/O activity over the previous week. + +![Database IO analysis](../../images/database_io_analysis.png) + +- The `Database I/O` graph plots the number of blocks found in cached memory and the number of blocks read from disk over the previous week. The vertical key on the left side of the graph indicates number of blocks hit. +- The `Row Activity` graph displays the row activity for tables residing within the database over the previous week. + +> The vertical key on the left side of the graph indicates the number of rows. + +- The `Commits/Rollbacks` graph displays the number of transactions committed and rolled back within the selected database over the previous week. + +> The vertical key on the left side of the graph indicates the transaction count. + +![Hot table analysis](../../images/hot_table_analysis.png) + +The `Hot Tables` table provides a detailed analysis of the activity for each table that resides within the selected database. Click a column heading to sort the table by the values within the column; click again to reverse the sort order. + +- The `Schema` column identifies the schema in which the table resides. +- The `Table Name` column identifies the name of the table. +- The `Scans` column displays the number of scans performed on the table. +- The `Rows Read` column displays the number of rows read from the specified table. +- The `Index Scans` column displays the number of index scans performed on the specified table. +- The `Index Rows Read` column displays the number of rows read during index scans on the specified table. +- The `Rows Inserted` column displays the number of rows inserted into the specified table. +- The `Rows Updated` column displays the number of rows updated in the specified table. +- The `Rows Deleted` column displays the number of rows deleted from the specified table. +- The `Hot Rows Updated` column displays the number of hot row updates into the table; when a hot row update occurs, the new row occupies the same page as the previous row. +- The `Total Rows` column displays the number of total rows in the table. +- The `Dead Rows` column displays the number of rows that have been deleted, but have not been reclaimed via a VACUUM command or the AUTOVACUUM process. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/04_global_overview_dashboard.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/04_global_overview_dashboard.mdx new file mode 100644 index 00000000000..774fccfef5b --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/04_global_overview_dashboard.mdx @@ -0,0 +1,54 @@ +--- +title: "The Global Overview Dashboard" +--- + + + +Upon connecting to Postgres Enterprise Manager, the web interface displays the `Global Overview` dashboard. The Global Overview dashboard displays the status of each PEM server and agent, and calls your attention to any triggered alerts on monitored objects. + +![Global Overview dashboard](../../images/global_overview.png) + +Use parameters on the [PEM Server Configurations](../02_pem_server_config/#pem_server_config) dialog to specify the auto-refresh rate for the dashboard. To access the `Server Configuration` dialog, select `Server Configuration...` from the PEM web interface `Management` menu. + +The `Global Overview` header displays the date and time that the overview was last updated and the current number of triggered alerts. + +The `Enterprise Dashboard` bar graph provides an at-a-glance overview of the status of your PEM agents and servers. + +The `Agent Status` table provides detailed information about the status of each individual PEM agent: + +- Check the box in the `Blackout` column to disable alert processing for the agent and all servers monitored by the agent. This is useful when undertaking maintenance on the agent or the host on which the agent runs. +- The `Status` column reports the current state of the agent; `UP`, `DOWN` or `UNKNOWN`. A healthy agent displays a green 'check' circle icon; an agent that is down displays a red 'info' circle icon; an agent registered with PEM, but - never sent an heartbeat, displays a gray 'question' circle icon. If user changes the colour for UP, DOWN or UNKNOWN status of agents in \**Enterprise Dashboard*\* bar chart, then that color will be reflected for the respective status icon. +- The `Name` column displays the name of the agent. Click the name to navigate to the `Operating System Analysis` dashboard for the selected host. +- The `Alerts` column displays the number of current alerts triggered on the server. +- The `Version` column displays the agent's version. +- The `Processes` column lists the number of processes running on the agent's host. +- The `Threads` column lists the number of threads running on the agent's host. +- The `CPU Utilisation (%)` column shows the average utilisation of all CPU cores on the host. +- The `Memory Utilisation (%)` column shows the percentage of available RAM memory used on the host. +- The `Swap Utilisation (%)` column shows the percentage of available swap memory used on the host. +- The `Disk Utilisation` column shows the total percentage of disk space used, for all disks on the host. + +The `Postgres Server Status` table provides detailed information about the status of each individual server: + +- Check the box in the `Blackout` column provides a checkbox to disable alert processing for the server. This is useful when performing maintenance on the server. +- The `Status` column reports the current state of the server; UP, DOWN, UNKNOWN or UNMANAGED. +- A healthy server displays a green 'check' circle icon; a disabled server displays a red 'info' circle icon; an unknown server displays a grey 'question' circle icon; an unmanged server displays a light gray 'user' circle icon. If user changes the colour for UP, DOWN, UNKNOWN or UNMANAGED servers in **Enterprise Dashboard** bar chart, then that color will be reflected for the respective status icon. +- The `Name` column displays the name of the agent. Click the name to navigate to the `Operating System Analysis` dashboard for the host. +- The `Connections` column reports the current number of connections to the server. +- The `Alerts` column displays the number of current alerts triggered on the server. +- The `Version` column lists the PostgreSQL version and build signature. +- The `Remotely Monitored` column displays a `Yes` if the PEM agent that is bound to the monitored server does not reside on the same host as the server, and a `No` if the agent resides on the same host as the server. + +Triggered alerts displayed in the `Alert Status` table include both PEM-defined alerts and user-defined alerts for all PEM-monitored hosts, servers, agents and database objects. The `Alert Status` table will also display an alert if an [agent or server is down](../../02_toc_pem_agent/03_pem_agent_start_pem_agent/#pem_agent_start_pem_agent). + +- The `Alarm Type` column reports the alert severity. An icon displays in red for a `High` severity alert, in yellow for a `Medium` severity alert, and in grey for a `Low` severity alert. +- The `Object Description` column displays a description of the object that triggered the alert. +- The `Alert Name` column displays the name of the triggered alert. When viewing the dashboard in the PEM client, you can click the Alert Name to open the configuration dialogue for the alert. +- The `Value` column displays the current value of the object that triggered the alert. +- The `Database` column displays the name of the database with which the alert is associated (if applicable). +- The `Schema` column displays the name of the schema with which the alert is associated (if applicable). +- The `Package` column displays the name of the package with which the alert is associated (if applicable). +- The `Object` column displays the name of the object with which the alert is associated (if applicable). +- The `Additional Params` column displays any additional parameters specified for the alert. +- The `Additional Param Values` column displays any additional parameter values specified for the alert. +- The `Alerting Since` column displays the date and time at which the alert triggered. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/05_io_analysis_dashboard.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/05_io_analysis_dashboard.mdx new file mode 100644 index 00000000000..ce377d36bee --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/05_io_analysis_dashboard.mdx @@ -0,0 +1,64 @@ +--- +title: "The I/O Analysis Dashboard" +--- + + + +The I/O Analysis dashboard displays usage statistics for a specific database. + +![IO Analysis dashboard](../../images/io_analysis_dashboard.png) + +Use parameters on the [PEM Server Configurations](../02_pem_server_config/#pem_server_config) dialog to specify the auto-refresh rate for the dashboard. To access the `Server Configuration` dialog, select `Server Configuration...` from the PEM web interface `Management` menu. + +The I/O Analysis dashboard header displays the date and time that the server started, the date and time that the I/O Analysis dashboard was last updated, and the number of alerts currently triggered for the specified database (and any monitored object that resides within that database). + +The graphs in the `I/O Overview` provide information about the week's activity for the specified database: + +- The `Database I/O` graph displays the number of blocks read to and written from disk and memory buffers for the specified database over the course of the previous week. + +> The vertical key on the left side of the graph charts the block count. + +- The `Row Activity` graph displays tuple activity for tables residing within the database over the last week. + +> The vertical key on the left side of the graph charts the row count. + +- The `Checkpoints` graph displays the number of timed and untimed (requested) checkpoints written for the database over the last week. + +> The vertical key on the left side of the graph displays the checkpoint count. +> +> > A checkpoint is a point in the transaction logging sequence at which all data files have been updated to reflect the information in the log, and data files are flushed to disk. Checkpoints can be automatically generated, or forced by use of the CHECKPOINT command. A timed checkpoint occurs when the checkpoints_timeout parameter time limit is met. An untimed (requested) checkpoint occurs when the checkpoint_segments parameter is met, or when a superuser issues the CHECKPOINT command. Frequent checkpointing can impose extra load on the server, but can reduce recovery time in the event of a crash or hardware failure. + +The `Hot Tables/Indexes` section of the I/O Analysis dashboard provides an overview of the 5 most scanned tables and indexes that reside within the database. + +- The `Hot Tables` bar graph represents the comparative usage of the 5 most scanned tables that reside in the database; a vertical key displays the number of table scans. +- The `Hot Indexes` bar graph represents the comparative usage of the 5 most scanned indexes that reside in the database; a vertical key displays the number of index scans. + +The `Object I/O Details` section of the I/O Analysis dashboard provides tables that display the table and index activity for the selected database. + +The `Tables Activity` table provides a detailed analysis of the activity for the 20 most active tables that reside within the database. Click a column heading to sort the table by the values within the column; click again to reverse the sort order. + +![Object I/O Details table](../../images/object_io_details_table.png) + +- The `Schema` column identifies the schema in which the table resides. +- The `Table Name` column identifies the name of the table. +- The `Scans` column displays the number of scans performed on the table. +- The `Rows Read` column displays the number of rows read from the specified table. +- The `Index Scans` column displays the number of index scans performed on the specified table. +- The `Index Rows Read` column displays the number of rows read during index scans on the specified table. +- The `Rows Inserted` column displays the number of rows inserted into the specified table. +- The `Rows Updated` column displays the number of rows updated in the specified table. +- The `Rows Deleted` column displays the number of rows deleted from the specified table. +- The `Hot Rows Updated` column displays the number of hot row updates for the table; when a hot row update occurs, the new row occupies the same page as the previous row. +- The `Total Rows` column displays the number of total rows in the table. +- The `Dead Rows` column displays the number of rows that have been deleted, but have not been reclaimed via a VACUUM command or the AUTOVACUUM process. + +The `Indexes Activity` table provides a detailed analysis of the activity for the 20 most active indexes. Click a column heading to sort the table by the values within the column; click again to reverse the sort order. + +- The `Schema` column identifies the schema in which the index resides. +- The `Table Name` column identifies the name of the table on which the index is defined. +- The `Index Name` column displays the name of the index. +- The `Scans` column displays the number of index scans performed on the specified table. +- The `Rows Read` column displays the number of tuples read during index scans on the specified table. +- The `Rows Fetched` column displays the number of tuples fetched by index scans. +- The `Blocks Read` column displays the number of index blocks read. +- The `Blocks Hit` column displays the number of index blocks hit. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/06_memory_analysis_dashboard.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/06_memory_analysis_dashboard.mdx new file mode 100644 index 00000000000..1050cd4bd32 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/06_memory_analysis_dashboard.mdx @@ -0,0 +1,23 @@ +--- +title: "The Memory Analysis Dashboard" +--- + + + +The `Memory Analysis` dashboard provides an overview of the memory usage for the selected server and server host for the previous week: + +![Memory Analysis dashboard](../../images/memory_analysis_dashboard.png) + +Use parameters on the [PEM Server Configurations](../02_pem_server_config/#pem_server_config) dialog to specify the auto-refresh rate for the dashboard. To access the `Server Configuration` dialog, select `Server Configuration...` from the PEM web interface `Management` menu. + +The Memory Analysis dashboard header displays the date and time that the server was started, the date and time that the dashboard was last updated and the number of current alerts for objects monitored by the PEM server. + +The `Database Server` section displays memory usage trends for the selected server. + +- The `Server Memory Activity` graph displays the previous week's activity on the server; the `Legend` at the bottom of the graph provide a key to the colors used to chart information for each database. A vertical key on the left side of the graph indicates the actual block count for each value. +- The `Server Memory Configuration` pie chart displays the current memory usage (in megabytes). + +The `Host` section displays the free and used memory on the host system: + +- The `Host Memory Activity` chart plots the free and used memory on the host system over the last week. +- Sections of the `Host Memory Configuration` pie chart represent the free and available memory on the host system when the last probe executed. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/07_object_activity_analysis_dashboard.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/07_object_activity_analysis_dashboard.mdx new file mode 100644 index 00000000000..e9d15e2f2ed --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/07_object_activity_analysis_dashboard.mdx @@ -0,0 +1,44 @@ +--- +title: "The Objects Activity Analysis Dashboard" +--- + + + +The Objects Activity Analysis dashboard provides an overview of the size and activity of the objects that reside within the selected database. + +![Object Activity Analysis dashboard](../../images/object_activity_analysis_dashboard.png) + +Use parameters on the [PEM Server Configurations](../02_pem_server_config/#pem_server_config) dialog to specify the auto-refresh rate for the dashboard. To access the `Server Configuration` dialog, select `Server Configuration...` from the PEM web interface `Management` menu. + +The Objects Activity Analysis dashboard header displays the date and time that the server started, the date and time that the Object Activity Analysis dashboard was last updated, and the number of alerts currently triggered for the specified database (and monitored objects that reside within that database). + +The bar graphs in the `Size Overview` section plot the comparative sizes of the 5 largest tables and indexes that reside within the selected database: + +- The `Top 5 Largest Tables` bar graph represents the comparative sizes of the 5 largest tables that reside in the database; a vertical key displays the table size in megabytes. +- The `Top 5 Largest Indexes` bar graph represents the comparative sizes of the 5 largest indexes that reside in the database; a vertical key displays the index size in megabytes. + +The `Objects Activity` table provides a detailed analysis of the activity for each table that resides within the database. Click a column heading to sort the table by the values within the column; click again to reverse the sort order. + +- The `Schema` column identifies the schema in which the specified table resides. +- The `Table Name` column identifies the name of the table. +- The `Scans` column displays the number of scans performed on the table. +- The `Rows Read` column displays the number of rows read from the specified table. +- The `Index Scans` column displays the number of index scans performed on the specified table. +- The `Index Rows Read` column displays the number of rows read during index scans on the specified table. +- The `Rows Inserted` column displays the number of rows inserted into the specified table. +- The `Rows Updated` column displays the number of rows updated in the specified table. +- The `Rows Deleted` column displays the number of rows deleted from the specified table. +- The `Hot Rows Updated` column displays the number of hot row updates into the table; when a hot row update occurs, the new row occupies the same page as the previous row. +- The `Total Rows` column displays the number of total rows in the table. +- The `Dead Rows` column displays the number of rows that have been deleted, but have not been reclaimed via a VACUUM command or the AUTOVACUUM process. + +The `Objects Storage` table displays the schema objects that reside in the selected database. Click a column heading to sort the table data by the values within that column; click again to reverse the sort order. + +![Object Storage table](../../images/object_storage_table.png) + +- The `Schema` column identifies the schema in which the object resides. +- The `Object` column identifies the name of the schema object. +- The `Object Type` column identifies the type of schema object (Table or Index). +- The `Table Size` column lists the size of the table in megabytes (if applicable). +- The `Index Size` column lists the size of the index (or associated index) in megabytes (if applicable). +- The `Total (MB)` column lists the cumulative size (in megabytes) of the specified table and/or indexes and associated TOAST tables. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/08_os_analysis_dashboard.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/08_os_analysis_dashboard.mdx new file mode 100644 index 00000000000..b6f3866611e --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/08_os_analysis_dashboard.mdx @@ -0,0 +1,46 @@ +--- +title: "The Operating System Analysis Dashboard" +--- + + + +The `Operating System Analysis` dashboard provides a graphical analysis of the resource usage on the system hosting the selected agent. + +![Operating System Analysis dashboard](../../images/oper_system_analysis.png) + +Use parameters on the [PEM Server Configurations](../02_pem_server_config/#pem_server_config) dialog to specify the auto-refresh rate for the dashboard. To access the `Server Configuration` dialog, select `Server Configuration...` from the PEM web interface `Management` menu. + +The `Operating System Analysis` dashboard header displays the date and time that the server was last booted, the date and time that the display was last updated, and the number of triggered alerts on the system. + +The Operating System Analysis dashboard provides an overview of system resources. Within the `OS Overview` section: + +- The `CPU` graph represents the percentage of the CPU used at a given point in time. The vertical key on the left side of the graph indicates the percentage. +- Segments of the `Storage` pie chart represent the free and used storage on the host. +- The `Memory` graph displays the memory usage on the PEM server. +- The `Process` graph plots the number of processes on the system. A vertical key on the left side of the graph displays the process count. + +The `Disk` section of the `Operating System Analysis` dashboard displays charts and information about operating system disk usage. + +![Operating System Analysis - Disk section](../../images/os_analysis_disk.png) + +- The `Disk` graph displays the amount of disk space used. The vertical key on the left side of the chart displays the amount of disk space used (in Megabytes). Each horizontal line on the graph represents a different mounted file system; a file system key is provided in the `Legend`. + +- The `I/O` graph displays the blocks read from and written to disk. A vertical key on the left side of the graph provides a block count. + +- The `Host File System Details` table provides information about the host file system: + + > - The `File System` column displays the name of the file system. + > - The `Size (GB)` column displays the size of the file system in Gigabytes. + > - The `Used (GB)` column displays the amount of the file system that is currently storing information. + > - The `Available (GB)` column displays the amount of space still available on the file system. + > - The `% Used` column displays the percentage of the total storage space in use. + > - The `Mounted On` column displays the directory or drove on which the file system is mounted. + +Graphs in the `Network` section of the `Operating System Analysis` dashboard plot the network and packet traffic: + +![Operating System Analysis - Network section](../../images/os_analysis_network.png) + +- The `Packets` graph displays the number of packets sent and received across the network. The `Legend` provides a key to the color charted for each network interface. The vertical key on the left side of the graph indicates the packet count. +- The `Traffic` graph displays the amount of data transferred across the network. The `Legend` provides a key to the color charted for each network interface. The vertical key on the left side of the graph displays the traffic, in KB. + +Please note: The network bandwidth may not display if the monitored server is a Linux platform that resides in a virtual machine. This is expected behavior. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/09_probe_log_analysis_dashboard.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/09_probe_log_analysis_dashboard.mdx new file mode 100644 index 00000000000..27fcf4fc810 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/09_probe_log_analysis_dashboard.mdx @@ -0,0 +1,21 @@ +--- +title: "The Probe Log Analysis Dashboard" +--- + + + +The Probe Log Analysis dashboard displays error messages from the PEM agent. + +![Probe Log Analysis dashboard](../../images/probe_log_analysis.png) + +The header information includes the date and time that the server was first started, the date and time that the page was last updated, and the current number of triggered alerts. + +Use parameters on the [PEM Server Configurations](../02_pem_server_config/#pem_server_config) dialog to specify the auto-refresh rate for the dashboard. To access the `Server Configuration` dialog, select `Server Configuration...` from the PEM web interface `Management` menu. + +The `Probe Log` table displays error messages returned by the PEM Agent. Entries in the Probe Log table may reflect incorrect agent binding information or authentication errors between the PEM agent and the server. + +- The `Id` column displays a unique identifier for each entry in the table. +- The `Timestamp` column displays the date and time that the log entry was made. +- The `Probe Name` column displays the name of the probe that recorded the log entry. +- The `Server Name` column displays the name of the server on which the error occurred. +- The `Error Message` column displays the error message returned by the probe. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/10_server_analysis_dashboard.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/10_server_analysis_dashboard.mdx new file mode 100644 index 00000000000..54f546f1d1a --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/10_server_analysis_dashboard.mdx @@ -0,0 +1,52 @@ +--- +title: "The Server Analysis Dashboard" +--- + + + +The Server Analysis dashboard provides a graphical analysis of a monitored server's usage statistics. + +![Server Analysis dashboard](../../images/server_analysis.png) + +The Server Analysis dashboard header displays the date and time that the server was started, the date and time that the display was last updated, and the number of current alerts for items monitored by the PEM server. + +Use parameters on the [PEM Server Configurations](../02_pem_server_config/#pem_server_config) dialog to specify the auto-refresh rate for the dashboard. To access the `Server Configuration` dialog, select `Server Configuration...` from the PEM web interface `Management` menu. + +Graphs within the `Storage` section of the dashboard provide an analysis of the space consumed by databases and tablespaces on the server: + +- The `Database Size` graph displays the size (in Megabytes) of the 5 largest databases that reside on the PEM server. The `Legend` at the bottom of the graph associates each database name with a color in the graph. +- The `Tablespace Size` graph displays the size (in Megabytes) of the 5 largest tablespaces that reside on the PEM server. The `Legend` at the bottom of the graph associates each tablespace name with a color in the graph. + +The `Memory` section of the dashboard provides an overview of the efficiency of the buffer cache over the previous week, and an analysis of the current swap memory usage: + +- The `Shared Buffers` chart compares the number of data blocks found in the shared memory cache with the number of blocks read from disk. A high hit-to-miss ratio indicates an efficiently configured memory cache. +- The `Host Memory` pie chart displays the current swap memory usage. + +The `Users` section of the `Server Analysis` dashboard provides an overview of the user activity on the server: + +- The `User Activity` chart displays connection statistics gathered over the last week. The `Legend` at the bottom of the chart provides a key to the data displayed. +- The `Connection Overview` pie chart compares the currently active connections to the currently idle connections. + +The `I/O` section of the `Server Analysis` dashboard provides an overview of the transactions processed by the server over the last week: + +![Server Anlaysis - I/O section](../../images/io_analysis.png) + +- The `Disk` chart displays the number of 8KB blocks read from disk, and the number of 8KB blocks written to disk over the last week. +- The `Row Activity` chart plots row activity on tables stored on the server over the past week. The `Legend` at the bottom of the chart provides a key to the data displayed. +- The `Commits/Rollbacks` chart displays the number of transactions committed and rolled back on the selected server within the last week. A vertical count on the left side of the graph indicates the aborted transaction count, while the `Legend` at the bottom of the chart provides a key to the commits and rollbacks charted. + +The `Database Analysis` table displays a list of the monitored databases that reside on the server, and the statistics gathered for each database over the last week. Click a column heading to sort the table by the data displayed in the column; click again to reverse the sort order. + +![Server Analysis - Database section](../../images/database_analysis_table.png) + +- The `Database` column displays the database name. +- The `Connections` column displays the number of current connections to the database. +- The `TX Committed` column displays the number of transactions committed to the database within the last week. +- The `TX Rolled Back` column displays the number of transactions rolled back within the last week. +- The `Blocks Hit` column displays the number of blocks hit in the cache (in megabytes) within the last week. +- The `Blocks Read` column displays the number of blocks read from memory (in megabytes) within the last week. +- The `Tuples Fetched` column displays the number of tuples fetched within the last week. +- The `Tuples Returned` column displays the number of tuples returned within the last week. +- The `Tuples Inserted` column displays the number of tuples inserted into the database within the last week. +- The `Tuples Updated` column displays the number of tuples updated in the database within the last week. +- The `Tuples Deleted` column displays the number of tuples deleted from the database within the last week. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/11_server_log_analysis_dashboard.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/11_server_log_analysis_dashboard.mdx new file mode 100644 index 00000000000..4b8a81d622c --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/11_server_log_analysis_dashboard.mdx @@ -0,0 +1,43 @@ +--- +title: "The Server Log Analysis Dashboard" +--- + + + +The `Server Log Analysis` dashboard displays the log files for the selected server. To view the `Server Log Analysis` dashboard, right-click on the name of a monitored server in the PEM client tree control, and navigate through the `Dashboards` menu, selecting `Server Log Analysis`. + +![Server Log Analysis dashboard](../../images/server_log_analysis_dashboard.png) + +The header information on the `Server Log Analysis` dashboard displays the date and time that the server was started, the date and time that the page was last updated, and the current number of triggered alerts. + +The `Server Log` table displays the contents of the log files that are stored on the PEM server. For content to displayed, you must check the box next to `Import logs to PEM` when using Log Manager to configure logging for the server. + +Entries are displayed in chronological order, most-recent log entries first. Use the scroll bars to navigate through the log entries, or to view columns that are off of the display. + +Headings at the top of the server log table identify the information stored in each column: + +- The `Id` column identifies the PEM agent that monitors the server that initiated the recorded transaction. +- The `Server` column identifies the server that initiated the recorded transaction. +- The `Timestamp` column displays the date and time that the log entry was made. +- The `User Name` column displays the name of the user that executed the recorded transaction. +- The `Database Name` column displays the name of the database on which the recorded transaction was executed. +- The `Process ID` column displays the identifier of the process that executed the recorded transaction. +- The `Session ID` column displays the identifier of the session in which the transaction was executed. +- The `Transaction ID` column displays the transaction identifier. +- The `Connection From` column displays the host name or IP address from which the client session connected. +- The `Command` column displays the type of command executed. +- The `Message` column displays the transaction message. + +Click `Show Filters` to display a panel that you can use to filter the audit log entries that are shown in the table below; click on `Hide Filters` to close the panel. + +![Server Log Analysis dashboard filter](../../images/server_log_analysis_filter.png) + +Use the fields within the filter definition box to describe a selection criteria that PEM will use to select a subset of a report for display: + +- Use the date and time selectors in the `From` field to specify a starting date and time for the displayed log entries. +- Use the date and time selectors in the `To` field to specify an ending date and time for the displayed log entries. +- Enter a username in the `Username` field to show log entries for the specified user only. +- Enter a database name in the `Database` field to show log entries for the specified database only. +- Enter a command type (for example; 'SELECT', 'authentication' or 'idle') in the `Command type` field to show log entries of that type only.mmands that will be displayed in the filtered report. + +When you've described the criteria by which you wish to filter the audit logs, click `Filter` to display the filtered server log in the lower portion of the `Server Log Analysis` dashboard. Click the `Hide Filters` label to close the filter definition box. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/12_session_activity_analysis_dashboard.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/12_session_activity_analysis_dashboard.mdx new file mode 100644 index 00000000000..05f7002078b --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/12_session_activity_analysis_dashboard.mdx @@ -0,0 +1,53 @@ +--- +title: "The Session Activity Analysis Dashboard" +--- + + + +The Session Activity Analysis dashboard provides information about the session workload and lock activity for the selected server: + +![Session Activity Analysis dashboard](../../images/session_activity_analysis_dashboard.png) + +The Session Activity Analysis dashboard header displays the date and time that the server was started, the date and time that the dashboard was last updated and the number of current alerts for the server. + +Use parameters on the [PEM Server Configurations](../02_pem_server_config/#pem_server_config) dialog to specify the auto-refresh rate for the `Session Activity Analysis` dashboard. To access the `Server Configuration` dialog, select `Server Configuration...` from the PEM client `Management` menu. + +The `Session Workload` table provides information about the current session workload for the server. Click a column heading to sort the table data by the selected column; click the heading a second time to reverse the sort order. The Session Workload table displays the following information: + +- The `Session ID` column displays the process identifier for the session. +- The `User Name` column displays the (role) name of the user that established the client connection to the server. +- The `Source` column displays the IP address and port number of the client. +- The `Database Name` column displays the name of the database to which the client is connected. +- The `Waiting` column displays `Yes` if the session is waiting for a lock; `No` if the session is not waiting for a lock. +- The `Backend Start` column displays the date and time that the client established a connection to the server. +- The `Transaction Start` column displays the date and time that the current transaction started, if applicable. +- The `Query Start` column displays the date and time that the current query started, if applicable. +- The `Memory Usage` column displays the amount of memory used by the session; this column is not displayed if the server is remotely monitored. +- The `Swap Usage` column displays the amount of swap space used by the session; this column is not displayed if the server is remotely monitored. +- The `CPU Usage` column displays the amount of CPU resources used by the session; this column is not displayed if the server is remotely monitored. +- The `IO Reads (#bytes)` column displays the number of bytes used during read transactions the session; this column is not displayed if the server is remotely monitored. +- The `IO Writes (#bytes)` column displays the number of bytes used during write transactions the session; this column is not displayed if the server is remotely monitored. + +The `Session Lock Activity` table displays a list of locks held by processes on the server. Click a column heading to sort the table data by the selected column; click the heading a second time to reverse the sort order. The Session Lock Activity table displays the following information: + +- The `Session ID` column displays the process ID for the session. +- The `User Name` column displays the name of the user holding (or waiting for) the lock. +- The `Source` column displays the IP address and port number of the client. +- The `Database Name` column displays the name of the database to which the client is connected. +- The `Blocked` column indicates if the lock request is blocked by another lock. +- The `Blocked By` column specifies the session ID of the session that is holding the lock. +- The `Lock Type` column displays the type of lock that is held by the client. Lock Type may be: + +> - `advisory` - a user-defined lock created by pg_advisory_lock() or pg_advisory_lock_shared() +> - `extend` - a lock held while extending a table or index +> - `object` - a lock held on a database object +> - `page` - a lock held on a page (within the shared buffer cache) +> - `relation` - a lock held on the metadata describing a table, view, or sequence (to prevent another session from altering the table, view, or sequence) +> - `transactionid` - a lock held on a transaction ID (one session typically waits for another transaction to complete by waiting on the other session's transaction ID) +> - `tuple` - lock held on a tuple (typically, a tuple which has been inserted, updated, or deleted, but not yet committed) +> - `userlock` - a user-defined lock created with the LOCK statement +> - `virtualxid` - a lock identified by a virtual transaction ID. + +- The `Object ID` column displays the OID of the relation, or NULL if the object is not a relation (of part of a relation). +- The `Mode` column displays the name of the lock mode help (or sought) by the process. +- The `Transaction Start` column displays the date and time that the transaction started. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/13_session_waits_dashboard.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/13_session_waits_dashboard.mdx new file mode 100644 index 00000000000..de526ac029a --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/13_session_waits_dashboard.mdx @@ -0,0 +1,28 @@ +--- +title: "The Session Waits Analysis Dashboard" +--- + + + +The `Session Wait Analysis` dashboard provides an overview of the current DRITA wait events for an Advanced Server session. For more information about DRITA wait events, please see the EDB Postgres Advanced Server Guide. + +![Session Waits dashboard](../../images/session_waits_dashboard.png) + +Use parameters on the [PEM Server Configurations](../02_pem_server_config/#pem_server_config) dialog to specify the auto-refresh rate for the `Alerts` dashboard. To access the `Server Configuration` dialog, select `Server Configuration...` from the PEM web interface `Management` menu. + +The Session Wait Analysis dashboard header displays the date and time that the server started, the date and time that the dashboard was last updated, and the number of alerts currently triggered for the specified database (and monitored objects that reside within that database). + +The `Session Waits Overview` displays statistics gathered by the most recent execution of the PEM probe: + +- The `Session Waits By Number Of Waits` pie chart displays the 5 most frequently encountered wait events, per Advanced Server session. For more information about the events that can cause a wait event, see the EDB Postgres Advanced Server Guide. +- The `Session Waits By Time Waited` pie chart displays the 5 wait events that consume the most time, per Advanced Server session. To gather and display data in the `Session Time Waits by Time Waited` pie chart, you must modify the `postgresql.conf` file for the monitored server, setting *timed_statistics = on*, and restart the server. Please note that this will cause server performance to degrade. For more information about using Advanced Server DRITA timers and the events that can cause a wait event, please see the EDB Postgres Advanced Server Guide. + +The `Session Waits Details` table lists the current system wait events for the selected database. Click a column heading to sort the table by the column data; click again to reverse the sort order.The table displays: + +- The `User` column displays the name of the user that encountered the wait. +- The `Wait Name` column displays the name of the of wait event. +- The `Wait Count` column displays the total number of waits encountered by the user. +- The `Time (ms)` displays the number of milliseconds that the user waited for the specified event. +- The `Wait Time (%)` column displays the percentage of the total wait time consumed by the specified wait event. + +To gather and display data in the Time (ms) and Wait Time (%) columns, you must modify the `postgresql.conf` file for the monitored server, setting *timed_statistics = on*, and restart the server. Please note that this will cause server performance to degrade. For more information about using Advanced Server DRITA timers, please see the EDB Postgres Advanced Server Guide. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/14_storage_analysis_dashboard.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/14_storage_analysis_dashboard.mdx new file mode 100644 index 00000000000..fcb9623fc10 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/14_storage_analysis_dashboard.mdx @@ -0,0 +1,36 @@ +--- +title: "The Storage Analysis Dashboard" +--- + + + +The `Storage Analysis` dashboard provides information about the size of objects stored on the server and about available storage space on the server. + +![Storage Analysis dashboard](../../images/storage_analysis_dashboard.png) + +Use parameters on the [PEM Server Configurations](../02_pem_server_config/#pem_server_config) dialog to specify the auto-refresh rate for the dashboard. To access the `Server Configuration` dialog, select `Server Configuration...` from the PEM web interface `Management` menu. + +The Storage Analysis dashboard header displays the date and time that the PEM server started, the date and time that the dashboard was most recently updated, and the number of triggered alerts on objects monitored by the PEM server. + +The Storage Overview section displays information about the size of databases, tablespaces and the host: + +- The `Database Overview` pie chart shows the relative size of monitored databases stored on the server. The key (located below the chart) matches the database name to the respective color on the chart. +- The `Tablespace Overview` pie chart shows the relative size of tablespaces on the server. The key (located below the chart) matches the tablespace name to the respective color on the chart. +- The `Host Overview` pie chart represents the amount of used and free storage space on the server as of the last probe execution. + +The `Database Details` table displays the size of each database stored on the server. Click a column heading to sort the table by the specified column; click again to reverse the sort order. + +- The `Database Name` column displays the name of the database. +- The `Database Size (MB)` column displays the size of the database in megabytes. +- The `Tablespace Name` column displays the name of the default tablespace assigned to the database. + +The `Tablespace Details` table lists the name and size (in megabytes) of each tablespace defined for the server. Click a column heading to sort the table by the specified column; click again to reverse the sort order. + +The `Host File System Details` table displays information about the file systems that reside on the system that hosts the PEM server: + +- The `File System` column displays the name of the file system. +- The `Size (GB)` column displays the size of the file system in megabytes. +- The `Used (GB)` column displays the amount of the file system that is currently storing information. +- The `Available (GB)` column displays the amount of space available on the file system. +- The `% Used` column displays the percentage of the total storage space in use. +- The `Mounted On` column displays the directory on which the file system is mounted. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/15_system_wait_dashboard.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/15_system_wait_dashboard.mdx new file mode 100644 index 00000000000..d0c07518a78 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/15_system_wait_dashboard.mdx @@ -0,0 +1,29 @@ +--- +title: "The System Wait Analysis Dashboard" +--- + + + +The System Wait Analysis dashboard provides an overview of the current DRITA wait events for an Advanced Server database. For more information about DRITA wait events, please see the EDB Postgres Advanced Server Guide. + +![System Waits dashboard](../../images/system_waits_dashboard.png) + +Use parameters on the [PEM Server Configurations](../02_pem_server_config/#pem_server_config) dialog to specify the auto-refresh rate for the `Alerts` dashboard. To access the `Server Configuration` dialog, select `Server Configuration...` from the PEM web interface `Management` menu. + +The System Waits Analysis dashboard header displays the date and time that the server started, the date and time that the System Waits Analysis dashboard was last updated, and the number of alerts currently triggered for the specified database (and monitored objects that reside within that database). + +The `System Waits Overview` displays statistics gathered by the most recent execution of the PEM probe: + +- The `System Waits by Number of Waits` pie chart displays the 5 most frequently encountered wait events for the selected Advanced Server server. For more information about the events that can cause a wait event, see the EDB Postgres Advanced Server Guide. +- The `System Waits by Time Waited` pie chart displays the 5 wait events that consume the most time for the selected Advanced Server server. To gather and display data in the `System Waits by Time Waited` pie chart, you must modify the `postgresql.conf` file for the monitored server, setting *timed_statistics = on*, and restart the server. Please note that this will cause server performance to degrade. For more information about using Advanced Server DRITA timers, please see the EDB Postgres Advanced Server Guide. + +The `System Waits Details` table lists the current system wait events for the selected server. Click a column heading to sort the table by the column data; click again to reverse the sort order.The table displays: + +- The `Event` column displays the name of the wait event. +- The `Wait Count` column contains the number of times that the wait event occurred. +- The `Percent of Total` column displays the percentage of the total wait count consumed by this event. +- The `Time Waited (ms)` displays the number of milliseconds that the server waited for the event. +- The `Percent of Time Waited` displays the percentage of the total wait time consumed by this event. +- The `Average Wait Time (ms)` column displays the average wait time for this event. + +To gather and display data in the `Time Waited (ms)` and `Percent of Time Waited` columns, you must modify the `postgresql.conf` file for the monitored server, setting *timed_statistics = on*, and restart the server. Please note that this will cause server performance to degrade. For more information about using Advanced Server DRITA timers, please see the EDB Postgres Advanced Server Guide. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/16_str_replication_dashboard.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/16_str_replication_dashboard.mdx new file mode 100644 index 00000000000..ceb777332e7 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/16_str_replication_dashboard.mdx @@ -0,0 +1,76 @@ +--- +title: "The Streaming Replication Analysis Dashboard" +--- + + + +The `Streaming Replication Analysis` Dashboard displays statistical information about WAL activity for a monitored server. By default, replication probes are disabled; to view the `Streaming Replication Analysis` dashboard, you must enable probes on the primary and replica nodes. To enable the probes on the primary node, highlight the name of the primary server in the PEM client `Browser` tree control, and select `Manage Probes...` from the `Management` menu. Use the `Manage Probes` tab to enable the following probes: + +- Streaming Replication +- WAL Archive Status + +To enable the probes on the replica node, highlight the name of the replica server in the PEM client `Browser` tree control, and select `Manage Probes...` from the `Management` menu. Use the `Manage Probes` tab to enable the following probe: + +- Streaming Replication Lag Time + +Then, to open the `Streaming Replication Analysis` dashboard, navigate to the `Monitoring` tab, and: + +1. Select the name of the agent that monitors the node from the `Agents` drop-down menu. +2. Select the name of the monitored server from the `Servers` drop-down menu. +3. Select `Streaming Replication Analysis` from the `Dashboards` drop-down menu. + +The `Streaming Replication Analysis` dashboard header includes the date and time that the server was last started, the date and time that the page was last updated, and a current count of triggered alerts. + +When accessing the `Streaming Replication Analysis` dashboard for the primary node of a replication scenario, the dashboard displays information about the write-ahead log activity for the server. + +![Streaming Replication Analysis dashboard - Primary](../../images/str_replication_dashboard_primary.png) + +The `WAL Archive Status` graph displays WAL activity; the vertical key on the left side of the graph indicates the archive count; times are displayed across the bottom of the graph. + +The `WAL Segment Lag` graph displays the segment lag for the replica nodes that are associated with the selected server. The vertical key on the left side of the graph indicates the archive count. Each node is displayed in a different color on the graph. The `Legend` provides a key to the identity (hostname and port) of each graphed replica node. + +The `WAL Page Lag` graph displays the page lag activity for each replica node associated with the selected server. The vertical key on the left side of the graph indicates the page count. Each node is displayed in a different color on the graph. The `Legend` provides a key to the identity (hostname and port) of each graphed replica node. + +## Monitoring a Replica Node + +When accessing the `Streaming Replication Analysis` dashboard for the replica node of a replication scenario, the dashboard displays information about the write-ahead log activity for the server. + +![Streaming Replication Analysis dashboard - Replica](../../images/str_replication_dashboard_replica.png) + +The `WAL Archive Status` graph displays WAL activity; the vertical key on the left side of the graph indicates the archive count; times are displayed across the bottom of the graph. + +The `WAL Segment Lag` graph displays the segment lag for the replica nodes that are associated with the selected server. The vertical key on the left side of the graph indicates the archive count. Each replica node is displayed in a different color on the graph. The `Legend` provides a key to the identity (hostname and port) of each graphed slave node. + +The `WAL Page Lag` graph displays the page lag activity for each replica node associated with the selected server. The vertical key on the left side of the graph indicates the page count. Each node is displayed in a different color on the graph. The `Legend` provides a key to the identity (hostname and port) of each graphed slave node. + +The `Replication Time Lag` graph displays the delay between the time that an operation is performed on the primary node of the replication scenario and the time that the operation is written to the replica node. The vertical key on the left side of the graph indicates the replication delay in minutes. Hover your mouse over a point on the graph to display the date and time that corresponds to that coordinate. + +A label at the bottom of the dashboard confirms the status of the replication replica. + +## Monitoring a Failover Manager Cluster + +If you have configured PEM to monitor a [Failover Manager](#monitoring-a-failover-manager-cluster) cluster, the Streaming Replication Analysis dashboard will display tables that provide an overview of the clusters status and configuration, and information about each cluster member. To display cluster information on the Streaming Replication dashboard, you must provide the following information on the `Advanced` tab of the server `Properties` dialog for each node of the cluster: + +- Use the `EFM Cluster Name` field to specify the name of the Failover Manager cluster. The cluster name is the prefix of the name of the cluster properties file. For example, if your cluster properties file is named `efm.properties`, your cluster name is `efm`. +- Use the `EFM Installation Path` field to specify the location of the Failover Manager binary file. By default, the Failover Manager binary file is installed in `/usr/edb/efm-3.1/bin`. + +The `Failover Manager Cluster Status` section of the Streaming Replication Analysis dashboard displays information about the monitored cluster: + +![Failover Manager Cluster Status](../../images/fm_cluster_status.png) + +The `Failover Manager Cluster Information` table provides information about the Failover Manager cluster: + +- The `Properties` column displays the name of the cluster property. +- The `Values` column displays the current value of the property. + +The `Failover Manager Node Status` table displays information about each node of the Failover Manager cluster: + +- The `Agent Type` column displays the type of agent that resides on the node; the possible values are Primary, Replica, Witness, Idle, and Promoting. +- The `Address` column displays the IP address of the node. +- The `Agent` column displays the status of the agent that resides on the node. +- The `DB` column displays the status of the database that resides on the node. +- The `XLog Location` column displays the transaction log location of the database. +- The `Status Information` column displays any error-related information about the node. +- The `XLog Information` column displays any error-related information about the transaction log. +- The `VIP` column displays the VIP address that is associated with the node. +- The `VIP Status` column displays `True` if the VIP is active for the node, `False` if the VIP is not. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/index.mdx new file mode 100644 index 00000000000..ec8fb998f8e --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/01_dashboards/index.mdx @@ -0,0 +1,93 @@ +--- +title: "Dashboards" +--- + + + +Postgres Enterprise Manager uses metrics (retrieved by probes) to generate the statistical information displayed on the dashboards. Dashboards are presented in a hierarchy comparable to the PEM client tree control; the dashboard for each object within the tree control displays the information for that object, as well as for any monitored object that resides below that level in the tree control, if appropriate. + +Each dashboard header displays the date and time that the server was started (if relevant), the date and time that the dashboard was last updated, and the current number of triggered alerts. Navigation menus displayed in the dashboard header provide easy access to other dashboards. Menus are organised hierarchically; only those menus appropriate for the object currently highlighted in the tree control are available: + +- Select `Global Overview` from any dashboard to return to the Global Overview dashboard. +- Select the name of an agent from the `Agents` menu to navigate to the Operating System Analysis dashboard for that agent. +- Select a server name from the `Servers` menu to navigate to the Server Analysis dashboard for that server. +- Select a database name from the `Databases` menu to navigate to the Database Analysis dashboard for that database. +- Use the `Dashboards` menu to navigate to informational dashboards at the global level, or for the selected agent, server or database. + +Dashboards display statistical information in the form of: + +- Tables - Tables provide statistical information collected by a PEM probe. +- Pie charts - Pie charts display information collected by the most recent execution of a probe. +- Bar graphs - Bar graphs display comparative statistics collected by the most recent execution of a probe. +- Line graphs - Line graphs display statistical data collected by PEM probes. + +Options on the `Dashboard Configuration` dialog allow you to link the time lines of all of the line graphs on the dashboard. To open the `Dashboard Configuration` dialog, click the wrench icon displayed in the dashboard header. + +![Dashboard configuration](../../images/dashboard_configuration.png) + +- Set the `Link timelines of all the line charts` slider to `Enable` to indicate that the specified timeline should be applied to line graphs displayed on the dashboard; if set to `Disable`, your preferences will be preserved for later use, but will not modify the amount of data displayed. +- Use the `Days` selector to specify the number of days of gathered data that should be displayed on line graphs. +- Use the `Hour(s)` selector to specify the number of hours of gathered data that should be displayed on line graphs. +- Check the box next to `Remember configuration for this dashboard` to indicate that the customized time span should be applied to the current dashboard only; if left unchecked, the time span will be applied globally to line graphs on all dashboards. + +Please note that settings specified on the `Dashboard Configuration` dialog are applied only to the current user's session. + +When you've specified your preferences, click `Save` to preserve your changes and exit the dialog; click `Cancel` to exit the dialog without preserving your changes. + +To sort statistics that are provided in table form, click on a column heading; click again to reverse the sort order. Each table offers a stable sort feature - For example, to sort a table by ascending `Session ID` within each user name group, sort first by the `Session ID` column, then sort by the `User Name` column. + +Hover your mouse over the upper-right corner of each graph, chart or table to reveal the PEM client toolbar icons. Hover over an icon to display a tooltip that briefly explains the icon's functionality: + +- Use the `Refresh` icon to update the information displayed on a dashboard. +- Use the `Save Chart as Image` icon to save the selected chart as a .jpeg image. +- Use the `Full Screen` icon to enlarge the chart to reveal granular details about the charted data. +- Click the `Personalize the chart configuration` icon to access a control panel that allows you to select chart-specific display details. +- Hover over the `Explain` icon to review a description of the information shared in the graph or chart. + +In the lower-right corner of each graph or chart is a legend that identifies each item plotted in the graph or chart. + +If displayed, click the information icon in the upper-left hand corner of a chart to display a note about the chart content, and if applicable, a link that will allow you to enable one or more probes that retrieve content for the chart. + +## Accessing Dashboards + +Navigation menus in the dashboard header provide easy access to other dashboards. The menus are organized hierarchically, allowing you to jump from object to object at any level: + +- The [Global Overview](04_global_overview_dashboard/#global_overview_dashboard) option opens the `Global Overview` dashboard. +- The `Agents` menu expands to display a list of agents. Select an agent from the list to access the `Operating System Analysis` dashboard for that agent. +- The `Servers` menu expands to display a list of monitored servers. Select a server from the list to access the `Server Analysis` dashboard for that server. +- The `Remote Servers` menu expands to display a list of servers that are monitored by a remote agent. Select a server from the list to access the `Server Analysis` dashboard for the server. +- The `Databases` menu expands to display a list of databases. Select a database from the list to access the `Database Analysis` dashboard for the database. +- The `Dashboards` menu expands to display a list of the dashboards that are available at the global level, or for the current agent, server or database. Select a dashboard from the list to navigate to that dashboard. + +## Creating custom charts and dashboards + +PEM (version 4.0 and above) allows you to create your own [Charts](../10_pem_manage_charts/01_pem_create_new_chart/#pem_create_new_chart) and [Dashboards](../11_pem_manage_dashboards/01_pem_custom_dashboard/#pem_custom_dashboard), allowing you to tailor the interface to the requirements of your organization or individual responsibility. + +## Available Dashboards + +PEM offers the following dashboards: + +- [Alerts Dashboard](01_alerts_dashboard/#alerts_dashboard) +- [Audit Log Dashboard](02_audit_log_dashboard/#audit_log_dashboard) +- [Database Analysis Dashboard](03_database_analysis_dashboard/#database_analysis_dashboard) +- [Global Overview Dashboard](04_global_overview_dashboard/#global_overview_dashboard) +- I/O Analysis Dashboard <io\_analysis\_dashboard> +- [Memory Analysis Dashboard](06_memory_analysis_dashboard/#memory_analysis_dashboard) +- [Object Activity Analysis Dashboard](07_object_activity_analysis_dashboard/#object_activity_analysis_dashboard) +- [Operating System Analysis Dashboard](08_os_analysis_dashboard/#os_analysis_dashboard) +- [Probe Log Analysis Dashboard](09_probe_log_analysis_dashboard/#probe_log_analysis_dashboard) +- [Server Analysis Dashboard](10_server_analysis_dashboard/#server_analysis_dashboard) +- [Server Log Analysis Dashboard](11_server_log_analysis_dashboard/#server_log_analysis_dashboard) +- [Session Activity Analysis Dashboard](12_session_activity_analysis_dashboard/#session_activity_analysis_dashboard) +- [Session Wait Analysis Dashboard](13_session_waits_dashboard/#session_waits_dashboard) +- [Storage Analysis Dashboard](14_storage_analysis_dashboard/#storage_analysis_dashboard) +- [System Wait Analysis Dashboard](15_system_wait_dashboard/#system_wait_dashboard) +- [Streaming Replication Analysis Dashboard](16_str_replication_dashboard/#str_replication_dashboard) + +Contents: + +
+ +alerts_dashboard audit_log_dashboard database_analysis_dashboard global_overview_dashboard io_analysis_dashboard memory_analysis_dashboard object_activity_analysis_dashboard os_analysis_dashboard probe_log_analysis_dashboard server_analysis_dashboard server_log_analysis_dashboard session_activity_analysis_dashboard session_waits_dashboard storage_analysis_dashboard system_wait_dashboard str_replication_dashboard + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/02_pem_server_config/01_pem_config_options.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/02_pem_server_config/01_pem_config_options.mdx new file mode 100644 index 00000000000..40d08dd1b55 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/02_pem_server_config/01_pem_config_options.mdx @@ -0,0 +1,145 @@ +--- +title: "Configuration Options" +--- + + + +A number of aspects of PEM's behaviour can be controlled using global configuration options. Use the [Server Configuration dialogue](./#pem_server_config) to manage Server Options. The configuration parameters used are listed below. + +Please note that this list is subject to change. + +| Parameter name | Value/Unit | Description | +| ------------------------------------ | ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| audit_log_retention_time | 30 days | Specifies the number of days that an audit log will be retained on the PEM server. | +| auto_create_agent_alerts | true | Specifies whether to create default agent level alerts automatically when an agent is registered. | +| auto_create_server_alerts | true | Specifies whether to create default server level alerts automatically when a server is bound to an agent. | +| chart_disable_bullets | false | Enable/disable bullets on line charts on dashboards and Capacity Manager reports. | +| cm_data_points_per_report | 50 | Specifies the number of data points to plot on charts on Capacity Manager reports. | +| cm_max_end_date_in_years | 5 years | Specifies the maximum amount of time that the Capacity Manager will extrapolate data for. Ensures that threshold-based end dates of on reports do not get extrapolated indefinitely. | +| dash_alerts_timeout | 60 seconds | Specifies the number of seconds after which the components of the Alerts dashboard are auto-refreshed. | +| dash_db_comrol_span | 7 days | Specifies the number of days worth of data to plot on the Commit/Rollback Analysis chart on the Database Analysis dashboard and Server Analysis dashboard. | +| dash_db_comrol_timeout | 1800 seconds | Specifies the number of seconds after which the Commits/Rollbacks line chart is auto-refreshed on the Database Analysis dashboard and Server Analysis dashboard. | +| dash_db_connovervw_timeout | 300 seconds | Specifies the number of seconds after which the Connection Overview pie chart is auto-refreshed in the Database Analysis dashboard. | +| dash_db_eventlag_span |


7 days

| Specifies the number of days worth of data to plot on the Number of Events Lag chart for slony replication on the Database Analysis dashboard. | +| dash_db_eventlag_timeout | 1800 seconds | Specifies the number of seconds after which the Number of Events Lag line chart for slony replication is auto-refreshed on the Database Analysis dashboard. | +| dash_db_hottable_rows | 25 rows | Specifies the number of rows to show on the HOT Table Analysis table on the Database Analysis dashboard. | +| dash_db_hottable_timeout | 300 seconds | Specifies the number of seconds after which the Hot Tables table is auto-refreshed in the Database Analysis dashboard. | +| dash_db_io_span | 7 days | Specifies the number of days worth of data to plot on the Database I/O Analysis chart on the Database Analysis dashboard and I/O Analysis dashboard. | +| dash_db_io_timeout | 1800 seconds | Specifies the number of seconds after which the Database I/O line chart is auto-refreshed on the Database Analysis dashboard and I/O Analysis dashboard. | +| dash_db_rowact_span | 7 days | Specifies the number of days worth of data to plot on the Row Activity Analysis chart on the Database Analysis dashboard, the I/O Analysis dashboard, and the Server Analysis dashboard. | +| dash_db_rowact_timeout | 1800 seconds | Specifies the number of seconds after which the Row Activity line chart is auto-refreshed on the Database Analysis dashboard, the I/O Analysis dashboard, and the Server Analysis dashboard. | +| dash_db_storage_timeout | 300 seconds | Specifies the number of seconds after which the Storage bar chart is auto-refreshed in the Database Analysis dashboard. | +| dash_db_timelag_span | 7 days | Specifies the number of days worth of data to plot on the Time Lag chart for Slony replication on the Database Analysis dashboard. | +| dash_db_timelag_timeout | 1800 seconds | Specifies the number of seconds after which the Time Lag line chart for slony replication is auto-refreshed on the Database Analysis dashboard. | +| dash_db_useract_span | 7 days | Specifies the number of days worth of data to plot on the User Activity Analysis chart on the Database Analysis dashboard. | +| dash_db_useract_timeout | 1800 seconds | Specifies the number of seconds after which the User Activity line chart is auto-refreshed in the Database Analysis dashboard. | +| dash_efm_timeout | 300 seconds | Specifies the number of seconds after which the Failover Manager Node Status and Failover Manager Cluster Info line chart is auto-refreshed on the Streaming Replication dashboard. | +| dash_global_overview_timeout | 30 seconds | Specifies the number of seconds after which the components of the Global Overview dashboard are auto-refreshed. | +| dash_header_timeout | 60 seconds | Specifies the number of seconds after which the information on the header of all the dashboards are auto-refreshed. | +| dash_io_chkpt_span | 7 days | Specifies the number of days worth of data to plot on the Checkpoints chart on the I/O Analysis dashboard. | +| dash_io_chkpt_timeout | 1800 seconds | Specifies the number of seconds after which the Checkpoints line chart is auto-refreshed on the I/O Analysis dashboard. | +| dash_io_hotindx_timeout | 300 seconds | Specifies the number of seconds after which the Hot Indexes bar chart is auto-refreshed on the I/O Analysis dashboard. | +| dash_io_hottbl_timeout | 300 seconds | Specifies the number of seconds after which the Hot Tables bar chart is auto-refreshed on the I/O Analysis dashboard. | +| dash_io_index_objectio_rows | 25 rows | Specifies the number of rows displayed on the Index Activity table on the I/O Analysis dashboard and the Object Activity Analysis dashboard. | +| dash_io_index_objectio_timeout | 60 seconds | Specifies the number of seconds after which the Index Activity table is auto-refreshed on the I/O Analysis dashboard and the Object Activity Analysis dashboard. | +| dash_io_objectio_rows | 25 rows | Specifies the number of rows displayed in the Object I/O Details table on the I/O Analysis dashboard and Object Activity Analysis dashboard. | +| dash_io_objectio_timeout | 300 seconds | Specifies the number of seconds after which the Object I/O Details table is auto-refreshed on the I/O Analysis dashboard and Object Activity Analysis dashboard. | +| dash_memory_hostmemact_span | 7 days | Specifies the number of days worth of data to plot on the Host Memory Activity Analysis chart on the Memory Analysis dashboard. | +| dash_memory_hostmemact_timeout | 1800 seconds | Specifies the number of seconds after which the Host Memory Activity line chart is auto-refreshed on the Memory Analysis dashboard. | +| dash_memory_hostmemconf_timeout | 300 seconds | Specifies the number of seconds after which the Host Memory Configuration pie chart is auto-refreshed on the Memory Analysis dashboard and Server Analysis dashboard. | +| dash_memory_servmemact_span | 7 days | Specifies the number of days worth of data to plot on the server Memory Activity Analysis chart on the Memory Analysis dashboard. | +| dash_memory_servmemact_timeout | 1800 seconds | Specifies the number of seconds after which the Server Memory Activity line chart is auto-refreshed on the Memory Analysis dashboard. | +| dash_memory_servmemconf_timeout | 300 seconds | Specifies the number of seconds after which the Server Memory Configuration pie chart is auto-refreshed on the Memory Analysis dashboard. | +| dash_objectact_objstorage_rows | 15 rows | Specifies the number of rows to show on the Object Storage table on the Object Activity Analysis dashboard. | +| dash_objectact_objstorage_timeout | 300 seconds | Specifies the number of seconds after which the Object Storage table is auto-refreshed in the Object Activity Analysis dashboard. | +| dash_objectact_objtopindexes_timeout | 300 seconds | Specifies the number of seconds after which the Top 5 Largest Indexes bar chart is auto-refreshed in the Object Activity Analysis dashboard. | +| dash_objectact_objtoptables_timeout | 300 seconds | Specifies the number of seconds after which the Top 5 Largest Tables bar chart is auto-refreshed in the Object Activity Analysis dashboard. | +| dash_os_cpu_span | 7 days | Specifies the number of days worth of data to plot on the CPU chart on the Operating System Analysis dashboard. | +| dash_os_cpu_timeout | 1800 seconds | Specifies the number of seconds after which the CPU line chart is auto-refreshed on the Operating System Analysis dashboard. | +| dash_os_data_span | 7 days | Specifies the number of days worth of data to plot on the I/O line chart on the Operating System Analysis dashboard. | +| dash_os_disk_span | 7 days | Specifies the number of days worth of data to plot on the Utilisation chart on the Operating System Analysis dashboard. | +| dash_os_hostfs_timeout | 1800 seconds | Specifies the number of seconds after which the Host File System Details table is auto-refreshed on the Operating System Analysis dashboard. | +| dash_os_io_timeout | 1800 seconds | Specifies the number of seconds after which the I/O line chart is auto-refreshed on the Operating System Analysis dashboard. | +| dash_os_memory_span | 7 days | Specifies the number of days worth of data to plot on the Memory chart on the Operating System Analysis dashboard. | +| dash_os_memory_timeout | 1800 seconds | Specifies the number of seconds after which the Memory line chart is auto-refreshed on the Operating System Analysis dashboard. | +| dash_os_packet_span | 7 days | Specifies the number of days worth of data to plot on the Packet chart on the Operating System Analysis dashboard. | +| dash_os_packet_timeout | 1800 seconds | Specifies the number of seconds after which the Network Packets line chart is auto-refreshed on the Operating System Analysis dashboard. | +| dash_os_process_span | 7 days | Specifies the number of days worth of data to plot on the Process chart on the Operating System Analysis dashboard. | +| dash_os_process_timeout | 1800 seconds | Specifies the number of seconds after which the Process line chart is auto-refreshed on the Operating System Analysis dashboard. | +| dash_os_storage_timeout | 1800 seconds | Specifies the number of seconds after which the Storage pie chart is auto-refreshed on the Operating System Analysis dashboard. | +| dash_os_traffic_span | 7 days | Specifies the number of days worth of data to plot on the Traffic chart on the Operating System Analysis dashboard. | +| dash_os_traffic_timeout | 1800 seconds | Specifies the number of seconds after which the Traffic line chart is auto-refreshed on the Operating System Analysis dashboard. | +| dash_os_util_timeout | 1800 seconds | Specifies the number of seconds after which the Utilisation line chart is auto-refreshed on the Operating System Analysis dashboard. | +| dash_probe_log_timeout | 300 seconds | Specifies the number of seconds after which the Probe Log table is auto-refreshed on the Probe Log Analysis dashboard. | +| dash_replication_archivestat_span | 7 days | Specifies the number of days worth of data to plot on the WAL Archive Status chart on the Streaming Replication Analysis dashboard. | +| dash_replication_archivestat_timeout | 1800 seconds | Specifies the number of seconds after which the WAL Archive Status line chart is auto-refreshed on the Streaming Replication dashboard. | +| dash_replication_pagelag_span | 7 days | Specifies the number of days worth of data to plot on the WAL Lag Pages chart on the Streaming Replication dashboard. | +| dash_replication_pagelag_timeout | 1800 seconds | Specifies the number of seconds after which the WAL Lag Pages line chart is auto-refreshed on the Streaming Replication dashboard. | +| dash_replication_segmentlag_span | 7 days | Specifies the number of days worth of data to plot on the WAL Lag Segments chart on the Streaming Replication dashboard. | +| dash_replication_segmentlag_timeout | 1800 seconds | Specifies the number of seconds after which the WAL Lag Segments line chart is auto-refreshed on the Streaming Replication dashboard. | +| dash_replication_timelag_span | 7 days | Specifies the number of days worth of data to plot on the Replication Lag Time chart on the Streaming Replication dashboard. | +| dash_replication_timelag_timeout | 1800 seconds | Specifies the number of seconds after which the Replication Lag Time line chart is auto-refreshed on the Streaming Replication dashboard. | +| dash_server_buffers_written | 168 hours | Specifies the number of days worth of data to plot on the Background Writer Statistics chart on the Server Analysis dashboard. | +| dash_server_buffers_written_timeout | 300 seconds | Specifies the number of seconds after which the Background Writer Statistics line chart is auto-refreshed on the Server Analysis dashboard. | +| dash_server_connovervw_timeout | 300 seconds | Specifies the number of seconds after which the Connection Overview pie chart is auto-refreshed in the Server Analysis dashboard. | +| dash_server_database_timeout | 300 seconds | Specifies the number of seconds after which the Databases table is auto-refreshed in the Server Analysis dashboard. | +| dash_server_dbsize_span | 7 days | Specifies the number of days worth of data to plot on the Database Size Analysis chart on the Server Analysis dashboard. | +| dash_server_dbsize_timeout | 1800 seconds | Specifies the number of seconds after which the Database Size line chart is auto-refreshed in the Server Analysis dashboard. | +| dash_server_disk_timeout | 1800 seconds | Specifies the number of seconds after which the Disk line chart is auto-refreshed in the Server Analysis dashboard. | +| dash_server_global_span | 7 days | Specifies the number of days worth of data to plot on the Disk line chart on the Server Analysis dashboard. | +| dash_server_sharedbuff_span | 7 days | Specifies the number of days worth of data to plot on the Shared Buffer chart on the Server Analysis dashboard. | +| dash_server_sharedbuff_timeout | 1800 seconds | Specifies the number of seconds after which the Shared Buffers line chart is auto-refreshed in the Server Analysis dashboard. | +| dash_server_tabspacesize_span | 7 days | Specifies the number of days worth of data to plot on the Tablespace Size chart on the Server Analysis dashboard. | +| dash_server_tabspacesize_timeout | 1800 seconds | Specifies the number of seconds after which the Tablespace Size line chart is auto-refreshed in the Server Analysis dashboard. | +| dash_server_useract_span | 7 days | Specifies the number of days worth of data to plot on the User Activity chart on the Server Analysis dashboard. | +| dash_server_useract_timeout | 1800 seconds | Specifies the number of seconds after which the User Activity line chart is auto-refreshed in the Server Analysis dashboard. | +| dash_sessact_lockact_timeout | 300 seconds | Specifies the number of seconds after which the Session Lock Activity table is auto-refreshed in the Session Activity Analysis dashboard. | +| dash_sessact_workload_timeout | 300 seconds | Specifies the number of seconds after which the Session Workload table is auto-refreshed in the Session Activity Analysis dashboard. | +| dash_sess_waits_nowaits_timeout | 300 seconds | Specifies the number of seconds after which the Session Waits By Number Of Waits pie chart is auto-refreshed in the Session Waits Analysis dashboard. | +| dash_sess_waits_timewait_timeout | 300 seconds | Specifies the number of seconds after which the Session Waits By Time Waited pie chart is auto-refreshed in the Session Waits Analysis dashboard. | +| dash_sess_waits_waitdtl_timeout | 300 seconds | Specifies the number of seconds after which the Session Waits Details table is auto-refreshed in the Session Waits Analysis dashboard. | +| dash_storage_dbdtls_timeout | 300 seconds | Specifies the number of seconds after which the Database Details table is auto-refreshed in the Storage Analysis dashboard. | +| dash_storage_dbovervw_timeout | 300 seconds | Specifies the number of seconds after which the Database Overview pie chart is auto-refreshed in the Storage Analysis dashboard. | +| dash_storage_hostdtls_timeout | 300 seconds | Specifies the number of seconds after which the Host Details table is auto-refreshed in the Storage Analysis dashboard. | +| dash_storage_hostovervw_timeout | 300 seconds | Specifies the number of seconds after which the Host Overview pie chart is auto-refreshed in the Storage Analysis dashboard. | +| dash_storage_tblspcdtls_timeout | 300 seconds | Specifies the number of seconds after which the Tablespace Details table is auto-refreshed in the Storage Analysis dashboard. | +| dash_storage_tblspcovervw_timeout | 300 seconds | Specifies the number of seconds after which the Tablespace Overview pie chart is auto-refreshed in the Storage Analysis dashboard. | +| dash_sys_waits_nowaits_timeout | 300 seconds | Specifies the number of seconds after which the System Waits By Number Of Waits pie chart is auto-refreshed in the System Waits Analysis dashboard. | +| dash_sys_waits_timewait_timeout | 300 seconds | Specifies the number of seconds after which the System Waits By Time Waited pie chart is auto-refreshed in the System Waits Analysis dashboard. | +| dash_sys_waits_waitdtl_timeout | 300 seconds | Specifies the number of seconds after which the System Waits Details table is auto-refreshed in the System Waits Analysis dashboard. | +| deleted_charts_retention_time | 7 days | Specifies the number of days that a custom chart (displayed on a user-defined dashboard) is stored. | +| deleted_probes_retention_time | 7 days | Specifies the number of days that a custom probe (displayed on a user-defined dashboard) is stored. | +| download_chart_format | jpeg | Specifies the format in which a downloaded chart will be stored. May be jpeg or png. | +| flapping_detection_state_change | 3 | Specifies the number of state changes detected within a specified interval to define a given alert as flapping.- Flapping starts when more than `N` state changes have occurred over \[ `N` + 1 \* (min(probe_interval) \* 2)] minutes and the fine state is not None. Where the default value of `N` is 2 or 3, and min(probe_interval) is the smallest interval for all the probes used by the alert.
- Flapping ends when ZERO state changes have occurred over \[2 `N` \* min(probe_interval)] minutes.
| +| job_retention_time | 30 days | Specifies the number of days that non-recurring scheduled tasks and their associated logs are retained, after their execution time. | +| long_running_transaction_minutes | 5 minutes | Specifies the number of minutes a query executes for before being considered long running. | +| nagios_cmd_file_name | <file_name> | Specifies nagios command file to which passive service check result will be sent. | +| nagios_enabled | t | Specifies whether alert notification will be submitted to nagios or not. | +| nagios_medium_alert_as_critical | f | Specifies whether medium level PEM alert will be considered as critical in nagios. | +| nagios_spool_retention_time | 7 days | Specifies the number of days to retain nagios messages in the spool table before they are discarded. | +| reminder_notification_interval | 24 hours | Specifies the number of hours after which a reminder email is sent in case an alert has not been cleared. | +| server_log_retention_time | 30 days | Specifies the number of days that the server log is retained on the PEM server. | +| show_data_tab_on_graph | false | If 'true', a Data tab is added to each graph. Select the Data tab to review the data that is plotted on the graph. | +| smtp_authentication | false | Specifies whether to enable/disable authentication over SMTP. | +| smtp_enabled | true | Specifies whether to enable/disable sending of emails. | +| smtp_encryption | false | Specifies whether to send SMTP email using an encrypted connection. | +| smtp_password | | Specifies the password to be used to connect to the SMTP server. | +| smtp_port | 25 | Specifies the SMTP server port to be used for sending email. | +| smtp_server | 127.0.0.1 | Specifies the SMTP server host address to be used for sending email. | +| smtp_spool_retention_time | 7 days | Specifies the number of days to retain sent email messages in the spool table before they are discarded. | +| smtp_username | | Specifies the username to be used to connect to SMTP server. | +| snmp_community | public | Specifies the SNMP community used when sending traps. Used only with SNMPv1 and SNMPv2. | +| snmp_enabled | true | Specifies whether to enable/disable sending SNMP traps. | +| snmp_port | 162 | Specifies the SNMP server port to be used for sending SNMP traps. | +| snmp_server | 127.0.0.1 | Specifies the SNMP server host address to be used for sending SNMP traps. | +| snmp_spool_retention_time | 7 days | Specifies the number of days to retain sent traps in the spool table before they are discarded. | +| snmp_security_name | | Specifies the user name or security name for sending SNMP traps. Used only with SNMPv3. | +| snmp_security_engine_id | | Specifies the Engine id of the SNMP Agent on the SNMP Server. Used only with SNMPv3. | +| snmp_security_level | NOAUTH_NOPRIV | Specifies Security level and its possible values can be: AUTH_NOPRIV - Authentication, No Privacy AUTH_PRIV - Authentication, Privacy NOAUTH_NOPRIV - no Authentication, no Privacy. Used only with SNMPv3. | +| snmp_context_name | | Specifies the Context name, the identifier for MIB objects when sending SNMP traps. Used only with SNMPv3. | +| snmp_context_engine_id | | Specifies the Context engine id, the identifier for MIB objects when sending SNMP traps. If not specified, snmp_security_engine_id will be used. Used only with SNMPv3. | +| snmp_authentication_protocol | NONE | Specifies the authentication type for SNMP traps. Its possible values can be NONE, HMACMD5 or HMACSHA. Used only with SNMPv3. | +| snmp_privacy_protocol | NONE | Specifies the privacy protocol for SNMP traps. Its possible values can be NONE, DES, AES128, IDEA, AES192, or AES256. Used only with SNMPv3. | +| snmp_authentication_password | | Specifies the authentication password associated with security name mentioned in snmp_security_name. Used only for SNMPv3. | +| snmp_privacy_password | | Specifies the privacy password associated with security name mentioned in snmp_security_name. Used only for SNMPv3. | +| webclient_help_pg | EnterpriseDB hosted documentation | Specifies the location of the online PostgreSQL core documentation. | diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/02_pem_server_config/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/02_pem_server_config/index.mdx new file mode 100644 index 00000000000..6ceebe4453c --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/02_pem_server_config/index.mdx @@ -0,0 +1,23 @@ +--- +title: "Server Configuration" +--- + + + +You can use the `Server Configuration` dialogue to modify values of user-configurable parameters that control the behavior of Postgres Enterprise Manager. To access the `Server Configuration` dialog, connect to the PEM server, and select `Server Configuration...` from the `File` menu. + +![Server Configuration dialogue](../../images/pem_server_config.png) + +Enter a parameter name in the search box in the upper-right corner of the dialog to locate a specific parameter in the list. + +To modify a parameter value, edit the content displayed in the `Value` field to the right of a parameter name. Click the `Save` icon in the upper-right corner of the dialog to save your changes, or click the `Close` button to exit the dialog without applying the changes. + +A list of configuration options may be found [here](01_pem_config_options/#pem_config_options). + +Contents: + +
+ +pem_config_options + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/03_log_manager.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/03_log_manager.mdx new file mode 100644 index 00000000000..aab5e443166 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/03_log_manager.mdx @@ -0,0 +1,188 @@ +--- +title: "Log Manager" +--- + + + +Use the Log Manager wizard to specify logging preferences for a Postgres database server. Log Manager supports Advanced Server and PostgreSQL versions 9.0 (and later). The Log Manager wizard assists in modifying configuration parameters that control: + +- Where log files are written. +- How often log files are written. +- The type of information written to log files. +- The format of log file entries. + +Before using Log Manager to define logging properties for a server, you must specify the name of the associated Advanced Server or PostgreSQL database server in the `Service ID` field on the `Advanced` tab of the `New Server Registration` (or `Properties`) dialog. If you do not specify the name of the service in the `Service ID` field, the server will not be made available for configuration on the `Server Selection` dialog. + +For example, if you are setting logging preferences for an Advanced Server 9.4 instance that resides on a Linux host, set the `Service ID` field on the `Advanced` tab of the `Properties` dialog for the monitored server to `ppas-9.4`. + +To run the Log Manager, select the `Log Manager` menu option from the `Management` menu of the PEM client. The wizard opens, welcoming you to the Log Manager: + +![Log Manager Wizard - Welcome page](../images/lm_welcome.png) + +Click `Next` to continue to the `Server selection` dialog: + +![Log Manager wizard - Server Selection page](../images/lm_server_select.png) + +The `Server selection` dialog displays a list of the server connections monitored by PEM. Check the box next to the name of a server (or servers) to which the Log Manager wizard will apply the specified configuration. Log Manager is disabled for any server displaying a red exclamation mark to the left of its name in the Server selection tree control; there are several reasons that a server may not be enabled: + +> - Only a server that specifies a `Service ID` on the `Advanced` tab of the `Properties` dialog can be configured by Log Manager. +> +> > To provide a service ID, right click on the server name in the tree control, and select `Disconnect Server` from the context menu; if prompted, provide a password. Then, open the context menu for the server, and select `Properties`. Navigate to the `Advanced` tab, and provide the name of the service in the `Service ID` field; click `Save` to save your change and exit the dialog. +> +> - If the PEM agent bound to the server does not have sufficient privileges to restart the server, the server will be disabled. +> - If the PEM agent bound to the server is an older version than the associated PEM server, the server will be disabled. + +Click `Next` to continue: + +![Log Manager Wizard - Log Configuration page](../images/lm_import_rotation.png) + +Use options within the `Import logs` box to specify how often log files will be imported to PEM. + +- Set the `Import logs to PEM` switch to `Yes` to specify that log files will be imported to PEM, and displayed on the Server Log Analysis dashboard. +- Use the `Import Frequency` drop-down list box to specify how often log files are imported to PEM. This option is only enabled when the `Import logs to PEM` option is enabled. The default value is 5 minutes. + +Use the options in the `Log rotation configuration` box to specify the maximum length (lifespan or size) of a log file. + +- Use the `Rotation size` field to specify the maximum size in megabytes of an individual log file. The default value is 10 MB; when set to 0, no limit is placed on the maximum size of a log file. +- Use the `Rotation time` field to specify the number of whole days that should be stored in each log file. The default value is 1 day. + +Use the `Truncate on Rotation` switch to specify server behavior for time-based log file rotation: + +- Select `ON` to specify that the server should overwrite any existing log file that has the same name that a new file would take. +- Select `OFF` to specify that the server should append any new log file entries to an existing log file with the same name that a new log file would take. This is the default behavior. + +Click `Next` to continue to the `Where to Log` dialog: + +![Log Manager Wizard - Where to Log page](../images/lm_where_to_log.png) + +Use the fields on the `Where to Log` dialog to specify where log files should be written. Select an option from the `Log destination` box to specify a destination for the server log output: + +- Set the `stderr` switch to `Yes` to specify that log files should be written to `stderr`. By default, server log entries are written to `stderr`. +- Set the `csvlog` switch to `Yes` to specify that log files should be written to file in a comma-separated value format. This option is automatically enabled (and no longer editable) if you have selected `Import logs to PEM` on the `Schedule` dialog; if you are not importing server log files to PEM, this option is editable. +- Set the `syslog` switch to `Yes` to specify that log files should be written to the system log files. +- On Windows, set the `eventlog` switch to `Yes` to specify that log files should be written to the event log. + +Use options in the `Log collection` box to specify collection preferences. Use the `Log Collector` switch to instruct the server to re-direct captured log messages (directed to STDERR) into log files: + +- Specify `Enable` to instruct the server to re-direct captured error messages to a log file. By default, Log Collector is enabled. +- Specify `Disable` to instruct the server that it should not re-direct error messages to a log file. + +Use the `Log Silent Mode` switch to instruct the server to run silently in the background, disassociated from the controlling terminal: + +- Select `Enable` to instruct the server to run silently in the background. +- Select `Disable` to instruct the server to display log file entries on the controlling terminal as each log entry is written. + +Use options in the Log Directory box to specify log file location preferences: + +- Set the `Change log directory for selected servers?` switch to `Yes` to specify that each set of log files should be maintained in a separate directory. +- When `Log Collector` is enabled, you can use the `Directory name` field to specify the directory to which the log file will be written. By default, logs are written to the `pg_log` directory under the installation directory of the monitored server. + +When `Import logs to PEM` is disabled, you can use the `Log file name` field to specify the filename to which the logs will be written. The 'DEFAULT' value in the `Log File Name` field represents 'postgresql-%Y-%m-%d\_%H%M%S.log' for all the PostgreSQL servers and 'enterprisedb-%Y-%m-%d\_%H%M%S.log' for all the Postgres Plus Advanced Servers. + +When logging to `syslog` is enabled, you can use the `Syslog facility` drop-down list box to specify which syslog facility should be used. + +When logging to `syslog` is enabled, you can use the `Syslog ident` field to specify the program name that will identify Advanced Server entries in system logs. + +Click `Next` to continue: + +![Log Manager Wizard - When to Log page](../images/lm_when_to_log.png) + +Use the fields on the `When to Log` dialog to specify which events will initiate a log file entry. The severity levels (in order of severity, from most severe to least severe) are: + +| | | +| --------------------- | ---------------------------------------------------------------------------------- | +| Severity | Description | +| panic | Errors that cause all database sessions to abort. | +| fatal | Errors that cause a session to abort. | +| log | Information messages of interest to administrators. | +| error | Errors that cause a command to abort. | +| warning | Error conditions in which a command will complete but may not perform as expected. | +| notice | Items of interest to users. This is the default. | +| info | Information implicitly requested by the user. | +| debug5 through debug1 | Detailed debugging information useful to developers | + +- Use the `Client min messages` drop-down list box to specify the minimum severity level that will be sent to the client application. The default value is `notice`. +- Use the `Log min messages` drop-down list box to specify the minimum severity level that will be written to the server log. The default value is `warning`. +- By default, when an error message is written to the server log, the text of the SQL statement that initiated the log entry is not included. Use the `Log min error statement` drop-down list box to specify a severity level that will trigger SQL statement logging. If a message is of the specified severity or higher, the SQL statement that produced the message will be written to the server log. The default value is `error`. +- Use the `Log min duration statement` field to specify a statement duration (in milliseconds); any statements that exceed the specified number of milliseconds will be written to the server log. The length of time that it took for the statement to execute will be included in the log entry. A value of -1 disables all duration-based logging; a value of 0 logs all statements and their duration. The default value is `-1`. +- Use the `Log temp files` field to specify a file size in kilobytes; when a temporary file reaches the specified size, it will be logged. The default value is `-1`. +- Use the `Log autoVacuum min duration` field to specify a time length in milliseconds; if auto-vacuuming exceeds the length of time specified, the activity will be logged. The default value is `-1`. + +Click `Next` to continue to the `What to log` dialog: + +![Log Manager Wizard - What to Log page](../images/lm_what_to_log.png) + +Use the fields on the `What to log` dialog to specify log entry options that are useful for debugging and auditing. + +The switches in the `Debug options` box instruct the server to include information in the log files related to query execution that may be of interest to a developer: + +- Set the `Parse tree` switch to `Yes` to instruct the server to include the parse tree in the log file. The default value is `No`. +- Set the `Rewriter output` switch to `Yes` to instruct the server to include query rewriter output in the log file. The default value is `No`. +- Set the `Execution plan` switch to `Yes` to instruct the server to include the execution plan for each executed query in the log file. The default value is `No`. + +By default, `Indent Debug Options Output in Log` option is set to `No`. When this option is enabled, the server indents each line that contains a parse tree entry, a query rewriter entry or query execution plan entry. While indentation makes the resulting log file more readable, it results in a longer log file. To enable indentation of log file entries related to debugging, move the switch to `Yes`. + +Use the switches in the `General options` box to instruct the server to include auditing information in the log file: + +- Set the `Checkpoints` switch to `Yes` to include checkpoints and restartpoints in the server log. By default, this is set to `No`. + +- Set the `Connections` switch to `Yes` to include each attempted connection to the server (as well as successfully authenticated connections) in the server log. By default, this is set to `No`. + +- Set the `Disconnections` switch to `Yes` to include a server log entry for each terminated session that provides the session information and session duration. By default, this is set to `No`. + +- Set the `Duration` switch to `Yes` to include the amount of time required to execute each logged statement in the server log. By default, this is set to `No`. + +- Set the `Hostname` switch to `Yes` to include both the IP address and host name in each server log entry (by default, only the IP address is logged). Please note that this may cause a performance penalty. By default, this is set to `No`. + +- Set the `Lock Waits` switch to `Yes` to instruct the server to write a log entry for any session that waits longer than the time specified in the `deadlock_timeout` parameter to acquire a lock. This is useful when trying to determine if lock waits are the cause of poor performance. By default, this is set to `No`. + +- Use the `Error verbosity` drop-down list box to specify the detail written to each entry in the server log. + + > - Select `default` to include the error message, DETAIL, HINT, QUERY and CONTEXT in each server log entry. + > - Select `terse` to log only the error message, excluding the DETAIL, HINT, QUERY and CONTEXT information from each server log entry. + > - Select `verbose` to include the error message, the DETAIL, HINT, QUERY and CONTEXT error information, SQLSTATE error code and source code file name, the function name, and the line number that generated the error. + +- Use the `Prefix string` field to specify a printf-style string that is written at the beginning of each log file entry. The `Escape` characters in the following table represent the information described in the `Information` column. Some information is available to `Session` processes only; `Helper` processes can provide all of the information specified in the `Prefix String`. The default value is %t (timestamp without milliseconds). + +You can include: + +| | | | +| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | -------------- | +| Escape | Information | Session/Helper | +|


%a

| Application Name | Session | +|


%u

| User Name | Session | +|


%d

| Database Name | Session | +|


%r

| Remote host name or IP address, and remote port | Session | +|


%h

| Remote host name or IP address | Session | +|


%p

| Process ID | Helper | +|


%t

| Time stamp without milliseconds | Helper | +|


%m

| Time stamp with milliseconds | Helper | +| %i | Command tag: type of statement that generated the log entry | Session | +|


%e

| SQLSTATE error code | Helper | +|


%c

| Session identifier | Helper | +|


%l

| Line number of the log entry | Helper | +|


%s

| Process start time stamp | Helper | +|


%v

| Virtual transaction ID (backendID/localXID) | Helper | +|


%x

| Transaction ID (`0` if not assigned) | Helper | +| %q | Produces no output, but instructs non-session processes to stop at this point in the string; will be ignored by session processes | Helper | +|


%%

| Literal % | Helper | + +- Use the `Statements` drop-down list box to specify which SQL statements will be included in the server log. The default is `none`; valid options are: + + > - `none` - Specify `none` to disable logging of SQL statements. + > - `ddl` - Specify `ddl` to instruct the server to log ddl (data definition language) statements, such as CREATE, ALTER, and DROP. + > - `mod` - Specify `mod` to instruct the server to log all `ddl` statements, as well as all `dml` (data modification language) statements, such as INSERT, UPDATE, DELETE, TRUNCATE and COPY FROM. + > - `all` - Specify `all` to instruct the server to log all SQL statements. + +Click `Next` to continue: + +![Log Manager Wizard - Scheduling page](../images/lm_scheduling.png) + +Use the options on the `Schedule Logging Changes` dialog to select a time that logging configuration changes will be applied. Note that when you apply the configuration changes specified with the Log Manager wizard, the server will be restarted, temporarily interrupting use of the database server for users. + +- Set the `Configure Logging Now` switch to `Yes` to specify that PEM will configure logging and restart the server when you have completed the Log Manager wizard. +- Set the `Configure Logging Now` switch to `No` and use the `Schedule it for some other time` date selector to specify a a convenient time for the server to restart. + +Click `Finish` to complete the wizard, and either restart the server, or schedule the server restart for the time specified on the scheduling dialog. + +When you have completed the Log Manager wizard, you can use the `Scheduled Tasks` dialog to confirm that the configuration file update and server restart have been scheduled. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/04_audit_manager.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/04_audit_manager.mdx new file mode 100644 index 00000000000..d076c4bec47 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/04_audit_manager.mdx @@ -0,0 +1,75 @@ +--- +title: "Audit Manager" +--- + + + +You can use the PEM Audit manager to configure, enable, and disable audit logging of EDB Postgres Advanced Server instances. The Audit manager also enables audit log collection, allowing you to view log data on the [Audit Log Dashboard](01_dashboards/02_audit_log_dashboard/#audit_log_dashboard). + +To run the Audit manager wizard, select `Audit manager...` from the PEM client `Management` menu. Audit manager opens, displaying the `Welcome` dialog: + +![Audit Manager Wizard - Welcome page](../images/audit_manager_intro.png) + +Click `Next` to continue: + +![Audit Manager Wizard - Select Servers page](../images/audit_manager_servers.png) + +Use the `Select servers` tree control to specify the servers to which the auditing configuration will be applied. To make a server available in the tree control, you must provide the `Service ID` on the PEM [Server](../01_toc_pem_getting_started/07_pem_define_connection/#pem_define_connection) dialog. Note that only EDB Postgres Advanced Server supports auditing; PostgreSQL servers will not be included in the tree control. + +Click `Next` to continue: + +![Audit Manager Wizard - Configuration page](../images/audit_manager_config1.png) + +Use the controls on the `Audit parameters configuration` dialog to specify configuration details that will be applied to each server: + +- Use the `Auditing` switch to `Enable` or `Disable` auditing on the specified servers. +- Use the `Audit destination` drop-down to select a destination for the audit logs; select `File` or `Syslog`. Please note this feature is supported on Advanced Server 10 and newer releases only. +- Use the `Import logs to PEM` switch to instruct PEM to periodically import log records from each server to the PEM Server. Set the switch to `Yes` to import log files; the default is `No`. +- Use the `Import frequency` drop-down listbox to specify how often PEM will collect log records from monitored servers when log collection is enabled. +- Use the `Log format` drop-down listbox to select the raw log format that will be written on each server. If log collection is enabled, the PEM server will use CSV format. +- Use the `File name` field to specify the format used when generating log file names. By default, the format is set to `audit-%Y-%m-%d_%H%M%S` if log collection is enabled. + +Use fields in the `Log directory` box to specify information about the directory in which the log files will be saved: + +- Move the `Change log directory for selected servers?` switch to `Yes` to enable the `Directory name` field. +- Use the `Directory name` field to specify the name of the directory on each server into which audit logs will be written. The directory specified will be created as a sub-directory of the `data` directory on the server. + +Click `Next` to continue: + +![Audit Manager Wizard - Log Parameters page](../images/audit_manager_config2.png) + +The `Audit log configuration` dialog is only available if you have specified a value of `Enable` in the `Auditing` field. Use the controls on the `Audit log configuration` dialog to specify log configuration details that will be applied to each server: + +- Use the `Connection attempts` switch to specify if connection attempts should be logged. Specify: `None` to disable connection logging, `All` to indicate that all connection attempts will be logged, or `Failed` to log any connection attempts that fail. + +- Use the `Disconnection attempts` switch to specify if disconnections should be logged. Specify `None` to specify that disconnections should not be logged, or `All` to enable disconnection logging. + +- Use the `Log statements` field to specify the statement types that will be logged. Click within the field, and select from: + - Select - All statements that include the SELECT keyword will be logged + - Error - All statements that result in an error will be logged. + - DML - All DML (Data Modification Language) SQL statements will be logged. + - DDL - All DDL (Data Definition Language) SQL statements (those that add, delete or alter data) will be logged. + - Check the box next to `Select All` to select all statement types. + - Check the box next to `Unselect All` to deselect all statement types. + +- Use the `Audit tag` field to specify a tracking tag for the collected logs. Please note that audit tagging functionality is available only for Advanced Server versions 9.5 and later. If you are defining auditing functionality for multiple servers, and one or more of the servers are version 9.5 or later, this field will be enabled, but if selected, tagging functionality will only apply to those servers that are version 9.5 or later. + +Use the fields in the `Log rotation` box to specify how the log files are managed on each server: + +- Use the `Enable?` switch to specify that logfiles should be rotated. Please note that a new log file should be used periodically to prevent a single file becoming unmanageably large. +- Use the `Day` drop-down listbox to select a day or days on which the log file will be rotated. +- Use the `Size (MB)` field to specify a size in megabytes at which the log file will be rotated. +- Use the `Time (seconds)` field to specify the number of seconds between log file rotations. + +Click `Next` to continue: + +![Audit Manager Wizard - Finish page](../images/audit_manager_finish.png) + +Use the `Schedule auditing changes` dialog to specify when the new configuration will be applied to the servers: + +- Set the `Configure logging now?` switch to `Yes` to apply the configuration immediately. +- Use the `Time?` selector to schedule the audit configuration for a later time; use the date and time selectors to specify the date and time at which the PEM server will apply the configuration. + +Click the `Finish` button to schedule a job to apply the configuration to each server. The job will consist of two tasks. One task will update the audit logging configuration on the server, and one task will restart the server with the new configuration. + +The scheduled jobs can be viewed in the [Task Viewer](18_pem_task_view/#pem_task_view), and the results in the [Log Viewer](18_pem_task_view/01_pem_log_view/#pem_log_view) when opened from the appropriate server or agent. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/05_pem_log_analysis_expert.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/05_pem_log_analysis_expert.mdx new file mode 100644 index 00000000000..4dc4ca852d7 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/05_pem_log_analysis_expert.mdx @@ -0,0 +1,150 @@ +--- +title: "Postgres Log Analysis Expert" +--- + + + +The Postgres Log Analysis Expert analyzes the log files of servers that are registered with PEM, and produces a report that provides an overview of your Postgres cluster's usage based on log file entries. You can use information on the Log Analysis Expert reports to make decisions about optimizing your cluster usage and configuration to improve performance. + +Before invoking the Postgres Log Analysis Expert, you must specify the `Service ID` on the `Advanced` tab of the server's properties dialog, and use the Log Manager wizard to enable log collection by the PEM server. To invoke the Log Manager wizard, select the `Log Manager...` option from the `Management` menu; check the box next to `Import logs to PEM` in the `Import Logs` panel of the wizard to enable log collection. + +To open the `Postgres Log Analysis Expert` wizard, select the `Postgres Log Analysis Expert...` option from the `Management` menu of the PEM client. When the wizard's `Welcome` dialog opens, click `Next` to continue. + +![Postgres Log Analysis Expert Wizard- Welcome page](../images/pem_log_analysis_expert_welcome.png) + +The wizard's `Analyzer selection` dialog displays a list of `Analyzers` from which you can select. Each Analyzer generates a corresponding table, chart, or graph that contains information gleaned from the log files. + +![Postgres Log Analysis Expert Wizard - Select Analyzers page](../images/pem_log_analysis_expert_select_analyzers.png) + +Check the box to the left of an Analyzer to indicate that the Log Analysis Expert should prepare the corresponding table, chart or graph. After making your selections, click `Next` to continue to the `Server selection` tree control. + +![Postgres Log Analysis Expert Wizard - Select Servers page](../images/pem_log_analysis_expert_select_servers.png) + +Use the tree control to specify which servers you would like the Postgres Log Analysis Expert to analyze. If you select multiple servers, the resulting report will contain the corresponding result set for each server in a separate (but continuous) list. Click `Next` to continue. + +![Postgres Log Analysis Expert Wizard - Report Options page](../images/pem_log_analysis_expert_report_options.png) + +Use the fields in the `Options` section to specify the analysis method and the maximum length of any resulting tables: + +- Use the `Aggregate method` drop-down to select the method used by the Log Analysis Expert to consolidate data for the selected time span - select from: + - `SUM` - `SUM` instructs the analyzer to calculate a value that is the sum of the collected values for the specified time span. + - `AVG` - `AVG` instructs the analyzer to calculate a value that is the average of the collected values for the specified time span. + - `MAX` - `MAX` instructs the analyzer to use the maximum value that occurs within a specified time span. + - `MIN` - `MIN` instructs the analyzer to use the minimum value that occurs within a specified time span. +- Use the `Time span` field to specify the number of minutes that the analyzer will incorporate into each calculation for a point on a graph. For example, if the `Time span` is '5 minutes', and the `Aggregate method` is 'AVG', each point on the given graph will contain the average value of the activity that occurred within a five minute time span. +- Use the `Rows limit` field to specify the maximum number of rows to include in a table. + +Use the fields in the `Time Intervals` section to specify the time range that the Log Analysis Expert will analyze: + +- Set `Relative days` to `Yes` to enable the `(+/-)From date` field and specify the number of days before or after the date and time selected in the `From` field. +- Use the `From` field to specify the starting date and time for the analysis. +- Use the `To` field to specify the ending date and time for the analysis. +- Use the `(+/-) From date` selector to specify the number of days before or after the `From` date that should be included in the analysis. + +When you've specified the report options, click `Next` to continue. + +![Postgres Log Analysis Expert Wizard - Report Destination page](../images/pem_log_analysis_expert_report_finish.png) + +You can select the default option (`Finish`) to view the Log Analysis Expert report in the PEM client's tabbed browser, or click the radio button next to `Download the report` to save a copy of the report to an HTML file for later use. + +## Reviewing the Postgres Log Analysis Expert Report + +If you've elected to review the report immediately, the Postgres Log Analysis Expert report will be displayed in the PEM Client window. If the report contains an analysis of more than one monitored server, the graphs will be displayed in sets; first the graphs, tables and charts that display statistics for one server, then the graphs for the next server in the report. + +The Postgres Log Analysis Expert Report header displays the date and time that the report was generated, the time period that the report spans, and the Aggregation method specified when defining the report. The name of the server for which information is displayed is noted at the start of each section of the report. + +The report displays the tables, graphs and charts that were selected in the Log Analysis Expert wizard. Use the `Jump To` button (located in the lower-right hand corner of the screen) to navigate to a specific graphic. + +![Postgres Log Analysis Expert Report](../images/pem_log_analysis_expert_report.png) + +The report may include one or more of the following: + +- The `Summary Statistics` table displays a summary of server activity for the selected server. + - The `Number of unique queries` row displays the count of unique queries made against the selected server in the specified time period. + - The `Total queries` row displays the count of queries made against the selected server in the specified time period. + - The `Total queries duration` row displays the amount of time used to execute queries against the server. + - The `First query` row displays the time (within the specified time period) that the first query executed against the server. + - The `Last query` row displays the time (within the specified time period) that the last query executed against the server. + - The `Queries peak time` row displays the point in time (within the specified time period) that query activity reached it's highest level. + - The `Number of events` row displays the count of log events within the specified time period. + - The `Number of unique events` row displays the count of unique server events. + - The `Total number of sessions` row displays a count of the number of sessions recorded within the time period. + - The `Total duration of sessions` row displays the amount of time that sessions were connected (during the specified time period). + - The `Average sessions duration` row displays the average length of each session. + - The `Total number of connections` row displays the number of user connections made to the server. + - The `Total number of databases` row displays the number of databases on the selected server. +- The `Hourly DML Statistics` table displays the statistics related to the use of various DML commands (SELECT, INSERT, UPDATE, DELETE, COPY and FETCH) within a one-hour period. To generate values in the `Min Duration(sec)`, `Max Duration(sec)`, and `Avg Duration(sec)` columns of this table, you must specify a value greater than or equal to `0` in the log_min_duration_statement configuration parameter. You can set the parameter by either modifying the `postgresql.conf` file with your editor of choice, or by specifying a value of `0` or greater in the `Log Min Duration Statement` field of the `Log Manager` wizard. + - The `Time` column displays the start of the one-hour period for which data was analyzed. + - The `Database` column displays the name of the database in which the specified DML command executed. + - The `Command Type` column displays the DML command type. + - The `Total Count` column displays the number of times that a command of the specified command type executed during the one-hour period analyzed by the report. + - The `Min Duration(sec)` column displays the shortest amount of time (in seconds) used by the server to respond to the specified command type. + - The `Max Duration(sec)` column displays the longest amount of time (in seconds) used by the server to respond to the specified command type. + - The `Avg Duration(sec)` column displays the average length of time (in seconds) used by the server when responding to the specified command type. +- The `DML Statistics Timeline` section of the Log Analysis Expert report displays information about DML statement usage: + - The line graph displays an analysis of statement usage during the selected time period. Hover over a specific point to view detailed information about that point on the graph. + - The pie chart displays the percent of statement usage of each respective DML statement type during the selected time period. +- The `DDL Statistics Timeline` section of the Log Analysis Expert report displays information about DDL statement usage: + - The line graph displays an analysis of statement usage during the selected time period. Hover over a specific point to view detailed information about that point on the graph. + - The pie chart displays the percent of statement usage of each respective DDL statement type during the selected time period. +- The `Commit and Rollback Statistics Timeline` section of the Log Analysis Expert report displays information about the COMMIT, ROLLBACK, and SAVEPOINT statements logged during the specified time period: + - The line graph displays an analysis of the commit and rollback activity during the specified time period. Hover over a specific point to view detailed information about that point on the graph. + - The pie chart displays the comparative percent of COMMIT, SAVEPOINT, or ROLLBACK statements executed during the specified time period. +- The `Checkpoint Statistics Timeline` section of the Log Analysis Expert report displays information about the checkpoint operations logged during the specified time period: + - The line graph displays an analysis of the checkpoint operation activity during the specified time period. Hover over a specific point to view detailed information about that point on the graph. + - The pie chart displays the comparative percent of different types of checkpoint activity logged during the specified time period. +- The `Log Event Statistics` table lists log entries with a severity level of WARNING, ERROR, FATAL, PANIC, HINT or CONTEXT. The level of logging detail for error messages is controlled by the `log_min_error_statement` parameter. You can set the parameter by either modifying the `postgresql.conf` file with your editor of choice, or by specifying a value in the `Log Min Error Statement` field of the `Log Manager` wizard. + - The `Error Severity` column lists the severity level of the log entry. + - The `Message` column lists the log message. + - The `Total Count` column lists the number of times that the log entry has occurred. +- The `Log Statistics` table lists log entries that indicate an operational severity level of LOG, DETAIL, DEBUG, NOTICE, INFO or STATEMENT. The level of logging detail for informational messages is controlled by the `log_min_messages` parameter. You can set the parameter by either modifying the `postgresql.conf` file with your editor of choice, or by specifying a value in the `Log Min Messages` field of the `Log Manager` wizard. + - The `Error Severity` column lists the severity level of the log entry. + - The `Total Count` column lists the number of times that the log entry has occurred. +- The `Temp Generated Queries` table displays a list of queries that have created temporary files. + - The `Log Time` column displays the time that the log entry was generated. + - The `TempFile Size(Bytes)` column displays the size of the temporary file in bytes. + - The `Query` column displays the text of the query that created the temporary file. +- The `Temp File Statistics Timeline` graph displays the size of temporary files over the specified time period. Hover over a specific point to view detailed information about that point on the graph. +- The `Lock Statistics Timeline` section of the Log Analysis Expert report displays information about the locks held during the specified time period: + - The graph displays the number of locks held at any given point during the time period. Hover over a specific point to view detailed information about that point on the graph. + - The pie chart displays the relative percentage of each type of lock used during the selected time period. +- The `Waiting Statistics Timeline` section of the Log Analysis Expert report displays information about DML statements that are waiting for a lock during the specified time period: + - The graph displays the number of DML statements that are waiting at any given point during the time period; each colored line represents a statement type. Hover over a specific point to view detailed information about that point on the graph. + - The pie chart displays the relative percentage of each type of DML statement that waited for a lock during the selected time period. +- The `Idle Statistics Timeline` section of the Log Analysis Expert report displays information about the amount of time that a connection to the server is idle. An `IDLE` server is waiting for a connection from a client. A connection that is `IDLE in transaction` has started a transaction, but has not yet committed or rolled back the transaction and is waiting for a command from the client. A session that is IDLE in transaction (aborted)\* has started a transaction, but has not yet committed or rolled back the transaction and is waiting for a command from the client; an error has occurred within the transaction and the transaction can only be rolled-back. + - The graph displays the times at which the server is `IDLE`, `IDLE in transaction`, and `IDLE in transaction (aborted)`. Hover over a specific point to view detailed information about that point on the graph. + - The pie chart displays the relative percentage of each type of lock used during the selected time period. +- The `Autovacuum Statistics` table displays statistics about autovacuum activity on monitored servers. + - The `Log Time` column displays the time that the autovacuum activity was written to the log. + - The `Relation` column displays the name of the table on which the autovacuum was performed. + - The `Index Details` column displays the number of index scans that were performed. + - The `Page Details` column displays the number of pages that were removed, and the number of pages that remain. + - The `Tuple Details` column displays the number of tuples that were removed, and the number of tuples that remain. + - The `Buffer Usage` column displays the number of buffers hit, missed, or dirty. + - The `Read Rate` column displays the average read rate in MB's per second. + - The `System Usage` column displays the percent of CPU time used performing autovacuum activities. +- The `Autoanalyze Statistics` table displays logged autoanalyze activity. + - The `Log Time` column displays the time that the autoanalyze activity was written to the log. + - The `Relation` column displays the name of the table on which the autoanalyze was performed. + - The `System Usage` column displays the percent of CPU time used performing autoanalyze activities. +- The `Slow Query Statistics` table displays the slowest queries executed on monitored servers. The table will include the number of entries specified in the `Rows Limit` field of the Log Analysis Expert. + - The `Log Time` column displays the time that the query activity was written to the log. + - The `Tag` column displays the command type. + - The `Query` column displays the text of the performed query. + - The `Parameters` column displays the parameters (if the query is a parameterized query). + - The `Duration` column displays the length of time that it took the server to execute the query. + - The `Host` column displays name of the host on which the query executed. + - The `Database` column displays the name of the database on which the query executed. +- The `Frequently Executed Query Statistics` table displays the most frequently executed query statements. The table will include the number of entries specified in the `Rows Limit` field of the Log Analysis Expert. + - The `Query` column displays the text of the performed query. + - The `Parameters` column displays the parameters (if the query is a parameterized query). + - The `No. of Times Executed` column displays the number of times that the query executed. + - The `Total Duration` column displays the length of time that it took the server to execute the query. +- The `Most Time Executed Query Statistics` table displays the queries that took the most execution time on the server. The table will include the number of entries specified in the `Rows Limit` field of the Log Analysis Expert. + - The `Query` column displays the text of the performed query. + - The `Parameters` column displays the parameters (if the query is a parameterized query). + - The `No. of Times Executed` column displays the number of times that the query executed. + - The `Total Duration` column displays the length of time that it took the server to execute the query. +- The `Connections Overview Timeline` section of the Log Analysis Expert report displays information about successful and unsuccessful connection attempts during the specified time period: + - The `Timestamp` graph displays the number of server connections attempted and connections authenticated at any given point during the specified time period. Hover over a specific point to view detailed information about that point on the graph. + - The `Summary` pie chart displays the relative percentage of connections attempted and connections authenticated during the specified time period. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/06_tuning_wizard.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/06_tuning_wizard.mdx new file mode 100644 index 00000000000..ee9cbc84514 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/06_tuning_wizard.mdx @@ -0,0 +1,89 @@ +--- +title: "Tuning Wizard" +--- + + + +The Tuning Wizard reviews your PostgreSQL or Advanced Server installation, and recommends a set of configuration options that will help tune the installation to best suit its anticipated workload. Please note that benchmarking systems or systems with a high work load may require additional manual tuning to reach optimum performance. + +Before using the Tuning Wizard, you must specify the name of the service in the `Service ID` field on the `Advanced` tab of the server's `` `Properties `` <pem_define_connection>\` dialog. PEM will use the service name when restarting the service after tuning. + +The Tuning Wizard can only make recommendations for those servers that reside on the same server as their bound PEM agent. If you have specified a value of `Yes` in the `Remote monitoring` field when defining your server, the server will not be displayed in the Tuning Wizard tree control. + +To open the Tuning Wizard, select `Tuning Wizard...` from the `Management` menu of the PEM client. The Tuning Wizard opens, welcoming you: + +![Tuning Wizard - Welcome page](../images/tuning_wiz_welcome.png) + +Click `Next` to continue to the server selection dialog: + +![Tuning Wizard - Server Selection page](../images/tuning_wiz_server_sel.png) + +Expand the `Servers` node of the tree control to view a list of the servers that are currently monitored by PEM that are available for tuning. + +Check a box to the left of a server name to select the server for tuning. Please note: the Tuning Wizard displays a red warning symbol to the left of a server name in the tree control if the service name for that server is not provided on the server's Properties dialog. + +Click `Next` to continue to the `Configuration` dialog: + +![Tuning Wizard - Configuration page](../images/tuning_wiz_configuration.png) + +Select an option in the `Machine utilization` field to specify the type of work performed by the selected servers. The type of work performed by the server determines how the tuning wizard will allocate system resources: + +- Select `Dedicated` to dedicate the majority of the system resources to the database server. +- Select `Mixed use` to dedicate a moderate amount of system resources to the database server. +- Select `Developer workstation` to dedicate a relatively small amount of system resources to the database server. + +Select an option in the `Workload Selection` field to specify the type of workload typically performed on the selected server: + +- Select `OLTP` if the selected server is used primarily to process online transaction workloads. +- Select `Mixed` if the selected server provides a mix of transaction processing and data reporting. +- Select `Data warehouse` if the server is used for heavy data reporting. + +Click `Next` to continue to the `Tuning Changes Summary` dialog: + +![Tuning Wizard - Tuning Changes Summary page](../images/tuning_wiz_changes_sum.png) + +The tree control on the `Tuning Changes Summary` dialog displays the parameter setting modifications recommended for each server analyzed by the Tuning Wizard. Use the checkboxes next to a server or parameter name to select the recommendations that tuning wizard will either include in a preview report or apply: + +- A checked box to the left of a parameter name specifies that the Tuning Wizard will include the parameter setting. +- A checked box to the left of a server name specifies that the Tuning Wizard will include all parameter setting recommendations for the specified server. + +Specify which Tuning Wizard recommendations you wish to include in a report or apply, and click `Next` to continue. + +Use the `Schedule or Run?` dialog to either: + +- Specify a time that PEM will apply the changes. +- Generate a report that details the recommended changes. + +The selected actions will apply to all of the changes noted on the `Tuning Changes Summary`. If you opt to generate a report, PEM will create a report that contains a list of the current values and recommended modifications to the configuration parameters selected on the `Tuning Changes Summary` dialog. Note that to implement changes, you will need to invoke the Tuning Wizard a second time, specifying the parameters you wish to modify on the `Tuning Changes Summary` dialog. + +Select `Schedule changes` to view your scheduling options. + +![Tuning Wizard - Scheduling options](../images/tuning_wiz_apply_changes.png) + +You can: + +- Set the `Configuration now?` slider to `Yes` to apply the tuning wizard's recommendations and restart the server now. +- Set the `Configuration now?` slider to `No` to enable the `Time?` field and use the calendar selector to specify a time for PEM to apply the tuning wizard's recommendations and restart the server. Note that if you schedule a time for the changes to be applied, you will not be provided with a preview of the change recommendations. + +Select `Generate report` to view your report options. + +![Tuning Wizard - Generate Report options](../images/tuning_wiz_generate_report.png) + +You can: + +- Set the `View report now?` slider to `Yes` to display the Tuning Wizard report onscreen. +- Set the `View report now?` slider to `No` to enable the `Save the report to file` field and use the calendar selector to specify a file name and location to which PEM will write the Tuning Wizard report. + +Click the `Finish` button to either apply the Tuning Wizard's modifications or generate a report and exit the Tuning Wizard. + +![Tuning Wizard Report](../images/tuning_wiz_report.png) + +You can confirm that Tuning Wizard has implemented the recommended changes by reviewing the postgresql.conf file for the modified server. The Tuning Wizard adds a comment above each modified parameter in the postgresql.conf file when the change is applied: + +![Tuning Wizard Change Confirmation](../images/tuning_wiz_confirm_chg.png) + +You can also confirm a parameter value by querying the server. For example, to confirm the value of the shared_buffers parameter, open a SQL command line using either the `Query Tool` (accessed through the `Tools` menu) or the psql client, and issue the command: + +*SHOW shared_buffers;* + +The value returned by the server will confirm that the parameter has been modified. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/07_pem_postgres_expert/01_pe_schema_config_expert_recommendations.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/07_pem_postgres_expert/01_pe_schema_config_expert_recommendations.mdx new file mode 100644 index 00000000000..02ec09559ec --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/07_pem_postgres_expert/01_pe_schema_config_expert_recommendations.mdx @@ -0,0 +1,68 @@ +--- +title: "Schema Expert Recommendations" +--- + + + +| | | +| -------------- | ------------------------------------------------------------- | +| Rule | Check for missing primary keys | +| Recommendation | Ensure tables have a primary key | +| Trigger | Postgres Expert detected a table with no defined primary key. | +| Severity | Low | + +**Description:** Primary keys are used to define the set of columns that make up the unique key to each row in the table. Whilst they are similar to unique indexes, primary keys cannot contain NULL values, thus are always able to identify a single row. Tools such as Postgres Enterprise Manager and other pieces of software such as ORM will automatically detect primary keys on tables and use their definition to identify individual rows. + +| | | +| -------------- | ------------------------------------------------------------------------------ | +| Rule | Check for missing foreign key indexes | +| Recommendation | Ensure columns of child tables in foreign key relationships are indexed. | +| Trigger | Postgres Expert detected a child table with no index on referencing column(s). | +| Severity | Medium | + +**Description:** Foreign keys are used to define and enforce relationships between child and parent tables. The foreign key specifies that values in one or more columns of the child table must exist (in the same combination, if more than one column) in the referenced column(s) of the parent table. A unique index is required to be present on the referenced columns in the parent table, however an index is not required, but is generally advisable, on the referencing columns of the child table to allow cascading updates to the parent to be executed efficiently. + +| | | +| -------------- | ----------------------------------------- | +| Rule | Check Database Encoding | +| Recommendation | Avoid encoding as SQL_ASCII for databases | +| Trigger | encoding = SQL_ASCII | +| Severity | Medium | + +**Description:** The database is created to store data using the SQL_ASCII encoding. This encoding is defined for 7 bit characters only; the meaning of characters with the 8th bit set (non-ASCII characters 127-255) is not defined. Consequently, it is not possible for the server to convert the data to other encodings. If you're storing non-ASCII data in the database, you're strongly encouraged to use a proper database encoding representing your locale character set to take benefit from the automatic conversion to different client encodings when needed. If you store non-ASCII data in an SQL_ASCII database, strange characters may be written to or read from the database, caused by code conversion problems. This may cause problems when accessing the database using different client programs and drivers. For most installations, Unicode (UTF8) encoding will provide the most versatility. + +| | | +| -------------- | ------------------------------------------------------------------- | +| Rule | Check for too many indexes | +| Recommendation | Don't overload a table with too many indexes. | +| Trigger | Postgres Expert has detected that a table has more than 10 indexes. | +| Severity | Low, Medium or High (based on number of indexes) | + +**Description:** Whilst indexes can speed up SELECT queries by allowing Postgres to quickly locate records, it is important to choose which indexes are required carefully to ensure they are used. Maintaining an index has a cost, and the more indexes there are to update, the slower INSERT, UPDATE or DELETE queries can become. There are no hard and fast rules to tell you how many indexes are required on a particular table -the DBA must balance the need for indexes for different types of SELECT queries and constraints against the cost of maintaining them. + +| | | +| ------------------ | ------------------------------------------------------------------------------------------------ | +| Configuration Item | Check data and transaction log on same drive | +| Recommendation | Avoid using the same storage device for the data directory and transaction logs. | +| Trigger | Postgres Expert has detected that a data directory and transaction log directory share a device. | +| Severity | High | + +**Description:** Postgres' performance can be adversely affected on medium to heavily loaded systems if both the data and the transaction logs (WAL) are stored on the same device. It is considered good practice to store them on separate physical devices if performance is an issue. On busy servers, significant performance gains may be seen when separating the data directory and transaction log directory onto different physical storage devices. + +| | | +| -------------- | ------------------------------------------------------------------------------------------------------------------ | +| Rule | Check tablespace and transaction log on same drive | +| Recommendation | Avoid using the same storage device for the transaction logs and a tablespace. | +| Trigger | Postgres Expert has detected that transaction log directory and a tablespace other than pg_default share a device. | +| Severity | Medium | + +**Description:** Before updating database files to reflect data modifications, the server writes the change to the transaction log. The database files may be separated onto different devices using tablespaces (defined storage areas used by the database server). On busy servers, significant performance gains may be seen when separating tablespace directories and the transaction log directory onto different physical storage devices. + +| | | +| -------------- | ---------------------------------------------------------------------- | +| Rule | Check multiple tablespace on same drive | +| Recommendation | Avoid using the same storage device for multiple tablespaces. | +| Trigger | Postgres Expert has detected that multiple tablespaces share a device. | +| Severity | Low | + +**Description:** Multiple tablespaces may be defined in the database to allow tables and indexes to be distributed into different storage areas, usually for performance reasons for example, tables with high performance requirements may be stored on expensive , high speed disks, while archive data may be stored on much larger, but slower devices. There is usually little to be gained from having more than one tablespace on a single device (because the cost and access characteristics will be identical), except in very unusual situations where it may be desirable to configure them with different planner cost parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/07_pem_postgres_expert/02_pe_security_expert_recommendations.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/07_pem_postgres_expert/02_pe_security_expert_recommendations.mdx new file mode 100644 index 00000000000..6dc59213466 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/07_pem_postgres_expert/02_pe_security_expert_recommendations.mdx @@ -0,0 +1,54 @@ +--- +title: "Security Expert Recommendations" +--- + + + +| | | +| -------------- | ------------------------------------------------------------------ | +| Rule | Check SSL for improved performance | +| Recommendation | Consider disabling SSL for improved performance. | +| Trigger | ssl = on and listen_addresses in ('localhost', '127.0.0.1', '::1') | +| Severity | Low | + +**Description:** SSL authentication is invaluable for protecting against connection-spoofing and eavesdropping attacks, but it is not always necessary for adequate security. When PostgreSQL accepts only local connections, or when it accepts only connections from a trusted network where malicious network traffic is not a concern, SSL encryption may not be necessary. Consider changing this setting if the current value is not appropriate for your environment. + +Note: Even when SSL encryption is enabled, PostgreSQL servers should be further protected using an appropriate firewall configuration. + +| | | +| -------------- | ---------------------------------------------------------------------- | +| Rule | Check SSL for improved connection security | +| Recommendation | Consider using SSL for improved connection security. | +| Trigger | ssl = off and listen_addresses not in ('localhost', '127.0.0.1','::1') | +| Severity | Medium | + +**Description:** The configuration variable listen_addresses indicates that your system may accept non-local connection requests, but SSL is not enabled. If PostgreSQL is exposed only to a secure, trusted internal network, this configuration is appropriate for maximum performance. Otherwise, you should consider enabling SSL. SSL offers two main advantages. First, it provides a more secure mechanism for authorizing connections to the database, helping to prevent unauthorized access. Second, SSL prevents eavesdropping attacks, where data sent from the database to clients, or from clients to the database, is viewed by an attacker while in transit. Consider changing this setting if the current value is not appropriate for your environment. + +Note: Even when SSL encryption is enabled, PostgreSQL servers should be further protected using an appropriate firewall configuration. + +| | | +| -------------- | ----------------------------------------------------------------------------- | +| Rule | Check TRUST authentication is disabled | +| Recommendation | Avoid trust and ident authentication on unsecured networks. | +| Trigger | trust or ident authentication allowed to any host other than 127.0.0.1 or ::1 | +| Severity | High | + +**Description:** An attacker with access to your network can easily use the trust and ident authentication methods to subvert your network. If PostgreSQL is not running on a secure network, with firewalls in place to prevent malicious traffic, the use of these authentication methods should be avoided. + +| | | +| -------------- | ----------------------------------------------------------------------------------- | +| Rule | Check Password authentication on unsecured networks | +| Recommendation | Avoid password authentication on unsecured networks. | +| Trigger | (connection_type = 'host' or connection_type = 'hostnossl') and method = 'password' | +| Severity | High | + +**Description:** Passwords should not be transmitted in plaintext over unsecured networks. The use of md5 authentication provides slightly better security, but can still allow accounts to be compromised by a determined attacker. SSL encryption is a superior alternative. To require the use of SSL, set the connection type to hostssl in the pg_hba.conf file. + +| | | +| -------------- | ---------------------------------------------------------------- | +| Rule | Check SSL for increased security | +| Recommendation | Consider requiring SSL. | +| Trigger | ssl = on in postgresql.conf, but no hostssl lines in pg_hba.conf | +| Severity | Medium | + +**Description:** SSL encrypts passwords and all data transmitted over the connection, providing increased security. To require the use of SSL, set the connection type to hostssl in the pg_hba.conf file. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/07_pem_postgres_expert/03_pe_configuration_expert_recommendations.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/07_pem_postgres_expert/03_pe_configuration_expert_recommendations.mdx new file mode 100644 index 00000000000..94961935f41 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/07_pem_postgres_expert/03_pe_configuration_expert_recommendations.mdx @@ -0,0 +1,204 @@ +--- +title: "Configuration Expert Recommendations" +--- + + + +| | | +| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Rule | Check shared_buffers | +| Recommendation | Consider adjusting shared_buffers | +| Trigger | shared_buffers < (OS == Windows ? 64MB : MIN(0.20 \* (system_memory - 256MB), 6GB)) or shared_buffers > (OS == Windows ? 512MB : MAX(0.35 \* system_memory, 8GB)) | +| Recommended Value | system_memory < 1GB ? MAX((system_memory - 256MB) / (OS == Windows ? 6 : 3), 64MB), OS == Windows ? MAX(system_memory / 8, 256MB) : MAX(system_memory / 4, 8GB) | +| Severity | Medium | + +**Description:** The configuration variable shared_buffers controls the amount of memory reserved by PostgreSQL for its internal buffer cache. Setting this value too low may result in "thrashing" the buffer cache, resulting in excessive disk activity and degraded performance. However, setting it too high may also cause performance problems. PostgreSQL relies on operating system caching to a significant degree , and setting this value too high may result in excessive "double buffering" that can degrade performance. It also increases the internal costs of managing the buffer pool. On UNIX-like systems, a good starting value is approximately 25% of system memory, but not more than 8GB. On Windows systems, values between 64MB and 512MB typically perform best. The optimal value is workload-dependent, so it may be worthwhile to try several different values and benchmark your system to determine which one delivers best performance. + +Note: PostgreSQL will fail to start if the necessary amount of shared_memory cannot be located. This is usually due to an operating system limitation which can be raised by changing a system configuration setting, often called shmall.See the documentation for more details. You must set this limit to a value somewhat higher than the amount of memory required for shared_buffers,because PostgreSQL's shared memory allocation also includes amounts required for other purposes. + +| | | +| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| Rule | Check work_mem | +| Recommendation | Consider adjusting work_mem | +| Trigger | given spare_mem = system_memory - (OS == Windows ? 256MB : MAX(0.25 \* system_memory, 8GB)) then work_mem < MAX(1MB, spare_mem / 512) or work_mem > (spare_mem / 128) | +| Recommended Value | given spare_mem defined as on the previous line then MAX (1MB, spare_mem / 256) | +| Severity | Medium | + +**Description:** The configuration variable work_mem controls the amount of memory PostgreSQL will use for each individual hash or sort operation. When a sort would use more than this amount of memory, the planner will arrange to perform an external sort using disk files. While this algorithm is memory efficient, it is much slower than an in-memory quick sort. Similarly, when a hash join would use more than this amount of memory, the planner will arrange to perform it in multiple batches, which saves memory but is likewise much slower. In either case, the planner may in the alternative choose some other plan that does not require the sort or hash operation, but this too is often less efficient. Therefore, for good performance it is important to set this parameter high enough to allow the planner to choose good plans. However, each concurrently executing query can potentially involve several sorts or hashes, and the number of queries on the system can vary greatly Therefore, a value for this setting that works well when the system is lightly loaded may result in swapping when the system becomes more heavily loaded. Swapping has very negative effects on database performance and should be avoided, so it is usually wise to set this value somewhat conservatively. + +Note: work_mem can be adjusted for particular databases, users, or user-and -database combinations by using the commands ALTER ROLE and ALTER DATABASE It can also be changed for a single session using the SET command. This can be helpful when particular queries can be shown to run much faster with a value of work_mem that is too high to be applied to the system as a whole. + +| | | +| -------------- | ---------------------------------- | +| Rule | Check max_connections | +| Recommendation | Consider using a connection pooler | +| Trigger | max_connections > 100 | +| Severity | Medium | + +**Description:** The configuration variable max_connection is set to a value greater than 100. PostgreSQL performs best when the number of simultaneous connections is low. Peak throughput is typically achieved when the connection count is limited to is limited to approximately twice the number of system CPU cores plus the number of spindles available for disk I/O (in the case of an SSD or other non-rotating media, some experimentation may be needed to determine the "effective spindle count"). Installing a connection pooler, such as pgpool-II or pgbouncer, can allow many clients to be multiplexed onto a smaller number of server connections ,sometimes resulting in dramatic performance gains. + +| | | +| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Rule | Check maintenance_work_mem | +| Recommendation | Consider adjusting maintenance_work_mem | +| Trigger | spare_mem = system_memory - (OS == Windows ? 256MB : MAX(0.25 \* system_memory, 8GB)) then maintenance_work_mem < MAX(16MB, spare_mem / 32) or maintenance_work_mem > MIN(spare_mem / 8, 256MB) | +| Recommended Value | spare_mem as defined on the previous line then MIN(spare_mem/16, 256MB) | +| Severity | Low | + +**Description:** The configuration variable maintenance_work_mem controls the amount of memory PostgreSQL will use for maintenance operations such as CREATE INDEX and VACUUM. Increasing this setting from the default of 16MB to 256MB can make these operations run much faster. Higher settings typically do not produce a significant further improvement. On PostgreSQL 8.3 and higher, multiple autovacuum processes may be running at one time (up to autovacuum_max_workers, which defaults to 3), and each such process will use the amount of dedicated memory dictated by this parameter. This should be kept in mind when setting this parameter, especially on systems with relatively modest amounts of physical memory, so as to avoid swapping. Swapping has very negative effects on database performance and should be avoided. If the value recommended above is less than 256MB, it is chosen with this consideration in mind. However, the optimal value is workload-dependent, so it may be worthwhile to experiment with higher or lower settings. + +| | | +| -------------- | ------------------------------------------- | +| Rule | Check effective_io_concurrency | +| Recommendation | Consider adjusting effective_io_concurrency | +| Trigger | effective_io_concurrency < 2 | +| Severity | Low | + +**Description:** If the PostgreSQL data files are located on a RAID array or SSD, effective_io_concurrency should be set to the approximate number of I/O requests that the system can service simultaneously. For RAID arrays, this is typically equal to the number of drives in the array. For SSDs, some experimentation may be needed to determine the most effective value. Setting this parameter to an appropriate value impoves the performance of bitmap index scans. The default value of 1 is appropriate for cases where all PostgreSQL data files are located on a single spinning medium. + +| | | +| -------------- | -------------------------------- | +| Rule | Check fsync is enabled | +| Recommendation | Consider configuring fsync = on. | +| Trigger | fsync = off | +| Severity | High | + +**Description:** When fsync is set to off, a system crash can result in unrecoverable data loss or non-obvious corruption. fsync = off is an appropriate setting only if you are prepared to erase and recreate all of your databases in the event of a system crash or unexpected power outage. + +Note: Much of the performance benefit obtained by configuring fsync = off can also be obtained by configuring synchronous_commit = off. However, the latter settings is far safer: in the event of a crash, the last few transactions committed might be lost if they have not yet made it to disk, but the database will not be corrupted. + +| | | +| -------------- | ------------------------------------------------------------------------------------------------- | +| Rule | Check wal_sync_method | +| Recommendation | On Windows, consider configuring wal_sync_method = fsync or wal_sync_method = fsync_writethrough. | +| Trigger | OS = Windows and wal_sync_method not in ('fsync', 'fsync_writethrough') | +| Severity | High | + +**Description:** In order to guarantee reliable crash recovery, PostgreSQL must ensure that the operating system flushes the write-ahead log to disk when asked to do so. On Windows, this can be achieved by setting wal_sync_method to fsync or fsync_writethrough, or by disabling the disk cache on the drive where the write-ahead log is written. (It is safe to leave the disk cache enable if a battery-back disk cache is in use.) + +Note: In cases where the loss of a very recently committed transaction is acceptable, the performance impact of flushing the write ahead log to disk can be mitigated by setting synchronous_commit = off. In other situations, the use of a battery-backed RAID controller is recommended. + +| | | +| -------------- | ----------------------------------------------------------------------- | +| Rule | Check wal_sync_method | +| Recommendation | On Mac OS X, consider configuring wal_sync_method = fsync_writethrough. | +| Trigger | OS == MacOS X and wal_sync_method != fsync_writethrough | +| Severity | High | + +**Description:** In order to guarantee reliable crash recovery, PostgreSQL must ensure that the operating system flushes the write-ahead log to disk when asked to do so. On MacOS X, this can be achieved by setting wal_sync_method to fsync_writethrough or by disabling the disk cache on the drive where the write-ahead log is written. It is safe to leave the disk cache enable if a battery-back disk cache is in use. + +Note: In cases where the loss of a very recently committed transaction is acceptable, the performance impact of flushing the write ahead log to disk can be mitigated by setting synchronous_commit = off. In other situations, the use of a battery-backed RAID controller is recommended. + +| | | +| -------------- | ------------------------------------------ | +| Rule | Check wal_buffers | +| Recommendation | Consider adjusting wal_buffers | +| Trigger | wal_buffers < 1MB or wal_buffers > 16MB | +| Severity | Medium | + +**Description:** Increasing the configuration parameter wal_buffers from the default value of 64kB to 1MB or more can reduced the number of times the database must flush the write-ahead log, leading to improved performance under some workloads. There is no benefit to setting this parameter to a value greater than the size of a WAL segment (16MB). + +| | | +| -------------- | ---------------------------------- | +| Rule | Check commit_delay | +| Recommendation | Consider setting commit_delay = 0. | +| Trigger | commit_delay != 0 | +| Severity | Low | + +**Description:** Setting the commit_delay configuration parameter to a non-zero value causes the system to wait for the specified number of microseconds before flushing the write-ahead log to disk at commit time, potentially allowing several concurrent transactions to commit with a single log flush. In most cases, this does not produce a performance benefit, and in some cases, it can produce a performance regression. Unless you have confirmed through benchmarking that a non-default value for this parameter produces a performance benefit, the default value of 0 is recommended. + +| | | +| -------------- | -------------------------------------------------------- | +| Rule | Check checkpoint_segments | +| Recommendation | Consider adjusting checkpoint_segments. | +| Trigger | checkpoint_segments < 10 or checkpoint_segments > 300 | +| Severity | Medium | + +**Description:** In order to ensure reliable and efficient crash recovery, PostgreSQL periodically writes all dirty buffers to disk. This process is called a checkpoint.Checkpoints occur when (1) the number of write-ahead log segments written since the last checkpoint exceeds checkpoint_segments, (2) the amount of time since the last checkpoint exceeds checkpoint_timeout, (3) the SQL command CHECKPOINT is issued, or (4) the system completes either shutdown or crash recovery. Increasing the value of checkpoint_segments will reduce the frequency of checkpoints and will therefore improve performance, especially during bulk loading. The main downside of increasing checkpoint_segments is that, in the event of a crash, recovery will require a longer period of time to return the database to a consistent state. In addition, increasing checkpoint_segments will increase disk space consumption during periods of heavy system activity. However, because the theoretical limit on the amount of additional disk space that will be consumed for this reason is less than 32MB per additional checkpoint segment, this is often a small price to pay for improved performance. + +Values between 30 and 100 are often suitable for modern systems. However, on smaller systems, a value as low as 10 may be appropriate, and on larger systems, a value as 300 may be useful. Values outside this range are generally not worthwhile. + +| | | +| -------------- | ------------------------------------------------ | +| Rule | Check checkpoint_completion_target | +| Recommendation | Consider adjusting checkpoint_completion_target. | +| Trigger | checkpoint_completion_target != 0.9 | +| Severity | Medium | + +**Description:** In order to ensure reliable and efficient crash recovery, PostgreSQL periodically writes all dirty buffers to disk. This process is called a checkpoint. Beginning in PostgreSQL 8.3, checkpoints take place over an extended period of time in order to avoid swamping the I/O system. checkpoint_completion_target controls the rate at which the checkpoint is performed, as a function of the time remaining before the next checkpoint is due to start. A value of 0 indicates that the checkpoint should be performed as quickly as possible, whereas a value of 1 indicates that the checkpoint should complete just as the next checkpoint is scheduled to start. It is usually beneficial to spread the checkpoint out as much as possible; however, if checkpoint_completion_target is set to a value greater than 0.9, unexpected delays near the end of the checkpoint process can cause the checkpoint to fail to complete before the next one needs to start. Because of this, the recommended setting is 0.9. + +| | | +| ----------------- | ----------------------------------------------------------------------------------------------------------------------- | +| Rule | Check effective_cache_size | +| Recommendation | Consider adjusting effective_cache_size. | +| Trigger | effective_cache_size < 0.5 \* system_memory or effective_cache_size > MAX(0.9 \* system_memory, system_memory - 1GB) | +| Recommended value | 0.75 \* system_memory | +| Severity | Medium | + +**Description:** When estimating the cost of a nested loop with an inner index-scan, PostgreSQL uses this parameter to estimate the chances that rows from the inner relation which are fetched multiple times will still be in cache when the second fetch occurs. Changing this parameter does not allocate any memory, but an excessively small value may discourage the planner from using indexes that would in fact speed up the query. The recommended value is 75% of system memory. + +| | | +| ----------------- | -------------------------------------------------------------------- | +| Rule | Check default_statistics_target | +| Recommendation | Consider adjusting default_statistics_target. | +| Trigger | default_statistics_target < 25 or default_statistics_target > 400 | +| Recommended value | 100 | +| Severity | Medium | + +**Description:** PostgreSQL uses statistics to generate good query plans. These statistics are gathered either by a manual ANALYZE command or by an automatic analyze launched by the autovacuum daemon, and they include the most common values in each column of each database table, the approximate distribution of the remaining values, the fraction of rows which are NULL, and several other pieces of statistical information. + +default_statistics_target indicates the level of detail that should be used in gathering and recording these statistics. A value of 100, which is the default beginning in PostgreSQL 8.4, is reasonable for most workloads. For very simple queries, a smaller value may be useful, while for complex queries especially against large tables, a higher value may work better. In some case, it can be helpful to override the default statistics target for specific table columns using ALTER TABLE .. ALTER COLUMN .. SET STATISTICS. + +| | | +| -------------- | -------------------------------- | +| Rule | Check planner methods is enabled | +| Recommendation | Avoid disabling planner methods. | +| Trigger | any [enable](<>)\* GUC is off | +| Severity | High | + +**Description:** The enable_bitmapscan, enable_hashagg, enable_hashjoin, enable_indexscan, enable_material, enable_mergejoin, enable_nestloop, enable_seqscan, enable_sort, and enable_tidscan parameters are intended primarily for debugging and should not be turned off. It can sometimes be helpful to disable one or more of these parameters for a particular query, when there is no other way to obtain the desired plan. However, none of these parameters should ever be turned off on a system-wide basis. + +| | | +| -------------- | --------------------------------------- | +| Rule | Check track_counts is enabled | +| Recommendation | Consider configuring track_counts = on. | +| Trigger | track_counts = off | +| Severity | High | + +**Description:** Autovacuum will not function properly if track_counts is disabled. Regular vacuuming is crucial to system stability and performance. + +| | | +| -------------- | ------------------------------------- | +| Rule | Check autovacuum is enabled | +| Recommendation | Consider configuring autovacuum = on. | +| Trigger | autovacuum = off | +| Severity | High | + +**Description:** Enabling autovacuum is an important part of maintaining system stability and performance. Although disabling autovacuum may be useful during bulk loading, it should always be promptly reenabled when bulk loading is completed. Leaving autovacuum disabled for extended periods of time will result in table and index "bloat",where available free space is not reused, resulting in uncontrolled table and index growth. Reversing such bloat requires invasive maintenance using CLUSTER, REINDEX, and/or VACUUM FULL. Allowing autovacuum to work normally is usually sufficient to avoid the need for such maintenance. + +| | | +| -------------- | ---------------------------------------------------------- | +| Rule | Check configuring seq_page_cost | +| Recommendation | Consider configuring seq_page_cost <= random_page_cost. | +| Trigger | seq_page_cost > random_page_cost | +| Severity | Medium | + +**Description:** seq_page_cost and random_page_cost are parameters used by the query parameter to determine the optimal plan for each query. seq_page_cost represents the cost of a sequential page read, while random_page_cost represents the cost of a random page read. While these costs might be equal, if, for example, the database is fully cached in RAM, the sequential cost can never be higher. The PostgreSQL query planner will produce poor plans if seq_page_cost is set higher than random_page_cost. + +| | | +| -------------- | ----------------------------------------------------------------------- | +| Rule | Check reducing random_page_cost | +| Recommendation | Consider reducing random_page_cost to no more than twice seq_page_cost. | +| Trigger | random_page_cost > 2 \* seq_page_cost | +| Severity | Low | + +**Description:** seq_page_cost and random_page_cost are parameters used by the query parameter to determine the optimal plan for each query. seq_page_cost represents the cost of a sequential page read, while random_page_cost represents the cost of a random page read. random_page_cost should always be greater than or equal to seq_page_cost, but it is rarely beneficial to set random_page_cost to a value more than twice seq_page_cost. However, the correct values for these variables are workload-dependent. If the database's working set is much larger than physical memory and the blocks needed to execute a query will rarely be in cache, setting random_page_cost to a value greater than twice seq_page_cost may maximize performance. + +| | | +| -------------- | ------------------------------------------------------------------------------------------------------------------- | +| Rule | Check increasing seq_page_cost | +| Recommendation | Consider increasing seq_page_cost. | +| Trigger | seq_page_cost < cpu_tuple_cost, seq_page_cost < cpu_index_tuple_cost, or seq_page_cost < cpu_operator_cost | +| Severity | Medium | + +**Description:** The cost of reading a page into the buffer cache, even if it is already resident in the operating system buffer cache, is rarely less than the cost of a CPU operation. Thus, the value of the configuration parameter seq_page_cost should usually be greater than the values of the configuration parameters cpu_tuple_cost ,cpu_index_tuple_cost, and cpu_operator_cost. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/07_pem_postgres_expert/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/07_pem_postgres_expert/index.mdx new file mode 100644 index 00000000000..b7a1eb57a79 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/07_pem_postgres_expert/index.mdx @@ -0,0 +1,73 @@ +--- +title: "Postgres Expert" +--- + + + +Postgres Expert analyzes the configuration of servers that are registered with the Enterprise Manager, and provides advice about: + +- [Server Performance](01_pe_schema_config_expert_recommendations/#pe_schema_config_expert_recommendations) +- [Server Security](02_pe_security_expert_recommendations/#pe_security_expert_recommendations) +- [Server Configuration](03_pe_configuration_expert_recommendations/#pe_configuration_expert_recommendations) + +Postgres Expert is an advisory utility; after analyzing the selected servers, Postgres Expert produces a report containing analysis of potential performance and security issues, along with suggestions for addressing each such issue. + +To use the Postgres Expert wizard select the `Postgres Expert` option from the `Management` menu in the PEM client. When the wizard's `Welcome` window opens; click `Next` to continue: + +![Postgres Expert Wizard - Welcome page](../../images/pe_welcome.png) + +The wizard displays a tree control that allows you to choose the `Experts` and `Rules` with which Postgres Expert will evaluate the specified server or database. + +![Postgres Expert Wizard - Rules page](../../images/pe_select_rules.png) + +The tree control categorizes the Rules under three Expert headings: + +> - Select from the `Configuration Expert` rules to analyze the parameter settings of the server or operating system to find any adjustments that might improve system performance. +> - Select from the `Schema Expert` rules to analyze schema objects (locating missing primary keys, foreign keys without indexes, etc). +> - Select from the `Security Expert` rules to review the system to find security vulnerabilities. + +Use the checkbox to the left of an expert or rule to indicate that the Postgres Expert should analyze the configuration of the selected servers for any best practice deviations related to the selected item. + +> - Use the checkbox next to `Experts/Rules` to select or deselect all of the items listed in the tree control. +> - Use the checkbox next to the name of an expert to select or deselect all of the configuration items listed under that node of the tree control. +> - Use the checkbox next to a rule to select or deselect the rule for inclusion in the Postgres Expert report. + +After making your selections, click `Next` to continue to the `Server/Databases` tree control. + +![Postgres Expert Wizard - Server/Database Selection page](../../images/pe_select_servers.png) + +If you select multiple servers or databases, the resulting report will contain a separate analysis of each target. Select or de-select the servers and databases that you would like Postgres Expert to analyze, and select `Next` to continue. + +![Postgres Expert Wizard - Report Destination options page](../../images/pe_direct_output.png) + +You can select the default option and click `Finish` to immediately view an onscreen report from Postgres Expert, or check the box next to `Download the report` to save a copy of the report to an HTML file for later use. If you choose to download the report, the report will be saved in your default downloads directory. + +**Reviewing the Postgres Expert Report** + +If you've elected to review the report immediately, the PEM client will display the report on the `Postgres Expert` tab. + +![Postgres Expert Report page](../../images/pe_report.png) + +A report summary in the upper-left corner of the Postgres Expert Report lists statistics about the analysis, including the number of servers analyzed, the number of rules tested, and the number of alerts raised in each severity category. + +If your report contains recommendations for more than one server, you can use the `Jump to` selector in the upper-right corner of the report as a navigation tool; select a server from the list to move to the portion of the report containing information for the selected server. + +For each server analyzed, the Postgres Expert returns recommendations from the `Configuration Expert`, the `Schema Expert`, and the `Security Expert`. Each expert returns a list of rules that raised an alert, the database that the rule pertains to, and the severity level of the alert. Click on a rule name to view detailed information about the selected rule: + +| | | +| ----------------- | ----------------------------------------------------------------------------------------------------------- | +| Section Heading |


Contains

| +| Trigger |


A description of the rule that raised the alert.

| +| Recommended Value |


The value to which Postgres Expert recommends setting the selected parameter.

| +| Description |


Information and advice about the parameter that caused the alert.

| +| Current Values |


The current value(s) of the parameter(s).

| + +![Postgres Expert Report - Parameter Value recommendation](../../images/pe_param_value.png) + +For more information about each rule checked by the Postgres Expert, see: + +
+ +pe_schema_config_expert_recommendations pe_security_expert_recommendations pe_configuration_expert_recommendations + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/08_capacity_manager/01_capacity_manager_metrics.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/08_capacity_manager/01_capacity_manager_metrics.mdx new file mode 100644 index 00000000000..5d35088a88e --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/08_capacity_manager/01_capacity_manager_metrics.mdx @@ -0,0 +1,26 @@ +--- +title: "Tab 1 (Metrics)" +--- + + + +To create a Capacity Manager report, expand the tree control on the `Metrics` tab to locate the metrics that are available for the node that you wish to analyze. + +![Capacity manager metrics selection list](../../images/capacity_manager_metrics.png) + +To include a metric in the Capacity Manager report, check the box to the left of the name of the metric on the `Metrics` tab. + +![Capacity manager metrics selection](../../images/capacity_manager_add_metric.png) + +Capacity Manager will use the aggregation method specified by the `Aggregation` drop-down listbox (located at the bottom of the `Metrics` tab). The aggregation method instructs Capacity Manager how to evaluate and plot the metric values. Select from: + +- **Average:** Use the average of the values recorded during the time period. +- **Maximum:** Use the maximum value recorded during the time period. +- **Minimum:** Use the minimum value recorded during the time period. +- **First:** Use the first value recorded during the time period. + +To remove a metric from the Capacity Manager report, uncheck the box to the left of the name of a metric. + +Move the slider next to `Graph/chart metrics individually?` to `Yes` to instruct Capacity Manager to produce a separate report for each metric selected on the `Metrics` tab. If the option is set to `No`, all selected metrics will be merged into a single graph or table. + +Click the `Generate` button to display the report onscreen (accepting the default configuration options), or continue to the [Options](02_capacity_manager_options/#capacity_manager_options) tab to specify sampling boundaries, report type and report destination. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/08_capacity_manager/02_capacity_manager_options.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/08_capacity_manager/02_capacity_manager_options.mdx new file mode 100644 index 00000000000..5c0864b65e7 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/08_capacity_manager/02_capacity_manager_options.mdx @@ -0,0 +1,53 @@ +--- +title: "Tab 2 (Options)" +--- + + + +Use the fields on the `Options` tab to specify the starting and ending boundaries of the Capacity Manager report, the type of report generated, and the location to which the report will be displayed or written. + +![Capacity manager options](../../images/capacity_manager_options.png) + +Use the fields within the `Time Period` box to define the boundaries of the Capacity Manager report: + +- Use the `Period` drop-down listbox to select the type of time period you wish to use for the report. You can select: + +| Value | Description | +| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Start time and end time | Specify a start and end date and time for the report. | +| Start time and threshold | Specify a start date and time, and a threshold to determine the end time and date for the report. | +| Historical days and extrapolated days | Specify a start date for the report that is a number of days in the past, and an end date that is a number of days in the future. This option is useful for report templates that do not specify fixed dates. | +| Historical days and threshold | Specify a start date that is a number of days in the past, and end it when a threshold value is reached. | + +After specifying the type of time period for the report, select from other options in the `Time Period` box to refine the time period: + +- Use the date and time selectors next to the `Start time` field to specify the starting date and time of the sampling period, or select the number of `Historical day(s)` of data to include in the report. By default, Capacity Manager will select a start time that is one week prior to the current date and time. The date and time specified in the `Start time` field must not be later than the current date/time. +- Use the date and time selectors next to the `End time` field to specify an end boundary for the report, or select the number of `Extrapolated day(s)` of data to include in the report. The end boundary can be either a time, a number of days in the future, or the point at which a selected metric reaches a user-specified threshold value. The time specified in the `End time` field must be later than the time specified in the `Start time` field. + +> Note that if you select an end date and time in the future, Capacity Manager will use historical usage information to extrapolate anticipated future usage. Since the projected usage is based on the sampling of historical data, the accuracy of the future usage trend will improve with a longer sampling period. +> +> To specify a threshold value, use the drop-down listbox in the `Threshold` field to select a metric (from the metrics specified on the `Metrics` tab), an operator (`Exceeds` or `Falls below`), and to enter a target value for the metric. If you choose to define the end of the report using a threshold, the Capacity Manager report will terminate when the value for the selected metric exceeds or falls below the specified value. +> +> **Please Note:** If you specify a starting boundary that is later than the ending boundary for the report, the status bar will display an error informing you that you must enter a valid time. + +The cm_max_end_date_in_years <pem_config_options> configuration parameter defines a default time value for the end boundary of Capacity Manager reports. If you specify a threshold value as the end boundary of a report, and the anticipated usage of the boundary is not met before the maximum time has passed (as specified in the `cm_max_date_in_years` parameter), the report will terminate at the time specified by the `cm_max_date_in_years` parameter. By default, `cm_max_end_date_in_years` is 5; use the `` `Server Configuration `` dialog <pem_server_config> to modify the value of cm_max_end_date_in_years\`. + +**Please Note:** The PEM client will display time in the PEM client's timezone, rather than the timezone in which the PEM server resides. + +Use the fields in the `Report` box to specify the report type and destination. + +The radio buttons next to `Include on report` specify the type of report produced by Capacity Manager. Choose from: + +> - Select `Graph` to instruct Capacity Manager to display the report in the form of a line graph in the PEM client window. +> - Select `Table of data` to instruct Capacity Manager to display a table containing the report data in the PEM client window. +> - Select `Graph and table of data` to instruct Capacity Manager to display both a line graph and a data table in the PEM client window. + +Use the `Report destination` radio buttons to instruct Capacity Manager where to display or save the report: + +> - Select `New tab` to instruct Capacity Manager to display the report on a new tab in the PEM client. You must select `New tab` to display the first generation of a Capacity Manager report; for subsequent reports, you may select `Previous` tab. +> - Select `Previous` tab to instruct Capacity Manager to re-use a previously opened tab when displaying the report. +> - Select `Download the report as a file` and specify a file name to instruct Capacity Manager to write the report to the specified file. + +Reports saved to file are stored in HTML format. You can review Capacity Manager reports with any web browser that supports Scalable Vector Graphics (SVG). Browsers that do not support SVG will be unable to display Capacity Manager graphs and may include unwanted characters. + +When you have specified the report boundaries and selected the type and destination of the Capacity Manager report, click the `Generate` button to create the report. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/08_capacity_manager/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/08_capacity_manager/index.mdx new file mode 100644 index 00000000000..1e0f7ab6546 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/08_capacity_manager/index.mdx @@ -0,0 +1,170 @@ +--- +title: "Capacity Manager" +--- + + + +PEM's Capacity Manager analyzes collected statistics (metrics) to generate a graph or table that displays the historical usage statistics of an object, and can project the anticipated usage statistics for an object. You can configure Capacity Manager to collect and analyze metrics for a specific: + +- Host/operating system +- EDB Postgres Advanced Server or PostgreSQL server +- Database +- Database object (table, index, function etc). + +You can tailor the content of the Capacity Manager report by choosing a specific metric (or metrics) to include in the report, the time range over which the metrics were gathered, and a high or low threshold for the metrics analyzed. You can also specify a start and end date for the Capacity Manager report. If the end date of the report specifies a time in the future, Capacity Manager will analyze the `historical` usage of the selected object to extrapolate the `projected` object usage in the future. + +To open Capacity Manager, select the `Capacity Manager...` option from the `Management` menu in the PEM client window; the `Capacity Manager` wizard opens, displaying a tree control on the `Metrics` tab. + +![Capacity Manager dialog](../../images/capacity_manager_opens.png) + +Expand the tree control on the [Metrics](01_capacity_manager_metrics/#capacity_manager_metrics) tab to select the metrics that will be included in the Capacity Manager report. + +When defining report options, you can specify an `aggregation` method for each selected metric. The aggregation method determines how Capacity Manager will analyze the data points within the sampling period to reduce the data to a more visually meaningful quantity within a report (if required). The aggregation method can instruct Capacity Manager to compute an average of the data within a time period, the high or low value, or the first sampled value. + +Use the [Options](02_capacity_manager_options/#capacity_manager_options) tab to specify additional report details. + +When defining the boundaries of a Capacity Manager report, specify the starting date and time, and an end boundary. The end boundary can be a point in time or a threshold boundary (when the data meets a specified criteria). If the sample contains more data points than the number of points specified by the cm_data_points_per_report <pem_config_options> configuration parameter, Capacity Manager applies the aggregation method to calculate a reduced number of graph points for the report. + +## Report Templates + +You can save a report definition as a template for future reports. Capacity Manager report templates may be accessed by all PEM users. To save a report definition as a template: + +1. Use the `Metrics` and `Options` tabs to define your report. +2. Click the `Save` button to open the `Save Template` dialog. +3. Provide a report name in the Title field, select a location to store the template in the tree control. +4. Click `OK`. + +When creating a report, you can use the `Load Template` button to browse and open an existing template. Once opened, the report definition may be modified if required, and optionally saved again, either as a new template, or overwriting the original template. Use the `Manage Templates` button open a dialog that allows you to rename or remove unwanted templates. + +## Available Metrics + +Please Note that the available metrics will vary by platform, and are subject to change. The available metrics may include the metrics described in the table below: + +| Metric Name | Description | +| ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| # Dead Tuples | The number of dead tuples in the selected table. | +| # Dead Tuples+ | The cumulative number of dead tuples in the selected table. | +| # Heap Tuples Fetched by Index Scans | The number of heap tuples fetched by index scans. | +| # Heap Tuples Fetched by Index Scans+ | The cumulative number of heap tuples fetched by index scans. | +| # Idle Backends+ | The cumulative number of currently idle backend clients. | +| # Index Scans | The number of index scans performed on the specified object. | +| # Index Scans+ | The cumulative number of index scans performed on the specified object. | +| # Index Tuples Read | The number of index tuples read. | +| # Index Tuples Read+ | The cumulative number of index tuples read. | +| # Live Tuples | The number of tuples visible to transactions. | +| # Live Tuples+ | The cumulative number of tuples visible to transactions. | +| # Pages Estimated by ANALYZE | The number of pages estimated by ANALYZE. | +| # Pages Estimated by ANALYZE+ | The cumulative number of pages estimated by ANALYZE. | +| # Sequential Scans | The number of sequential scans performed on the specific table. | +| # Sequential Scans+ | The cumulative number of sequential scans performed on the specific table. | +| # Sequential Scan Tuples | The number of tuples sequentially scanned in the specific table. | +| # Sequential Scan Tuples+ | The cumulative number of tuples sequentially scanned in the specific table. | +| # Tuples Deleted | The number of tuples deleted. | +| # Tuples Deleted+ | The cumulative number of tuples deleted. | +| # Tuples Estimated by ANALYZE | The number of live (visible) tuples estimated by ANALYZE. | +| # Tuples Estimated by ANALYZE+ | The cumulative number of live tuples estimated by ANALYZE. | +| # Tuples HOT Updated | The number of tuples HOT updated. In a HOT update, the new tuple resides in the same block as the original tuple and the tuples share an index entry. | +| # Tuples HOT Updated+ | The cumulative number of tuples HOT updated. | +| # Tuples Inserted | The number of tuples inserted into the specified table. | +| # Tuples Inserted+ | The cumulative number of tuples inserted into the specified table. | +| # Tuples Updated | The number of tuples updated in the selected table. | +| # Tuples Updated+ | The cumulative number of tuples updated in the selected table. | +| Blocks Hit | The number of blocks found in the cache. | +| Blocks Hit+ | The cumulative number of blocks found in the cache. | +| Blocks Read | The number of blocks read. | +| Blocks Read+ | The cumulative number of blocks read. | +| Blocks Read from InfiniteCache | The number of blocks read from InfiniteCache. | +| Blocks Read from InfiniteCache+ | The cumulative number of blocks read from InfiniteCache. | +| Blocks Written | The number of blocks written. | +| Blocks Written+ | The cumulative number of blocks written. | +| Buffers Allocated | The number of buffers allocated. | +| Buffers Allocated+ | The cumulative number of buffers allocated. | +| Buffers Written - Backends | The number of buffer blocks written to disk by server processes (processes connected to a client application). | +| Buffers Written - Backends+ | The cumulative number of buffer blocks written to disk by server processes. | +| Buffers Written - Checkpoint | The number of blocks written to disk by the checkpoint process. | +| Buffers Written - Checkpoint+ | The cumulative number of blocks written to disk by the checkpoint process. | +| Buffers Written - Cleaning Scan | The number of blocks written to disk by the autovacuum process. | +| Buffers Written - Cleaning Scan+ | The cumulative number of blocks written to disk by the autovacuum process. | +| Bytes Received (KB) | The number of bytes received from the client (in kilobytes). | +| Bytes Received (KB)+ | The cumulative number of bytes received (in kilobytes). | +| Bytes Sent (KB) | The number of bytes sent to the client (in kilobytes). | +| Bytes Sent (KB)+ | The cumulative number of bytes sent (in kilobytes). | +| Checkpoints - Timed | The number of checkpoint operations triggered by the checkpoint interval. | +| Checkpoints - Timed+ | The cumulative number of checkpoint operations triggered by the checkpoint interval. | +| Checkpoints - Untimed | The number of checkpoint operations triggered by checkpoint size. | +| Checkpoints - Untimed+ | The cumulative number of checkpoint operations triggered by checkpoint size. | +| Database Size (MB) | The size of the specified database (in megabytes). | +| Free RAM Memory | The amount of free RAM memory (in megabytes). | +| Free Swap Memory | The amount of free swap space on disk (in megabytes). | +| Heap Blocks Hit | The number of heap blocks found in the cache. | +| Heap Blocks Hit+ | The cumulative number of heap blocks found in the cache. | +| Heap Blocks Read | The number of heap blocks read. | +| Heap Blocks Read+ | The cumulative number of heap blocks read. | +| Index Blocks Hit | The number of index blocks found in the cache. | +| Index Blocks Hit+ | The cumulative number of index blocks found in the cache. | +| Index Blocks Read | The number of index blocks read. | +| Index Blocks Read+ | The cumulative number of index blocks read. | +| Index Size (MB) | The size of the specified index (in megabytes). | +| In Packets Discards | The number of inbound packets discarded. | +| In Packets Discards+ | The cumulative number of inbound packets discarded. | +| In Packets Errors | The number of inbound packets that contain errors. | +| In Packets Errors+ | The cumulative number of inbound packets that contain errors. | +| Link Bandwidth (Mbit/s) | The speed of the network adapter (in megabits per second). | +| Load Average - 15 Minute | CPU saturation (in percent) - 15 minute sampling average. | +| Load Average - 1 Minute | CPU saturation (in percent) - 1 minute sampling average. | +| Load Average - 5 Minute | CPU saturation (in percent) - 5 minute sampling average. | +| Load Percentage | CPU saturation in percent. | +| Number of Prepared Transactions+ | The cumulative number of prepared transactions. | +| Number of WAL Files+ | The cumulative number of write-ahead log files. | +| Out Packets Discards | The number of outbound packets discarded. | +| Out Packets Discards+ | The cumulative number of outbound packets discarded. | +| Out Packets Errors | The number of outbound packets that contain errors. | +| Out Packets Errors+ | The cumulative number of outbound packets that contain errors. | +| Packets Received | The number of packets received. | +| Packets Received+ | The cumulative number of packets received. | +| Packets Sent | The number of packets sent. | +| Packets Sent+ | The cumulative number of packets sent. | +| Size (MB) | The total size of the disk (in megabytes). | +| Size of Indexes (MB) | The size of indexes on the specified table (in megabytes). | +| Space Available (MB) | The current disk space available (in megabytes). | +| Space Used (MB) | The current disk space used (in megabytes). | +| Table Size (MB) | The size of the specified table (in megabytes). | +| Tablespace Size (MB) | The size of the specified tablespace (in megabytes). | +| Temp Buffers (MB) | The size of temporary buffers (in megabytes). | +| Toast Blocks Hit | The number of TOAST blocks found in the cache. | +| Toast Blocks Hit+ | The cumulative number of TOAST blocks found in the cache. | +| Toast Blocks Read | The number of TOAST blocks read. | +| Toast Blocks Read+ | The cumulative number of TOAST blocks read. | +| Total RAM Memory | The total amount of RAM memory on the system (in megabytes). | +| Total Swap Memory | The total amount of swap space on the system (in megabytes). | +| Total Table Size w/Indexes and Toast | The total size of the specified table (including indexes and associated oversized attributes). | +| Transactions Aborted | The number of aborted transactions. | +| Transactions Aborted+ | The cumulative number of aborted transactions. | +| Transactions Committed | The number of committed transactions. | +| Transactions Committed+ | The cumulative number of committed transactions. | +| Tuples Deleted | The number of tuples deleted from the specified table. | +| Tuples Deleted+ | The cumulative number of tuples deleted from the specified table. | +| Tuples Estimated by ANALYZE | The number of visible tuples in the specified table. | +| Tuples Estimated by ANALYZE+ | The cumulative number of visible tuples in the specified table. | +| Tuples Fetched | The number of tuples fetched from the specified table. | +| Tuples Fetched+ | The cumulative number of tuples fetched from the specified table. | +| Tuples HOT Updated | The number of tuples HOT updated. In a HOT update, the new tuple resides in the same block as the original tuple and the tuples share an index entry. | +| Tuples HOT Updated+ | The cumulative number of tuples HOT updated. In a HOT update, the new tuple resides in the same block as the original tuple and the tuples share an index entry. | +| Tuples Inserted | The number of tuples inserted into the specified table. | +| Tuples Inserted+ | The cumulative number of tuples inserted into the specified table. | +| Tuples Returned | The number of tuples returned in result sets. | +| Tuples Returned+ | The cumulative number of tuples returned in result sets. | +| Tuples Updated | The number of tuples updated in the specified table. | +| Tuples Updated+ | The cumulative number of tuples updated in the specified table. | +| WAL Segment Size (MB) | The segment size of the write-ahead log (in megabytes). | + +!!! Note + The '+' following the name of a metric signifies that the data for the metric is gathered cumulatively; those metrics that are not followed by the '+' sign are collected as a 'point-in-time' value. + +Contents: + +
+ +capacity_manager_metrics capacity_manager_options + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/01_pem_alerting_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/01_pem_alerting_dialog.mdx new file mode 100644 index 00000000000..0b0490872d5 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/01_pem_alerting_dialog.mdx @@ -0,0 +1,206 @@ +--- +title: "Creating and Managing Alerts" +--- + + + +Use options accessed through the `Manage Alerts` tab to create, copy, or modify an alert. To open the `Manage Alerts` tab, select `Manage Alerts...` from the PEM client's `Management` menu. + +![Manage Alerts](../../images/alerting_manage_alerts.png) + +Use the `Quick Links` toolbar to open dialogs and tabs that you can use to manage alerts and alerting behavior: + +> - Select `Copy Alerts` to open the [Copy Alert Configuration](02_pem_alert_copy/#pem_alert_copy) dialog and copy an alert definition. +> - Select `Alert Templates` to open the [Alert Template](04_pem_custom_alert_templates/#pem_custom_alert_templates) tab, and create or modify an alert template. +> - Select `Email Groups` to open the [Email Groups](05_pem_email_groups/#pem_email_groups) tab, and manage or create an email group. +> - Select `Webhooks` to open the [Webhooks](06_pem_webhooks/#pem_webhooks) tab, and manage or create a webhook endpoint. +> - Select `Server Configuration` to open the [server configuration](../02_pem_server_config/#pem_server_config) dialog and review or modify server configuration settings. +> - Select `Help` to open the PEM online help. + +The `Alerts` table displays the alerts that are defined for the item currently highlighted in the PEM client tree control. You can use the `Alerts` table to modify an existing alert, or to create a new alert. + +## Creating a New Alert + +To open the alert definition dialog and create a new alert, click the `Add` icon (+) in the upper-right corner of the table. + +![Create New Alert - General tab](../../images/alerting_define_new_alert.png) + +Use the fields on the `General` tab to provide information about the alert: + +- Enter the name of the alert in the `Name` field. +- Use the drop-down listbox in the `Template` field to select a template for the alert. An alert template is a function that uses one (or more) metrics or parameters to generate a value to which PEM compares user-specified alert boundaries. If the value returned by the template function evaluates to a value that is within the boundary of a user-defined alert (as specified by the `Operator` and `Threshold values` fields), PEM raises an alert, adds a notice to the `Alerts overview` display, and performs any actions specified on the template. +- Use the `Enable?` switch to specify if the alert is enabled (`Yes`) or disabled (`No`). +- Use the controls in the `Interval` box to specify how often the alert should confirm if the alert conditions are satisfied. Use the `Minutes` selector to specify an interval value. Use the `Default` switch to set or reset the `Minutes` value to the default (recommended) value for the selected template. +- Use controls in the `History retention` box to specify the number of days that PEM will store data collected by the alert. Use the `Days` selector to specify the number of days that the data will be stored. Use the `Default` switch to set or reset the `Days` value to the default value (30 days). +- Use controls in the `Threshold values` box to define the triggering criteria for the alert. When the value specified in the `Threshold Values` fields evaluates to greater-than or less-than the system value (as specified with the `Operator`), PEM will raise a `Low`, `Medium` or `High` level alert: + +> - Use the `Operator` drop-down listbox to select the operator that PEM will use when evaluating the current system values. +> - Select a greater-than sign (>) to indicate that the alert should be triggered when the system values are greater than the values entered in the `Threshold values` fields. +> - Select a less-than sign (<) to indicate that the alert should be triggered when the system values are less than the values entered in the `Threshold values` fields. +> - Use the threshold fields to specify the values that PEM will compare to the system values to determine if an alert should be raised. Please note that you must specify values for all three thresholds (`Low`, `Medium`, and `High`): +> - Enter a value that will trigger a low-severity alert in the `Low` field. +> - Enter a value that will trigger a medium-severity alert in the `Medium` field. +> - Enter a value that will trigger a high-severity alert in the `High` field. + +The `Parameter Options` table contains a list of parameters that are required by the selected template; the table displays both pre-defined parameters, and parameters for which you must specify a value. Please note that you must specify a value for any parameter that displays a prompt in the `Value` column. + +Use the `Notification` tab to specify how PEM will behave if an alert is raised. + +![Create New Alert - Notification - Email tab](../../images/alerting_define_notification.png) + +PEM can send a notification or execute a script if an alert is triggered, or if an alert is cleared. + +Use the fields in the `Email` tab to specify the email group that will receive an email notification if the alert is triggered at the specified level. Use the [Email Groups](05_pem_email_groups/#pem_email_groups) tab to create an email group that contains the address of the user or users that will be notified when an alert is triggered. To access the `Email Groups` tab, click the `Email Groups` icon located in the `Quick Links` menu of the `Manage Alerts` tab. + +To instruct PEM to send an email when a specific alert level is reached, set the slider next to an alert level to `Yes`, and use the drop-down listbox to select the pre-defined user or group that will be notified. + +Please note that you must [configure the PEM Server](../02_pem_server_config/#pem_server_config) to use an SMTP server to deliver email before PEM can send email notifications. + +![Create New Alert - Notification - Webhook tab](../../images/alerting_define_notification_webhook.png) + +Use the fields in the `Webhook` tab to specify the webhook endpoints that will receive a notification if the alert is triggered at the specified level. Use the [Webhooks](06_pem_webhooks/#pem_webhooks) tab to create an endpoint that contains the details of URL that will be notified when an alert is triggered along with other details like payload. To access the `Webhooks` tab, click the `Webhooks` icon located in `Quick Links` menu of the `Manage Alerts` tab. + +By default `Webhook` notifications will be sent to created endpoints according to their default settings. To disable the `Webhook` set the slider next to `Enable` field to `No`. + +Also to override default settings set the slider next to `Override default configuration?` to `Yes`, and use the drop-down listbox to select the pre-defined endpoints. + +![Create New Alert - Notification - SNMP tab](../../images/alerting_define_notification_snmp.png) + +Use the `Trap notification` options to configure trap notifications for this alert: + +- Set the `Send trap` slider to `Yes` to send SNMP trap notifications when the state of this alert changes. +- Set the `SNMP Ver` to `v1`, `v2`, or `v3` to identify the SNMP version. +- Use the `Low alert`, `Med alert` and `High alert` sliders to select the level(s) of alert that will trigger the trap. For example, if you set the slider next to `High alert` to `Yes`, PEM will send a notification when an alert with a high severity level is triggered. + +Please note that you must [configure the PEM Server](../02_pem_server_config/#pem_server_config) to send notifications to an SNMP trap/notification receiver before notifications can be sent. For sending SNMP v3 traps, pemAgent will use 'User Security Model(USM)' which is in charge of authenticating, encrypting, and decrypting SNMP packets. + +Also note while sending SNMP v3 traps, agent will create snmp_boot_counter file. This file will get created in location mentioned by batch_script_dir parameter in agent.cfg, if this parameter is not configured or if directory is not accessible due to authentication restrictions then in operating systems temporary directory, if that is also not possible then in user’s home directory. + +Please see How SNMP traps are formed? <snmp_trap_details> + +![Create New Alert - Notification - Nagios tab](../../images/alerting_define_notification_nagios.png) + +Use the field in the `Nagios notification` box to instruct the PEM server to notify Nagios network-alerting software when the alert is triggered or cleared. For detailed information about configuring and using Nagios with PEM, please see [Using PEM with Nagios](09_using_pem_with_nagios/#using_pem_with_nagios). + +- Set the `Submit passive service check result to Nagios` switch to `Yes` to instruct the PEM server to notify Nagios when the alert is triggered or cleared. + +![Create New Alert - Script Execution tab](../../images/alerting_define_script_execution.png) + +Use the fields in the `Script execution` tab to (optionally) define a script that will be executed if an alert is triggered, and to specify details about the script execution. + +- Set the `Execute script` slider to `Yes` to instruct PEM to execute the provided script if an alert is triggered. +- Set the `Execute on alert cleared` slider to `Yes` to instruct PEM to execute the provided script when the situation that triggered the alert has been resolved. +- Use the radio buttons next to `Execute script on` to indicate that the script should execute on the `PEM Server` or the `Monitored Server`. +- Provide the script that PEM should execute in the `Code` field. You can provide a batch/shell script, or SQL code. Within the script, you can use placeholders for the following: + - `%AlertID%` - this placeholder will be replaced with the id of the triggered alert. + - `%AlertName%` - this placeholder will be replaced with the name of the triggered alert. + - `%ObjectName%` - this placeholder will be replaced with the name of the server or agent on which the alert was triggered. + - `%ObjectType%` - this placeholder will be replaced with the type of the object on which the alert was triggered. + - `%ThresholdValue%` - this placeholder will be replaced with the threshold value reached by the metric when the alert triggered. + - `%CurrentValue%` - this placeholder will be replaced with the current value of the metric that triggered the alert. + - `%CurrentState%` - this placeholder will be replaced with the current state of the alert. + - `%OldState%` - this placeholder will be replaced with the previous state of the alert. + - `%AlertRaisedTime%` - this placeholder will be replaced with the time that the alert was raised, or the most recent time that the alert state was changed. + - `%AgentID%` - this placeholder will be replaced with the id of the agent by which alert was generated. + - `%AgentName%` - this placeholder will be replaced with the name of the agent by which alert was generated. + - `%ServerID%` - this placeholder will be replaced with the id of the server on which alert was generated. + - `%ServerName%` - this placeholder will be replaced with the name of the server on which alert was generated. + - `%ServerIP%` - this placeholder will be replaced with the IP or address of the server on which alert was generated. + - `%ServerPort%` - this placeholder will be replaced with the port of the server on which alert was generated. + - `%DatabaseName%` - this placeholder will be replaced with the name of the database on which alert was generated. + - `%SchemaName%` - this placeholder will be replaced with the name of the schema on which alert was generated. + - `%PackageName%` - this placeholder will be replaced with the name of the package on which alert was generated. + - `%DatabaseObjectName%` - this placeholder will be replaced with the name of the database object on which alert was generated. + - `%Parameters%` - this placeholder will be replaced with the list of custom parameters used to generate the alert. + - `%AlertInfo%` - this placeholder will be replaced with the detailed database object level information of the alert. + +When you have defined the alert attributes, click the edit icon to close the alert definition editor, and then the save icon (in the upper-right corner of the `Alerts` table). To discard your changes, click the refresh icon; a popup will ask you to confirm that you wish to discard the changes. + +
+ +
+ +Note + +
+ +Suppose you need to use the alert configuration placeholder values in an external script. You can do it either by passing them as the command-line arguments or exporting them as environment variables. Please note that the external script must have proper execution permissions. + +- You can run the script with any of the placeholders as command-line argument. + + For eg: + + > ```bash + > #!/bin/bash + > + > bash /script.sh "%AlertName% %AlertLevel% %AlertDetails%" + > ``` + +- You can define the environment variables for any of the placeholders and then use those environment variables in the script. + + For eg: + + > ```bash + > #!/bin/bash + > + > export AlertName=%AlertName% + > export AlertState=%AlertState% + > + > bash /script.sh + > ``` + +
+ +## Modifying an Existing Alert + +Use the `Alerts` table to manage an existing alert or create a new alert. Highlight an object in the PEM client tree control to view the alerts that monitor that object. + +![Manage Alerts table](../../images/alerting_manage_alerts_table.png) + +You can modify some properties of an existing alert in the `Alerts` table: + +> - The `Name` column displays the name of the alert; to change the alert name, simply replace the name in the table, and click the save icon. +> - The `Auto created?` column indicates if the alert definition was automatically created; `Yes` indicates that the alert was created by PEM, and `No` indicates that the alert was manually created. +> - The `Template` column displays the name of the alert template that specifies properties used by the alert. You can use the drop-down listbox to change the alert template associated with an alert. +> - Use the `Enable?` switch to specify if an alert is enabled (Yes) or disabled (No). +> - Use the `Interval` column to specify how often PEM should check to see if the alert conditions are satisfied. Set the `Default` switch to `No` and specify an alternate value (in `Minutes`), or return the `Default` switch to `Yes` to reset the value to its default setting. By default, PEM will check the status of each alert once every minute. +> - Use the `History retention` field to specify the number of days that PEM will store data collected by the alert. Set the `Default` switch to `No` and specify an alternate value (in `Days`), or return the `Default` switch to `Yes` to reset the value to its default setting. By default, PEM will recommend storing historical data for 30 days. + +Click the `Edit` icon to the left of an alert name to open the `Alert details` editor and access the complete alert definition. After modifying an alert in the editor, click the `Save` button to make your changes persistent. + +## Deleting an Alert + +To mark an alert for deletion, highlight the alert name in the `Alerts` table and click the delete icon to the left of the name; the alert will remain in the list, but in red strike-through font. + +![Delete existing alerts](../../images/alerting_manage_alerts_delete.png) + +The delete icon acts as a toggle; you can undo the deletion by clicking the delete icon a second time; when you click the Save icon, the alert definition will be permanently deleted. + +## Example + +The screen shown below defines an alert (named System Usage High) that monitors the committed transactions on the system: + +![Create New Alert - General Tab - Example](../../images/alerting_example_general.png) + +To re-create this example, highlight the name of a PEM Agent in the tree-control, and select `Manage Alerts...` from the PEM client `Management` menu. When the `Manage Alerts` tab opens, click the add icon (+) in the upper-right hand corner of the `Alerts` table to open the alert editor. + +Fields on the `General` tab instruct PEM to use the Disk busy percentage template to create the alert. The PEM server will check the free memory available once every minute, and: + +- Trigger a low-severity alert if the free memory available drops below 20% +- Trigger a medium-severity alert if the free memory available drops below 10% +- Trigger a high-severity alert if the free memory available drops below 5% + +![Create New Alert - Notification Tab - Example](../../images/alerting_example_notification.png) + +![Create New Alert - Script Execution Tab - Example](../../images/alerting_example_script_execution.png) + +Fields on the `Notifications` tab instruct PEM to: + +- Send an email notification to the `administrator` email group. +- Submit a passive service check result to Nagios. +- Execute the script shown in the `Code` field when the alert is triggered. + +> - To invoke a script on a Linux system, you must modify the entry for `batch_script_user` parameter of agent.cfg file and specify the user that should be used to run the script. You can either specify a non-root user or root for this parameter. If you do not specify a user, or the specified user does not exist, then the script will not be executed. Restart the agent after modifying the file. If pemagent is being run by a non-root user then the value of `batch_script_user` will be ignored and the script will be executed by the same non-root user that is being used for running the pemagent. +> - To invoke a script on a Windows system, set the registry entry for `AllowBatchJobSteps` to true and restart the PEM agent. PEM registry entries are located in HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\EnterpriseDB\\PEM\\agent. + +Click the edit icon to close the editor and add the example to the `Alert List`; click the save icon before closing the `Manage Alerts` tab to save your work. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/02_pem_alert_copy.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/02_pem_alert_copy.mdx new file mode 100644 index 00000000000..5a19e5f0ac4 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/02_pem_alert_copy.mdx @@ -0,0 +1,19 @@ +--- +title: "Copy Alerts" +--- + + + +To speed up the deployment of alerts in the PEM system, you can copy alert definitions from one object to one or more target objects. + +To copy alerts from an object, highlight the object name (from which you will copy alerts) in the PEM client tree control, and select the `Manage Alerts...` option from the `Management` menu. When the `Manage Alerts` tab opens, click the `Copy Alerts` icon (located on the `Quick Links` toolbar) to open the `Copy Alert Configuration` dialog. + +![Alert Copy dialog](../../images/alert_copy.png) + +The `Copy Alert Configuration` dialog copies all alerts from the object highlighted in the PEM client tree control to the object or objects selected on the dialog. Expand the tree control to select a node or nodes to specify the target object(s). Please note that the tree control displays a red warning indicator next to the source object. + +To copy alerts to multiple objects at once, select a parent node of the targets. For example, to copy the alerts from one table to all tables in a schema, you can simply select the checkbox next to the schema name. PEM will only copy alerts to targets that are of the same type as the source object. + +Check the `Ignore duplicates` radio button to prevent PEM from updating any existing alerts on the target objects with the same name as those being copied. Check the `Replace duplicates` radio button to replace existing alerts with alerts of the same name from the source object. + +Click the `Configure Alerts` button to proceed to copy the alerts from the source object to all objects of the same type in, or below those objects selected on the `Copy Alert Configuration` dialog. When the copy is complete, a popup will notify you that the alerts have been copied to the selected target(s). diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/03_pem_alert_templates.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/03_pem_alert_templates.mdx new file mode 100644 index 00000000000..4f3cb9bbeee --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/03_pem_alert_templates.mdx @@ -0,0 +1,272 @@ +--- +title: "Alert Templates" +--- + + + +An alert definition contains a system-defined or user-defined set of conditions that PEM compares to the system statistics; if the statistics deviate from the boundaries specified for that statistic, the alert triggers, and the PEM client displays a warning on the `Alerts Overview` page, and optionally sends a notification to a monitoring user. + +The table below lists the system-defined alert templates that you can use to create an alert; please note that this list is subject to change, and may vary by system. + +Within the table, the alerts are sorted by the target of the alert. The `Template Name` and `Description` columns identify and describe the behavior of the template. If the template `Details` column specifies `Yes`, metrics returned by the alert and alert parameters (if applicable) are accessible in the `Alerts table` on the `Global Overview` or `Alerts` dashboards: + +## Templates applicable on Agent + +| Template Name | Description | Details | +| ---------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------- | +| Load Average (1 minute) | 1-minute system load average. | | +| Load Average (5 minutes) | 5-minute system load average. | | +| Load Average (15 minutes) | 15-minute system load average. | | +| Load Average per CPU Core (1 minutes) | 1-minute system load average per CPU core. | | +| Load Average per CPU Core (5 minutes) | 5-minute system load average per CPU core. | | +| Load Average per CPU Core (15 minutes) | 15-minute system load average per CPU core. | | +| CPU utilization | Average CPU consumption. | | +| Number of CPUs running higher than a threshold | Number of CPUs running at greater than K% utilization. | Yes | +| Free memory percentage | Free memory as a percent of total system memory. | | +| Memory used percentage | Percentage of memory used. | | +| Swap consumption | Swap space consumed (in megabytes). | | +| Swap consumption percentage | Percentage of swap area consumed. | | +| Disk Consumption | Disk space consumed (in megabytes). | | +| Disk consumption percentage | Percentage of disk consumed. | | +| Disk Available | Disk space available (in megabytes). | | +| Disk busy percentage | Percentage of disk busy. | | +| Most used disk percentage | Percentage used of the most utilized disk on the system. | Yes | +| Total table bloat on host | The total space wasted by tables on a host, in MB. | | +| Highest table bloat on host | The most space wasted by a table on a host, in MB. | | +| Average table bloat on host | The average space wasted by tables on host, in MB. | | +| Table size on host | The size of tables on host, in MB. | | +| Database size on host | The size of databases on host, in MB. | | +| Number of ERRORS in the logfile on agent N in last X hours | The number of ERRORS in the logfile on agent N in last X hours. | | +| Number of WARNINGS in the logfile on agent N in last X hours | The number of WARNINGS in the logfile on agent N in last X hours. | | +| Number of WARNINGS or ERRORS in the logfile on agent N in last X hours | The number of WARNINGS or ERRORS in the logfile on agent N in last X hours. | | +| Package version mismatch | Check for package version mismatch as per catalog. | Yes | +| Total materialized view bloat on host | The total space wasted by materialized views on a host, in MB. | | +| Highest materialized view bloat on host | The most space wasted by a materialized view on a host, in MB. | | +| Average materialized view bloat on host | The average space wasted by materialized views on host, in MB. | | +| Materialized view size on host | The size of materialized views on host, in MB. | | +| Agent Down | Specified agent is currently down. | | + +## Templates applicable on Server + +| Template Name | Description | Details | +| --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------- | +| Total table bloat in server | The total space wasted by tables in server, in MB. | | +| Largest table (by multiple of unbloated size) | Largest table in server, calculated as a multiple of its own estimated unbloated size; exclude tables smaller than N MB. | | +| Highest table bloat in server | The most space wasted by a table in server, in MB. | Yes | +| Average table bloat in server | The average space wasted by tables in server, in MB. | | +| Table size in server | The size of tables in server, in MB. | Yes | +| Database size in server | The size of databases in server, in MB. | Yes | +| Number of WAL files | Total number of Write Ahead Log files. | | +| Number of prepared transactions | Number of transactions in prepared state. | | +| Total connections | Total number of connections in the server. | Yes | +| Total connections as percentage of max_connections | Total number of connections in the server as a percentage of maximum connections allowed on server, settings. | | +| Unused, non-superuser connections | Number of unused, non-superuser connections on the server, user_info, settings. | | +| Unused, non-superuser connections as percentage of max_connections | Number of unused, non-superuser connections on the server as a percentage of max_connections, user_info, settings. | | +| Ungranted locks | Number of ungranted locks in server. | | +| Percentage of buffers written by backends | The percentage of buffers written by backends vs. the total buffers written. | | +| Percentage of buffers written by checkpoint | The percentage of buffers written by the checkpoints vs. the total buffers written. | | +| Buffers written per second | Number of buffers written per second, over the last two probe cycles. | | +| Buffers allocated per second | Number of buffers allocated per second, over the last two probe cycles. | | +| Connections in idle state | Number of connections in server that are in idle state. | Yes | +| Connections in idle-in-transaction state | Number of connections in server that are in idle-in-transaction state. | Yes | +| Connections in idle-in-transaction state,as percentage of max_connections | Number of connections in server that are in idle-in-transaction state, as a percentage of maximum connections allowed on server, settings | | +| Long-running idle connections | Number of connections in the server that have been idle for more than N seconds. | Yes | +| Long-running idle connections and idle transactions | Number of connections in the server that have been idle or idle-in-transaction for more than N seconds. | Yes | +| Long-running idle transactions | Number of connections in the server that have been idle in transaction for more than N seconds. | Yes | +| Long-running transactions | Number of transactions in server that have been running for more than N seconds. | Yes | +| Long-running queries | Number of queries in server that have been running for more than N seconds. It does not include the long running vacuum or auto vacuum queries. | Yes | +| Long-running vacuums | Number of vacuum operations in server that have been running for more than N seconds. | Yes | +| Long-running autovacuums | Number of autovacuum operations in server that have been running for more than N seconds. | Yes | +| Committed transactions percentage | Percentage of transactions in the server that committed vs. that rolled-back over last N minutes. | | +| Shared buffers hit percentage | Percentage of block read requests in the server that were satisfied by shared buffers, over last N minutes. | | +| Tuples inserted | Tuples inserted into server over last N minutes. | | +| InfiniteCache buffers hit percentage | Percentage of block read requests in the server that were satisfied by InfiniteCache, over last N minutes. | | +| Tuples fetched | Tuples fetched from server over last N minutes. | | +| Tuples returned | Tuples returned from server over last N minutes. | | +| Dead Tuples | Number of estimated dead tuples in server. | | +| Tuples updated | Tuples updated in server over last N minutes. | | +| Tuples deleted | Tuples deleted from server over last N minutes. | | +| Tuples hot updated | Tuples hot updated in server, over last N minutes. | | +| Sequential Scans | Number of full table scans in server, over last N minutes. | | +| Index Scans | Number of index scans in server, over last N minutes. | | +| Hot update percentage | Percentage of hot updates in the server over last N minutes. | | +| Live Tuples | Number of estimated live tuples in server. | | +| Dead tuples percentage | Percentage of estimated dead tuples in server. | | +| Last Vacuum | Hours since last vacuum on the server. | | +| Last AutoVacuum | Hours since last autovacuum on the server. | | +| Last Analyze | Hours since last analyze on the server. | | +| Last AutoAnalyze | Hours since last autoanalyze on the server. | | +| Percentage of buffers written by backends over last N minutes | The percentage of buffers written by backends vs. the total buffers written over last N minutes. | | +| Table Count | Total number of tables in server. | | +| Function Count | Total number of functions in server. | | +| Sequence Count | Total number of sequences in server. | | +| A user expires in N days | Number of days before a user's validity expires. | | +| Index size as a percentage of table size | Size of the indexes in server, as a percentage of their tables' size. | | +| Largest index by table-size percentage | Largest index in server, calculated as percentage of its table's size, oc_index, table_size. | | +| Number of ERRORS in the logfile on server M in the last X hours | The number of ERRORS in the logfile on server M in last X hours. | | +| Number of WARNINGS in the logfile on server M in the last X hours | The number of WARNINGS in logfile on server M in the last X hours. | | +| Number of WARNINGS or ERRORS in the logfile on server M in the last X hours | The number of WARNINGS or ERRORS in the logfile on server M in the last X hours. | | +| Number of attacks detected in the last N minutes | The number of SQL injection attacks occurred in the last N minutes. | | +| Number of attacks detected in the last N minutes by username | The number of SQL injection attacks occurred in the last N minutes by username. | | +| Number of replica servers lag behind the primary by write location | Streaming Replication: number of replica servers lag behind the primary by write location. | Yes | +| Number of replica servers lag behind the primary by flush location | Streaming Replication: number of replica servers lag behind the primary by flush location. | Yes | +| Number of replica servers lag behind the primary by replay location | Streaming Replication: number of replica servers lag behind the primary by replay location. | Yes | +| Replica server lag behind the primary by write location | Streaming Replication: replica server lag behind the primary by write location in MB. | Yes | +| Replica server lag behind the primary by flush location | Streaming Replication: replica server lag behind the primary by flush location in MB. | Yes | +| Replica server lag behind the primary by WAL pages | Streaming Replication: replica server lag behind the primary by WAL pages. | | +| Replica server lag behind the primary by WAL segments | Streaming Replication: replica server lag behind the primary by WAL segments. | | +| Replica server lag behind the primary by replay location | Streaming Replication: replica server lag behind the primary by replay location in MB. | Yes | +| Replica server lag behind the primary by size (MB) | Streaming Replication: replica server lag behind the primary by size in MB. | Yes | +| Total materialized view bloat in server | The total space wasted by materialized views in server, in MB. | | +| Largest materialized view (by multiple of unbloated size) | Largest materialized view in server, calculated as a multiple of its own estimated unbloated size; exclude materialized views smaller than N MB. | | +| Highest materialized view bloat in server | The most space wasted by a materialized view in server, in MB. | | +| Average materialized view bloat in server | The average space wasted by materialized views in server, in MB. | | +| Materialized view size in server | The size of materialized view in server, in MB. | | +| View Count | Total number of views in server. | | +| Materialized View Count | Total number of materialized views in server. | | +| Audit config mismatch | Check for audit config parameter mismatch | Yes | +| Server Down | Specified server is currently inaccessible. | | +| Number of WAL archives pending | Streaming Replication: number of WAL files pending to be replayed at replica. | | +| Number of minutes lag of replica server from primary server | Streaming Replication: number of minutes replica node is lagging behind the primary node. | | +| Log config mismatch | Check for log config parameter mismatch. | Yes | + +## Templates applicable on Database + +| Template Name | Description | Details | +| ------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | +| Total table bloat in database | The total space wasted by tables in database, in MB. | | +| Largest table (by multiple of unbloated size) | Largest table in database, calculated as a multiple of its own estimated unbloated size; exclude tables smaller than N MB. | | +| Highest table bloat in database | The most space wasted by a table in database, in MB. | | +| Average table bloat in database | The average space wasted by tables in database, in MB. | | +| Table size in database | The size of tables in database, in MB. | Yes | +| Database size | The size of the database, in MB. | | +| Total connections | Total number of connections in the database. | Yes | +| Total connections as percentage of max_connections | Total number of connections in the database as a percentage of maximum connections allowed on server, settings. | | +| Ungranted locks | Number of ungranted locks in database. | | +| Connections in idle state | Number of connections in database that are in idle state. | Yes | +| Connections in idle-in-transaction state | Number of connections in database that are in idle-in-transaction state. | Yes | +| Connections in idle-in-transaction state,as percentage of max_connections | Number of connections in database that are in idle-in-transaction state, as a percentage of maximum connections allowed on server, settings. | | +| Long-running idle connections | Number of connections in the database that have been idle for more than N seconds. | Yes | +| Long-running idle connections and idle transactions | Number of connections in the database that have been idle or idle-in-transaction for more than N seconds. | Yes | +| Long-running idle transactions | Number of connections in the database that have been idle in transaction for more than N seconds. | Yes | +| Long-running transactions | Number of transactions in database that have been running for more than N seconds. | Yes | +| Long-running queries | Number of queries in database that have been running for more than N seconds. It does not include the long running vacuum or auto vacuum queries. | Yes | +| Long-running vacuums | Number of vacuum operations in database that have been running for more than N seconds. | Yes | +| Long-running autovacuums | Number of autovacuum operations in database that have been running for more than N seconds. | Yes | +| Committed transactions percentage | Percentage of transactions in the database that committed vs. that rolled-back over last N minutes. | | +| Shared buffers hit percentage | Percentage of block read requests in the database that were satisfied by shared buffers, over last N minutes. | | +| InfiniteCache buffers hit percentage | Percentage of block read requests in the database that were satisfied by InfiniteCache, over last N minutes. | | +| Tuples fetched | Tuples fetched from database over last N minutes. | | +| Tuples returned | Tuples returned from database over last N minutes. | | +| Tuples inserted | Tuples inserted into database over last N minutes. | | +| Tuples updated | Tuples updated in database over last N minutes. | | +| Tuples deleted | Tuples deleted from database over last N minutes. | | +| Tuples hot updated | Tuples hot updated in database, over last N minutes. | | +| Sequential Scans | Number of full table scans in database, over last N minutes. | | +| Index Scans | Number of index scans in database, over last N minutes. | | +| Hot update percentage | Percentage of hot updates in the database over last N minutes. | | +| Live Tuples | Number of estimated live tuples in database. | | +| Dead Tuples | Number of estimated dead tuples in database. | | +| Dead tuples percentage | Percentage of estimated dead tuples in database. | | +| Last Vacuum | Hours since last vacuum on the database. | | +| Last AutoVacuum | Hours since last autovacuum on the database. | | +| Last Analyze | Hours since last analyze on the database. | | +| Last AutoAnalyze | Hours since last autoanalyze on the database. | | +| Table Count | Total number of tables in database. | | +| Function Count | Total number of functions in database. | | +| Sequence Count | Total number of sequences in database. | | +| Index size as a percentage of table size | Size of the indexes in database, as a percentage of their tables' size. | | +| Largest index by table-size percentage | Largest index in database, calculated as percentage of its table's size, oc_index, table_size | | +| Database Frozen XID | The age (in transactions before the current transaction) of the database's frozen transaction ID. | | +| Number of attacks detected in the last N minutes | The number of SQL injection attacks occurred in the last N minutes. | | +| Number of attacks detected in the last N minutes by username | The number of SQL injection attacks occurred in the last N minutes by username. | | +| Queries that have been cancelled due to dropped tablespaces | Streaming Replication: number of queries that have been cancelled due to dropped tablespaces. | | +| Queries that have been cancelled due to lock timeouts | Streaming Replication: number of queries that have been cancelled due to lock timeouts. | | +| Queries that have been cancelled due to old snapshots | Streaming Replication: number of queries that have been cancelled due to old snapshots. | | +| Queries that have been cancelled due to pinned buffers | Streaming Replication: number of queries that have been cancelled due to pinned buffers. | | +| Queries that have been cancelled due to deadlocks | Streaming Replication: number of queries that have been cancelled due to deadlocks. | | +| Total events lagging in all slony clusters | Slony Replication: total events lagging in all slony clusters. | Yes | +| Events lagging in one slony cluster | Slony Replication: events lagging in one slony cluster. | | +| Lag time (minutes) in one slony cluster | Slony Replication: lag time (minutes) in one slony cluster. | | +| Total rows lagging in xdb single primary replication | xDB Replication: Total rows lagging in xdb single primary replication | Yes | +| Total rows lagging in xdb multi primary replication | xDB Replication: Total rows lagging in xdb multi primary replication | Yes | +| Total materialized view bloat in database | The total space wasted by materialized views in database, in MB. | | +| Largest materialized view (by multiple of unbloated size) | Largest materialized view in database, calculated as a multiple of its own estimated unbloated size; exclude materialized views smaller than N MB. | | +| Highest materialized view bloat in database | The most space wasted by a materialized view in database, in MB. | | +| Average materialized view bloat in database | The average space wasted by materialized views in database, in MB. | | +| Materialized view size in database | The size of materialized view in database, in MB. | | +| View Count | Total number of views in database. | | +| Materialized View Count | Total number of materialized views in database. | | + +## Templates applicable on Schema + +| Template Name | Description | Details | +| --------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------- | +| Total table bloat in schema | The total space wasted by tables in schema, in MB. | Yes | +| Largest table (by multiple of unbloated size) | Largest table in schema, calculated as a multiple of its own estimated unbloated size; exclude tables smaller than N MB. | | +| Highest table bloat in schema | The most space wasted by a table in schema, in MB. | | +| Average table bloat in schema | The average space wasted by tables in schema, in MB. | | +| Table size in schema | The size of tables in schema, in MB. | Yes | +| Tuples inserted | Tuples inserted in schema over last N minutes. | | +| Tuples updated | Tuples updated in schema over last N minutes. | | +| Tuples deleted | Tuples deleted from schema over last N minutes. | | +| Tuples hot updated | Tuples hot updated in schema, over last N minutes. | | +| Sequential Scans | Number of full table scans in schema, over last N minutes. | | +| Index Scans | Number of index scans in schema, over last N minutes. | | +| Hot update percentage | Percentage of hot updates in the schema over last N minutes. | | +| Live Tuples | Number of estimated live tuples in schema. | | +| Dead Tuples | Number of estimated dead tuples in schema. | | +| Dead tuples percentage | Percentage of estimated dead tuples in schema. | | +| Last Vacuum | Hours since last vacuum on the schema. | | +| Last AutoVacuum | Hours since last autovacuum on the schema. | | +| Last Analyze | Hours since last analyze on the schema. | | +| Last AutoAnalyze | Hours since last autoanalyze on the schema. | | +| Table Count | Total number of tables in schema. | | +| Function Count | Total number of functions in schema. | | +| Sequence Count | Total number of sequences in schema. | | +| Index size as a percentage of table size | Size of the indexes in schema, as a percentage of their table's size. | | +| Largest index by table-size percentage | Largest index in schema, calculated as percentage of its table's size, oc_index, table_size | | +| Materialized View bloat | Space wasted by the materialized view, in MB. | | +| Total materialized view bloat in schema | The total space wasted by materialized views in schema, in MB. | | +| Materialized view size as a multiple of ubloated size | Size of the materialized view as a multiple of estimated unbloated size. | | +| Largest materialized view (by multiple of unbloated size) | Largest materialized view in schema, calculated as a multiple of its own estimated unbloated size; exclude materialized view smaller than N MB. | | +| Highest materialized view bloat in schema | The most space wasted by a materialized view in schema, in MB. | | +| Average materialized view bloat in schema | The average space wasted by materialized views in schema, in MB. | | +| Materialized view size | The size of materialized view, in MB. | | +| Materialized view size in schema | The size of materialized views in schema, in MB. | | +| View Count | Total number of views in schema. | | +| Materialized View Count | Total number of materialized views in schema. | | +| Materialized View Frozen XID | The age (in transactions before the current transaction) of the materialized view's frozen transaction ID. | | + +## Templates applicable on Table + +| Template Name | Description | Details | +| ----------------------------------------- | ---------------------------------------------------------------------------------------------- | ------- | +| Table bloat | Space wasted by the table, in MB. | | +| Table size | The size of table, in MB. | | +| Table size as a multiple of ubloated size | Size of the table as a multiple of estimated unbloated size. | | +| Tuples inserted | Tuples inserted in table over last N minutes. | | +| Tuples updated | Tuples updated in table over last N minutes. | | +| Tuples deleted | Tuples deleted from table over last N minutes. | | +| Tuples hot updated | Tuples hot updated in table, over last N minutes. | | +| Sequential Scans | Number of full table scans on table, over last N minutes. | | +| Index Scans | Number of index scans on table, over last N minutes. | | +| Hot update percentage | Percentage of hot updates in the table over last N minutes. | | +| Live Tuples | Number of estimated live tuples in table. | | +| Dead Tuples | Number of estimated dead tuples in table. | | +| Dead tuples percentage | Percentage of estimated dead tuples in table. | | +| Last Vacuum | Hours since last vacuum on the table. | | +| Last AutoVacuum | Hours since last autovacuum on the table. | | +| Last Analyze | Hours since last analyze on the table. | | +| Last AutoAnalyze | Hours since last autoanalyze on the table. | | +| Row Count | Estimated number of rows in a table. | | +| Index size as a percentage of table size | Size of the indexes on table, as a percentage of table's size. | | +| Table Frozen XID | The age (in transactions before the current transaction) of the table's frozen transaction ID. | | + +## Global Templates + +| Template Name | Description | Details | +| ------------- | --------------------------------------------------- | ------- | +| Agents Down | Number of agents that haven't reported in recently. | | +| Servers Down | Number of servers that are currently inaccessible. | | +| Alert Errors | Number of alerts in an error state. | | diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/04_pem_custom_alert_templates.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/04_pem_custom_alert_templates.mdx new file mode 100644 index 00000000000..398a61a0131 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/04_pem_custom_alert_templates.mdx @@ -0,0 +1,106 @@ +--- +title: "Custom Alert Templates" +--- + + + +An alert template is a prototype that defines the properties of an [alert](01_pem_alerting_dialog/#pem_alerting_dialog). An alert instructs the server to compare the current state of the monitored object to a threshold (specified in the alert template) to determine if a situation exists that requires administrative attention. + +You can use the `Alert Templates` tab to define a custom alert template or view the definitions of existing alert templates. To open the `Alert Template` tab, select the `Manage Alerts...` menu option from the `Management` menu; when the `Manage Alerts` tab opens, select `Alert Templates` from the `Quick Links` menu. + +![PEM Alert Templates tab](../../images/pem_alert_templates_tab.png) + +Use the `Show System Template` drop-down listbox to filter the alert templates; select a type from the listbox to view all of the templates for that level of the PEM hierarchy. + +## Reviewing an Existing Alert Template + +To view the definition of an existing template (including PEM pre-defined alert templates), use the `Show System Template` drop-down listbox to select the type of object monitored. When you select the object type, the `Alert Templates` table will display the currently defined alert templates that correspond with that object type. Highlight a template name and click the edit icon (at the left end of the row) to review the template definition. + +![PEM pre-defined Alert Templates](../../images/pem_alert_templates_pre-def.png) + +Use the edit button to the left of a template name to view detailed information about the template: + +- General information is displayed on the `General` tab. +- The names of probes that provide data for the template are listed on the `Probe Dependency` tab. +- The names of any parameters referred to in the SQL code are listed on the `Parameters` tab. +- The SQL code that defines the behavior of the alert is displayed on the `SQL` tab. + +## Defining a New Alert Template + +To define a new alert template, use the `Show System Template` drop-down listbox to select `None`, and click the `Add` icon (+) located in the upper-right corner of the alert template table. + +![Create New Alert Template - General tab](../../images/pem_alert_templates_general.png) + +Use fields on the `General` tab to specify general information about the template: + +- Use the `Template name` field to specify a name for the new alert template; this field is required. +- Use the `Description` field to provide a description of the alert template; this field is required. +- Use the `Target type` drop-down listbox to select the type of object that will be the focus of the alert. +- Use the `Applies to server` drop-down listbox to specify the server type (EDB Postgres Advanced Server or PostgreSQL) to which the alert will be applied; you can specify a single server type, or `ALL`. +- Use the `History retention` field to specify the number of days that the result of the alert execution will be stored on the PEM server. +- Use the `Threshold unit` field to specify the unit type of the threshold value. +- Use fields in the `Auto create` box to indicate if PEM should use the template to generate an automatic alert. If enabled, PEM will automatically create an alert when a new server or agent (as specified by the `Target type` drop-down listbox) is added, and delete that alert when the target object is dropped. + + - Move the `Auto create?` slider to `Yes` to indicate that PEM should automatically create alerts based on the template. If you modify an existing alert template, changing the `Auto create?` slider from `No` to `Yes`, PEM will create alerts on the existing agents and servers. Please note that if you change the slider from `Yes` to `No`, the default threshold values in existing alerts will be erased, and cannot be recovered. + + - Use the `Operator` drop-down listbox to select the operator that PEM will use when evaluating the current system values. + + > Select a greater-than sign (>) to indicate that the alert should be triggered when the system values are greater than the values entered in the `Threshold values` fields. + > + > Select a less-than sign (<) to indicate that the alert should be triggered when the system values are less than the values entered in the `Threshold values` fields. + + - Use the threshold fields to specify the values that PEM will compare to the system values to determine if an alert should be raised. Please note that you must specify values for all three thresholds (`Low`, *Medium*, and `High`): + + - Enter a value that will trigger a low-severity alert in the `Low` field. + - Enter a value that will trigger a medium-severity alert in the `Medium` field. + - Enter a value that will trigger a high-severity alert in the `High` field. +- Use the `Check frequency` field to specify the default number of minutes between alert executions. This value specifies how often the server will invoke the SQL code specified in the definition and compare the result to the threshold value specified in the template. + +![Create New Alert Template - Probe Dependency tab](../../images/pem_alert_templates_pdtab.png) + +Use the fields on the `Probe Dependency` tab to specify the names of probes referred to in the SQL query specified on the `SQL` tab: + +- Use the `Probes` drop-down listbox to select from a list of the available probes; highlight a probe name, and click the `Add` button to add the probe to the list of probes used by the alert template. To remove a probe from the selected probes list, highlight the probe name, and click the `Delete` icon. + +![Create New Alert Templates - Parameters tab](../../images/pem_alert_templates_paramtab.png) + +Use fields on the `Parameters` tab to define the parameters that will be used in the SQL code specified on the `SQL` tab. Click the `Add` icon, and: + +- Use the `Name` field to specify the parameter name. +- Use the `Data type` drop-down listbox to select the type of parameter. +- Use the `Unit` field to specify the type of unit specified by the parameter. + +When you've defined a new parameter, click the `Add/Change` button to save the definition and add the parameter to the parameter list. + +To modify an existing parameter definition, highlight a parameter name in the list, modify the parameter values in the fields at the bottom of the tab, and click `Add/Change` to preserve the changes. To remove one or more parameter definitions, highlight the parameter name(s) and click the `Remove` button. + +![Create New Alert Templates - SQL tab](../../images/pem_alert_templates_sqltab.png) + +Use the `Code` field on the `SQL` tab to provide the text of the SQL query that the server will invoke when executing the alert. The SQL query will provide the result against which the threshold value is compared; if the alert result deviates from the specified threshold value, an alert will be raised. + +Within the query, parameters defined on the `Parameters` tab should be referenced (sequentially) by the variable `param_x`, where `x` indicates the position of the parameter definition within the parameter list. For example, `param_1` refers to the first parameter in the parameter list, param_2 refers to the second parameter in the parameter list, and so on. + +The query can also include the following pre-defined variables: + +| Variable Description | Variable Name | +| --------------------------------------- | ------------------ | +| agent identifier | '${agent_id}' | +| server identifier | '${server_id}' | +| database name | '${database_name}' | +| schema name | '${schema_name}' | +| table, index, sequence or function name | '${object_name}' | + +Please Note: If the specified query is dependent on one or more probes from different levels within the PEM hierarchy (server, database, schema, etc.), and a probe becomes disabled, any resulting alerts will be displayed as follows: + +- If the alert definition and the probe referenced by the query are from the same level within the PEM hierarchy, the server will display any alerts that reference the alert template on the Alert Error table of the Global Alert Dashboard. +- If the alert definition and the probe referenced by the query are from different levels of the PEM hierarchy, the server will display any triggered alerts that reference the alert template on the Alert Details table of the hierarchy on which the Alert was defined. + +Use the `Detailed Information SQL` field to provide a SQL query that will be invoked if the alert is triggered. The result set of the query may be displayed as part of the detailed alert information on the `Alerts` dashboard or `Global Overview` dashboard. + +After defining a new alert template, click the `Add/Change` button to save the definition and add the template to the `Alert Templates list`. Click `Cancel` to exit the `Alert Templates` dialog without saving changes. + +After defining a template, you can use the [Manage Alerts](01_pem_alerting_dialog/#pem_alerting_dialog) tab to create and enable an alert based on the template. + +## Deleting an Alert Template + +To delete an alert template, highlight the template name in the alert templates table, and click the `Delete` icon (located to the left of the alert template name). The alert history will persist for the length of time specified on the `History Retention` field in the template definition. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/05_pem_email_groups.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/05_pem_email_groups.mdx new file mode 100644 index 00000000000..d4a194273b1 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/05_pem_email_groups.mdx @@ -0,0 +1,45 @@ +--- +title: "Email Groups" +--- + + + +Postgres Enterprise Manager monitors your system for conditions that require user attention. You can use an email group to specify the email addresses of users that the server will notify if current values deviate from threshold values specified in an alert definition. An email group has the flexibility to notify multiple users, or target specific users during user-defined time periods. + +Please note that you must configure the PEM Server to use an SMTP server to deliver email before PEM can send email notifications. + +Use the `Email Groups` tab to configure groups of SMTP email recipients. To access the `Email Groups` tab, select `Manage Alerts...` from the PEM client's `Management` menu; when the `Manage Alerts` tab opens, select `Email Groups` from the `Quick Links` toolbar. + +![Email Groups tab](../../images/email_groups_tab.png) + +The `Email Groups` tab displays a list of the currently defined email groups. Highlight a group name and click the edit icon (at the far left end of the row) to modify an existing group. + +To define a new email group, click the Add icon (+) in the upper-right corner of the table. + +![Email Groups - Add New Email Group](../../images/email_group_add.png) + +Use the `Email Group` tab to define an email group and its members: + +- Provide a name for the email group in the `Group name` field. + +Each row within the email group definition will associate a unique set of email addresses with a specific time period. When an alert is triggered, the server will evaluate the times specified in each row and send the message to those group members whose definitions are associated with the time that the alert triggered. + +Click the Add icon (+) in the group members table to open the `Options` tab, and add the member addresses that will receive notifications for the time period specified: + +- Enter a comma-delimited list of recipient addresses in the `Reply to addresses` field. +- Enter a comma-delimited list of return addresses in the `Reply to addresses` field. +- Enter a comma-delimited list of addresses that will receive a copy of the email in the `Cc addresses` field. +- Enter a comma-delimited list of addresses that will receive a copy of the email (without the knowledge of other recipients) in the `Bcc addresses` field. +- Enter the email address that messages to this group should be sent from in the `From address` field. +- Provide a comment that will be used as a subject line prefix for any emails sent as part of a notification in the `Subject prefix` field. +- Use the `From time` and `To time` time selectors to specify the time range for notifications to the group member(s) that are identified on this row of the email group dialog. When an alert is triggered, the server will evaluate the times specified in each row and send the message to those group members whose definitions include the current time. Provide the `From time` and `To time` values in the locale of the PEM client host, and the PEM server will translate the time into other time zones as required. + +When you've identified the member or members that will receive an email during a specific time period, click the add icon to specify another time period and the email addresses that will be notified during those hours. When you've finished defining the email group, click the save icon. + +## Deleting an Email Group + +To mark an email group for deletion, highlight the group name in the `Email Groups` table and click the delete icon to the left of the name; the alert will remain in the list, but in red strike-through font. + +![Email Groups - Delete an existing email group](../../images/email_group_delete.png) + +The delete icon acts as a toggle; you can undo the deletion by clicking the delete icon a second time; when you click the save icon, the email group definition will be permanently deleted. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/06_pem_webhooks.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/06_pem_webhooks.mdx new file mode 100644 index 00000000000..67fe1f97c3c --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/06_pem_webhooks.mdx @@ -0,0 +1,109 @@ +--- +title: "Webhooks" +--- + + + +Postgres Enterprise Manager monitors your system for conditions that require user attention. You can use a webhook to create the endpoints that will receive a notification if current values deviate from threshold values specified in an alert definition. PEM sends a notification to multiple webhook endpoints, or to specific target webhook endpoints based on the events triggered. + +Please note that you must configure the PEM Server to use webhooks to receive notification of alert events on threshold value violations in your configured applications. + +Use the `Webhooks` tab to configure endpoint recipients. To access the `Webhooks` tab, select `Manage Alerts...` from the PEM client's `Management` menu; when the `Manage Alerts` tab opens, select `Webhooks` from the `Quick Links` toolbar. + +![Webhooks tab](../../images/webhooks_tab.png) + +The `Webhooks` tab displays a list of the currently defined recipient applications as endpoints. Highlight an endpoint and click the edit icon (at the far left end of the row) to modify an existing endpoint. + +## Creating a Webhook + +To define a new webhook, click the `Add` icon (+) in the upper-right corner of the table. + +![Webhooks - Add New Webhook - General Tab](../../images/webhook_add.png) + +Use the `General` tab to define the basic details of the webhook: + +- Provide a name for the webhook in the `Name` field. +- Specify a webhook URL where all the notifications will be delivered in the `URL` field. +- Set the request method type used to make the call in the `Request Method` field i.e. `POST` or `PUT`. +- By default `webhooks` will be enabled; to disable a webhook set `Enable?` to `No`. + +
+ +
+ +Note + +
+ +The above `Enable?` setting will work only if `enable_webhook` parameter is set to true in `agent.cfg` file. By default, `enable_webhook` parameter is set to true only for the Agent running on the PEM Server Host. For all other Agents running on other hosts, it needs to be set to true manually. + +
+ +## Defining a Webhook SSL configurations + +You can define the Webhook SSL parameters in the respective agent configuration file or registry in windows. You can find the list of Webhook SSL parameters in PEM Agent Configuration Parameters <pem_agent_config_params> section. If you add or remove any of the agent configuration parameters, you must restart the agent to apply them. + +> - On 32 bit Windows systems, PEM registry entries for Webhooks are located in HKEY_LOCAL_MACHINE\\Software\\EnterpriseDB\\PEM\\agent\\WEBHOOK +> - On 64 bit Windows systems, PEM registry entries for Webhooks are located in HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\EnterpriseDB\\PEM\\agent\\WEBHOOK +> - On Linux systems, PEM configuration options for Webhooks are stored in the agent.cfg file, located (by default) in /usr/edb/pem/agent/etc + +![Example - Webhook SSL Parameters in agent.cfg file](../../images/webhook_ssl_config.png) + +![Example - Webhook SSL Parameters in windows registry](../../images/webhook_ssl_config_windows.png) + +![Webhooks - Add New Webhook - HTTP Headers Tab](../../images/webhook_add_headers.png) + +Use the `HTTP Headers` tab to define the header parameters to pass while calling the webhook endpoints: + +- All the values will be specified as a key and value pair. +- Specify a key parameter in the `Key` field and a value in the `Value` field. +- To add multiple `HTTP Headers`, click the `Add` icon (+) in the upper-right corner of the `HTTP Headers` table. +- To delete the `HTTP Headers`, click on `Delete` icon to the left of the `Key`; the alert will remain in the list, but in strike-through font. Click the `Save` button to reflect the changes. +- To edit the `HTTP Headers`, click on the `Edit` icon to the left of `Key`. + +![Webhooks - Add New Webhook - Payload Tab](../../images/webhook_add_payload.png) + +Use the `Payload` tab to define the JSON data to be sent to the endpoint when an alert is triggered: + +- `Type` specifies data to be sent in format type (i.e. JSON). + +- Use `Template` to configure JSON data sent to endpoints. Within the `Template`, you can use placeholders for the following: + + > - `%AlertID%` - the id of the triggered alert. + > - `%AlertName%` - the name of the triggered alert. + > - `%ObjectName%` - the name of the server or agent on which the alert was triggered. + > - `%ObjectType%` - the type on which alert was generated. + > - `%ThresholdValue%` - the threshold value reached by the metric when the alert triggered. + > - `%CurrentValue%` - the current value of the metric that triggered the alert. + > - `%CurrentState%` - the current state of the alert. + > - `%OldState%` - the previous state of the alert. + > - `%AlertRaisedTime%` - the time that the alert was raised, or the most recent time that the alert state was changed. + > - `%AgentID%` - the id of the agent by which alert was generated. + > - `%AgentName%` - the name of the agent by which alert was generated. + > - `%ServerID%` - the id of the server on which alert was generated. + > - `%ServerName%` - the name of the server on which alert was generated. + > - `%ServerIP%` - the ip or address of the server on which alert was generated. + > - `%ServerPort%` - the the port of the server on which alert was generated. + > - `%DatabaseName%` - the name of the database on which alert was generated. + > - `%SchemaName%` - the name of the schema on which alert was generated. + > - `%PackageName%` - the name of the package on which alert was generated. + > - `%DatabaseObjectName%` - the name of the database object name like table name, function name etc on which alert was generated. + > - `%Parameters%` - the list of custom parameters used to generate the alert. + > - `%AlertInfo%` - the detailed database object level information of the alert. + +- Click on the `Test Connection` button, to test notification delivery to the mentioned endpoint. + +![Webhooks - Add New Webhook - Notifications Tab](../../images/webhook_add_notification.png) + +Use the `Notifications` tab to specify an alert level for webhook endpoints: + +- Set `All alerts` to `Yes` to enable all alert levels to send notifications. +- To instruct PEM to send an notification when a specific alert level is reached, set the slider next to an alert level to `Yes`. Please note that you must set `All alerts` to `No` to configure an individual alert level. + +## Deleting a Webhook + +To mark a webhook for deletion, highlight the webhook name in the `Webhooks` table and click the delete icon to the left of the name; the alert will remain in the list, but in strike-through font. + +![Webhooks - Delete an existing webhook](../../images/webhook_delete.png) + +The delete icon acts as a toggle; you can undo the deletion by clicking the delete icon a second time; when you save your work (by clicking the save icon), the webhook definition will be permanently deleted. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/07_snmp_mib_generation.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/07_snmp_mib_generation.mdx new file mode 100644 index 00000000000..39e2e88278f --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/07_snmp_mib_generation.mdx @@ -0,0 +1,11 @@ +--- +title: "SNMP MIB Generation" +--- + + + +PEM allows alerts to be sent as SNMP traps or notifications to receivers such as network monitoring tools. To enable such tools to understand these notifications, a MIB file may be generated that describes the different alerts and accompanying information that PEM may send. The `pem.generate_alert_mib()` SQL function in the PEM database may be used to generate the MIB file from the alert templates defined in the database. For example: + +``` +psql.exe -U postgres -d pem -A -t -c "SELECT pem.generate_alert_mib();" > PEM-ALERTING-MIB +``` diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/08_snmp_trap_details.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/08_snmp_trap_details.mdx new file mode 100644 index 00000000000..e664cdb0e03 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/08_snmp_trap_details.mdx @@ -0,0 +1,80 @@ +--- +title: "SNMP Trap Details" +--- + + + +Every SNMP trap send by PEM starts with oid .1.3.6.1.4.1.27645.5444, Significance of each identifier in oid is as follow’s. + +| Identifier | Meaning | +| ---------- | ------------------------------------------------------------------------------- | +| 1 | ISO, ISO is the group that established the OID standard | +| 3 | org, Organization identification schemes registered according to ISO/IEC 6523-2 | +| 6 | dod, United States Department of Defense (DoD) | +| 1 | internet, Communication will be via Internet/network | +| 4 | private, This is a device manufactured by a private entity (not goverment) | +| 1 | enterprise, The device manufacturer is classified as an enterprise | +| 27645 | PostgreSQL global development group | +| 5444 | pem | + +## How OID's are formed? + +PEM’s SNMP trap has following oid format 1.3.6.1.4.1.27645.5444.<alert_target_level_identifier>.<alert_identifier> + +Following table lists down possible values for <alert_target_level_identifier>. + +| Identifier | Alert Target Level | +| ---------- | ------------------ | +| 1 | Agent | +| 2 | Server | +| 3 | Database | +| 4 | Schema | +| 5 | Table | +| 6 | Index | +| 7 | Sequence | +| 8 | Function | +| 9 | Global | + +<alert\_identifier> is unique identifier for each alert, which you can find in snmp\_oid column of pem.alert\_template table. + +For example, snmp_oid for Agent Down alert template is 34, hence trapOID for agent down alert will be 1.3.6.1.4.1.27645.5444.1.34 + +## How OID's for binding variables are formed? + +Every binding variable oid has following format 1.3.6.1.4.1.27645.5444.10.<binding_variable_identifier>, where 10 is identifier for binding variable Following table lists down possible values for <binding_variable_identifier> + +| Identifier | Variable Name | +| ---------- | ------------------- | +| 1 | alertName | +| 2 | agentID | +| 3 | serverID | +| 4 | agentName | +| 5 | serverName | +| 6 | databaseName | +| 7 | schemaName | +| 8 | objectName | +| 9 | thresholdvalue | +| 10 | previousValue | +| 11 | value | +| 12 | previousStatus | +| 13 | status | +| 14 | recordedTime | +| 15 | downObjects | +| 16 | detailedInformation | + +For example, 1.3.6.1.4.1.27645.5444.10.1 is oid for binding variable alertName. + +Details of each snmp traps in pem.snmp_spool table. For example, + +``` +pem=# select * from pem.snmp_spool; +-[ RECORD 1 ]----+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +id | 1 +trap_oid | .1.3.6.1.4.1.27645.5444.1.34 +enterprise_oid | .1.3.6.1.4.1.27645.5444 +trap_version | 2 +varbinding_oid | .1.3.6.1.4.1.27645.5444.10.1|.1.3.6.1.4.1.27645.5444.10.2|.1.3.6.1.4.1.27645.5444.10.4|.1.3.6.1.4.1.27645.5444.10.9|.1.3.6.1.4.1.27645.5444.10.10|.1.3.6.1.4.1.27645.5444.10.11|.1.3.6.1.4.1.27645.5444.10.12|.1.3.6.1.4.1.27645.5444.10.13|.1.3.6.1.4.1.27645.5444.10.14 +varbinding_value | Agent Down||Postgres Enterprise Manager Host|{0.1,0.2,0.3}|0|1|CLEAR|HIGH|2020-06-22 15:51:03.266437+10 +sent_status | s +recorded_time | 22-JUN-20 15:51:03.266437 +10:00 +``` diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/09_using_pem_with_nagios.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/09_using_pem_with_nagios.mdx new file mode 100644 index 00000000000..fa93d96c1b3 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/09_using_pem_with_nagios.mdx @@ -0,0 +1,93 @@ +--- +title: "Using PEM with Nagios" +--- + + + +The PEM server can send a passive alert result to Nagios network-alerting software when an alert is triggered. To instruct the PEM server to notify Nagios of a triggered alert, you must: + +- Enable Nagios notification for each alert that will trigger a notification from the PEM server to Nagios. Please note that PEM alerting must be configured before you create the host.cfg file and services.cfg file. +- Configure Nagios-related behaviors of the PEM server. +- Create the host.cfg and services.cfg configuration files. +- If necessary, modify the Nagios configuration file and restart the Nagios server. +- Install the PEM Agent on the system where Nagios server is installed and register it with the PEM Server. Set `enable_nagios` configuration to `true` in the agent.cfg for that agent, and restart the agent service. + +Detailed information about each configuration step is listed below. + +After configuring the server to enable Nagios alerting, any triggered alerts will send a passive check result to the Nagios service. The syntax of a passive alert is: + +> \[*timestamp*] PROCESS_SERVICE_CHECK_RESULT; `host_name` ; `service_name` ; `service_status` ; + +Where: + +> - `timestamp` is the date and time that the alert was triggered. +> - `host_name` is the name of the server or agent. +> - `service_name` is the name of the alert. +> - `service_status` is the numeric service status value: +> - 0 if the service status is *OK* +> - 1 if the service status is *WARNING* +> - 2 if the service status is *CRITICAL* +> - 3 if the service status is *UNKNOWN* +> +> The PEM server uses the following rules to evaluate the service status: +> +> - If the PEM alert level is `CLEARED`, the warning message will read *OK* +> - If the PEM alert level is `LOW`, the warning message will read *WARNING* +> - If the `is_nagios_medium_alert_as_critical` flag (specified in the PEM server configuration dialog) is set to `FALSE` and the alert level is `MEDIUM`, the warning message will read *WARNING* +> - If the `is_nagios_medium_alert_as_critical` flag (specified in the PEM server configuration dialog) is set to `TRUE` and the alert level is `MEDIUM`, the warning message will read *CRITICAL* +> - If the PEM alert level is `HIGH`, the warning message will read *CRITICAL* + +## Enabling Nagios Notification for an Alert + +The PEM server maintains a unique set of notification properties for each enabled alert. Use the `Notification` tab of the `` `Manage Alerts `` <pem_alerting_dialog> tab to specify that (when triggered), a given alert will send an alert notice to Nagios. To modify the notification properties of an alert, right-click on the name of the object monitored by the alert, and select Manage Alerts... from the Management menu. When the Manage Alerts tab opens, locate the alert, and then click the edit button to the left of the alert name in the Alerts list. When the Manage Alerts tab opens, select the Notification\` tab. + +![Nagios Alert - Notification tab](../../images/nagios_alert_notification.png) + +To enable Nagios notification, move the slider next to `Submit passive service check result to Nagios` to `Yes`; before exiting the `Manage Alerts` tab, click the save icon to preserve your changes. + +## Configuring Nagios-related behavior of the PEM Server + +You can use the `Server Configuration` dialog to provide information about your Nagios configuration to the PEM server. To open the [Server Configuration](../02_pem_server_config/#pem_server_config) dialog, select `Server Configuration...` from the PEM client's `Management` menu. + +![Nagios Server Configuration options](../../images/nagios_server_configuration.png) + +Four server configuration parameters specify information about your Nagios installation and PEM server behavior related to Nagios: + +> - Use the `nagios_cmd_file_name` parameter to specify the location of the Nagios pipeline file that will receive passive check alerts from PEM. The default value of this parameter is `/usr/local/nagios/var/rw/nagios.cmd`. The parameter specifies the default file location; if your nagios.cmd file resides in an alternate location, specify the file location in the `Value` field. +> - Move the slider in the `nagios_enabled` parameter to `Yes` to instruct the PEM server to send passive check alerts to Nagios. +> - Use the `nagios_medium_alert_as_critical` slider to specify the warning severity that the PEM server will pass to Nagios if a medium alert is triggered: +> - If the `is_nagios_medium_alert_as_critical` flag is set to `FALSE` and the alert level `MEDIUM`, the warning message will read *WARNING* +> - If the `is_nagios_medium_alert_as_critical` flag is set to `TRUE` and the alert level `MEDIUM`, the warning message will read *CRITICAL* +> - Use the `nagios_spool_retention_time` parameter to specify the number of days of notification history that will be stored on the PEM server. The default value is 7 days. + +After modifying parameter values, click the save icon to preserve your changes. + +## Creating the hosts.cfg and services.cfg File + +The templates.cfg file (by default, located in /usr/local/nagios/etc/objects) specifies the properties of a generic-host and generic-service. The properties specify the parameters used in the hosts.cfg and services.cfg files. + +In most cases (when PEM is installed in a default configuration), you will not be required to modify the templates.cfg file before creating the hosts.cfg and services.cfg files. If necessary, you can modify the templates.cfg file to specify alternate values for parameters or to create new templates. + +Before modifying the Nagios configuration file, use the following command to create a hosts.cfg file that contains information about the PEM hosts that reside on the local system: + +> ./psql -U postgres -p 5433 -d pem -A -t -c "select pem.create_nagios_host_config('generic-host')" > /usr/local/nagios/etc/objects/hosts.cfg + +Then, use the following command to create a `services.cfg` file that contains information about the PEM services that reside on the local system: + +> ./psql -U postgres -p 5433 -d pem -A -t -c "select pem.create_nagios_service_config('generic-service')" > /usr/local/nagios/etc/objects/services.cfg + +If you wish to use a custom template.cfg file entry, specify the entry name in place of generic-host or generic-service in the above commands. + +## Modifying the Nagios Configuration File + +After creating the host.cfg and services.cfg files, you must specify their location in the Nagios configuration file (by default, /usr/local/nagios/etc/nagios.cfg). Modify the configuration file, adding entries that specify the location of the files: + +> cfg_file=/usr/local/etc/objects/hosts.cfg cfg_file=/usr/local/etc/objects/services.cfg + +You can use the following command to confirm that Nagios is properly configured: + +> /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg + +After confirming that Nagios is configured correctly, restart the Nagios service: + +> /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/index.mdx new file mode 100644 index 00000000000..8e39ec0977d --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/09_pem_alerting/index.mdx @@ -0,0 +1,53 @@ +--- +title: "Alerting" +--- + + + +Postgres Enterprise Manager monitors a system for conditions that require user attention. An alert definition contains a system-defined or user-defined set of conditions that PEM compares to the system statistics; if the statistics deviate from the boundaries specified for that statistic, the alert triggers, displaying a `High` (red), `Low` (yellow) or `Medium` (orange) severity warning in the left-most column of the `Alerts Status` table on the `Global Overview` dashboard, and optionally sends a notification via email to [Email Groups](05_pem_email_groups/#pem_email_groups) or SNMP trap/notification receivers <snmp_mib_generation>. + +![Alerts Status table](../../images/alerts_status_table.png) + +The PEM server includes a number of pre-defined alerts that are actively monitoring your servers. If the alert definition makes details available about the cause of the alert, you can click the down arrow to the right of the severity warning to access a dialog with detailed information about the condition that triggered the alert. Please note that Alert Details section lists top 10 entries only in the general tab. + +![Alerts details table](../../images/alert_details.png) + +PEM also provides an interface that allows you to create customized alerts. Each alert uses metrics defined on an alert template. An alert template defines how the server will evaluate the statistics for a resource or metric. The PEM server includes a number of pre-defined alert templates, or you can create custom alert templates. + +## Using the Alerts Dashboard + +Use the `Dashboards` menu (at the top of the `Global Overview` dashboard) to access the [Alerts Dashboard](../01_dashboards/01_alerts_dashboard/#alerts_dashboard). The Alerts Dashboard displays a summary of the active alerts and the status of each alert: + +![Alerts dashboard](../../images/alerts_dashboard.png) + +The `Alerts Overview` section displays a graphic representation of the active alerts, as well as a count of the current High, Low and Medium alerts. The vertical bar on the left of the graph provides the count of the alerts displayed in each column. Hover over a bar to display the alert count for the selected alert severity in the upper-right hand corner of the `Alerts Status` graph. + +The `Alert Details` table provides a list of the alerts that are currently triggered. The entries are prioritized from high-severity to lower-severity; each entry includes information that will allow you to identify the alert and recognize the condition that triggered the alert. Click the name of an alert to review the alert definition, or the down arrow next to the alert icon to review the metrics that triggered the alert. + +The `Alert Errors` table displays configuration-related errors (eg. accidentally disabling a required probe, or improperly configuring an alert parameter). You can use the information provided in the `Error Message` column to identify and resolve the conflict that is causing the error; for additional assistance, contact [EnterpriseDB Support](mailto:support@enterprisedb.com). + +## Managing Alerts + +PEM's `Manage Alerts` tab allows you to define custom alerts or modify existing alerts. To open the [Manage Alerts tab](01_pem_alerting_dialog/#pem_alerting_dialog), select `Manage Alerts...` from the `Management` menu. The Manage Alerts tab provides an easy way to review the alerts that are currently defined for the object that is highlighted in the PEM client tree control; simply select an object to see the alerts that are defined for that object. + +![Manage Alerts tab](../../images/alerting_manage_alerts.png) + +The `Manage Alerts` tab also provides `Quick Links` that provide quick access to dialogs that allow you to: + +> - [Copy an alert](02_pem_alert_copy/#pem_alert_copy) from one object to one or more objects. +> - [Create or modify an alert template](04_pem_custom_alert_templates/#pem_custom_alert_templates). +> - [Create or Modify an email group](05_pem_email_groups/#pem_email_groups). +> - Manage [PEM Server configuration](05_pem_email_groups/#pem_email_groups) details. +> - Access the PEM online help. + +You can configure an alert to notify Nagios network-alerting software when that alert is triggered. For more information, see [Using PEM with Nagios](09_using_pem_with_nagios/#using_pem_with_nagios). + +To [create a new alert](01_pem_alerting_dialog/#pem_alerting_dialog), click the add icon in the upper-right corner of the `Alerts` table. + +Contents: + +
+ +pem_alerting_dialog pem_alert_copy pem_alert_templates pem_custom_alert_templates pem_email_groups pem_webhooks snmp_mib_generation snmp_trap_details using_pem_with_nagios + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/10_pem_manage_charts/01_pem_create_new_chart.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/10_pem_manage_charts/01_pem_create_new_chart.mdx new file mode 100644 index 00000000000..2ca5c664476 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/10_pem_manage_charts/01_pem_create_new_chart.mdx @@ -0,0 +1,76 @@ +--- +title: "Creating a New Chart" +--- + + + +Click the `Create New Chart` icon in the `Quick Links` section of the `Manage Charts` tab to open the `Create Chart` wizard. The `Create Chart` wizard will walk you through the steps required to define a new chart. + +![Create New Chart Wizard - Configure Chart page](../../images/pem_create_new_chart_conf_chart.png) + +Use the fields on the `Configure Chart` dialog to specify general information about the chart: + +> - Specify the name of the chart in the `Name` field. +> - Use the drop-down listbox in the `Category` field to specify the category in which this chart will be displayed; when adding a custom chart to a custom dashboard, the chart will be displayed for selection in the `Category` specified. +> - Use the radio buttons in the `Type` field to specify if the chart will be a `Line chart` or a `Table`. +> - Provide a description of the chart in the `Description` field. The description will be displayed to the user viewing the chart (on a custom dashboard) when they click the information icon. + +When you've completed the fields on the `Configure Chart` dialog, click `Next` to continue. + +![Create New Chart Wizard - Metrics Selection page](../../images/pem_create_new_chart_select_metrics.png) + +Use the fields on the `Select Metrics` dialog to select the metrics that will be displayed on the chart: + +> - Use the `Metric level` drop-down listbox to specify the level of the PEM hierarchy from which you wish to select metrics. You can specify `Agent`, `Database`, or `Server`. Each level offers access to a unique set of probes and metrics. +> +> - Use the tree control in the `Available metrics` box to select the metrics that will be displayed on the chart. +> +> - If you are creating a table, you may only select metrics from one probe; each node of the tree control lists the metrics returned by a single probe. Expand a node of the tree control, and check the boxes to the left of a metric name to include that metric data in the table. +> - If you are creating a line chart, expand the nodes of the tree control and double-click each metric that you would like to include in the chart. +> +> - Use the fields in the `Selected metrics` panel to specify how the metric data will be displayed in your chart. The selection panel displays the name of the metric in the (non-modifiable) `Metric [Probe]` column. You can: +> +> - Click the garbage can icon to delete a metric from the list of selected metrics. +> - Use the drop-down listboxes in the `Selection Criteria` column to specify the order of the data displayed. +> - Use the `Limit` field to specify the number of rows in a table or lines in a chart: +> +> > - The maximum number of lines allowed in a chart is 32. +> > - The maximum number of rows allowed in a table is 100. +> +> - If you are creating a line chart, PEM supports comparisons of cross-hierarchy metrics. +> +> - Click the compare icon to open a selection box that allows you to select one or more probe-specific attributes (i.e. CPUs, interfaces, databases, etc.) to compare in the chart. +> - Click the copy icon to apply your selections to all of the metrics for the same probe. When the popup opens, click `Yes` to confirm that other selections for the same probe will be overwritten, or `No` to exit the popup without copying the attributes. + +When you've completed the fields on the `Select Metrics` dialog, click `Next` to continue. + +![Create New Chart - Display Options page](../../images/pem_create_new_chart_set_options.png) + +Use the fields on the `Set Options` dialog to specify display options for your chart: + +> - Use the `Auto Refresh` field to specify the number of minutes between chart updates - choose a value from 1 to 120. The default auto refresh rate is 2 minutes. + +Use fields under the `Line chart options` heading to specify display preferences for a line chart: + +> - Use the `Points to plot` field to specify the maximum number of points that will be plotted on the chart. +> - Use the fields to the right of the `Historical span` label to specify how much historical data should be displayed on the chart: +> - Use the `Day(s)` field to specify the number of days of historical data that should be included on the chart. +> - Use the `Hour(s)` field to specify the number of hours of historical data that should be included on the chart. +> - Use the `Minute(s)` field to specify the number of minutes of historical data that should be included on the chart. +> - Use the fields in the `Data extrapolation` box to specify if PEM should generate extrapolated data based on historical data. +> - Click the `No Extrapolation` label to omit extrapolated data from the chart. +> - Click the `Span` label to use the `Days` and `Hours` selectors to specify the period of time spanned by the metrics on the chart. +> - Click the `Threshold` label to use threshold selectors to specify a maximum or minimum value for the chart. + +When you've completed the fields on the `Set Options` dialog, click `Next` to continue. + +![Create New Chart Wizard - Permission Options page](../../images/pem_manage_charts_set_permissions.png) + +Use the fields on the `Set Permissions` dialog to specify display options for your chart: + +> - Set the `Share with all` slider to `Yes` to indicate that the chart will be available to all authorized users, or `No` to restrict access to the users or groups specified in the `Access permissions` field. +> - Use the `Access permissions` field to select the group or groups that will have access to the chart. + +When you've finished defining the chart, click `Finish` to save your edits and add your chart to the list on the `Manage Charts` tab: + +![Create New Chart Completed](../../images/pem_manage_charts_completed.png) diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/10_pem_manage_charts/02_pem_manage_charts_template.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/10_pem_manage_charts/02_pem_manage_charts_template.mdx new file mode 100644 index 00000000000..c890bae1379 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/10_pem_manage_charts/02_pem_manage_charts_template.mdx @@ -0,0 +1,45 @@ +--- +title: "Importing a Capacity Manager Template" +--- + + + +Selecting the `Import Capacity Manager Template` from the `Manage Charts` tab's `Quick Links` section opens the `Create Chart` dialog, allowing you to select from your saved Capacity Manager templates. When the dialog opens, use the `Import capacity template` drop-down listbox to select the template you would like to use for your chart. + +![Manage Charts Imported Template page](../../images/pem_manage_charts_imported_template.png) + +Use the fields on the `Create Chart` dialog to provide information about the chart: + +- Specify the name of the chart in the `Name` field. +- Use the drop-down listbox in the `Category` field to specify the category in which this chart will be displayed. When adding a custom chart to a custom dashboard, the chart will be displayed for selection in the `Category` specified. +- Use the radio buttons in the `Type` field to specify if the chart will be a `Line chart` or a `Table`. +- Provide a description of the chart in the `Description` field. The description will be displayed to the user viewing the chart (on a custom dashboard) when they click the information icon. + +Click `Next` to continue to the `Select Metrics` window. + +![Manage Charts Imported Metrics page](../../images/pem_manage_charts_imported_metrics.png) + +The `Select Metrics` window displays details about the metrics that are used by the template. When you've reviewed the metrics, click `Next` to continue to the `Set Options` window. + +![Manage Charts Imported Options page](../../images/pem_manage_charts_imported_options.png) + +Use the fields on the `Set Options` window to specify display options for your chart: + +- Use the `Auto Refresh` field to specify the number of minutes between chart updates - choose a value from 1 to 999. The default auto refresh rate is 2 minutes. + +- Use the fields in the `Data extrapolation` box to specify the time period covered by the chart. You can either: + + > - click the `Historical days and extrapolated days` label and: + > - specify the number of days of historical data that should be charted in the `Historical` field. + > - specify the number of projected days that should be charted in the `Extrapolated` field. + > - or, click the `Historical days and threshold` label and: + > - provide the number of days of historical data that should be charted in the `Historical` field. + > - use the threshold selection fields to specify the threshold value at which the chart will end. + +When you've completed the `Set Options` window, click `Next` to continue. + +![Manage Charts Imported Permission page](../../images/pem_manage_charts_imported_permissions.png) + +After making any required modifications to the chart definition, click `Finish` to save your edits. PEM will open a popup, confirming that the edits have been saved: + +![Manage Charts Completed page](../../images/pem_manage_import_charts_completed.png) diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/10_pem_manage_charts/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/10_pem_manage_charts/index.mdx new file mode 100644 index 00000000000..c4b83ef369f --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/10_pem_manage_charts/index.mdx @@ -0,0 +1,38 @@ +--- +title: "Using the Manage Charts Tab" +--- + + + +You can use the `Manage Charts` tab to access dialogs that allow you to create or modify a custom line chart or table, or import a Capacity Manager template for use in a custom chart. After defining a chart, you can display the chart on a custom dashboard. To open the `Manage Charts` tab, select `Manage Charts...` from the PEM client `Management` menu. + +![Manage Charts tab](../../images/pem_manage_charts.png) + +The `Manage Charts` tab provides a `Quick Links` menu that allows you to access dialogs to: + +> - [Create a New Chart](01_pem_create_new_chart/#pem_create_new_chart) for use on a custom dashboard. +> - [Import a Capacity Manager template](02_pem_manage_charts_template/#pem_manage_charts_template) to use as a template for creating a custom chart. + +The `Custom Charts` table displays a list of user-defined charts; when a chart is newly added, the font displays in green. When you add an additional chart or refresh the screen, the name of the chart is displayed in black. + +![Manage Charts - Custom Chart](../../images/pem_manage_charts_custom_chart.png) + +Use the search box in the upper-right hand corner of the `Custom Charts` section to search through your custom charts. Specify a: + +> - Chart name +> - Type +> - Level +> - Metrics Category + +Use icons to the left of a charts name in the `Custom Charts` table to manage a chart: + +> - Click the edit icon to open the `Chart Configuration` wizard and modify aspects of the chart or table. +> - Click the delete icon to delete the selected chart. + +Contents: + +
+ +pem_create_new_chart pem_manage_charts_template + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/11_pem_manage_dashboards/01_pem_custom_dashboard.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/11_pem_manage_dashboards/01_pem_custom_dashboard.mdx new file mode 100644 index 00000000000..31be42ef4ba --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/11_pem_manage_dashboards/01_pem_custom_dashboard.mdx @@ -0,0 +1,53 @@ +--- +title: "Creating a Custom Dashboard" +--- + + + +You can use the PEM dashboard editor to create or modify a user-defined dashboard. The custom dashboard may include pre-defined charts, user-defined charts or a mix of pre-defined and user-defined charts. To create a new dashboard, select `Create New Dashboard...` from the `Quick Links` section of the `Manage Dashboards` tab. + +![Create Custom Dashboard - Configure option](../../images/pem_custom_dashboard_configure_dashboard.png) + +Use the fields in the `Configure` section to specify general information about the dashboard: + +- Specify a name for the dashboard in the `Name` field. The name specified will also be the title of the dashboard if the title is displayed. +- Use the `Level` drop-down listbox to specify the level of the PEM hierarchy within the PEM client on which the dashboard will be displayed. A dashboard may be accessed via the `Dashboards` menu on a `Global` level, an `Agent` level, the `Server` level or the `Database` level. Each selected level within the list will expose a different set of metrics on which the custom dashboard's charts may be based. +- Provide a description of the dashboard in the `Description` field. + +Provide information in the fields in the `Ops dashboard options` box if the dashboard will be used as an Ops dashboard: + +- Set the `Ops Dashboard?` field to `Yes` to instruct the server to create a dashboard that is formatted for display on an [Ops monitor](02_pem_ops_dashboard/#pem_ops_dashboard). +- Set the `Show Title?` field to `Yes` to display the dashboard name at the top of the Ops dashboard. +- Use the `Font` drop-down list box to select a custom font style for the title. The selected font style will be displayed in the `Preview` box. +- Use the `Font size` drop-down list box to select a custom font size for the title. The selected font style will be displayed in the `Preview` box. + +Use the `Permissions` box to specify the users that will be able to view the new dashboard: + +- Set the `Share with all` slider to `Yes` to instruct the server to allow all `Teams` to access the dashboard, or set `Share with all` to `No` to enable the `Access permissions` field. +- Use the `Access permissions` field to specify which roles can view the new dashboard. Click in the field, and select from the list of users to add a role to the list of users with dashboard access. + +When you've completed the `Configure Dashboard` section, click the arrow in the upper-right corner to close the section, and access the `Dashboard Layout Design` section. + +![Create Custom Dashboard - Dashboard Layout Design options](../../images/pem_custom_dashboard_add_section_name.png) + +Click the edit icon in a section header to specify a section name; then, click the add icon (+) to add a chart to the section. + +![Create Custom dashboard - Add Chart options](../../images/pem_custom_dashboard_add_chart.png) + +Use the arrows to the right of each chart category to display the charts available and select a chart. + +![Create Custom dashboard - Chart Display options](../../images/pem_custom_dashboard_chart_details.png) + +Use the chart detail selectors to specify placement details for the chart: \* Use the `Chart width` selector to indicate the width of the chart; select 50% to display the chart in half of the dashboard, or 100% to use the whole dashboard width. \* Use the `Chart alignment` selector to indicate the position of the chart within the section: + +> - Select `Left` to indicate that the chart should be left-justified. +> - Select `Center` to indicate that the chart should be centered. +> - Select `Right` to indicate that the chart should be right-justified. + +Please note that tables are always displayed centered. + +When creating or editing a custom dashboard, you can use drag and drop to re-arrange the charts within a section or to move a chart to a different section. + +To add another chart to your dashboard, click the add icon (+) in the section header. When you've finished editing the dashboard, click the `Save` button to save your edits and exit. + +To exit without saving your changes, click the `Cancel` button. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/11_pem_manage_dashboards/02_pem_ops_dashboard.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/11_pem_manage_dashboards/02_pem_ops_dashboard.mdx new file mode 100644 index 00000000000..f951fd1f214 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/11_pem_manage_dashboards/02_pem_ops_dashboard.mdx @@ -0,0 +1,18 @@ +--- +title: "Creating an Ops Dashboard" +--- + + + +You can use the PEM [dashboard editor](01_pem_custom_dashboard/#pem_custom_dashboard) to create a custom dashboard formatted for display on an Ops monitor. An Ops dashboard displays the specified charts and graphs, while omitting header information and minimizing extra banners, titles, and borders. + +To create an Ops dashboard, provide detailed information about the Ops display in the `Ops dashboard options` section of the `Create Dashboard` dialog: + +![Ops dashboard options](../../images/define_ops_dashboard.png) + +- Set the `Ops Dashboard?` field to `Yes` to instruct the server to create a dashboard that is formatted for display on an Ops monitor. +- Set the `Show Title?` field to `Yes` to display the dashboard name at the top of the Ops dashboard. +- Use the `Font` drop-down list box to select a custom font style for the title. The selected font style will be displayed in the `Preview` box. +- Use the `Font size` drop-down list box to select a custom font size for the title. The selected font style will be displayed in the `Preview` box. + +After adding charts and tables to the Ops dashboard, click the `Save` button to save your work. You can then access the dashboard by navigating through the `Dashboards` menu of the hierarchy level specified in the `Level` field on the `New Dashboard` dialog. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/11_pem_manage_dashboards/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/11_pem_manage_dashboards/index.mdx new file mode 100644 index 00000000000..66ae2bbc8b6 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/11_pem_manage_dashboards/index.mdx @@ -0,0 +1,19 @@ +--- +title: "The PEM Manage Dashboards Tab" +--- + + + +PEM displays performance statistics through a number of system-defined dashboards; each dashboard contains a series of summary views that contain charts, graphs and tables that display statistics related to the selected object. You can use the Manage Dashboards tab to create and manage custom dashboards that display the information that is most relevant to your system. + +![Manage Dashboard tab](../../images/pem_manage_dashboards_tab.png) + +To create a custom dashboard, click the `Create New Dashboard` link (located in the `Quick Links section of the`Manage Dashboards`tab). To modify an existing dashboard, click the edit icon to the left of a dashboard name. The dashboard editor will open, displaying the definition of the dashboard. When you've finished modifying the dashboard's definition, click the`Save`button to preserve your changes; click`Cancel`to exit without saving your changes. To delete a dashboard, click the delete icon to the left of a dashboard name. A popup will ask you to confirm that you wish to delete the dashboard; click`OK\`\` to delete the selected dashboard. + +Contents: + +
+ +pem_custom_dashboard pem_ops_dashboard + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/12_pem_manage_probes/01_pem_custom_probes.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/12_pem_manage_probes/01_pem_custom_probes.mdx new file mode 100644 index 00000000000..c5d7e7f5fe9 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/12_pem_manage_probes/01_pem_custom_probes.mdx @@ -0,0 +1,93 @@ +--- +title: "Custom Probes" +--- + + + +Use the `Custom Probes` tab to create a new probe or modify an existing probe. After creating or modifying a probe, you can incorporate the data gathered by custom probes into existing or new charts or graphs. To open the `Custom Probes` tab, select the `Manage Custom Probes` icon from the `Quick Links` section of the `Manage Probes` tab. + +![Custom Probes](../../images/custom_probes.png) + +Use the `Show system probes?` switch to display the system probes on the `Custom Probes` tab. + +To modify an existing probe, click the `Edit` icon located to the left of a probe name. To create a new probe, click the `Add` icon in the upper-right corner of the tab. + +![Custom Probes - Add New Probe - General tab](../../images/custom_probes_general.png) + +Use the fields on the `General` tab to modify the definition of an existing probe or to specify the properties of a new probe. + +- Use the `Probe name` field to provide a name for a new probe. +- Use the `Collection method` field to specify the probe type. Use the drop-down listbox to select from: + +> - `SQL` (the probe will gather information via a SQL statement) +> +> - `WMI` (the probe will gather information via a Windows Management Instrumentation extension) +> +> - `Batch/Shell Script` (the probe will use a command-script or shell-script to gather information). +> +> Before creating a batch probe on a Linux system, you must modify the `agent.cfg` file, setting the `allow_batch_probes` parameter equal to `true` and restart the PEM agent. The `agent.cfg` file is located in `/opt/PEM/agent/etc`. +> +> On 64-bit Windows systems, agent settings are stored in the registry. Before creating a batch probe, modify the registry entry for the `AllowBatchProbes` registry entry and restart the PEM agent. PEM registry entries are located in `HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\EnterpriseDB\\PEM\\agent`. +> +> Please note that batch probes are platform-specific. If you specify a collection method of `Batch`, you must specify a platform type in the `Platform` field. +> +> To invoke a script on a Linux system, you must modify the entry for `batch_script_user` parameter of agent.cfg file and specify the user that should be used to run the script. You can either specify a non-root user or root for this parameter. If you do not specify a user, or the specified user does not exist, then the script will not be executed. Restart the agent after modifying the file. If pemagent is being run by a non-root user then the value of `batch_script_user` will be ignored and the script will be executed by the same non-root user that is being used for running the pemagent. + +- Use the `Target type` drop-down listbox to select the object type that the probe will monitor. `Target type` is disabled if `Collection method` is `WMI`. +- Use the `Minutes` and `Seconds` selectors to specify how often the probe will collect data. +- Use the `Probe enable?` switch to specify if the probe is enabled. Specify `Yes` to enable the probe, or `No` to specify that the probe is disabled. +- Set the `Data retention` switch to `Yes` to specify the number of days that gathered information will be retained in the probe's history table. +- Use the switch next to `Discard from history` to specify if the server should create a history table for the probe. Select `Yes` to discard probe history, or `No` to retain the probe history in a table. +- Use the `Platform` drop-down listbox to specify the type of platform that the probe will monitor. This field is enabled only when the `Collection method` is `Batch`. + +![Custom Probes - Add New Probe - Columns tab](../../images/custom_probes_columns.png) + +Use the `Columns` tab to define the columns in which the probe data will be stored. Navigate to the Columns tab, and click the `Add` button (in the upper-right corner) to define a new column. + +- Provide a name for the column in the `Name` field. + +- The `Internal name` field is not enabled for user-defined probes. + +- Use the `Column type` drop-down listbox to specify if the column is a `Key` column (a primary key) or a `Non key` column. Non-key columns are generally metric items (values that can be graphed). + +- Use the `Data type` drop-down listbox to specify the type of data that will be stored in the column. + +- Use the `Unit` field to specify the unit of measure that applies to the metric stored in the column. This unit is displayed on the Y-Axis of a custom chart or a Capacity Manager chart. This is an optional field. + +- Use the `Graphable` switch to specify if the defined metric may be graphed, and that the probe should be accessible from the Capacity Manager or Manage Charts dialogs. + +- Use the `Is PIT` switch to specify if the metric is stored by point-in-time (by default). + + 'Point-in-time' metrics are those metrics that change (increase or decrease) at any given point of time. For example, database size is a point-in-time metric; at any given point-in-time, the size of the database is fluctuating. Metrics that are not point-in-time (also referred to as cumulative metrics) are metrics whose size always increases over time. For example, Blocks Read and Tuples Read are cumulative metrics; the value stays the same or increases. + +- Use the `Calculate PIT` switch to specify that the server should calculate a point-in-time value for the metric data. `Calculate PIT` is disabled if `Is PIT` is `Yes`. + +PEM allows you to store point-in time-values of cumulative metrics as well. PEM subtracts the last collected value of a cumulative metric from the current value, and stores the difference as a point-in-time value. + +![Custom Probes - Add New Probe - Code tab](../../images/custom_probes_code.png) + +Use the `Code` tab to specify the default code that will be executed by the probe. + +- If the probe is a SQL probe, you must specify the SQL SELECT statement invoked by the probe on the `Code` tab. The column names returned by the query must match the `Internal Name` specified on the `Column` tab. The number of columns returned by the query, as well as the column name, datatype, etc. must match the information specified on the `Columns` tab. +- If the probe is a Batch probe, you must specify the shell or .bat script that will be invoked when the probe runs. The output of the script should be as follows: + +> - The first line must contain the names of the columns provided on the `Columns` tab. Each column name should be separated by a tab (t) character. +> - From the second line onwards, each line should contain the data for each column, separated by a tab character. +> - If a specified column is defined as key column, make sure the script does not produce duplicate data for that column across lines of output. +> - The number of columns specified in the `Columns` tab and their names, data type, etc. should match with the output of the script output. + +- If the probe is a WMI probe, you must specify the WMI query as a SELECT WMI query. The column name referenced in the SELECT statement should be same as the name of the corresponding column specified on the `Column` tab. The column names returned by the query must match the `Internal Name` specified on the `Column` tab. The number of columns returned by the query, as well as the column name, datatype, etc. must match the information specified on the `Columns` tab. + +![Custom Probes - Add New Probe - Alternate Code tab](../../images/custom_probes_alt_code.png) + +Use the `Alternate Code` tab to provide code that will be invoked if the probe fires on a specific version of the server. To provide version-specific code, move the `Applies to all database server versions?` switch to `No`, and click the `Add` button. Then, use the `Database version(s)` drop-down listbox to select the version to which the code will apply. After selecting the version, click the `Edit` button (to the left of the version name) to provide the code that will execute when the probe fires. + +If you select a database version, and leave the `Probe code` column blank, PEM will invoke the code specified on the `Code` tab when the probe executes on a server that matches that version. + +When you've finished defining the probe, click the `Save` icon (in the corner of the `Custom Probes` tab) to save the definition, and make the probe data available for use on custom charts and graphs. + +**Deleting Probes** + +You may delete only user-defined probes. When you delete a probe, the probe is marked for deletion, and displayed in red font in the Custom Probes table. Probes marked for deletion will be deleted when you click the Save icon (preserving changes made on the Custom Probes tab). During the deletion the probe definition is deleted and any corresponding tables are dropped from the `pemdata` and `pemhistory` schemas. + +System probes are the built-in probes provided by PEM, and are part of the PEM schema. You may only modify system probes; if you attempt to delete a system probe, you will receive an error from PEM. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/12_pem_manage_probes/02_copy_probe_config.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/12_pem_manage_probes/02_copy_probe_config.mdx new file mode 100644 index 00000000000..11addf2b934 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/12_pem_manage_probes/02_copy_probe_config.mdx @@ -0,0 +1,15 @@ +--- +title: "Copy Probe Configuration" +--- + + + +You can use the `Copy Probe Configuration...` dialog to copy probe definitions from one monitored object to one or more monitored objects of the same type. To open the `Copy Probe Configuration...` dialog, highlight the object from which you are copying probes in the PEM client tree control, and select `Manage Probes...` from the `Management` menu. When the `Manage Probes` tab opens, click on `Copy Probe` to open the `Copy Probe Configuration` dialog: + +![Copy Probe Configuration](../../images/copy_probe_config.png) + +The dialog will copy the probe definitions from the object through which the `Copy Probe Configuration` dialog was opened, to the location(s) selected on the `Copy Probe Configuration` dialog tree control. + +Note that if you specify a parent node in the `Copy Probe Configuration` tree control, PEM will copy the probe configurations to each object (of the same type) that resides under that node in the tree control. For example, to copy the probe definitions from one schema to all schemas that reside within a database, you only need to select the parent database of the target schemas. Please note that a red warning symbol is displayed to the left of the name of a listed target object if that object is the source of the probe that is being copied. + +When you have selected the target object or objects, click the `Configure Probes` button to copy the probe definitions to the location selected on the dialog. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/12_pem_manage_probes/03_pem_probe_config/01_pem_probes.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/12_pem_manage_probes/03_pem_probe_config/01_pem_probes.mdx new file mode 100644 index 00000000000..f44f9244da6 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/12_pem_manage_probes/03_pem_probe_config/01_pem_probes.mdx @@ -0,0 +1,62 @@ +--- +title: "Probes" +--- + + + +A `probe` is a scheduled task that retrieves information about the database objects that are being monitored by the PEM agent. PEM uses the collected information to build the graphs displayed on each homepage. The `Manage Probes` tab (accessed via the `Management` menu) allows you to modify the data collection schedule and the length of time that PEM will retain information returned by a specific probe. + +Unless otherwise noted, Postgres Enterprise Manager enables the probes listed in the table below: + +| Probe Name | Information Monitored by Probe | Probe Configuration Level | +| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------- | +| Background Writer Statistics | This probe monitors information about the background writer. The information includes:
- The number of timed checkpoints
- The number of requested checkpoints
- The number of buffers written (by checkpoint)
- The number of buffers written (by background writer)
- The number of background writer cycles
- The number of background buffers written
- The number of buffers allocated
| Server | +| Blocked Session Information | This probe returns information about blocked sessions. | Server | +| CPU Usage | This probe monitors CPU Usage information. | Agent | +| Data and Log File Analysis | This probe monitors information about log files. The information includes:
- The name of the log file
- The directory in which the log file resides
| Server | +| Database Frozen XID | This probe monitors the frozen XID of each database. | Server | +| Database Size | This probe monitors information about the size of the monitored databases. The information includes:
- The time the information was gathered
- The database name
- The database size (in MB's)
| Server | +| Database Statistics | This probe monitors database statistics. The information includes:
- The number of backends
- The number of transactions committed
- The number of transactions rolled back
- The number of blocks read
- The number of blocks hit
- The number of rows returned
- The number of rows fetched
- The number of rows inserted
- The number of rows updated
- The number of rows deleted
| Server | +| Disk Busy Info | This probe monitors information about disk activity.
- **Note:** This probe is not supported on Mac OS X, Solaris or HP-UX
| Agent | +| Disk Space | This probe monitors information about disk space usage. The information includes:
- The amount of disk space used
- The amount of disk space available
| Agent | +| EDB Audit Configuration | This probe monitors the audit logging configuration of Postgres Plus Advanced Servers. | Server | +| Failover Manager Cluster Info | This probe monitors a Failover Manager cluster, returning information about the cluster. This probe is disabled unless a cluster name and path of the Failover Manager binary is provided on the Server Properties dialog. | Server | +| Failover Manager Node Status | This probe monitors a Failover Manager cluster, returning detailed about each node within the cluster. This probe is disabled unless a cluster name and path of the Failover Manager binary is provided on the Server Properties dialog. | Server | +| Function Statistics | This probe monitors a database, retrieving information about functions. The information includes:
- Function names
- Argument types
- Return values
| Database | +| Index Size | This probe monitors a database, retrieving information about indexes. The information includes:
- The name of the index
- The time the data was gathered
- The size of the index (in MB's)
| Database | +| Index Statistics | This probe monitors index statistics. The information includes:
- The number of index scans
- The number of rows read
- The number of rows fetched
- The number of blocks read
- The number of blocks hit
| Database | +| Installed Packages | This probe monitors the packages that are currently installed. The information gathered includes:
- The name of the installed package
- The version of the installed package
- The date and time that the probe executed
|


Agent

| +| IO Analysis | This probe monitors disk I/O information in. The information includes:
- The number of blocks read
- The number of blocks written
- The date and time that the probe executed
- **Note:** This probe is not supported on Mac OS X
|


Agent

| +| Load Average | This probe monitors CPU load averages. The information includes:
- The 1-minute load average
- The 5-minute load average
- The 15-minute load average
- **Note:** This probe is not supported on Windows
| Agent | +| Lock Information | This probe monitors lock information. The information includes:
- The database name
- The lock type
- The lock mode
- The process holding the lock
| Server | +| Memory Usage | This probe monitors information about system memory usage. The information includes:
- Total RAM in MB
- Free RAM in MB
- Total swap memory in MB
- Free swap memory in MB
- Shared system memory in MB (It is used by tuning wizard to tune the memory parameters for the database server)
- On non-windows system, it is `shmmax` value and read from `/proc/sys/kernel/shmmax`
- On windows, it is same as total memory.
| Agent | +| Network Statistics | This probe monitors network statistics. The information includes:
- The interface IP address
- The number of packets sent
- The number of packets received
- The number of bytes sent
- The number of bytes received
- The link speed (in MB/second)
| Agent | +| Number of Prepared Transactions | This probe stores the number of prepared transactions. | Server | +| Number of WAL Files | This probe monitors the number of WAL files. | Server | +| Object Catalog: Database | This probe monitors a list of databases and their properties The information includes:
- The database name
- The database encoding type
- If the database allows user connections or system connections
| Server | +| Object Catalog: Foreign Key | This probe monitors a list of foreign keys and their properties. The information includes:
- The name of the table that contains the foreign key
- The name of the table that the foreign key references
- The name of the database in which the table resides
- The name of the schema in which the table resides
| Schema | +| Object Catalog: Function | This probe monitors a list of functions and their properties. The information includes:
- The name of the function
- The name of the schema in which the function resides
- The name of the database in which the function resides
| Schema | +| Object Catalog: Index | This probe monitors a list of indexes and their properties. The information includes:
- The name of the index
- The name of the table that the index is associated with
- The name of the database in which the indexed table resides
| Schema | +| Object Catalog: Schema | This probe monitors a list of schemas and their associated databases and servers. | Database | +| Object Catalog: Sequence | This probe monitors a list of sequences and their properties. | Schema | +| Object Catalog: Table | This probe monitors a list of table information. The information includes:
- The table name
- The name of the schema in which the table resides
- The name of the database in which the schema resides
- A Boolean indicator that indicates if the table has a primary key
| Schema | +| Object Catalog: Tablespace | This probe monitors a list of tablespaces. | Server | +| Operating System Information | This probe monitors the operating system details and boot time. | Agent | +| Package Catalog | This probe monitors the packages that are currently available for installation. The information gathered includes:
- The package name
- The package version
| Agent | +| PG HBA Conf | This probe monitors authentication configuration information from the `pg_hba.conf` file. | Server | +| Server Information | This probe monitors information about servers. | Server | +| Session Information | This probe monitors session information. The information includes:
- The name of the session user
- The date and time that the session connected to the server
- The status of the session at the time that the information was gathered (idle, waiting, etc)
- The client address and port number
| Server | +| Settings | This probe monitors the values currently assigned to GUC variables. | Server | +| SQL Protect | This probe monitors a server, retrieving information about SQL injection attacks. | Server | +| Slony Replication | This probe monitors lag data for clusters replicated using Slony. | Database | +| Streaming Replication | This probe monitors a cluster that is using streaming replication, retrieving information about:
- The sent Xlog location (in bytes)
- The write Xlog location (in bytes)
- The flush Xlog location (in bytes)
- The replay Xlog location (in bytes)
- The Xlog lag (in segments)
- The Xlog lag (in pages)
| Server | +| Streaming Replication Lag Time | This probe monitors a cluster that is using streaming replication, retrieving lag information about:
- Replication lag time (in seconds)
- Current status of replication (running/paused)
| Server | +| Streaming Replication Database Conflicts | This probe monitors a database that is using streaming replication, retrieving information about any conflicts that arise. This includes information about queries that have been canceled due to:
- The # of drop tablespace conflicts
- The # of lock timeout conflicts
- The # of old snapshot conflicts
- The # of pinned buffer conflicts
- The # of deadlock conflicts
| Server | +| Table Bloat | This probe monitors information about the current table bloat. The information includes:
- The name of the table
- The name of the schema in which the table resides
- The estimated number of pages
- The estimated number of wasted pages
- The estimated number of bytes per row
| Database | +| Table Frozen XID | This probe monitors the frozen XID of each table. | Schema | +| Table Size | This probe monitors information about table size. The information includes:
- Table size (in MB's)
- Total index size (in MB's)
- Total table size, with indexes and TOAST (in MB's)
| Database | +| Table Statistics | This probe monitors table statistics. The information includes:
- The number of sequential scans
- The number of sequential scan rows
- The number of index scans
- The number of index scan rows
- The number of rows inserted
- The number of rows updated
- The number of rows deleted
- The number of live rows
- The number of dead rows
- The last VACUUM
- The last auto-vacuum
- The last ANALYZE
- The last auto-analyze
- The number of pages estimated by ANALYZE
- The number of rows estimated by ANALYZE
| Database | +| Tablespace Size | This probe monitors a list of tablespaces and their sizes. | Server | +| User Information | This probe monitors a list of the current users. The stored information includes:
- The user name
- The user type (superuser vs. non-superuser)
- The server to which the user is connected
| Server | +| WAL Archive Status | This probe monitors the status of the WAL archive. The stored information includes:
- The # of WAL archives done
- The # of WAL archives pending
- The last archive time
- The # of WAL archives failed
- The time of the last failure
| Server | +| xDB Replication | This probe monitors lag data for clusters replicated using xDB replication. | Database | diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/12_pem_manage_probes/03_pem_probe_config/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/12_pem_manage_probes/03_pem_probe_config/index.mdx new file mode 100644 index 00000000000..73151d888b2 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/12_pem_manage_probes/03_pem_probe_config/index.mdx @@ -0,0 +1,32 @@ +--- +title: "Probe Configuration" +--- + + + +A [probe](01_pem_probes/#pem_probes) is a scheduled task that returns a set of performance metrics about a specific monitored server, database, operating system or agent. You can use the Manage Probes tab to override the default configuration and customize the behavior of each probe. To open the Manage Probes tab, select `Manage Probes…` from the `Management` menu. + +![Manage Probes tab](../../../images/pem_manage_probes_tab.png) + +The `Manage Probes` tab provides a set of `Quick Links` that you can use to create and manage probes: + +> - Click the `` `Manage Custom Probes `` <pem_custom_probes> icon to open the Custom Probes\` tab and create or modify a custom probe. +> - Click the `` `Copy Probes `` <copy_probe_config> icon to open the Copy Probe\` dialog, and copy the probe configurations from the currently selected object to one or more monitored objects. + +A probe monitors a unique set of metrics for each specific object type (server, database, database object, or agent); select the name of an object in the tree control to review the probes for that object. + +To modify the properties associated with a probe, highlight the name of a probe, and customize the settings that are displayed in the `Probes` table: + +> - Move the `Default` switch in the `Execution Frequency` columns to `No` to enable the `Minutes` and `Seconds` selectors, and specify a non-default value for the length of time between executions of the probe. +> - Move the `Default` switch in the `Enabled?` column to `No` to change the state of the probe, and indicate if the probe is active or not active. If data from a probe that is `Disabled` is used in a chart, the chart will display an information icon in the upper-left corner that allows you to enable the probe by clicking the provided link. +> - Move the `Default` switch in the `Data Retention` column to `No` to enable the `Day(s)` field and specify the number of days that information gathered by the probe is stored on the PEM server. + +The `Manage Probes` tab may also display information about probes that cannot be modified from the current node; if a probe cannot be modified from the current dialog, the switches for that probe are disabled. Generally, a disabled probe can be modified from a node that is higher in the hierarchy of the PEM client tree control. Select another object in the tree control to change which probes are displayed or enabled on the `Manage Probes` tab. + +Contents: + +
+ +pem_probes + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/12_pem_manage_probes/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/12_pem_manage_probes/index.mdx new file mode 100644 index 00000000000..f7a7de078fe --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/12_pem_manage_probes/index.mdx @@ -0,0 +1,32 @@ +--- +title: "The Manage Probes Tab" +--- + + + +A [probe](03_pem_probe_config/01_pem_probes/#pem_probes) is a scheduled task that returns a set of performance metrics about a specific monitored server, database, operating system or agent. You can use the Manage Probes tab to override the default configuration and customize the behavior of each probe. To open the Manage Probes tab, select `Manage Probes…` from the `Management` menu. + +![Manage Probes tab](../../images/pem_manage_probes_tab.png) + +The `Manage Probes` tab provides a set of `Quick Links` that you can use to create and manage probes: + +> - Click the `` `Manage Custom Probes `` <pem_custom_probes> icon to open the Custom Probes\` tab and create or modify a custom probe. +> - Click the `` `Copy Probes `` <copy_probe_config> icon to open the Copy Probe\` dialog, and copy the probe configurations from the currently selected object to one or more monitored objects. + +A probe monitors a unique set of metrics for each specific object type (server, database, database object, or agent); select the name of an object in the tree control to review the probes for that object. + +To modify the properties associated with a probe, highlight the name of a probe, and customize the settings that are displayed in the `Probes` table: + +> - Move the `Default` switch in the `Execution Frequency` columns to `No` to enable the `Minutes` and `Seconds` selectors, and specify a non-default value for the length of time between executions of the probe. +> - Move the `Default` switch in the `Enabled?` column to `No` to change the state of the probe, and indicate if the probe is active or not active. +> - Move the `Default` switch in the `Data Retention` column to `No` to enable the `Day(s)` field and specify the number of days that information gathered by the probe is stored on the PEM server. + +The `Manage Probes` tab may also display information about probes that cannot be modified from the current node; if a probe cannot be modified from the current dialog, the switches for that probe are disabled. Generally, a disabled probe can be modified from a node that is higher in the hierarchy of the PEM client tree control. Select another object in the tree control to change which probes are displayed or enabled on the `Manage Probes` tab. + +Contents: + +
+ +pem_custom_probes copy_probe_config pem_probe_config + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/13_pem_alert_blackout.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/13_pem_alert_blackout.mdx new file mode 100644 index 00000000000..34aa7185623 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/13_pem_alert_blackout.mdx @@ -0,0 +1,47 @@ +--- +title: "Schedule Alert Blackout" +--- + + + +You can use the `Schedule Alert Blackout` option on the `Management` menu to schedule an alert blackout for your Postgres servers and PEM Agents during maintenance. Alerts will not be raised during a defined blackout period. + +To schedule an alert blackout, click on the `Management` menu and select `Schedule Alert Blackout`. + +![PEM Management Menu](../images/pem_management_menu.png) + +When the `Schedule Alert Blackout` dialog opens, use the tabs on the dialog to define the blackout period for servers and agents. Open the `Server` tab and click the Add icon (+) at the top right corner to add new row. + +![Schedule Alert Blackout - Server tab](../images/pem_alert_blackout_server_tab.png) + +Use the fields on the `Server` tab to provide information about a Server to blackout the alerts: + +- Use the `Start time` field to provide the date and time to start the alert blackout. +- Use the `Duration` field to provide the interval for which you want to blackout the alerts. +- Use the `Servers` field to provide the server name for which you want to blackout the alerts. You can also select multiple servers to blackout the alerts at same time. + +Once all the details are provided, you can save the details by clicking on `Save` button on the right bottom corner of the dialog. Once saved, it cannot be edited. The alerts will not be displayed on the Alerts dashboard for the scheduled interval of that particular server. + +You can also schedule a blackout period for PEM Agents via the `Agent` tab on the dialog. Open the `Agent` tab and click the Add icon (+) at the top right corner to add new row. + +![Schedule Alert Blackout - Agent tab](../images/pem_alert_blackout_agent_tab.png) + +Use the fields on the `Agent` tab to provide the information about an Agent to blackout the alerts: + +- Use the `Start time` field to provide the date and time to start the alert blackout. +- Use the `Duration` field to provide the interval for which you want to blackout the alerts. +- Use the `Agents` field to provide the Agent name for which you want to blackout the alerts. All server level alerts, for the servers bind to that particular agent will blackout. + +Once all the details are provided, you can save the details by clicking on `Save` button on the right bottom corner of the dialog. Once saved, it cannot be edited. The alerts will not be displayed on the Alert dashboard for the scheduled interval for that `PEM Agent`. + +You can use `Clone` button from the top right corner of dialog, to clone the scheduling of alert blackout. Select the servers or agents you want to clone and then click on `Clone` button to create the cloned copy of all the selected servers or agents. You can edit newly created schedules as needed, and then click `Save`. + +You can use `Delete` button from the top right corner of dialog to remove a scheduled alert blackout. Select the servers or agents and then click on highlighted `Delete` button in the right top corner to remove the scheduled alerts associated with that server or agent. + +![Schedule Alert Blackout - Select servers](../images/pem_alert_blackout_select_servers.png) + +Select a server for which you wish to delete the scheduled alert backout and then click on the `Delete` button. The server will ask for confirmation before deleting that row. + +![Schedule Alert Blackout - Delete confirmation](../images/pem_alert_blackout_delete_confirm.png) + +You can use the `Reset` button to reset the details on the Alert Blackout dialog to the default settings. Please note that all saved blackouts will remain unaffected after resetting the current dialog values. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/14_pem_scheduled_system_jobs.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/14_pem_scheduled_system_jobs.mdx new file mode 100644 index 00000000000..564c0b51e74 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/14_pem_scheduled_system_jobs.mdx @@ -0,0 +1,9 @@ +--- +title: "Scheduled System Jobs" +--- + + + +PEM defines system jobs to take care of cleanup activities at scheduled intervals. All of the system jobs are enabled by default, and are scheduled to deploy on a regular interval. You can query the `pem.job` table in the `pem` database to review a list of the system jobs. The current schedule for system jobs is stored in the `pem.schedule` table in the `pem` database. + +The system job names, their descriptions, and default deployment intervals are listed in the table below: diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/15_pem_scheduled_task_tab.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/15_pem_scheduled_task_tab.mdx new file mode 100644 index 00000000000..c189d5ad5b3 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/15_pem_scheduled_task_tab.mdx @@ -0,0 +1,65 @@ +--- +title: "Scheduled Task Tab" +--- + + + +You can schedule the execution of user-defined tasks on registered servers for a time that is most convenient, and least intrusive to your users. Tasks may be one-off, or recurring and are comprised of one or more steps, which may be a SQL script, a batch/shell script, or an internal function in the PEM agent. You can view pending tasks on the *Scheduled Tasks tab.* + +To open the `Scheduled Tasks` tab, select either a PEM Agent or a managed server in the tree control of the PEM client and select `Scheduled Tasks...` from the `Management` menu. + +![Scheduled Tasks tab](../images/pem_scheduled_task_tab.png) + +The tab features a legend, displaying the icons that identify the status of each task. + +The `Manage Tasks` table displays a list of tasks. Set `Show system tasks?` to `Yes` to display system tasks; if it is set to `No`, only user-defined tasks are displayed. System tasks are displayed with a grey background, and may not be modified. + +Use the `Refresh` icon to update the list of tasks displayed in the table. The table displays general information about each task. + +- The `Execution` drop-down provides access to detailed information about each step in the task. +- The `Status` field lists the status of the current task. +- The `Enabled?` switch displays `Yes` if the task is enabled; `No` if the task is disabled. +- The `Name` field displays the name of the task. +- The `Agent` or `Server` field displays the name of the agent responsible for executing the task or the server on which the task will execute. + +Highlight the name of a user-defined task and click the `Edit` icon (to the left of a task name) to access detailed information about the selected task. + +![Scheduled Tasks - details](../images/pem_scheduled_task_details.png) + +The `General` tab displays information about the scheduled task: + +- The `Status` field lists the status of the current task. +- The `Enabled?` switch displays `Yes` if the task is enabled; `No` if the task is disabled. +- The `Name` field displays the name of the task. +- The `Agent` or `Server` field displays the name of the agent responsible for executing the task or the server on which the task will be performed. +- The `Description` field displays a description of the task. +- The `Last run` field displays the date and time of the last execution of the task. +- The `Next run` field displays the date and time of the next scheduled execution of the task. +- The `Created` field displays the date and time that the task was defined. + +Highlight the name of a user-defined task and open the `Steps` arrow to review a list of the steps within the task. + +![Scheduled Tasks - Steps details](../images/pem_scheduled_task_steps.png) + +The list of steps displays general information about each step in the task: + +- The `Execution date` field displays the date on which the step will execute. Step history is grouped by execution date; use the arrow to the left of an execution date to expand the node and review the task logs for that date. +- The `Description` field displays a description of the step. + +Use the arrow to the left of an execution date (in the `Steps` column) to view detailed information about the step: + +- The `Step` field displays a description of the step. +- The `Type` field displays the task type. +- The `Status` field lists the status of the current task. +- If applicable, the `Result` field displays code generated during the execution of the step. +- The `Start/Next run` field displays the date and time at which the task executed or will execute again. +- The `Duration` field displays the length of time that the task required for execution. +- The `Output` field displays the result set returned by the execution of the task. By default, it displays the first 250 characters. You can also change the display characters by changing the `Schedule Tasks` options in the `Preference` dialog. +- The `Log details` field allows you to open the log in the new browser window and also download the complete log. + +To delete a user-defined task, highlight the name of the task, and click the `Delete` icon located to the left of a task's name. The task will be marked for deletion, and removed when you click the `Save` icon (located in the upper-right corner of the `Manage Tasks` table. + +!!! Note + Tasks with no `Next run` date will automatically be removed from the PEM server when the last run date is more than probe_log_retention_time <pem_config_options> days ago. + +Please note that if any of the scheduled tasks for backup, restore, validate host, validate server or delete obsolete backup for any of the BART Server gets deleted, it will not display under the `BART Tool Activities` graph of BART Server's dashboard. However, it gets listed under the `Initiated Server Backups` list. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/16_pem_scheduled_jobs.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/16_pem_scheduled_jobs.mdx new file mode 100644 index 00000000000..f0e7e5bf951 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/16_pem_scheduled_jobs.mdx @@ -0,0 +1,131 @@ +--- +title: "Creating a PEM Scheduled Job" +--- + + + +You can create a PEM scheduled job to perform a set of custom-defined steps in the specified sequence. These steps may contain SQL code or a batch/shell script that you may run on a server that is bound with the agent. You can schedule these jobs to suit your business requirements. For example, you can create a job for taking a backup of a particular database server and schedule it to run on a specific date and time of every month. + +To create or manage a PEM scheduled job, use the PEM tree control to browse to the PEM agent for which you want to create the job. The tree control will display a Jobs node, under which currently defined jobs are displayed. To add a new job, right click on the Jobs node, and select Create Job... from the context menu. + +When the Create Agent Job dialog opens, use the tabs on the Create - Agent Job dialog to define the steps and schedule that make up a PEM scheduled job. + +![Create Agent Job dialog - General tab](../images/create_pem_jobs_general.png) + +Use the fields on the `General` tab to provide general information about a job: + +> - Provide a name for the job in the `Name` field. +> - Move the `Enabled` switch to the `Yes` position to enable a job, or `No` to disable a job. +> - Use the `Comment` field to store notes about the job. + +![Create Agent Job dialog - Steps tab](../images/create_pem_jobs_steps.png) + +Use the `Steps` tab to define and manage the steps that the job will perform. Click the Add icon (+) to add a new step; then click the compose icon (located at the left side of the header) to open the step definition dialog: + +![Create Agent Job dialog - Definition tab](../images/create_pem_jobs_steps_definition.png) + +Use fields on the step definition dialog to define the step: + +> - Provide a name for the step in the `Name` field; please note that steps will be performed in alphanumeric order by name. +> - Use the `Enabled` switch to include the step when executing the job (`True`) or to disable the step (`False`). +> - Use the `Kind` switch to indicate if the job step invokes SQL code (`SQL`) or a batch script (`Batch`). +> +> > - If you select `SQL`, use the `Code` tab to provide SQL code for the step. +> > - If you select `Batch`, use the `Code` tab to provide the batch script that will be executed during the step. +> +> Use the `On error` drop-down to specify the behavior of pgAgent if it encounters an error while executing the step. Select from: +> +> > - `Fail` - Stop the job if you encounter an error while processing this step. +> > - `Success` - Mark the step as completing successfully, and continue. +> > - `Ignore` - Ignore the error, and continue. +> +> - If you have selected SQL as your input for `Kind` switch, provide the following additional information: +> - Use the `Server` field to specify the server that is bound with the agent for which you are creating the PEM scheduled job. +> - Use the `Database` field to specify the database that is associated with the server that you have selected. +> - Use the `Comment` field to provide a comment about the step. + +![Create Agent Job dialog - Definition Code tab](../images/create_pem_jobs_steps_definition_code.png) + +Use the context-sensitive field on the step definition dialog's `Code` tab to provide the SQL code or batch script that will be executed during the step: + +> - If the step invokes SQL code, provide one or more SQL statements in the `SQL query` field. +> - If the step invokes a batch script, provide the script in the `Code` field. If you are running on a Windows server, standard batch file syntax must be used. When running on a Linux server, any shell script may be used, provided that a suitable interpreter is specified on the first line (e.g. *#!/bin/sh*). Along with the defined inline code, you can also provide the path of any batch script, shell script, or SQL file on the filesystem. + +To invoke a script on a Linux system, you must modify the entry for `batch_script_user` parameter of agent.cfg file and specify the user that should be used to run the script. You can either specify a non-root user or root for this parameter. If you do not specify a user, or the specified user does not exist, then the script will not be executed. Restart the agent after modifying the file. If pemagent is being run by a non-root user then the value of `batch_script_user` will be ignored and the script will be executed by the same non-root user that is being used for running the pemagent. + +To invoke a script on a Windows system, set the registry entry for `AllowBatchJobSteps` as true and restart the PEM agent. PEM registry entries are located in HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\EnterpriseDB\\PEM\\agent. + +After providing all the information required by the step, click the `Save` button to save and close the step definition dialog. + +Click the add icon (+) to add each additional step, or select the `Schedules` tab to define the job schedule. + +
+ +
+ +Note + +
+ +When you create the Job, the time fields under `Schedules` tab takes the timezone of the client machine. While saving the jobs on the PEM Server, the timezone gets converted according to PEM Server's timezone irrespective of PEM Agent's location. + +
+ +Click the Add icon (+) to add a schedule for the job; then click the compose icon (located at the left side of the header) to open the schedule definition dialog: + +![Create Agent Job dialog - Schedules General tab](../images/create_pem_jobs_schedules.png) + +Use the fields on the Schedules definition tab to specify the days and times at which the job will execute. + +> - Provide a name for the schedule in the `Name` field. +> - Use the `Enabled` switch to indicate that pgAgent should use the schedule (`Yes`) or to disable the schedule (`No`). +> - Use the calendar selector in the `Start` field to specify the starting date and time for the schedule. +> - Use the calendar selector in the `End` field to specify the ending date and time for the schedule. +> - Use the `Comment` field to provide a comment about the schedule. + +Select the `Repeat` tab to define the days on which the schedule will execute. + +![Create Agent Job dialog - Schedules Repeat tab](../images/create_pem_jobs_schedules_repeat.png) + +Use the fields on the `Repeat` tab to specify the details about the schedule in a cron-style format. The job will execute on each date or time element selected on the `Repeat` tab. + +Click within a field to open a list of valid values for that field; click on a specific value to add that value to the list of selected values for the field. To clear the values from a field, click the X located at the right-side of the field. + +Use the fields within the `Days` box to specify the days on which the job will execute: + +> - Use the `Week Days` field to select the days on which the job will execute. +> - Use the `Month Days` field to select the numeric days on which the job will execute. Specify the `Last Day` to indicate that the job should be performed on the last day of the month, irregardless of the date. +> - Use the `Months` field to select the months in which the job will execute. + +Use the fields within the `Times` box to specify the times at which the job will execute: + +> - Use the `Hours` field to select the hour at which the job will execute. +> - Use the `Minutes` field to select the minute at which the job will execute. + +Select the `Exceptions` tab to specify any days on which the schedule will `not` execute. + +![Create Agent Job dialog - Schedule Exceptions tab](../images/create_pem_jobs_schedules_exceptions.png) + +Use the fields on the `Exceptions` tab to specify days on which you wish the job to not execute; for example, you may wish for jobs to not execute on national holidays. + +Click the Add icon (+) to add a row to the exception table, then: + +> - Click within the `Date` column to open a calendar selector, and select a date on which the job will not execute. Specify `` in the `Date` column to indicate that the job should not execute on any day at the time selected. +> - Click within the `Time` column to open a time selector, and specify a time on which the job will not execute. Specify `` in the `Time` column to indicate that the job should not execute at any time on the day selected. + +Select the `Notifications` tab to configure the email notification settings on job level: + +![Create Agent Job dialog - Notifications tab](../images/create_pem_jobs_notifications.png) + +Use the fields on the `Notifications` tab to configure the email notification settings for a job: + +> - Use the `Send the notifications` field to specify when you want the email notifications to be sent. +> - Use the `Email group` field to specify the email group that should receive the email notification. + +When you've finished defining the schedule, you can use the `SQL` tab to review the code that will create or modify your job. + +![Create Agent Job dialog - SQL tab](../images/create_pem_jobs_sql.png) + +Click the `Save` button to save the job definition, or `Cancel` to exit the job without saving. Use the `Reset` button to remove your unsaved entries from the dialog. + +After saving a job, the job will be listed under the `Jobs` node of the PEM tree control of the server on which it was defined. The `Properties` tab in the PEM console will display a high-level overview of the selected job, and the Statistics tab will show the details of each run of the job. To modify an existing job or to review detailed information about a job, right-click on a job name, and select `Properties` from the context menu. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/17_pem_job_notification.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/17_pem_job_notification.mdx new file mode 100644 index 00000000000..3cfd83a20ef --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/17_pem_job_notification.mdx @@ -0,0 +1,51 @@ +--- +title: "Sending email notifications for a job" +--- + + + +You can configure the settings in PEM console for sending the SMTP trap on success or failure of a system-generated job (listed under scheduled tasks) or a custom-defined agent job. For information on custom-defined agent job, see ‘Creating PEM Scheduled Jobs’. These email notification settings can be configured at following three levels (in order of precedence) to send email notifications to the specified user group: + +> - Job level +> - Agent level +> - PEM server level (default level) + +## Configuring job notifications at job level + +You can configure email notification settings at job level only for a custom-defined agent job in one of the following ways: + +> - For a new agent job, you can configure the email notification settings in the `Notification` tab of `Create-Agent Job` wizard while creating the job itself. +> - For an existing custom-defined job, you can edit the properties of the job and configure the notification settings. + +![Job Notifications - Job level](../images/job_notifications_job_level.png) + +Use the fields on the Notifications tab to configure the email notification settings on job level: + +> - Use the `Send the notifications` field to specify when you want the email notifications to be sent. +> - Use the `Email group` field to specify the email group that should receive the email notification. + +## Configuring job notifications at agent level + +Select the agent in the tree view, right click and select `Properties`. In the Properties dialog, select the `Job notifications` tab. + +![Job Notifications - Agent level](../images/job_notifications_agent_level.png) + +Use the fields on the Job notifications tab to configure the email notification settings on agent level: + +- Use the `Override default configuration?` switch to specify if you want the agent level job notification settings to override the default job notification settings. If you select Yes for this switch, you can use the rest of the settings on this dialog to define when and to whom the job notifications should be sent. Please note that the rest of the settings on this dialog work only if you enable the `Override default configuration?` switch. +- Use the `Email on job completion?` switch to specify if the job notification should be sent on the successful job completion. +- Use the `Email on a job failure?` switch to specify if the job notification should be sent on the failure of a job. +- Use the `Email group` field to specify the email group to whom the job notification should be sent. + +## Configuring job notifications at server level + +You can use the `Server Configuration` dialog to provide information about your email notification configuration at PEM server level. To open Server Configuration dialog, select `Server Configuration...` from the PEM client's Management menu. + +![Job notifications - Server level](../images/job_notifications_server_level.png) + +Four server configuration parameters specify information about your job notification preferences at PEM server level: + +> - Use the `job_failure_notification` switch to specify if you want to send email notification after each job failure. +> - Use the `job_notification_email_group` parameter to specify the email group that should receive the email notification. +> - Use the `job_retention_time parameter` to specify the number of days that non-recurring scheduled tasks should be retained in the system. +> - Use the `job_status_change_notification` switch to specify if you want to send email notification after each job status change, irrespective of its status being a failure, success, or interrupted. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/18_pem_task_view/01_pem_log_view.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/18_pem_task_view/01_pem_log_view.mdx new file mode 100644 index 00000000000..b3c44255049 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/18_pem_task_view/01_pem_log_view.mdx @@ -0,0 +1,19 @@ +--- +title: "Log Viewer" +--- + + + +When PEM executes [scheduled tasks](./#pem_task_view), log records are created to record the status of each step of the task for diagnostic purposes. Log records can be viewed on the *Log Viewer* dialogue, opened from the [Scheduled Task dialogue](./#pem_task_view). + +![Scheduled Task Log viewer](../../images/pem_log_view.png) + +The dialogue displays the log data relating to each step of the task: + +- **Step** - The name of the step. +- **Type** - The type of the step, one of SQL, Batch or Internal. +- **Status** - The status of the step. +- **Result** - The numeric result of the step. For a batch step, this will be the return code of the script. +- **Start / Next Run** - The schedule for the next run. +- **Duration** - The duration of the step. +- **Output** - The output text from the step, if any. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/18_pem_task_view/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/18_pem_task_view/index.mdx new file mode 100644 index 00000000000..f038ee4bc6c --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/18_pem_task_view/index.mdx @@ -0,0 +1,37 @@ +--- +title: "Task Viewer" +--- + + + +Postgres Enterprise Manager runs tasks on managed servers by scheduling them on the PEM server for the agent on the managed server to execute at the appropriate time. Tasks may be one-off, or recurring and are comprised of one or more steps, which may be a SQL script, a batch/shell script, or an internal function in the PEM agent. Tasks may be viewed using the *Scheduled Tasks dialogue.* + +To open the `Scheduled Tasks dialogue`, select either a PEM Agent or a managed server in the tree control of the PEM client and select the `Scheduled Tasks` menu option from the `Server` sub-menu of the `Management` menu, or from the context menu. + +![Scheduled Task viewer](../../images/pem_task_view.png) + +The dialogue displays the task data relating to the selected object when it was opened. The following details are shown: + +- **Status** - The status of the task following the last execution. +- **Enabled?** - An indicator showing whether the task is enabled or not. +- **Name** - The name of the task. +- **Server** - The server on which the task will be executed, where applicable. +- **Description** - A description of the task. +- **Last Run** - The time the task was last executed. +- **Next Run** - The time the task is next scheduled to execute, if any. +- **Created** - The time and date that the task was created. + +In order to [view the log records](01_pem_log_view/#pem_log_view) for a task, select it in the list and click the `Log Viewer` button. + +In order to remove tasks and their associated log records (if present), click the checkbox to select each task to be removed, and then click the `Remove` button. + +!!! Note + Tasks with no next run date will automatically be removed from the PEM server when the last run date is more than probe_log_retention_time <pem_config_options> days ago. + +Contents: + +
+ +pem_log_view + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/19_monitoring_a_failover_manager_cluster.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/19_monitoring_a_failover_manager_cluster.mdx new file mode 100644 index 00000000000..8818b46a20e --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/19_monitoring_a_failover_manager_cluster.mdx @@ -0,0 +1,56 @@ +--- +title: "Monitoring a Failover Manager Cluster" +--- + + + +You can configure PEM to display status information about one or more Failover Manager clusters on the Streaming Replication dashboard. Before configuring PEM to monitor a Failover Manager cluster, you must install and configure Streaming Replication and Failover Manager on the cluster. + +Please note that your Streaming Replication `standby.signal` file must include the following parameters: + +- primary_conninfo +- promote_trigger_file + +For information about installing and configuring Failover Manager and Streaming Replication, please see the EnterpriseDB Failover Manager Guide, available at [www.enterprisedb.com](http://www.enterprisedb.com). + +To configure PEM to monitor a Failover Manager cluster, use the PEM client to create a server definition for the primary node of the Failover Manager cluster. Use the tabs on the [New Server Registration](../01_toc_pem_getting_started/07_pem_define_connection/#pem_define_connection) dialog to specify general connection properties for the primary node; use fields on the `Advanced` tab to specify information about the Failover Manager cluster: + +- Use the `EFM Cluster Name` field to specify the name of the Failover Manager cluster. The cluster name is the prefix of the name of the cluster properties file. For example, if your cluster properties file is named `efm.properties`, your cluster name is `efm`. +- Use the `EFM Installation Path` field to specify the location of the Failover Manager binary file. By default, the Failover Manager binary file is installed in `/usr/efm-x.x/bin`. + +After saving the server definition, the primary node will be included in the list of servers under the `PEM Server Directory` in the PEM client `Object browser` tree, and will be displayed on the `Global Overview` dashboard. + +To include Failover Manager information on the Streaming Analysis dashboard, you must enable the following probes for each node in the Failover Manager cluster: + +- Failover Manager Cluster Info +- Failover Manager Node Status + +To enable a probe, right click on the node name, and select `Manage Probes` from the `Management` menu. + +To view the `Streaming Replication Analysis` dashboard and the status of the Failover Manager cluster, right click on the name of the primary node in the `Object browser` tree control and navigate through the `Dashboards` menu to select [Streaming Replication Analysis](01_dashboards/16_str_replication_dashboard/#str_replication_dashboard). + +## Promoting a Cluster + +Select the `Replace Cluster Primary` from `Server` under the `Tools` menu to start the failover process. When you select `Replace Cluster Primary`, a popup opens, asking you to confirm that you wish to replace the current primary node: + +![Failover Manager dialog - Replace Cluster Primary](../images/fm_replace_primary.png) + +Select `No` to exit the popup without replacing the current primary node. + +Select `Yes` to remove the current primary node from the Failover Manager cluster and promote a replica node to the role of read/write primary node within a Failover Manager cluster. The node with the highest promotion priority (defined in Failover Manager) will become the new primary node. PEM will display a dialog, reporting the job status. + +![Failover Manager dialog - Job Results](../images/fm_job_result.png) + +When the job completes and the Streaming Replication Analysis dashboard refreshes, you can review the `Failover Manager Node Status` table to confirm that a replica node has been promoted to the role of primary within the Failover Manager cluster. + +### Switchover EFM Cluster + +You can use the PEM client to switchover the primary node of a Failover Manager cluster with a replica node. To initiate the switchover process, select Switchover EFM Cluster from the Tools menu. A dialog opens, asking you to confirm that you wish to switchover EFM cluster. + +![Switchover EFM Cluster](../images/fm_switchover_cluster.png) + +Select `Yes` to switchover EFM cluster from the Failover Manager cluster and promote a replica node to the role of read/write primary node and reconfigure the primary database as a new replica within a Failover Manager cluster. The node with the highest promotion priority (defined in Failover Manager) will become the new primary node. PEM will display a dialog, reporting the job status. + +![Confirmation of the promotion](../images/fm_switchover_job_result.png) + +When the job completes and the Streaming Replication Analysis dashboard refreshes, you can review the `Failover Manager Node Status` table to confirm that a switchover within the Failover Manager cluster. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/20_performance_diagnostic.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/20_performance_diagnostic.mdx new file mode 100644 index 00000000000..0b48a3b34c3 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/20_performance_diagnostic.mdx @@ -0,0 +1,103 @@ +--- +title: "Performance Diagnostic" +--- + + + +You can use the Performance Diagnostic dashboard to analyze the database performance for Postgres instances by monitoring the wait events. To display the diagnostic graphs, PEM uses the data collected by EDB Wait States module. + +Peformance Diagnostic feature is supported for Advanced Server databases from PEM 7.6 version onwards and for PostgreSQL databases it is supported from PEM 8.0 onwards. + +
+ +
+ +Note + +
+ +For PostgreSQL databases, Performance Diagnostics is supported only for versions 10, 11, and 12 installed on the supported CentOS or RHEL platforms. + +
+ +For more information on EDB Wait States, see [EDB Postgres Advanced Server Guide](/epas/latest/epas_guide/13_performance_analysis_and_tuning/). + +You can analyze the Wait States data on multiple levels by narrowing down your selection of data. Each level of the graph is populated on the basis of your selection of data at the higher level. + +Prerequisite: + +- For PostgreSQL, you need to install `edb_wait_states_` package from `edb.repo` where `` is the version of PostgreSQL Server. You can refer to [EDB Build Repository](https://repos.enterprisedb.com/) for the steps to install this package. For Advanced Server, you need to install `edb-as-server-edb-modules`, Where `` is the version of Advanced Server. + +- Once you ensure that EDB Wait States module of EDB Postgres Advanced Server is installed, then configure the list of libraries in the `postgresql.conf` file as below: + + `shared_preload_libraries = '$libdir/edb_wait_states'` + +Restart the database server, and then create the following extension in the maintenance database: + +> `CREATE EXTENSION edb_wait_states;` + +- You must have super user privileges to access the Performance Diagnostic dashboard. + +You get the following error while accessing the Performance Diagnostic dashboard if the above prerequisites are not met: + +![Performance Diagnostic Error dialog](../images/performance_diagnostic_error.png) + +To open the Performance Diagnostic dashboard, select `Server` and then `Performance Diagnostic...` from the `Tools` menu of the PEM client. + +![Performance Diagnostic dashboard](../images/performance_diagnostic_intro.png) + +By default, the top most Performance Diagnostic graph pulls the data of last one hour, starting from current date and time. This graph shows the time series containing the number of active sessions. Each point of this time series represents the active sessions and wait events at a particular time and last 15 seconds. These sessions may or may not be waiting for an wait event, or using the CPU at a particular point in time. This time series is generated based on the wait event samples collected by the `edb_wait_states` extension. + +You can also use the `Preferences` dialog to display Performance Diagnostic in a new browser tab. Use `Open in New Browser Tab?` to display the Performance Diagnostics dashboard in a new browser tab. + +The range selection in the first graph is 10 minutes. You can use the `Last` drop-down list box to select the duration for which you want to see the graph: select the last 1 hour, last 4 hours, last 12 hours, or last 24 hours. You can also select the date and time through which you want the data to be displayed. + +![Performance Diagnostic dashboard - Time Changes option](../images/performance_diagnostic_datetime_selection.png) + +The first graph displays the number of active sessions (and - wait event types) for the selected time interval. You can narrow down the timeline in the first graph to analyze the data for a specific time period. + +Next section plots the following graphs based on the selected time interval in the first graph: + +1. Donut graph - It shows total wait event types according to the time range selection in the first graph. It helps you understand how much time was spent by those session on waiting for an event. +2. Line graph - It plots a time series with each point representing the active sessions for each sample time. + +To differentiate each wait event types and the CPU usage clearly, the graph for each wait event type is displayed in a different color. + +Select a particular time on the `Line graph` for which you wish to analyze the wait events; the third section displays the wait event details in the Performance Diagnostics dashboard on the basis of your selected particular time in the second graph. The third section displays wait event details on three tabs: + +- The `SQL` tab displays the list of SQL queries having wait events for the selected sample time. +- The `Users` tab displays the details of the wait events grouped by users for selected sample time. +- The `Waits` tab displays the number of wait events belonging to each wait event type for the selected sample time. + +![Performance Diagnostic dashboard - Time range selection in the first Wait event types graph](../images/performance_diagnostic_timeseries_selection.png) + +You can click on the graph legends to show or hide a particular wait event type in all the graphs. This will make the analysis of a specific wait event type easier. + +![Performance Diagnostic dashboard - Show and hide a particular wait event type by click the respective graph legend](../images/performance_diagnostic_chart_legends.png) + +You can filter the data displayed in the rows under all the three tabs. You can also sort the data alphabetically by clicking on the column headers. + +SQL tab + +![Performance Diagnostic - SQL tab with filter applied](../images/performance_diagnostic_table_filter.png) + +Users tab + +![Performance Diagnostic - Users tab](../images/performance_diagnostic_users_table.png) + +Waits tab + +![Performance Diagnostic - Waits tab](../images/performance_diagnostic_wait_events.png) + +Click on the Eye icon in any row of the SQL tab to display a new tab with details of the query of that particular row. This page displays Query ID and its corresponding session IDs in a dropdown list at that particular selected sample time in the Query information section. You can select the session ID for the selected query for which you want to analyze the data. You will see the details corresponding to the selected session ID and query ID. The Query information table also displays the SQL query. If the SQL query is being displayed partially, click the down arrow at the bottom of the section to view the complete SQL query. + +The `Wait event types` section displays the total number of wait event types for the selected session ID and query ID. It shows two type of graphs: + +1. Donut graph - It shows the proportions of categorical data, with the size of each piece representing the proportion of each wait event type. +2. Timeline bar graph - It can be used to visualize trends in counts of wait event types over time. + +To differentiate clearly, each wait event type is represented by a different color in the bar graph. + +![Performance Diagnostic - Query dashboard](../images/performance_diagnostic_query_dashboard.png) + +The `Wait events` section has a table displaying all the wait events occured during the query execution. It displays data in decreasing order by number of the wait events. Second table displays the wait event with sample time occured over the period of whole query execution. It allows to analyze the wait events during the query execution over the period of time. It shows the actual samples collected by the EDB Wait States extension for that particular query ID and session ID. diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/21_reports.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/21_reports.mdx new file mode 100644 index 00000000000..0f5bcddb164 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/21_reports.mdx @@ -0,0 +1,71 @@ +--- +title: "Reports" +--- + + + +You can generate the System Configuration report and Core Usage report for all locally and remotely managed servers. To generate this report, select `Reports` from the `Management` Menu. + +Reports has following options: + +> - System Configuration Report (JSON) +> - System Configuration Report (HTML) +> - Core Usage Report (JSON) +> - Core Usage Report (HTML) + +Please note that only superusers or the users with the pem_admin role permission can download the System Configuration or Core Usage reports. + +Also note that information in these reports will reflect the latest probe run time. + +## System Configuration Report + +The System Configuration Report provides detailed information about the PEM Agents group, PEM Server directory group and custom groups listed under browser tree. These groups can contain Postgres Enterprise Manager, PEM Agents and Database servers. You can download this report in HTML as well as in JSON format. + +The `Postgres Enterprise Manager Summary` provides details about: + +> - The Postgres Enterprise Manager backend database server version +> - Application Version +> - User name accessing the application +> - Python version +> - Flask version +> - Platform specific information + +The `Summary`, details about the number of agents and servers are provided. + +![System Configuration Report - PEM Summary and Summary](../images/system_configuration_report_pem_summary_and_summary.png) + +The `Group: PEM Agents`, details about PEM Agent, CPU, Disk Utilization as well as Memory details are provided. + +![System Configuration Report - PEM Agents](../images/system_configuration_report_pem_agents.png) + +The `Group: PEM Server Directory`, provides details about: + +> - The database server version +> - Host +> - Port +> - Database name +> - Database size +> - Tablespace size + +![System Configuration Report - Group Server Name](../images/system_configuration_report_pem_server_directory.png) + +Please note that here Group Server Name depends on the group name to which the server is added. + +## Core Usage Report + +The Core Usage report provides detailed information about number of cores specific to: + +> - The server type +> - Database version +> - Platform and group name + +Also, gives detailed information about locally managed servers with: + +> - Type +> - Host +> - Port +> - Platform +> - Cores +> - RAM + +![Core Usage Report](../images/core_usage_report.png) diff --git a/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/index.mdx new file mode 100644 index 00000000000..c1c62297279 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/04_toc_pem_features/index.mdx @@ -0,0 +1,55 @@ +--- +title: "Enterprise Management Features" +--- + + + +Postgres Enterprise Manager offers a number of additional enterprise management features that will assist you in managing, analyzing, streamlining, and deploying Postgres functionality. PEM probes monitor managed servers, retrieving information that PEM then analyzes to create dashboards that display useful information and statistics about your hosts, servers and databases. PEM dialogs provide easy access to probe, server, and agent configurations so you can enable and customise the behaviour of PEM features. + +Contents: + +
+ +dashboards pem_server_config + +
+ +PEM configuration wizards simplify the process of configuring logging; after logs are gathered, you can use PEM features like the PEM Log Analysis Expert and Tuning Wizard to help you skillfully analyze log file contents. Postgres Expert analyses server configuration, and recommends changes that may improve performance, security, or reliability. Capacity Manager uses statistical data to analyze historical usage, and extrapolate future usage statistics for monitored objects. + +Contents: + +
+ +log_manager audit_manager pem_log_analysis_expert tuning_wizard pem_postgres_expert capacity_manager + +
+ +PEM is highly customizable. You can modify system-defined alerts, or create custom alerts that notify a responsible administrator or group during a specific time period. PEM charts and dashboards are designed to provide an at-a-glance overview of the state of your systems, but you can design custom charts that display the most useful combinations of metric data returned by PEM probes. Then, create custom dashboards with details that `you` need to identify problems, plan for resource usage, or diagnose unique performance issues. + +Contents: + +
+ +pem_alerting pem_manage_charts pem_manage_dashboards pem_manage_probes + +
+ +PEM can schedule jobs on monitored servers. you can use the wizards to schedule the setup to occur at a time when server usage is low, or when a system restart won't interrupt your users. The Scheduled Task tab provides an overview of all the tasks that are pending execution or that have recently completed on your servers. Performance diagnostic feature helps you analyze the database performance for Advanced Server instances by monitoring the wait events. + +Contents: + +
+ +pem_alert_blackout pem_scheduled_system_jobs pem_scheduled_task_tab pem_scheduled_jobs pem_job_notification pem_task_view monitoring_a_failover_manager_cluster performance_diagnostic + +
+ +PEM can generate system configuration and core usage reports of locally or remotely monitored servers in HTML as well as in JSON format. + +Contents: + +
+ +reports + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/01_grant_wizard.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/01_grant_wizard.mdx new file mode 100644 index 00000000000..98aeeaffddd --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/01_grant_wizard.mdx @@ -0,0 +1,51 @@ +--- +title: "Grant Wizard" +--- + + + +The `Grant Wizard` tool is a graphical interface that allows you to manage the privileges of one or more database objects in a point-and-click environment. A search box, dropdown lists, and checkboxes facilitate quick selections of database objects, roles and privileges. + +The wizard organizes privilege management through a sequence of windows: `Object Selection (step 1 of 3)`, `Privileges Selection (step 2 of 3)` and `Final (Review Selection) (step 3 of 3)`. The `Final (Review Selection)` window displays the SQL code generated by wizard selections. + +To launch the `Grant Wizard` tool, select a database object in the `Browser` tree control, then navigate through `Tools` on the menu bar to click on the `Grant Wizard` option. + +![Grant Wizard - Object Selection page](../images/grant_wizard_step1.png) + +Use the fields in the `Object Selection (step 1 of 3)` window to select the object or objects on which you are modifying privileges. Use the `Search by object type or name` field to locate a database object, or use the scrollbar to scroll through the list of all accessible objects. + +- Each row in the table lists object identifiers; check the checkbox in the left column to include an object as a target of the Grant Wizard. The table displays: + + > - The object type in the `Object Type` field + > - The schema in which the object resides in the `Schema` field + > - The object name in the `Name` field. + +Click the `Next` button to continue, or the `Cancel` button to close the wizard without modifying privileges. + +![Grant Wizard - Select Privileges page](../images/grant_wizard_step2.png) + +Use the fields in the `Privileges Selection (step 2 of 3)` window to grant privileges. If you grant a privilege WITH GRANT OPTION, the Grantee will have the right to grant privileges on the object to others. If WITH GRANT OPTION is subsequently revoked, any role who received access to that object from that Grantee (directly or through a chain of grants) will lose thier privileges on the object. + +- Click the `Add` icon (+) to assign a set of privileges. +- Select the name of the role from the drop-down listbox in the `Grantee` field. +- Click inside the `Privileges` field. Check the boxes to the left of one or more privileges to grant the selected privileges to the specified user. If privileges have previously been granted on a database object, unchecking a privilege for a group or user will result in revoking that privilege. +- The current user, who is the default grantor for granting the privilege, is displayed in the `Grantor` field. +- Click the `Add` icon (+) to assign a set of privileges to another role; to discard a privilege, click the trash icon to the left of the row and confirm deletion in the `Delete Row` dialog. + +For more information about granting privileges on database objects, see the [PostgreSQL core documentation](http://www.postgresql.org/docs/9.5/static/sql-grant.html). + +Click the `Next` button to continue, the `Back` button to select or deselect additional database objects, or the `Cancel` button to close the wizard without modifying privileges. + +Your entries in the `Grant Wizard` tool generate a SQL command; you can review the command in the `Final (Review Selection) (step 3 of 3)` window (see an example below). + +**Example** + +The following is an example of the sql command generated by user selections in the `Grant Wizard` tool: + +![Grant Wizard - Review Selection page](../images/grant_wizard_step3.png) + +The commands displayed assign a role named `Bob` `INSERT` and `UPDATE` privileges `WITH GRANT OPTION` on the `sales_meetings` and the `sales_territories` tables. + +- Click the `Back` button to select or deselect additional database objects, roles and privileges. +- Click the `Cancel` button to exit without saving work. +- Click the `Finish` button to save selections and exit the wizard. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/02_add_restore_point_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/02_add_restore_point_dialog.mdx new file mode 100644 index 00000000000..225de0e909f --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/02_add_restore_point_dialog.mdx @@ -0,0 +1,16 @@ +--- +title: "Add named restore point Dialog" +--- + + + +Use the `Add named restore point` dialog to take a named snapshot of the state of the server for use in a recovery file. To create a named restore point, the server's postgresql.conf file must specify a `wal_level` value of `replica`, or `logical`. You must be a database superuser to create a restore point. + +![Restore point dialog](../images/add_restore_point.png) + +When the `Restore point name` window launches, use the field `Enter the name of the restore point to add` to provide a descriptive name for the restore point. + +For more information about using a restore point as a recovery target, please see the [PostgreSQL documentation](https://www.postgresql.org/docs/current/runtime-config-wal.html#RUNTIME-CONFIG-WAL-RECOVERY-TARGET). + +- Click the `OK` button to save the restore point. +- Click the `Cancel` button to exit without saving work. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/03_import_export_data.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/03_import_export_data.mdx new file mode 100644 index 00000000000..aa50b28d839 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/03_import_export_data.mdx @@ -0,0 +1,66 @@ +--- +title: "Import/Export data Dialog" +--- + + + +Use the `Import/Export data` dialog to copy data from a table to a file, or copy data from a file into a table. + +The `Import/Export data` dialog organizes the import/export of data through the `Options` and `Columns` tabs. + +![Import/Export data dialog - Options tab](../images/import_export_options.png) + +Use the fields in the `Options` tab to specify import and export preferences: + +- Move the `Import/Export` switch to the `Import` position to specify that the server should import data to a table from a file. The default is `Export`. + +- Use the fields in the `File Info` field box to specify information about the source or target file: + + > - Enter the name of the source or target file in the `Filename` field. Optionally, select the `Browser` icon (ellipsis) to the right to navigate into a directory and select a file. + > - Use the drop-down listbox in the `Format` field to specify the file type. Select: + > - `binary` for a .bin file. + > - `csv` for a .csv file. + > - `text` for a .txt file. + > - Use the drop-down listbox in the `Encoding` field to specify the type of character encoding. + +![Import/Export data dialog - Miscellaneous tab](../images/import_export_miscellaneous.png) + +- Use the fields in the `Miscellaneous` field box to specify additional information: + + > - Move the `OID` switch to the `Yes` position to include the `OID` column. The `OID` is a system-assigned value that may not be modified. The default is `No`. + > - Move the `Header` switch to the `Yes` position to include the table header with the data rows. If you include the table header, the first row of the file will contain the column names. + > - If you are exporting data, specify the delimiter that will separate the columns within the target file in the `Delimiter` field. The separating character can be a colon, semicolon, a vertical bar, or a tab. + > - Specify a quoting character used in the `Quote` field. Quoting can be applied to string columns only (i.e. numeric columns will not be quoted) or all columns regardless of data type. The character used for quoting can be a single quote or a double quote. + > - Specify a character that should appear before a data character that matches the `QUOTE` value in the `Escape` field. + +Click the `Columns` tab to continue. + +![Import/Export data dialog - Columns tab](../images/import_export_columns.png) + +Use the fields in the `Columns` tab to select the columns that will be imported or exported: + +- Click inside the `Columns to export/import` field to deselect one or more columns from the drop-down listbox. To delete a selection, click the `x` to the left of the column name. Click an empty spot inside the field to access the drop-down list. +- Use the `NULL Strings` field to specify a string that will represent a null value within the source or target file. +- If enabled, click inside the `Not null columns` field to select one or more columns that will not be checked for a NULL value. To delete a column, click the `x` to the left of the column name. + +After completing the `Import/Export data` dialog, click the `OK` button to perform the import or export. PEM will inform you when the background process completes: + +![Import/Export data dialog - Completion Notification](../images/import_export_complete.png) + +Use the **Stop Process** button to stop the Import/Export process. + +Use the `Click here for details` link on the notification to open the `Process Watcher` and review detailed information about the execution of the command that performed the import or export: + +![Import/Export data dialog - Process Watcher](../images/import_export_pw.png) + +
+ +
+ +Note + +
+ +You can click on the ![sm_icon](../images/sm_icon.png) icon in the process watcher window to open the file location in the Storage Manager. You can use the [Storage Manager](05_storage_manager/#storage_manager) to download the backup file on the client machine . + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/04_maintenance/01_maintenance_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/04_maintenance/01_maintenance_dialog.mdx new file mode 100644 index 00000000000..ec0b7419174 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/04_maintenance/01_maintenance_dialog.mdx @@ -0,0 +1,39 @@ +--- +title: "Maintenance Dialog" +--- + + + +Use the `Maintenance` dialog to VACUUM, ANALYZE, REINDEX or CLUSTER a database or selected database objects. + +![Maintenance dialog](../../images/maintenance.png) + +While this utility is useful for ad-hoc maintenance purposes, you are encouraged to perform automatic VACUUM jobs on a regular schedule. + +Select a button next to `Maintenance operation` to specify the type of maintenance: + +- Click `VACUUM` to scan the selected database or table to reclaim storage used by dead tuples. + + > - Move the `FULL` switch to the `Yes` position to compact tables by writing a completely new version of the table file without dead space. The default is `No`. + > - Move the `FREEZE` switch to the `Yes` position to freeze data in a table when it will have no further updates. The default is `No`. + > - Move the `ANALYZE` switch to the `Yes` position to issue ANALYZE commands whenever the content of a table has changed sufficiently. The default is `No`. + +- Click `ANALYZE` to update the stored statistics used by the query planner. This enables the query optimizer to select the fastest query plan for optimal performance. + +- Click `REINDEX` to rebuild any index in case it has degenerated due to the insertion of unusual data patterns. This happens, for example, if you insert rows with increasing index values, and delete low index values. + +- Click `CLUSTER` to instruct PostgreSQL to cluster the selected table. + +To exclude status messages from the process output, move the `Verbose Messages` switch to the `No` position; by default, status messages are included. + +When you've completed the dialog, click `OK` to start the background process; to exit the dialog without performing maintenance operations, click `Cancel`. + +pgAdmin will inform you when the background process completes: + +![Maintenance - Completion notification](../../images/maintenance_complete.png) + +Use the **Stop Process** button to stop the Maintenance process. + +Use the `Click here for details` link on the notification to open the `Process Watcher` and review detailed information about the execution of the command that performed the import or export: + +![Maintenance - Process Watcher](../../images/maintenance_pw.png) diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/04_maintenance/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/04_maintenance/index.mdx new file mode 100644 index 00000000000..ade6072fbed --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/04_maintenance/index.mdx @@ -0,0 +1,37 @@ +--- +title: "Maintain a database object" +--- + + + +![Maintenance dialog](../../images/maintenance.png) + +This tool allows to maintain the database in total, or only a selected table, or a selected index. + +Maintenance comes in three flavors. + +## VACUUM + +VACUUM will scan the database or table for rows, that are not in use any more. If a row is updated or deleted, the previous content isn't replaced, but rather marked invalid. The new data is inserted freshly into the database. You need to perform a garbage collection regularly, to insure that your database doesn't contain too much unused data, wasting disk space and ultimately degrading performance. + +Please press the Help button to see the PostgreSQL help about the VACUUM command to learn more about the options. + +The output of the database server is displayed in the messages page as they arrive. If Verbose is selected, the server will send very detailed info about what it did. + +While this tool is very handy for ad-hoc maintenance purposes, you are encouraged to install an automatic job, that performs a VACUUM job regularly to keep your database in a neat state. + +## ANALYZE + +ANALYZE investigates statistical values about the selected database or table. This enables the query optimizer to select the fastest query plan, to give optimal performance. Every time your data is changing radically, you should perform this task. It can be included in a VACUUM run, using the appropriate option. + +## REINDEX + +REINDEX rebuilds the indexes in case these have degenerated caused by unusual data patterns inserted. This can happen for example if you insert many rows with increasing index values, and delete low index values. + +The RECREATE option doesn't call the REINDEX SQL command internally, instead it drops the existing table and recreates it according to the current index definition.This doesn't lock the table exclusively, as REINDEX does, but will lock write access only. + +
+ +maintenance_dialog + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/05_storage_manager.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/05_storage_manager.mdx new file mode 100644 index 00000000000..2e0d1522314 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/05_storage_manager.mdx @@ -0,0 +1,47 @@ +--- +title: "Storage Manager" +--- + + + +*Storage Manager* is a feature that helps you manage your systems storage device. You can use *Storage Manager* to: + +- Download, upload, or manage operating system files. +- Download *backup* or *export* files (custom, tar and plain text format) on a client machine. +- Download *export* dump files of tables. + +You can access *Storage Manager* from the *Tools* Menu. + +Storage Manager + +Use icons on the top of the *Storage Manager* window to manage storage: + +Use the `Home` icon ![home](../images/home.png) to return to the home directory. + +Use the `Up Arrow` icon ![uparrow](../images/uparrow.png) to return to the previous directory. + +Use the `Refresh` icon ![refresh](../images/refresh.png) to display the most-recent files available. + +Select the `Download` icon ![download](../images/download.png) to download the selected file. + +Select the `Delete` icon ![delete](../images/delete.png) to delete the selected file or folder. + +Select the `Edit` icon ![edit](../images/edit.png) to rename a file or folder. + +Use the `Upload` icon ![upload](../images/upload.png) to upload a file. + +Use the `New Folder` icon ![folder](../images/folder.png) to add a new folder. + +Use the `Grid View` icon ![gridview](../images/gridview.png) to display all the files and folders in a grid view. + +Use the `Table View` icon ![tableview](../images/tableview.png) to display all the files and folders in a list view. + +Click on the check box next to *Show hidden files and folders* at the bottom of the window to view hidden files and folders. + +Use the *Format* drop down list to select the format of the files to be displayed; choose from *sql*, *csv*, or *All Files*. + +You can also download backup files through *Storage Manager* at the successful completion of the backups taken through [Backup Dialog](06_backup_dialog/#backup_dialog), [Backup Global Dialog](07_backup_globals_dialog/#backup_globals_dialog), or [Backup Server Dialog](08_backup_server_dialog/#backup_server_dialog). + +At the successful completion of a backup, click on the icon to open the current backup file in *Storage Manager* on the *process watcher* window. + +Process watcher with storage manager icon diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/06_backup_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/06_backup_dialog.mdx new file mode 100644 index 00000000000..8fb7f06020c --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/06_backup_dialog.mdx @@ -0,0 +1,111 @@ +--- +title: "Backup Dialog" +--- + + + +`PEM` uses the *pg_dump* utility to provide an easy way to create a backup in a plain-text or archived format. You can then use a client application (like `psql` or the `Query Tool`) to restore a plain-text backup file, or use the Postgres `pg_restore` utility to restore an archived backup. The `pg_dump` utility must have read access to all database objects that you want to back up. + +You can backup a single table, a schema, or a complete database. Select the name of the backup source in the `Browser` tree control, right click to open the context menu, and select `Backup...` to open the `Backup` dialog. The name of the object selected will appear in the dialog title bar. + +![Backup dialog - General tab](../images/backup_general.png) + +Use the fields in the `General` tab to specify parameters for the backup: + +- Enter the name of the backup file in the `Filename` field. Optionally, select the `Browser` icon (...) to the right to navigate into a directory and select a file that will contain the archive. + +- Use the drop-down listbox in the `Format` field to select the format that is best suited for your application. Each format has advantages and disadvantages: + + > - Select `Custom` to create a custom archive file that you can use with `pg_restore` to create a copy of a database. Custom archive file formats must be restored with `pg_restore`. This format offers the opportunity to select which database objects to restore from the backup file. `Custom` archive format is recommended for medium to large databases as it is compressed by default. + > - Select `Tar` to generate a tar archive file that you can restore with `pg_restore`. The tar format does not support compression. + > - Select `Plain` to create a plain-text script file. A plain-text script file contains SQL statements and commands that you can execute at the `psql` command line to recreate the database objects and load the table data. A plain-text backup file can be edited in a text editor, if desired, before using the `psql` program to restore database objects. `Plain` format is normally recommended for smaller databases; script dumps are not recommended for blobs. The SQL commands within the script will reconstruct the database to the last saved state of the database. A plain-text script can be used to reconstruct the database on another machine, or (with modifications) on other architectures. + > - Select `Directory` to generate a directory-format archive suitable for use with `pg_restore`. This file format creates a directory with one file for each table and blob being dumped, plus a `Table of Contents` file describing the dumped objects in a machine-readable format that `pg_restore` can read. This format is compressed by default. + +- Use the `Compression Ratio` field to select a compression level for the backup. Specify a value of zero to mean use no compression; specify a maximum compression value of 9. Please note that tar archives do not support compression. + +- Use the `Encoding` drop-down listbox to select the character encoding method that should be used for the archive. + +- Use the `Number of Jobs` field (when applicable) to specify the number of tables that will be dumped simultaneously in a parallel backup. + +- Use the dropdown listbox next to `Rolename` to specify the role that owns the backup. + +Click the `Dump options` tab to continue. Use the box fields in the `Dump options` tab to provide options for `pg_dump`. + +![Backup dialog - Dump Options tab - Sections options](../images/backup_sections.png) + +- Move switches in the **Sections** field box to select a portion of the object that will be backed up. + + > - Move the switch next to `Pre-data` to the `Yes` position to include all data definition items not included in the data or post-data item lists. + > - Move the switch next to `Data` to the `Yes` position to backup actual table data, large-object contents, and sequence values. + > - Move the switch next to `Post-data` to the `Yes` position to include definitions of indexes, triggers, rules, and constraints other than validated check constraints. + +![Backup dialog - Dump Options tab - Type of Objects](../images/backup_objects.png) + +- Move switches in the **Type of objects** field box to specify details about the type of objects that will be backed up. + + > - Move the switch next to `Only data` to the `Yes` position to limit the back up to data. + > - Move the switch next to `Only schema` to limit the back up to schema-level database objects. + > - Move the switch next to `Blobs` to the `No` position to exclude large objects in the backup. + +![Backup dialog - Dump Options tab - Do not save options](../images/backup_do_not_save.png) + +- Move switches in the **Do not save** field box to select the objects that will not be included in the backup. + + > - Move the switch next to `Owner` to the `Yes` position to exclude commands that set object ownership. + > - Move the switch next to `Privilege` to the `Yes` position to exclude commands that create access privileges. + > - Move the switch next to `Tablespace` to the `Yes` position to exclude tablespaces. + > - Move the switch next to `Unlogged table data` to the `Yes` position to exclude the contents of unlogged tables. + > - Move the switch next to `Comments` to the `Yes` position to exclude commands that set the comments. **Note:** This option is visible only for database server greater than or equal to 11. + +![Backup dialog - Dump Options tab - Queries options](../images/backup_queries.png) + +- Move switches in the **Queries** field box to specify the type of statements that should be included in the backup. + + > - Move the switch next to `Use Column Inserts` to the `Yes` position to dump the data in the form of INSERT statements and include explicit column names. Please note: this may make restoration from backup slow. + > - Move the switch next to `Use Insert commands` to the `Yes` position to dump the data in the form of INSERT statements rather than using a COPY command. Please note: this may make restoration from backup slow. + > - Move the switch next to `Include CREATE DATABASE statement` to the `Yes` position to include a command in the backup that creates a new database when restoring the backup. + > - Move the switch next to `Include DROP DATABASE statement` to the `Yes` position to include a command in the backup that will drop any existing database object with the same name before recreating the object during a backup. + > - Move the switch next to `Load Via Partition Root` to the `Yes` position, so when dumping a COPY or INSERT statement for a partitioned table, target the root of the partitioning hierarchy which contains it rather than the partition itself. **Note:** This option is visible only for database server greater than or equal to 11. + +![Backup dialog - Dump Options tab - Disable options](../images/backup_disable.png) + +- Move switches in the **Disable** field box to specify the type of statements that should be excluded from the backup. + + > - Move the switch next to `Trigger` (active when creating a data-only backup) to the `Yes` position to include commands that will disable triggers on the target table while the data is being loaded. + > - Move the switch next to `$ quoting` to the `Yes` position to enable dollar quoting within function bodies; if disabled, the function body will be quoted using SQL standard string syntax. + +![Backup dialog - Dump Options tab - Miscellaneous options](../images/backup_miscellaneous.png) + +- Move switches in the **Miscellaneous** field box to specify miscellaneous backup options. + + > - Move the switch next to `With OIDs` to the `Yes` position to include object identifiers as part of the table data for each table. + > - Move the switch next to `Verbose messages` to the `No` position to instruct `pg_dump` to exclude verbose messages. + > - Move the switch next to `Force double quotes on identifiers` to the `Yes` position to force the quoting of all identifiers. + > - Move the switch next to `Use SET SESSION AUTHORIZATION` to the `Yes` position to include a statement that will use a SET SESSION AUTHORIZATION command to determine object ownership (instead of an ALTER OWNER command). + +When you’ve specified the details that will be incorporated into the pg_dump command: + +- Click the `Backup` button to build and execute a command that builds a backup based on your selections on the `Backup` dialog. +- Click the `Cancel` button to exit without saving work. + +![Backup Success Notification popup](../images/backup_messages.png) + +Use the **Stop Process** button to stop the Backup process. + +If the backup is successful, a popup window will confirm success. Click *More details* on the popup window to launch the *Process Watcher*. The *Process Watcher* logs all the activity associated with the backup and provides additional information for troubleshooting. + +![Backup Process Watcher](../images/backup_process_watcher.png) + +If the backup is unsuccessful, you can review the error messages returned by the backup command on the `Process Watcher`. + +
+ +
+ +Note + +
+ +You can click on the ![sm_icon](../images/sm_icon.png) icon in the process watcher window to open the file location in the Storage Manager. You can use the [Storage Manager](05_storage_manager/#storage_manager) to download the backup file on the client machine . + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/07_backup_globals_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/07_backup_globals_dialog.mdx new file mode 100644 index 00000000000..468f465f213 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/07_backup_globals_dialog.mdx @@ -0,0 +1,43 @@ +--- +title: "Backup Globals Dialog" +--- + + + +Use the `Backup Globals` dialog to create a plain-text script that recreates all of the database objects within a cluster, and the global objects that are shared by those databases. Global objects include tablespaces, roles, and object properties. You can use the PEM `Query Tool` to play back a plain-text script, and recreate the objects in the backup. + +![Backup Globals dialog - General tab](../images/backup_globals_general.png) + +Use the fields in the `General` tab to specify the following: + +- Enter the name of the backup file in the `Filename` field. Optionally, select the `Browser` icon (ellipsis) to the right to navigate into a directory and select a file that will contain the archive. +- Use the drop-down listbox next to `Role name` to specify a role with connection privileges on the selected server. The role will be used for authentication during the backup. + +Move switches in the **Miscellaneous** field box to specify the type of statements that should be included in the backup. + +- Move the `Verbose messages` switch to the `No` position to exclude status messages from the backup. The default is `Yes`. +- Move the `Force double quote on identifiers` switch to the `Yes` position to name identifiers without changing case. The default is `No`. + +Click the `Backup` button to build and execute a command based on your selections; click the `Cancel` button to exit without saving work. + +![Backup Globals tab - Success Notification popup](../images/backup_globals_messages.png) + +Use the **Stop Process** button to stop the Backup process. + +If the backup is successful, a popup window will confirm success. Click `Click here for details` on the popup window to launch the `Process Watcher`. The `Process Watcher` logs all the activity associated with the backup and provides additional information for troubleshooting. + +![Backup Globals - Process Watcher](../images/backup_globals_process_watcher.png) + +If the backup is unsuccessful, review the error message returned by the `Process Watcher` to resolve any issue. + +
+ +
+ +Note + +
+ +You can click on the ![sm_icon](../images/sm_icon.png) icon in the process watcher window to open the file location in the Storage Manager. You can use the [Storage Manager](05_storage_manager/#storage_manager) to download the backup file on the client machine . + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/08_backup_server_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/08_backup_server_dialog.mdx new file mode 100644 index 00000000000..2205671eca3 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/08_backup_server_dialog.mdx @@ -0,0 +1,80 @@ +--- +title: "Backup Server Dialog" +--- + + + +Use the `Backup Server` dialog to create a plain-text script that will recreate the selected server. You can use the PEM `Query Tool` to play back a plain-text script, and recreate the server. + +![Backup Server dialog - General tab](../images/backup_server_general.png) + +Use the fields in the `General` tab to specify the following: + +- Enter the name of the backup file in the `Filename` field. Optionally, select the `Browser` icon (ellipsis) to the right to navigate into a directory and select a file that will contain the archive. +- Use the `Encoding` drop-down listbox to select the character encoding method that should be used for the archive. **Note:** This option is visible only for database server greater than or equal to 11. +- Use the drop-down listbox next to `Role name` to specify a role with connection privileges on the selected server. The role will be used for authentication during the backup. + +![Backup Server dialog - Dump Options tab - Types of Objects](../images/backup_server_objects.png) + +- Move switches in the **Type of objects** field box to specify details about the type of objects that will be backed up. + + > - Move the switch next to `Only data` to the `Yes` position to limit the back up to data. + > - Move the switch next to `Only schema` to limit the back up to schema-level database objects. + +![Backup Server dialog - Dump Options tab - Do not save options](../images/backup_server_do_not_save.png) + +- Move switches in the **Do not save** field box to select the objects that will not be included in the backup. + + > - Move the switch next to `Owner` to the `Yes` position to exclude commands that set object ownership. + > - Move the switch next to `Privilege` to the `Yes` position to exclude commands that create access privileges. + > - Move the switch next to `Tablespace` to the `Yes` position to exclude tablespaces. + > - Move the switch next to `Unlogged table data` to the `Yes` position to exclude the contents of unlogged tables. + > - Move the switch next to `Comments` to the `Yes` position to exclude commands that set the comments. **Note:** This option is visible only for database server greater than or equal to 11. + +![Backup Server dialog - Dump Options - Queries options](../images/backup_server_queries.png) + +- Move switches in the **Queries** field box to specify the type of statements that should be included in the backup. + + > - Move the switch next to `Use Column Inserts` to the `Yes` position to dump the data in the form of INSERT statements and include explicit column names. Please note: this may make restoration from backup slow. + > - Move the switch next to `Use Insert commands` to the `Yes` position to dump the data in the form of INSERT statements rather than using a COPY command. Please note: this may make restoration from backup slow. + > - Move the switch next to `Include DROP DATABASE statement` to the `Yes` position to include a command in the backup that will drop any existing database object with the same name before recreating the object during a backup. + +![Backup Server dialog - Dump Options tab - Disable options](../images/backup_server_disable.png) + +- Move switches in the **Disable** field box to specify the type of statements that should be excluded from the backup. + + > - Move the switch next to `Trigger` (active when creating a data-only backup) to the `Yes` position to include commands that will disable triggers on the target table while the data is being loaded. + > - Move the switch next to `$ quoting` to the `Yes` position to enable dollar quoting within function bodies; if disabled, the function body will be quoted using SQL standard string syntax. + +![Backup Server dialog - Dump Options tab - Miscellaneous options](../images/backup_server_miscellaneous.png) + +- Move switches in the **Miscellaneous** field box to specify miscellaneous backup options. + + > - Move the switch next to `With OIDs` to the `Yes` position to include object identifiers as part of the table data for each table. + > - Move the switch next to `Verbose messages` to the `No` position to instruct `pg_dump` to exclude verbose messages. + > - Move the switch next to `Force double quotes on identifiers` to the `Yes` position to force the quoting of all identifiers. + > - Move the switch next to `Use SET SESSION AUTHORIZATION` to the `Yes` position to include a statement that will use a SET SESSION AUTHORIZATION command to determine object ownership (instead of an ALTER OWNER command). + +Click the `Backup` button to build and execute a command based on your selections; click the `Cancel` button to exit without saving work. + +![Backup Server dialog - Success Notification popup](../images/backup_server_messages.png) + +Use the **Stop Process** button to stop the Backup process. + +If the backup is successful, a popup window will confirm success. Click `Click here for details` on the popup window to launch the `Process Watcher`. The `Process Watcher` logs all the activity associated with the backup and provides additional information for troubleshooting. + +![Backup Server dialog - Process Watcher](../images/backup_server_process_watcher.png) + +If the backup is unsuccessful, review the error message returned by the `Process Watcher` to resolve any issue. + +
+ +
+ +Note + +
+ +You can click on the ![sm_icon](../images/sm_icon.png) icon in the process watcher window to open the file location in the Storage Manager. You can use the [Storage Manager](05_storage_manager/#storage_manager) to download the backup file on the client machine . + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/09_restore_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/09_restore_dialog.mdx new file mode 100644 index 00000000000..c6702e567ef --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/09_restore_dialog.mdx @@ -0,0 +1,83 @@ +--- +title: "Restore Dialog" +--- + + + +The `Restore` dialog provides an easy way to use a Custom, tar, or Directory format backup taken with the PEM `Backup` dialog to recreate a database or database object. The `Backup` dialog invokes options of the pg_dump client utility; the `Restore` dialog invokes options of the pg_restore client utility. + +You can use the `Query Tool` to play back the script created during a plain-text backup made with the `Backup` dialog. For more information about backing up or restoring, please refer to the documentation for [pg_dump](https://www.postgresql.org/docs/current/static/app-pgdump.html) or [pg_restore](https://www.postgresql.org/docs/current/static/app-pgrestore.html). + +![Restore dialog - General tab](../images/restore_general.png) + +Use the fields on the `General` tab to specify general information about the restore process: + +- Use the drop-down listbox in the `Format` field to select the format of your backup file. + + > - Select `Custom or tar` to restore from a custom archive file to create a copy of the backed-up object. + > - Select `Directory` to restore from a compressed directory-format archive. + +- Enter the complete path to the backup file in the `Filename` field. Optionally, select the `Browser` icon (ellipsis) to the right to navigate into a directory and select the file that contains the archive. + +- Use the `Number of Jobs` field to specify if pg_restore should use multiple (concurrent) jobs to process the restore. Each job uses a separate connection to the server. + +- Use the drop-down listbox next to `Rolename` to specify the role that will be used to authenticate with the server during the restore process. + +Click the `Restore options` tab to continue. Use the fields on the `Restore options` tab to specify options that correspond to `pg_restore` options. + +![Restore dialog - Restore Options tab - Sections](../images/restore_sections.png) + +- Use the switches in the **Sections** box to specify the content that will be restored: + + > - Move the switch next to `Pre-data` to the `Yes` position to restore all data definition items not included in the data or post-data item lists. + > - Move the switch next to `Data` to the `Yes` position to restore actual table data, large-object contents, and sequence values. + > - Move the switch next to `Post-data` to the `Yes` position to restore definitions of indexes, triggers, rules, and constraints (other than validated check constraints). + +![Restore dialog - Restore Options tab - Type of objects section](../images/restore_objects.png) + +- Use the switches in the **Type of objects** box to specify the objects that will be restored: + + > - Move the switch next to `Only data` to the `Yes` position to limit the restoration to data. + > - Move the switch next to `Only schema` to limit the restoration to schema-level database objects. + +![Restore dialog - Restore Options tab - Do not save section](../images/restore_do_not_save.png) + +- Use the switches in the **Do not save** box to specify which objects will not be restored: + + > - Move the switch next to `Owner` to the `Yes` position to exclude commands that set object ownership. + > - Move the switch next to `Privilege` to the `Yes` position to exclude commands that create access privileges. + > - Move the switch next to `Tablespace` to the `Yes` position to exclude tablespaces. + > - Move the switch next to `Comments` to the `Yes` position to exclude commands that set the comments. **Note:** This option is visible only for database server greater than or equal to 11. + +![Restore dialog - Restore Options tab - Queries section](../images/restore_queries.png) + +- Use the switches in the **Queries** box to specify the type of statements that should be included in the restore: + + > - Move the switch next to `Include CREATE DATABASE statement` to the `Yes` position to include a command that creates a new database before performing the restore. + > - Move the switch next to `Clean before restore` to the `Yes` position to drop each existing database object (and data) before restoring. + > - Move the switch next to `Single transaction` to the `Yes` position to execute the restore as a single transaction (that is, wrap the emitted commands in `BEGIN/COMMIT`). This ensures that either all the commands complete successfully, or no changes are applied. This option implies `--exit-on-error`. + +![Restore dialog - Restore Options tab - Disable section](../images/restore_disable.png) + +- Use the switches in the **Disable** box to specify the type of statements that should be excluded from the restore: + + > - Move the switch next to `Trigger` (active when creating a data-only restore) to the `Yes` position to include commands that will disable triggers on the target table while the data is being loaded. + > - Move the switch next to `No data for Failed Tables` to the `Yes` position to ignore data that fails a trigger. + +![Restore dialog - Restore Options tab - Miscellaneous section](../images/restore_miscellaneous.png) + +- Use the switches in the **Miscellaneous/Behavior** box to specify miscellaneous restore options: + + > - Move the switch next to `Verbose messages` to the `No` position to instruct `pg_restore` to exclude verbose messages. + > - Move the switch next to `Use SET SESSION AUTHORIZATION` to the `Yes` position to include a statement that will use a SET SESSION AUTHORIZATION command to determine object ownership (instead of an ALTER OWNER command). + > - Move the switch next to `Exit on error` to the `Yes` position to instruct `pg_restore` to exit restore if there is an error in sending SQL commands. The default is to continue and to display a count of errors at the end of the restore. + +When you’ve specified the details that will be incorporated into the pg_restore command, click the `Restore` button to start the process, or click the `Cancel` button to exit without saving your work. A popup will confirm if the restore is successful. + +![Restore dialog - Successful Notifications popup](../images/restore_messages.png) + +Use the **Stop Process** button to stop the Restore process. + +Click `Click here for details` on the popup to launch the `Process Watcher`. The `Process Watcher` logs all the activity associated with the restore, and provides additional information for troubleshooting should the restore command encounter problems. + +![Restore dialog - Process Watcher](../images/restore_process_watcher.png) diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/10_managing_cluster_objects/01_database_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/10_managing_cluster_objects/01_database_dialog.mdx new file mode 100644 index 00000000000..b50103bd09b --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/10_managing_cluster_objects/01_database_dialog.mdx @@ -0,0 +1,88 @@ +--- +title: "Database Dialog" +--- + + + +Use the `Database` dialog to define or modify a database. To create a database, you must be a database superuser or have the CREATE privilege. + +The `Database` dialog organizes the development of a database through the following dialog tabs: `General`, `Definition`, `Security`, and `Parameters`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Database dialog - General tab](../../images/database_general.png) + +Use the fields in the `General` tab to identify the database: + +- Use the `Database` field to add a descriptive name for the database. The name will be displayed in the `Browser` tree control. +- Select the owner of the database from the drop-down listbox in the `Owner` field. +- Store notes about the database in the `Comment` field. + +Click the `Definition` tab to continue. + +![Database dialog - Definition tab](../../images/database_definition.png) + +Use the `Definition` tab to set properties for the database: + +- Select a character set from the drop-down listbox in the `Encoding` field. The default is `UTF8`. +- Select a template from the drop-down listbox in the `Template` field. If you do not specify a template, the database will use template1. +- Select a tablespace from the drop-down listbox in the `Tablespace` field. The selected tablespace will be the default tablespace used to contain database objects. +- Select the collation order from the drop-down listbox in the `Collation` field. +- Select the character classification from the drop-down listbox in the `Character Type` field. This affects the categorization of characters, e.g. lower, upper and digit. The default, or a blank field, uses the character classification of the template database. +- Specify a connection limit in the `Connection Limit` field to configure the maximum number of connection requests. The default value (`-1`) allows unlimited connections to the database. + +Click the `Security` tab to continue. + +![Database dialog - Security tab](../../images/database_security.png) + +Use the `Security` tab to assign privileges and define security labels. + +Use the `Privileges` panel to assign privileges to a role. Click the `Add` icon (+) to set privileges for database objects: + +- Select the name of the role from the drop-down listbox in the `Grantee` field. +- Click inside the `Privileges` field. Check the boxes to the left of one or more privileges to grant the selected privilege to the specified user. +- The current user, who is the default grantor for granting the privilege, is displayed in the `Grantor` field. + +Click add to set additional privileges; to discard a privilege, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Use the `Security Labels` panel to define security labels applied to the database. Click the `Add` icon (+) to add each security label selection: + +- Specify a security label provider in the `Provider` field. The named provider must be loaded and must consent to the proposed labeling operation. +- Specify a a security label in the `Security Label` field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them. + +To discard a security label, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `Parameters` tab to continue. + +![Database dialog - Parameters tab](../../images/database_parameters.png) + +Use the `Parameters` tab to set parameters for the database. Click the `Add` icon (+) to add each parameter: + +- Use the drop-down listbox in the `Name` field to select a parameter. +- Use the `Value` field to set a value for the parameter. +- Use the drop-down listbox next to `Role` to select a role to which the parameter setting specified will apply. + +Follow these steps to add additional parameter value definitions; to discard a parameter, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `Advanced` tab to continue. + +Database dialog advanced tab + +Use the `Advanced` tab to set advanced parameters for the database. + +- Use `Schema restriction` field to provide a SQL restriction that will be used against the pg_namespace table to limit the schemas that you see. For example, you might enter: `public` so that only `public` are shown in the pgAdmin browser.Separate entries with a comma or tab as you type. + +Click the `SQL` tab to continue. + +Your entries in the `Database` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Database` dialog: + +![Database dialog - SQL tab](../../images/database_sql.png) + +The example creates a database named `hr` that is owned by `postgres`. It allows unlimited connections, and is available to all authenticated users. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/10_managing_cluster_objects/02_move_objects.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/10_managing_cluster_objects/02_move_objects.mdx new file mode 100644 index 00000000000..4e3b134b415 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/10_managing_cluster_objects/02_move_objects.mdx @@ -0,0 +1,40 @@ +--- +title: "Move Objects Dialog" +--- + + + +Use the `Move Objects` dialog to to move database objects from one tablespace to another tablespace. + +The `Move Objects` dialog organizes the movement of database objects with the `General` tab; the `SQL` tab displays the SQL code generated by dialog selections. + +![Move Objects dialog - General tab](../../images/move_objects_general.png) + +Use the fields in the `General` tab to identify the items that will be moved and the tablespace to which they will be moved: + +- Use the `New tablespace` drop-down listbox to select a pre-existing tablespace to which the object will be moved. (To create a tablespace, use the `Tablespace` dialog; access the dialog by right clicking `Tablespaces` in the `Browser` tree control and selecting `Create Tablespace...` from the context-menu.) + +- Use the `Object type` drop-down listbox to select from the following: + + > - Select `All` to move all tables, indexes, and materialized views from the current tablespace (currently selected in the `Browser` tree control) to the new tablespace. + > - Select `Tables` to move tables from the current tablespace to the new tablespace. + > - Select `Indexes` to move indexes from the current tablespace to the new tablespace. + > - Select `Materialized views` to move materialized views from the current tablespace to the new tablespace. + +- Use the `Object owner` drop-down listbox to select the role that owns the objects selected in the `Object type` field. This field is optional. + +Click the `SQL` tab to continue. + +Your entries in the `Move Objects` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit the `General` tab to modify the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Move Objects` dialog: + +![Move Objects dialog - SQL tab](../../images/move_objects_sql.png) + +The example shown demonstrates moving materialized views owned by Alice from tablespace `tbspace_01` to `tbspace_02`. + +- Click the `Help` button (?) to access online help. +- Click the `OK` button to save work. +- Click the `Cancel` button to exit without saving work. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/10_managing_cluster_objects/03_resource_group_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/10_managing_cluster_objects/03_resource_group_dialog.mdx new file mode 100644 index 00000000000..3d22c5a3812 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/10_managing_cluster_objects/03_resource_group_dialog.mdx @@ -0,0 +1,37 @@ +--- +title: "Resource Group Dialog" +--- + + + +Use the `Resource Group` dialog to create a resource group and set values for its resources. A resource group is a named, global group on which various resource usage limits can be defined. The resource group is accessible from all databases in the cluster. To use the `Resource Group` dialog, you must have superuser privileges. Please note that resource groups are supported when connected to EDB Postgres Advanced Server; for more information about using resource groups, please see the EDB Postgres Advanced Server Guide, available at: + +> + +Fields used to create a resource group are located on the `General` tab. The `SQL` tab displays the SQL code generated by your selections on the `Resource Group` dialog. + +![Create Resource Group dialog - General tab](../../images/resource_group_general.png) + +Use the fields on the `General` tab to specify resource group attributes: + +- Use the `Name` field to add a descriptive name for the resource group. This name will be displayed in the tree control. +- Use the `CPU rate limit (%)` field to set the value of the CPU rate limit resource type assigned to the resource group. The valid range for a CPU rate limit is from 0 to 1.67772e+07. The default value is 0. +- Use the `Dirty rate limit (KB)` field to set the value of the dirty rate limit resource type assigned to the resource group. The valid range for a dirty rate limit is from 0 to 1.67772e+07. The default value is 0. + +Click the `SQL` tab to continue. + +Your entries in the `Resource Group` dialog generate a SQL command. Use the `SQL` tab for review; revisit the `General` tab to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by selections made in the `Resource Group` dialog: + +![Create Resource Group dialog - SQL tab](../../images/resource_group_sql.png) + +The example creates a resource group named `acctg` that sets `cpu_rate_limit` to `2`, and `dirty_rate_limit` to `6144`. + +- Click the Info button (`i`) to access online SQL syntax reference material. +- Click the Help button (`?`) to access online documentation about Resource Groups. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/10_managing_cluster_objects/04_role_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/10_managing_cluster_objects/04_role_dialog.mdx new file mode 100644 index 00000000000..03c08c96910 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/10_managing_cluster_objects/04_role_dialog.mdx @@ -0,0 +1,85 @@ +--- +title: "Login/Group Role Dialog" +--- + + + +Use the `Login/Group Role` dialog to define a role. A role may be an individual user (with or without login privileges) or a group of users. Note that roles defined at the cluster level are shared by all databases in the cluster. + +The `Login/Group Role` dialog organizes the creation and management of roles through the following dialog tabs: `General`, *Definition*, `Privileges`, *Parameters*, and `Security`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Role dialog - General tab](../../images/role_general.png) + +Use the fields on the `General` tab to identify the role. + +- Use the `Name` field to provide the name of the role. The name will be displayed in the tree control. +- Provide a note about the role in the `Comments` field. + +Click the `Definition` tab to continue. + +![Create Role dialog - Definition tab](../../images/role_definition.png) + +Use the `Definition` tab to set a password and configure connection rules: + +- Provide a password that will be associated with the role in the `Password` field. +- Provide an expiration date for the password in the `Account Expires` field (the role does not expire). The expiration date is not enforced when a user logs in with a non-password-based authentication method. +- If the role is a login role, specify how many concurrent connections the role can make in the `Connection Limit` field. The default value (`-1`) allows unlimited connections. + +Click the `Privileges` tab to continue. + +![Create Role dialog - Privileges tab](../../images/role_privileges.png) + +Use the `Privileges` tab to grant privileges to the role. + +- Move the `Can login?` switch to the `Yes` position if the role has login privileges. The default value is `No`. +- Move the `Superuser` switch to the `Yes` position if the role is a superuser within the database. The default value is `No`. +- Move the `Create roles?` switch to the `Yes` position to specify whether a role is permitted to create roles. A role with this privilege can alter and drop roles. The default value is `No`. +- Move the `Create databases` switch to the `Yes` position to control whether a role can create databases. The default value is `No`. +- The `Update catalog?` switch is disabled until the role is given superuser privileges. Move the `Update catalogs?` switch to the `No` position to control whether a role can update catalogs. The default value is `Yes` when the `Superuser` switch is in the `Yes` position. +- Move the `Inherit rights from the parent roles?` switch to the `No` position if a role does not inherit privileges. The default value is `Yes`. +- Move the `Can initiate streaming replication and backups?` switch to the `Yes` position to control whether a role can initiate streaming replication or put the system in and out of backup mode. The default value is `No`. + +![Create Role dialog - Membership tab](../../images/role_membership.png) + +- Specify members of the role in the `Role Membership` field. Click inside the `Roles` field to select role names from a drop down list. Confirm each selection by checking the checkbox to the right of the role name; delete a selection by clicking the `x` to the left of the role name. Membership conveys the privileges granted to the specified role to each of its members. + +Click the `Parameters` tab to continue. + +![create Role dialog - Parameters tab](../../images/role_parameters.png) + +Use the fields on the `Parameters` tab to set session defaults for a selected configuration parameter when the role is connected to a specified database. This tab invokes the ALTER ROLE... SET configuration_parameter syntax. Click the `Add` icon (+) to assign a value for a parameter. + +- Use the drop-down listbox in the `Name` field to select a parameter. +- Use the `Value` field to specify a value for the parameter. +- Use the drop-down listbox in the `Database` field to select a database. + +Click the `Add` icon (+) to specify each additional parameter; to discard a parameter, click the trash icon to the left of the row and confirm the deletion in the `Delete Row` popup. + +Click the `Security` tab to continue. + +![Create Role dialog - Security tab](../../images/role_security.png) + +Use the `Security` tab to define security labels applied to the role. Click the `Add` icon (+) to add each security label selection. + +- Specify a security label provider in the `Provider` field. The named provider must be loaded and must consent to the proposed labeling operation. +- Specify a a security label in the `Security Label` field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them. + +To discard a security label, click the trash icon to the left of the row and confirm the deletion in the `Delete Row` popup. + +Click the `SQL` tab to continue. + +Your entries in the `Login/Group Role` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Login/Group Role` dialog: + +![Create Role dialog - SQL tab](../../images/role_sql.png) + +The example creates a login role named `alice` with `pem_user` privileges; the role can make unlimited connections to the server at any given time. + +- Click the Info button (`i`) to access online SQL help. +- Click the Help button (`?`) to access the documentation for the dialog. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/10_managing_cluster_objects/05_tablespace_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/10_managing_cluster_objects/05_tablespace_dialog.mdx new file mode 100644 index 00000000000..feb9798d622 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/10_managing_cluster_objects/05_tablespace_dialog.mdx @@ -0,0 +1,70 @@ +--- +title: "Tablespace Dialog" +--- + + + +Use The `Tablespace` dialog to define a tablespace. A tablespace allows superusers to define an alternative location on the file system where the data files containing database objects (such as tables and indexes) reside. Tablespaces are only supported on systems that support symbolic links. Note that a tablespace cannot be used independently of the cluster in which it is defined. + +The `Tablespace` dialog organizes the definition of a tablespace through the following tabs: `General`, *Definition*, `Parameters`, and `Security`. The *SQL* tab displays the SQL code generated by dialog selections. + +![Create Tablespace dialog - General tab](../../images/tablespace_general.png) + +- Use the `Name` field to identify the tablespace with a descriptive name. The name cannot begin with pg\_; these names are reserved for system tablespaces. +- Select the owner of the tablespace from the drop-down listbox in the *Owner* field. +- Store notes about the tablespace in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Tablespace dialog - Definition tab](../../images/tablespace_definition.png) + +- Use the `Location` field to specify an absolute path to a directory that will contain the tablespace. + +Click the `Parameters` tab to continue. + +![Create Tablespace dialog - Parameters tab](../../images/tablespace_parameters.png) + +Use the `Parameters` tab to set parameters for the tablespace. Click the *Add* icon (+) to add a row to the table below. + +- Use the drop-down listbox next to `Name` to select a parameter. +- Use the `Value` field to set a value for the parameter. + +Click the `Add` icon (+) to specify each additional parameter; to discard a parameter, click the trash icon to the left of the row and confirm deletion in the `Delete Row` dialog. + +Click the `Security` tab to continue. + +![Create Tablespace dialog - Security tab](../../images/tablespace_security.png) + +Use the `Security` tab to assign privileges and define security labels for the tablespace. + +Use the `Privileges` panel to assign security privileges. Click the `Add` icon (+) to assign a set of privileges: + +- Select the name of the role from the drop-down listbox in the `Grantee` field. +- The current user, who is the default grantor for granting the privilege, is displayed in the `Grantor` field. +- Click inside the `Privileges` field. Check the boxes to the left of one or more privileges to grant the selected privileges to the specified user. + +Click the `Add` icon to assign additional sets of privileges; to discard a privilege, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Use the `Security Labels` panel to define security labels applied to the tablespace. Click the `Add` icon (+) to add each security label selection: + +- Specify a security label provider in the `Provider` field. The named provider must be loaded and must consent to the proposed labeling operation. +- Specify a a security label in the `Security Label` field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them. + +To discard a security label, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `SQL` tab to continue. + +Your entries in the `Tablespace` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +## Example + +The following is an example of the sql command generated by user selections in the `Tablespace` dialog: + +![Create Tablespace dialog - SQL tab](../../images/tablespace_sql.png) + +The example shown demonstrates creating a tablespace named `space_01`. It has a *random_page_cost* value equal to `1`. + +- Click the `Info` button (i) to access online help. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/10_managing_cluster_objects/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/10_managing_cluster_objects/index.mdx new file mode 100644 index 00000000000..388e26d7a17 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/10_managing_cluster_objects/index.mdx @@ -0,0 +1,15 @@ +--- +title: "Managing Cluster Level Objects" +--- + + + +Some object definitions reside at the cluster level; PEM provides dialogs that allow you to create these objects, manage them, and control their relationships to each other. To access a dialog that allows you to create a database object, right-click on the object type in the Browser tree control, and select the `Create` option for that object. For example, to create a new database, right-click on the `Databases` node, and select `Create Database...` + +Contents: + +
+ +database_dialog move_objects resource_group_dialog role_dialog tablespace_dialog + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/01_cast_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/01_cast_dialog.mdx new file mode 100644 index 00000000000..1c1ae7d5080 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/01_cast_dialog.mdx @@ -0,0 +1,44 @@ +--- +title: "Cast Dialog" +--- + + + +Use the `Cast` dialog to define a cast. A cast specifies how to convert a value from one data type to another. + +The `Cast` dialog organizes the development of a cast through the following dialog tabs: `General` and `Definition`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Cast dialog - General tab](../../images/cast_general.png) + +Use the fields in the `General` tab to identify the cast: + +- The `Name` field is disabled. The name that will be displayed in the `Browser` tree control is the `Source` type concatenated with the `Target` type, and is generated automatically when you make selections on the `Cast` dialog `Definition` tab. +- Store notes about the cast in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Cast dialog - Definition tab](../../images/cast_definition.png) + +Use the fields in the `Definition` tab to define parameters: + +- Use the drop-down listbox next to `Source type` to select the name of the source data type of the cast. +- Use the drop-down listbox next to `Target type` to select the name of the target data type of the cast. +- Use the drop-down listbox next to `Function` to select the function used to perform the cast. The function's result data type must match the target type of the cast. +- Move the `Context` switch to the `Implicit` position if the cast is implicit. By default, a cast can be invoked only by an explicit cast request. If the cast is marked `Implicit` then it can be invoked implicitly in any context, whether by assignment or internally in an expression. + +Click the `SQL` tab to continue. + +Your entries in the `Cast` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Cast` dialog: + +![Create Cast dialog - SQL tab](../../images/cast_sql.png) + +The cast uses a function named `int4(bigint)` to convert a biginteger data type to an integer. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/02_collation_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/02_collation_dialog.mdx new file mode 100644 index 00000000000..3bbd6a61344 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/02_collation_dialog.mdx @@ -0,0 +1,51 @@ +--- +title: "Collation Dialog" +--- + + + +Use the `Collation` dialog to define a collation. A collation is an SQL schema object that maps a SQL name to operating system locales. To create a collation, you must have a CREATE privilege on the destination schema. + +The `Collation` dialog organizes the development of a collation through the following dialog tabs: `General` and `Definition`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Collation dialog - General tab](../../images/collation_general.png) + +Use the fields in the `General` tab to identify the collation: + +- Use the `Name` field to provide a name for the collation. The collation name must be unique within a schema. The name will be displayed in the Browser tree control. +- Select the name of the owner from the drop-down listbox in the `Owner` field. +- Select the name of the schema in which the collation will reside from the drop-down listbox in the `Schema` field. +- Store notes about the collation in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Collation dialog - Definition tab](../../images/collation_definition.png) + +Use the fields in the `Definition` tab to specify the operating system locale settings: + +- Use the drop-down listbox next to `Copy collation` to select the name of an existing collation to copy. The new collation will have the same properties as the existing one, but will be an independent object. If you choose to copy an existing collation, you cannot modify the collation properties displayed on this tab. +- Use the `Locale` field to specify a locale; a locale specifies language and language formatting characteristics. If you specify this, you cannot specify either of the following parameters. To view a list of locales supported by your Linux system use the command `locale -a`. +- Use the `LC_COLLATE` field to specify a locale with specified string sort order. The locale must be applicable to the current database encoding. (See CREATE DATABASE for details.) +- Use the `LC_CTYPE` field to specify a locale with specified character classification. The locale must be applicable to the current database encoding. (See CREATE DATABASE for details.) + +Click the `SQL` tab to continue. + +Your entries in the `Collation` dialog generate a SQL command (see an example b elow). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +## Example + +The following is an example of the sql command generated by user selections in the `Collation` dialog: + +![Create Collation dialog - SQL tab](../../images/collation_sql.png) + +The example shown demonstrates creating a collation named `french` that uses the rules specified for the locale, `fr-BI-x-icu`. The collation is owned by `postgres`. + +- Click the `Info` button (i) to access online help. For more information about setting a locale, see Chapter 22.1 Locale Support of the PostgreSQL core documentation: + + > + +- Click the `Save` button to save work. + +- Click the `Cancel` button to exit without saving work. + +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/03_domain_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/03_domain_dialog.mdx new file mode 100644 index 00000000000..792f06de978 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/03_domain_dialog.mdx @@ -0,0 +1,73 @@ +--- +title: "Domain Dialog" +--- + + + +Use the `Domain` dialog to define a domain. A domain is a data type definition that may constrain permissible values. Domains are useful when you are creating multiple tables that contain comparable columns; you can create a domain that defines constraints that are common to the columns and re-use the domain definition when creating the columns, rather than individually defining each set of constraints. + +The `Domain` dialog organizes the development of a domain through the following tabs: `General`, `Definition`, `Constraints`, and `Security`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Domain dialog - General tab](../../images/domain_general.png) + +Use the fields on the `General` tab to identify a domain: + +- Use the `Name` field to add a descriptive name for the domain. The name will be displayed in the `Browser` tree control. +- Use the drop-down listbox next to `Owner` to select a role that will own the domain. +- Select the name of the schema in which the domain will reside from the drop-down listbox in the `Schema` field. +- Store notes about the domain in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Domain dialog - Definition tab](../../images/domain_definition.png) + +Use the fields in the `Definition` tab to describe the domain: + +- Use the drop-down listbox next to `Base type` to specify a data type. +- Use the context-sensitive `Length` field to specify a numeric length for a numeric type. +- Use the context-sensitive `Precision` field to specify the total count of significant digits for a numeric type. +- Specify a default value for the domain data type in the `Default` field. The data type of the default expression must match the data type of the domain. If no default value is specified, then the default value is the null value. +- Move the `Not Null` switch to specify the values of this domain are prevented from being null. +- Use the drop-down listbox next to `Collation` to apply a collation cast. If no collation is specified, the underlying data type's default collation is used. The underlying type must be collatable if COLLATE is specified. + +Click the `Constraints` tab to continue. + +![Create Domain dialog - Constraints tab](../../images/domain_constraints.png) + +Use the fields in the `Constraints` tab to specify rules for the domain. Click the `Add` icon (+) to set constraints: + +- Use the `Name` field to specify a name for the constraint. +- Use the `Check` field to provide an expression for the constraint. +- Use the `Validate` checkbox to determine whether the constraint will be validated. The default checkbox is checked and sets a validation requirement. + +A CHECK clause specifies an integrity test which values of the domain must satisfy. Each constraint must be an expression that produces a Boolean result. Use the key word VALUE to refer to the value being tested. Expressions evaluating to TRUE or UNKNOWN succeed. If the expression produces a FALSE result, an error is reported and the value is not allowed to be converted to the domain type. A CHECK expression cannot contain subqueries nor refer to variables other than VALUE. If a domain has multiple CHECK constraints, they will be tested in alphabetical order by name. + +Click the `Add` icon (+) to set additional constraints; to discard a constraint, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `Security` tab to continue. + +![Create Domain dialog - Security tab](../../images/domain_security.png) + +Use the `Security Labels` panel to assign security labels. Click the `Add` icon (+) to add a label: + +- Specify a security label provider in the `Provider` field. The named provider must be loaded and must consent to the proposed labeling operation. +- Specify a a security label in the `Security Label` field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them. + +Click the `Add` icon (+) to specify each additional label; to discard a label, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `SQL` tab to continue. + +Your entries in the `Domain` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by selections made in the `Domain` dialog: + +![Create Domain dialog - SQL tab](../../images/domain_sql.png) + +The example shown demonstrates creating a domain named `minimum-wage` that confirms that the value entered is greater than or equal to `7.25`. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/04_domain_constraint_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/04_domain_constraint_dialog.mdx new file mode 100644 index 00000000000..bda96929e86 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/04_domain_constraint_dialog.mdx @@ -0,0 +1,42 @@ +--- +title: "Domain Constraints Dialog" +--- + + + +Use the `Domain Constraints` dialog to create or modify a domain constraint. A domain constraint confirms that the values provided for a domain meet a defined criteria. The `Domain Constraints` dialog implements options of the ALTER DOMAIN command. + +The `Domain Constraints` dialog organizes the development of a domain constraint through the following dialog tabs: `General` and `Definition`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Domain Constraints dialog - General tab](../../images/domain_constraint_general.png) + +Use the fields in the `General` tab to identify the domain constraint: + +- Use the `Name` field to add a descriptive name for the constraint. The name will be displayed in the `Browser` tree control. +- Store notes about the constraint in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Domain Constraints dialog - Definition tab](../../images/domain_constraint_definition.png) + +Use the fields in the `Definition` tab to define the domain constraint: + +- Use the `Check` field to provide a CHECK expression. A CHECK expression specifies a constraint that the domain must satisfy. A constraint must produce a Boolean result; include the key word VALUE to refer to the value being tested. Only those expressions that evaluate to TRUE or UNKNOWN will succeed. A CHECK expression cannot contain subqueries or refer to variables other than VALUE. If a domain has multiple CHECK constraints, they will be tested in alphabetical order. +- Move the `Validate?` switch to the `No` position to mark the constraint NOT VALID. If the constraint is marked NOT VALID, the constraint will not be applied to existing column data. The default value is `Yes`. + +Click the `SQL` tab to continue. + +Your entries in the `Domain Constraints` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Domain Constraints` dialog: + +![Create Domain Constraints dialog - SQL tab](../../images/domain_constraint_sql.png) + +The example shown demonstrates creating a domain constraint on the domain `timesheets` named `weekday`. It constrains a value to equal `Friday`. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/05_event_trigger_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/05_event_trigger_dialog.mdx new file mode 100644 index 00000000000..3dfec3f72df --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/05_event_trigger_dialog.mdx @@ -0,0 +1,56 @@ +--- +title: "Event Trigger Dialog" +--- + + + +Use the `Domain Trigger` dialog to define an event trigger. Unlike regular triggers, which are attached to a single table and capture only DML events, event triggers are global to a particular database and are capable of capturing DDL events. Like regular triggers, event triggers can be written in any procedural language that includes event trigger support, or in C, but not in SQL. + +The `Domain Trigger` dialog organizes the development of a event trigger through the following dialog tabs: `General`, `Definition`, and `Security Labels`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Event Trigger dialog - General tab](../../images/event_trigger_general.png) + +Use the fields in the `General` tab to identify the event trigger: + +- Use the `Name` field to add a descriptive name for the event trigger. The name will be displayed in the `Browser` tree control. +- Use the drop-down listbox next to `Owner` to specify the owner of the event trigger. +- Store notes about the event trigger in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Event Trigger dialog - Definition tab](../../images/event_trigger_definition.png) + +Use the fields in the `Definition` tab to define the event trigger: + +- Select a value from the drop down of `Trigger Enabled` field to specify a status Select a value from the drop down of `Trigger Enabled` field to specify a status +- Use the drop-down listbox next to `Trigger function` to specify an existing function. A trigger function takes an empty argument list, and returns a value of type event_trigger. +- Select a value from the drop down of `Events` field to specify when the event trigger will fire: `DDL COMMAND START`, `DDL COMMAND END`, or `SQL DROP`. +- Use the `When TAG in` field to enter filter values for TAG for which the trigger will be executed. The values must be in single quotes separated by comma. + +Click the `Security Labels` tab to continue. + +![Create Event Trigger dialog - Security tab](../../images/event_trigger_security.png) + +Use the `Security` tab to define security labels applied to the trigger. Click the `Add` icon (+) to add each security label. + +- Specify a security label provider in the `Provider` field. The named provider must be loaded and must consent to the proposed labeling operation. +- Specify a security label in the `Security Label` field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them. + +Click the `Add` icon (+) to assign additional security labels; to discard a security label, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `SQL` tab to continue. + +Your entries in the `Domain Trigger` dialog generate a generate a SQL command. Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Domain Trigger` dialog: + +![Create Event Trigger dialog - SQL tab](../../images/event_trigger_sql.png) + +The command creates an event trigger named `accounts` that invokes the procedure named `acct_due`. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/06_extension_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/06_extension_dialog.mdx new file mode 100644 index 00000000000..d667bc5890a --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/06_extension_dialog.mdx @@ -0,0 +1,42 @@ +--- +title: "Extension Dialog" +--- + + + +Use the `Extension` dialog to install a new extension into the current database. An extension is a collection of SQL objects that add targeted functionality to your Postgres installation. The `Extension` dialog adds the functionality of an extension to the current database only; you must register the extension in each database that use the extension. Before you load an extension into a database, you should confirm that any pre-requisite files are installed. + +The `Extension` dialog allows you to implement options of the CREATE EXTENSION command through the following dialog tabs: `General` and `Definition`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Extension dialog - General tab](../../images/extension_general.png) + +Use the fields in the `General` tab to identify an extension: + +- Use the drop-down listbox in the `Name` field to select the extension. Each extension must have a unique name. +- Store notes about the extension in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Extension dialog - Definition tab](../../images/extension_definition.png) + +Use the `Definition` tab to select the `Schema` and `Version`: + +- Use the drop-down listbox next to `Schema` to select the name of the schema in which to install the extension's objects. +- Use the drop-down listbox next to `Version` to select the version of the extension to install. + +Click the `SQL` tab to continue. + +Your entries in the `Extension` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Extension` dialog: + +![Create Extension dialog - SQL tab](../../images/extension_sql.png) + +The command creates the `chkpass` extension in the `public` schema. It is version `1.0` of `chkpass`. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/07_foreign_data_wrapper_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/07_foreign_data_wrapper_dialog.mdx new file mode 100644 index 00000000000..284b5f24357 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/07_foreign_data_wrapper_dialog.mdx @@ -0,0 +1,68 @@ +--- +title: "Foreign Data Wrapper Dialog" +--- + + + +Use the `Foreign Data Wrapper` dialog to create or modify a foreign data wrapper. A foreign data wrapper is an adapter between a Postgres database and data stored on another data source. + +You must be a superuser to create a foreign data wrapper. + +The `Foreign Data Wrapper` dialog organizes the development of a foreign data wrapper through the following dialog tabs: `General`, `Definition`, `Options`, and `Security`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Foreign Data Wrapper dialog - General tab](../../images/foreign_data_wrapper_general.png) + +Use the fields in the `General` tab to identify the foreign data wrapper: + +- Use the `Name` field to add a descriptive name for the foreign data wrapper. A foreign data wrapper name must be unique within the database. The name will be displayed in the `Browser` tree control. +- Use the drop-down listbox next to `Owner` to select the name of the role that will own the foreign data wrapper. +- Store notes about the foreign data wrapper in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Foreign Data Wrapper dialog - Definition tab](../../images/foreign_data_wrapper_definition.png) + +Use the fields in the `Definition` tab to set parameters: + +- Select the name of the handler function from the drop-down listbox in the `Handler` field. This is the name of an existing function that will be called to retrieve the execution functions for foreign tables. +- Select the name of the validator function from the drop-down listbox in the `Validator` field. This is the name of an existing function that will be called to check the generic options given to the foreign data wrapper, as well as options for foreign servers, user mappings and foreign tables using the foreign data wrapper. + +Click the `Options` tab to continue. + +![Create Foreign Data Wrapper dialog - Options tab](../../images/foreign_data_wrapper_options.png) + +Use the fields in the `Options` tab to specify options: + +- Click the the `Add` icon (+) button to add an option/value pair for the foreign data wrapper. Supported option/value pairs will be specific to the selected foreign data wrapper. +- Specify the option name in the `Option` field and provide a corresponding value in the `Value` field. + +Click the `Add` icon (+) to specify each additional pair; to discard an option, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `Security` tab to continue. + +![Create Foreign Data Wrapper dialog - Security tab](../../images/foreign_data_wrapper_security.png) + +Use the `Security` tab to assign security privileges. Click the `Add` icon (+) to assign a set of privileges. + +- Select the name of the role from the drop-down listbox in the `Grantee` field. +- Click inside the `Privileges` field. Check the boxes to the left of one or more privileges to grant the selected privileges to the specified user. +- The current user, who is the default grantor for granting the privilege, is displayed in the `Grantor` field. + +Click add to assign additional privileges; to discard a privilege, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `SQL` tab to continue. + +Your entries in the `Foreign Data Wrapper` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Foreign Data Wrapper` dialog: + +![Create Foreign Data Wrapper dialog - SQL tab](../../images/foreign_data_wrapper_sql.png) + +The example creates a foreign data wrapper named `libpq_debug` that uses pre-existing validator and handler functions, `dblink_fdw_validator` and `libpg_fdw_handler`. Selections on the `Options` tab set `debug` equal to `true`. The foreign data wrapper is owned by `postgres`. + +- Click the `Help` button (?) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/08_foreign_server_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/08_foreign_server_dialog.mdx new file mode 100644 index 00000000000..c2d396137ac --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/08_foreign_server_dialog.mdx @@ -0,0 +1,66 @@ +--- +title: "Foreign Server Dialog" +--- + + + +Use the `Foreign Server` dialog to create a foreign server. A foreign server typically encapsulates connection information that a foreign-data wrapper uses to access an external data resource. Each foreign data wrapper may connect to a different foreign server; in the `Browser` tree control, expand the node of the applicable foreign data wrapper to launch the `Foreign Server` dialog. + +The `Foreign Server` dialog organizes the development of a foreign server through the following dialog tabs: `General`, `Definition`, `Options`, and `Security`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Foreign Server dialog - General tab](../../images/foreign_server_general.png) + +Use the fields in the `General` tab to identify the foreign server: + +- Use the `Name` field to add a descriptive name for the foreign server. The name will be displayed in the `Browser` tree control. It must be unique within the database. +- Use the drop-down listbox next to `Owner` to select a role. +- Store notes about the foreign server in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Foreign Server dialog - Definition tab](../../images/foreign_server_definition.png) + +Use the fields in the `Definition` tab to set parameters: + +- Use the `Type` field to specify a server type. +- Use the `Version` field to specify a server version. + +Click the `Options` tab to continue. + +![Create Foreign Server dialog - Options tab](../../images/foreign_server_options.png) + +Use the fields in the `Options` tab to specify options. Click the `Add` button to create an option clause for the foreign server. + +- Specify the option name in the `Option` field. +- Provide a corresponding value in the `Value` field. + +Click `Add` to create each additional clause; to discard an option, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `Security` tab to continue. + +![Create Foreign Server dialog - Security tab](../../images/foreign_server_security.png) + +Use the `Security` tab to assign security privileges to the foreign server. Click `Add` before you assign a set of privileges. + +- Select the name of the role from the drop-down listbox in the `Grantee` field. +- Click inside the `Privileges` field. Check the boxes to the left of one or more privileges to grant the selected privileges to the specified user. +- The current user, who is the default grantor for granting the privilege, is displayed in the `Grantor` field. + +Click `Add` to assign a new set of privileges; to discard a privilege, click the trash icon to the left of the row and confirm deletion in the `Delete Row` dialog. + +Click the `SQL` tab to continue. + +Your entries in the `Foreign Server` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Foreign Server` dialog: + +![Create Foreign Server dialog - SQL tab](../../images/foreign_server_sql.png) + +The example shown demonstrates creating a foreign server for the foreign data wrapper `hdfs_fdw`. It has the name `hdfs_server`; its type is `hiveserver2`. Options for the foreign server include a host and a port. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/09_foreign_table_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/09_foreign_table_dialog.mdx new file mode 100644 index 00000000000..6edb02e383a --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/09_foreign_table_dialog.mdx @@ -0,0 +1,100 @@ +--- +title: "Foreign Table Dialog" +--- + + + +Use the `Foreign Table` dialog to define a foreign table in the current database. Foreign tables define the structure of an external data source that resides on a foreign server. + +The `Foreign Table` dialog organizes the development of a foreign table through the following dialog tabs: `General`, `Definition`, `Columns`, `Constraints`, `Options`, and `Security`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Foreign Table dialog - General tab](../../images/foreign_table_general.png) + +Use the fields in the `General` tab to identify the foreign table: + +- Use the `Name` field to add a descriptive name for the foreign table. The name of the foreign table must be distinct from the name of any other foreign table, table, sequence, index, view, existing data type, or materialized view in the same schema. The name will be displayed in the `Browser` tree control. +- Use the drop-down listbox next to `Owner` to select the name of the role that will own the foreign table. +- Select the name of the schema in which the foreign table will reside from the drop-down listbox in the `Schema` field. +- Store notes about the foreign table in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Foreign Table dialog - Definition tab](../../images/foreign_table_definition.png) + +Use the fields in the `Definition` tab to define the external data source: + +- Use the drop-down listbox next to `Foreign server` to select a foreign server. This list is populated with servers defined through the `Foreign Server` dialog. +- Use the drop-down listbox next to `Inherits` to specify a parent table. The foreign table will inherit all of its columns. This field is optional. + +Click the `Columns` tab to continue. + +![Create Foreign Table dialog - Columns tab](../../images/foreign_table_columns.png) + +Use the fields in the `Columns` tab to add columns and their attributes to the table. Click the `Add` icon (+) to define a column: + +- Use the `Name` field to add a descriptive name for the column. +- Use the drop-down listbox in the `Data Type` field to select a data type for the column. This can include array specifiers. For more information on which data types are supported by PostgreSQL, refer to Chapter 8 of the core documentation. + +Click the `Add` icon (+) to specify each additional column; to discard a column, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `Constraints` tab to continue. + +![Create Foreign Table dialog - Constraints tab](../../images/foreign_table_constraints.png) + +Use the fields in the `Constraints` tab to apply a table constraint to the foreign table. Click the `Add` icon (+) to define a constraint: + +- Use the `Name` field to add a descriptive name for the constraint. If the constraint is violated, the constraint name is present in error messages, so constraint names like `col must be positive` can be used to communicate helpful information. +- Use the `Check` field to write a check expression producing a Boolean result. Each row in the foreign table is expected to satisfy the check expression. +- Check the `No Inherit` checkbox to specify that the constraint will not propagate to child tables. +- Uncheck the `Validate` checkbox to disable validation. The database will not assume that the constraint holds for all rows in the table. + +Click the `Add` icon (+) to specify each additional constraint; to discard a constraint, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `Options` tab to continue. + +![Create Foreign Table dialog - Options tab](../../images/foreign_table_options.png) + +Use the fields in the `Options` tab to specify options to be associated with the new foreign table or one of its columns; the accepted option names and values are specific to the foreign data wrapper associated with the foreign server. Click the `Add` icon (+) to add an option/value pair. + +- Specify the option name in the `Option` field. Duplicate option names are not allowed. +- Provide a corresponding value in the `Value` field. + +Click the `Add` icon (+) to specify each additional option/value pair; to discard an option, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `Security` tab to continue. + +![Create Foreign Table dialog - Security tab](../../images/foreign_table_security.png) + +Use the `Security` tab to assign privileges and define security labels. + +Use the `Privileges` panel to assign privileges to a role. Click the `Add` icon (+) to set privileges for database objects: + +- Select the name of the role to which privileges will be assigned from the drop-down listbox in the `Grantee` field. +- Click inside the `Privileges` field. Check the boxes to the left of one or more privileges to grant the selected privilege to the specified user. +- The current user, who is the default grantor for granting the privilege, is displayed in the `Grantor` field. + +Click the `Add` icon (+) to assign additional privileges; to discard a privilege, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Use the `Security Labels` panel to define security labels applied to the function. Click the `Add` icon (+) to add each security label selection: + +- Specify a security label provider in the `Provider` field. The named provider must be loaded and must consent to the proposed labeling operation. +- Specify a a security label in the `Security Label` field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them. + +Click the `Add` icon (+) to assign additional security labels; to discard a security label, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `SQL` tab to continue. + +Your entries in the `Foreign Table` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Foreign Table` dialog: + +![Create Foreign Table dialog - SQL tab](../../images/foreign_table_sql.png) + +The example shown demonstrates creating a foreign table `weblogs` with multiple columns and two options. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/10_fts_configuration_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/10_fts_configuration_dialog.mdx new file mode 100644 index 00000000000..53c3d6c096a --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/10_fts_configuration_dialog.mdx @@ -0,0 +1,58 @@ +--- +title: "FTS Configuration dialog" +--- + + + +Use the `FTS Configuration` dialog to configure a full text search. A text search configuration specifies a text search parser that can divide a string into tokens, along with dictionaries that can identify searchable tokens. + +The `FTS Configuration` dialog organizes the development of a FTS configuration through the following dialog tabs: "`General`, `Definition`, and `Tokens`. The `SQL` tab displays the SQL code generated by dialog selections. + +Click the `General` tab to begin. + +![Create FTS Configuration dialog - General tab](../../images/fts_configuration_general.png) + +Use the fields in the `General` tab to identify a FTS configuration: + +- Use the `Name` field to add a descriptive name for the FTS configuration. The name will be displayed in the `Browser` tree control. +- Use the drop-down listbox next to `Owner` to specify the role that will own the configuration. +- Select the name of the schema in which the FTS configuration will reside from the drop-down listbox in the `Schema` field. +- Store notes about the FTS configuration in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create FTS Configuration dialog - Definition tab](../../images/fts_configuration_definition.png) + +Use the fields in the `Definition` tab to define parameters: + +- Select the name of the text search parser from the drop-down listbox in the `Parser` field. +- Select a language from the drop-down listbox in the `Copy Config` field. + +Click the `Tokens` tab to continue. + +![Create FTS Configuration dialog - Tokens tab](../../images/fts_configuration_tokens.png) + +Use the fields in the `Tokens` tab to add a token: + +- Use the `Tokens` field to specify the name of a token. +- Click the `Add` icon (+) to create a token. +- Use the `Dictionaries` field to specify a dictionary. + +Repeat these steps to add additional tokens; to discard a token, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `SQL` tab to continue. + +Your entries in the `FTS Configuration` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `FTS Configuration` dialog: + +![Create FTS Configuration dialog - SQL tab](../../images/fts_configuration_sql.png) + +The example shown demonstrates creating a FTS configuration named `meme_phrases`. It uses the `default` parser. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/11_fts_dictionary_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/11_fts_dictionary_dialog.mdx new file mode 100644 index 00000000000..2e756e7a9e1 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/11_fts_dictionary_dialog.mdx @@ -0,0 +1,58 @@ +--- +title: "FTS Dictionary Dialog" +--- + + + +Use the `FTS Dictionary` dialog to create a full text search dictionary. You can use a predefined templates or create a new dictionary with custom parameters. + +The `FTS Dictionary` dialog organizes the development of a FTS dictionary through the following dialog tabs: `General`, `Definition`, and `Options`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create FTS Dictionary dialog - General tab](../../images/fts_dictionary_general.png) + +Use the fields in the `General` tab to identify the dictionary: + +- Use the `Name` field to add a descriptive name for the dictionary. The name will be displayed in the `Browser` tree control. +- Use the drop-down listbox next to `Owner` to select the role that will own the FTS Dictionary. +- Select the name of the schema in which the dictionary will reside from the drop-down listbox in the `Schema` field. +- Store notes about the dictionary in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create FTS Dictionary dialog - Definition tab](../../images/fts_dictionary_definition.png) + +Use the field in the `Definition` tab to choose a template from the drop-down listbox: + +- Select `ispell` to select the Ispell template. The Ispell dictionary template supports morphological dictionaries, which can normalize many different linguistic forms of a word into the same lexeme. For example, an English Ispell dictionary can match all declensions and conjugations of the search term bank, e.g., banking, banked, banks, banks', and bank's. Ispell dictionaries usually recognize a limited set of words, so they should be followed by another broader dictionary; for example, a Snowball dictionary, which recognizes everything. +- Select `simple` to select the simple template. The simple dictionary template operates by converting the input token to lower case and checking it against a file of stop words. If it is found in the file then an empty array is returned, causing the token to be discarded. If not, the lower-cased form of the word is returned as the normalized lexeme. Alternatively, the dictionary can be configured to report non-stop-words as unrecognized, allowing them to be passed on to the next dictionary in the list. +- Select `snowball` to select the Snowball template. The Snowball dictionary template is based on a project by Martin Porter, inventor of the popular Porter's stemming algorithm for the English language. Snowball now provides stemming algorithms for many languages (see the Snowball site for more information). Each algorithm understands how to reduce common variant forms of words to a base, or stem, spelling within its language. A Snowball dictionary recognizes everything, whether or not it is able to simplify the word, so it should be placed at the end of the dictionary list. It is useless to have it before any other dictionary because a token will never pass through it to the next dictionary. +- Select `synonym` to select the synonym template. This dictionary template is used to create dictionaries that replace a word with a synonym. Phrases are not supported (use the thesaurus template (Section 12.6.4) for that). A synonym dictionary can be used to overcome linguistic problems, for example, to prevent an English stemmer dictionary from reducing the word Paris to pari. +- Select `thesaurus` to select the thesaurus template. A thesaurus dictionary replaces all non-preferred terms by one preferred term and, optionally, preserves the original terms for indexing as well. PostgreSQL's current implementation of the thesaurus dictionary is an extension of the synonym dictionary with added phrase support. + +Click the `Options` tab to continue. + +![Create FTS Dictionary dialog - Options tab](../../images/fts_dictionary_options.png) + +Use the fields in the `Options` tab to provide template-specific options. Click the `Add` icon (+) to add an option clause: + +- Specify the name of an option in the `Option` field +- Provide a value for the option in the `Value` field. + +Click the `Add` icon (+) to specify each additional option/value pair; to discard an option, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `SQL` tab to continue. + +Your entries in the `FTS Dictionary` dialog generate a generate a SQL command. Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `FTS Dictionary` dialog: + +![Create FTS Dictionary dialog - SQL tab](../../images/fts_dictionary_sql.png) + +The example shown demonstrates creating a custom dictionary named `more_stopwords` which is based on the simple template and is configured to use standard English. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/12_fts_parser_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/12_fts_parser_dialog.mdx new file mode 100644 index 00000000000..63e96667e86 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/12_fts_parser_dialog.mdx @@ -0,0 +1,40 @@ +--- +title: "FTS Parser Dialog" +--- + + + +Use the `FTS Parser` dialog to create a new text search parser. A text search parser defines a method for splitting a text string into tokens and assigning types (categories) to the tokens. + +The `FTS Parser` dialog organizes the development of a text search parser through the following dialog tabs: `General`, and `Definition`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create FTS Parser dialog - General tab](../../images/fts_parser_general.png) + +Use the fields in the `General` tab to identify a text search parser: + +- Use the `Name` field to add a descriptive name for the parser. The name will be displayed in the `Browser` tree control. +- Select the name of the schema in which the parser will reside from the drop-down listbox in the `Schema` field. +- Store notes about the domain in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create FTS Parser dialog - Definition tab](../../images/fts_parser_definition.png) + +Use the fields in the `Definition` tab to define parameters: + +- Use the drop-down listbox next to `Start function` to select the name of the function that will initialize the parser. +- Use the drop-down listbox next to `Get next token function` to select the name of the function that will return the next token. +- Use the drop-down listbox next to `End function` to select the name of the function that is called when the parser is finished. +- Use the drop-down listbox next to `Lextypes function` to select the name of the lextypes function for the parser. The lextypes function returns an array that contains the id, alias, and a description of the tokens used by the parser. +- Use the drop-down listbox next to `Headline function` to select the name of the headline function for the parser. The headline function returns an excerpt from the document in which the terms of the query are highlighted. + +Click the `SQL` tab to continue. + +![Create FTS Parser dialog - SQL tab](../../images/fts_parser_sql.png) + +Your entries in the `FTS Parser` dialog generate a generate a SQL command. Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/13_fts_template_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/13_fts_template_dialog.mdx new file mode 100644 index 00000000000..84750a22cb1 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/13_fts_template_dialog.mdx @@ -0,0 +1,43 @@ +--- +title: "FTS Template Dialog" +--- + + + +Use the `FTS Template` dialog to create a new text search template. A text search template defines the functions that implement text search dictionaries. + +The `FTS Template` dialog organizes the development of a text search Template through the following dialog tabs: `General`, and `Definition`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create FTS Template dialog - General tab](../../images/fts_template_general.png) + +Use the fields in the `General` tab to identify a template: + +- Use the `Name` field to add a descriptive name for the template. The name will be displayed in the `Browser` tree control. +- Select the name of the schema in which the template will reside from the drop-down listbox in the `Schema` field. +- Store notes about the template in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create FTS Template dialog - Definition tab](../../images/fts_template_definition.png) + +Use the fields in the `Definition` tab to define function parameters: + +- Use the drop-down listbox next to `Init function` to select the name of the init function for the template. The init function is optional. +- Use the drop-down listbox next to `Lexize function` to select the name of the lexize function for the template. The lexize function is required. + +Click the `SQL` tab to continue. + +Your entries in the `FTS Template` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `FTS Template` dialog: + +![Create FTS Template dialog - SQL tab](../../images/fts_template_sql.png) + +The example shown demonstrates creating a fts template named `ru_template` that uses the ispell dictionary. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/14_function_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/14_function_dialog.mdx new file mode 100644 index 00000000000..2de9e77ab3b --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/14_function_dialog.mdx @@ -0,0 +1,117 @@ +--- +title: "Function Dialog" +--- + + + +Use the `Function` dialog to define a function. If you drop and then recreate a function, the new function is not the same entity as the old; you must drop existing rules, views, triggers, etc. that refer to the old function. + +The `Function` dialog organizes the development of a function through the following dialog tabs: `General`, `Definition`, `Code`, `Options`, `Parameters`, and `Security`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Function dialog - General tab](../../images/function_general.png) + +Use the fields in the `General` tab to identify a function: + +- Use the `Name` field to add a descriptive name for the function. The name will be displayed in the `Browser` tree control. +- Use the drop-down listbox next to `Owner` to select the name of the role that will own the function. +- Use the drop-down listbox next to `Schema` to select the schema in which the function will be created. +- Store notes about the function in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Function dialog - Definition tab](../../images/function_definition.png) + +Use the fields in the `Definition` tab to define the function: + +- Use the drop-down listbox next to `Return type` to select the data type returned by the function, if any. +- Use the drop-down listbox next to `Language` to select the implementation language. The default is `sql`. +- Use the fields in the `Arguments` to define an argument. Click the Add icon (+) to set parameters and values for the argument: + - Use the drop-down listbox in the `Data type` field to select a data type. + - Use the drop-down listbox in the `Mode` field to select a mode. Select IN for an input parameter; select `OUT` for an output parameter; select INOUT for both an input and an output parameter; or, select `VARIADIC` to specify a VARIADIC parameter. + - Provide a name for the argument in the `Argument Name` field. + - Specify a default value for the argument in the `Default Value` field. + +Click the `Add` icon (+) to define another argument; to discard an argument, click the trash icon to the left of the row and confirm deletion in the *Delete Row* popup. + +Click the `Code` tab to continue. + +![Create Function dialog - Code tab](../../images/function_code.png) + +- Use the `Code` field to write the code that will execute when the function is called. + +Click the `Options` tab to continue. + +![Create Function dialog - Options tab](../../images/function_options.png) + +Use the fields in the `Options` tab to describe or modify the action of the function: + +- Use the drop-down listbox next to `Volatility` to select one of the following. `VOLATILE` is the default value. + + > - `VOLATILE` indicates that the function value can change even within a single table scan, so no optimizations can be made. + > - `STABLE` indicates that the function cannot modify the database, and that within a single table scan it will consistently return the same result for the same argument values. + > - `IMMUTABLE` indicates that the function cannot modify the database and always returns the same result when given the same argument values. + +- Move the `Returns a Set?` switch to indicate if the function returns a set that includes multiple rows. The default is `No`. + +- Move the `Strict?` switch to indicate if the function always returns NULL whenever any of its arguments are NULL. If `Yes`, the function is not executed when there are NULL arguments; instead a NULL result is assumed automatically. The default is `No`. + +- Move the `Security of definer?` switch to specify that the function is to be executed with the privileges of the user that created it. The default is `No`. + +- Move the `Window?` switch to indicate that the function is a window function rather than a plain function. The default is `No`. This is currently only useful for functions written in C. The WINDOW attribute cannot be changed when replacing an existing function definition. For more information about the CREATE FUNCTION command, see the PostgreSQL core documentation available at: + + > + +- Use the `Estimated cost` field to specify a positive number representing the estimated execution cost for the function, in units of cpu_operator_cost. If the function returns a set, this is the cost per returned row. + +- Use the `Estimated rows` field to specify a positive number giving the estimated number of rows that the query planner should expect the function to return. This is only allowed when the function is declared to return a set. The default assumption is 1000 rows. + +- Move the `Leak proof?` switch to indicate whether the function has side effects. The default is `No`. This option can only be set by the superuser. + +- Use the `Support function` field to specify a planner support function to use for the function. + +Click the `Parameters` tab to continue. + +![Create Function dialog - Parameters tab](../../images/function_parameters.png) + +Use the fields in the `Parameters` tab to specify settings that will be applied when the function is invoked. Click the `Add` icon (+) to add a `Name`/`Value` field in the table. + +- Use the drop-down listbox in the `Name` column in the `Parameters` panel to select a parameter. +- Use the `Value` field to specify the value that will be associated with the selected variable. This field is context-sensitive. + +Click the `Security` tab to continue. + +![Create Function dialog - Security tab](../../images/function_security.png) + +Use the `Security` tab to assign privileges and define security labels. + +Use the `Privileges` panel to assign usage privileges for the function to a role. + +- Select the name of the role from the drop-down listbox in the `Grantee` field. +- Click inside the `Privileges` field. Check the boxes to the left of one or more privileges to grant the selected privilege to the specified user. +- The current user, who is the default grantor for granting the privilege, is displayed in the `Grantor` field. + +Click the `Add` icon (+) to assign additional privileges; to discard a privilege, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Use the `Security Labels` panel to define security labels applied to the function. Click the `Add` icon (+) to add each security label selection: + +- Specify a security label provider in the `Provider` field. The named provider must be loaded and must consent to the proposed labeling operation. +- Specify a a security label in the `Security Label` field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them. + +Click the `Add` icon (+) to assign additional security labels; to discard a security label, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `SQL` tab to continue. + +Your entries in the `Function` dialog generate a generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by selections made in the `Function` dialog: + +![Create Function dialog - SQL tab](../../images/function_sql.png) + +The example demonstrates creating an `edbspl` function named `emp_comp`. The function adds two columns (p_sal and p_comm), and then uses the result to compute a yearly salary, returning a NUMERIC value. + +- Click the `Info` button (i) to access online help.View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/15_language_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/15_language_dialog.mdx new file mode 100644 index 00000000000..6d7de391baf --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/15_language_dialog.mdx @@ -0,0 +1,66 @@ +--- +title: "Language Dialog" +--- + + + +Use the CREATE LANGUAGE dialog to register a new procedural language. + +The `Language` dialog organizes the registration of a procedural language through the following dialog tabs: `General`, `Definition`, and `Security`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Language dialog - General tab](../../images/language_general.png) + +Use the fields in the `General` tab to identify a language: + +- Use the drop-down listbox next to `Name` to select a language script. +- Use the drop-down listbox next to `Owner` to select a role. +- Store notes about the language in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Language dialog - Definition tab](../../images/language_definition.png) + +Use the fields in the `Definition` tab to define parameters: + +- Move the `Trusted?` switch to the `No` position to specify only users with PostgreSQL superuser privilege can use this language. The default is `Yes`. +- When enabled, use the drop-down listbox next to `Handler Function` to select the function that will be called to execute the language's functions. +- When enabled, use the drop-down listbox next to `Inline Function` to select the function that will be called to execute an anonymous code block (DO command) in this language. +- When enabled, use the drop-down listbox next to `Validator Function` to select the function that will be called when a new function in the language is created, to validate the new function. + +Click the `Security` tab to continue. + +![Create Language dialog - Security tab](../../images/language_security.png) + +Use the `Security` tab to assign privileges and define security labels. + +Use the `Privileges` panel to assign privileges to a role. Click the `Add` icon (+) to set privileges for database objects: + +- Select the name of the role from the drop-down listbox in the `Grantee` field. +- Click inside the `Privileges` field. Check the boxes to the left of one or more privileges to grant the selected privilege to the specified user. +- The current user, who is the default grantor for granting the privilege, is displayed in the `Grantor` field. + +Click the `Add` icon (+) to assign additional privileges; to discard a privilege, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Use the `Security Labels` panel to define security labels applied to the function. Click the `Add` icon (+) to add each security label selection: + +- Specify a security label provider in the `Provider` field. The named provider must be loaded and must consent to the proposed labeling operation. +- Specify a a security label in the `Security Label` field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them. + +Click the `Add` icon (+) to assign additional security labels; to discard a security label, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `SQL` tab to continue. + +Your entries in the `Language` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Language` dialog: + +![Create Language dialog - SQL tab](../../images/language_sql.png) + +"The example shown demonstrates creating the procedural language named `plperl`." + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/16_materialized_view_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/16_materialized_view_dialog.mdx new file mode 100644 index 00000000000..8ac532cb7a4 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/16_materialized_view_dialog.mdx @@ -0,0 +1,81 @@ +--- +title: "Materialized View Dialog" +--- + + + +Use the `Materialized View` dialog to define a materialized view. A materialized view is a stored or cached view that contains the result set of a query. Use the REFRESH MATERIALIZED VIEW command to update the content of a materialized view. + +The `Materialized View` dialog organizes the development of a materialized_view through the following dialog tabs: `General`, `Definition`, `Storage`, `Parameter`, and `Security`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Materialized View dialog - General tab](../../images/materialized_view_general.png) + +Use the fields in the `General` tab to identify the materialized view: + +- Use the `Name` field to add a descriptive name for the materialized view. The name will be displayed in the `Browser` tree control. +- Use the drop-down listbox next to `Owner` to select the role that will own the materialized view. +- Select the name of the schema in which the materialized view will reside from the drop-down listbox in the `Schema` field. +- Store notes about the materialized view in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Materialized View dialog - Definition tab](../../images/materialized_view_definition.png) + +Use the text editor field in the `Definition` tab to provide the query that will populate the materialized view. Please note that updating the definition of existing materialized view would result in loss of Parameter(Table, Toast), Security(Privileges & Security labels), Indexes and other dependent objects. + +Click the `Storage` tab to continue. + +![Create Materialized View dialog - Storage tab](../../images/materialized_view_storage.png) + +Use the fields in the `Storage` tab to maintain the materialized view: + +- Move the `With Data` switch to the `Yes` position to specify the materialized view should be populated at creation time. If not, the materialized view cannot be queried until you invoke REFRESH MATERIALIZED VIEW. +- Use the drop-down listbox next to `Tablespace` to select a location for the materialized view. +- Use the `Fill Factor` field to specify a fill factor for the materialized view. The fill factor for a table is a percentage between 10 and 100. 100 (complete packing) is the default. + +Click the `Parameter` tab to continue. + +![Create Materialized View dialog - Parameter tab](../../images/materialized_view_parameter.png) + +Use the tabs nested inside the `Parameter` tab to specify VACUUM and ANALYZE thresholds; use the `Table` tab and the `Toast Table` tab to customize values for the table and the associated toast table. To change the default values: + +- Move the `Custom auto-vacuum?` switch to the `Yes` position to perform custom maintenance on the materialized view and to select values in the `Vacuum table`. The `Vacuum Table` provides default values for maintenance operations. +- Changing `Autovacuum enabled?` to `Not set` will reset autovacuum_enabled. + +Click the `Security` tab to continue. + +![Create Materialized View dialog - Security tab](../../images/materialized_view_security.png) + +Use the `Security` tab to assign privileges and define security labels. + +Use the `Privileges` panel to assign privileges to a role. Click the `Add` icon (+) to set privileges for the materialized view: + +- Select the name of the role from the drop-down listbox in the `Grantee` field. +- Click inside the `Privileges` field. Check the boxes to the left of one or more privileges to grant the selected privilege to the specified user. +- The current user, who is the default grantor for granting the privilege, is displayed in the `Grantor` field. + +Click the `Add` icon (+) to assign additional privileges; to discard a privilege, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Use the `Security Labels` panel to define security labels applied to the materialized view. Click the `Add` icon (+) to add each security label selection: + +- Specify a security label provider in the `Provider` field. The named provider must be loaded and must consent to the proposed labeling operation. +- Specify a a security label in the `Security Label` field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them. + +Click the `Add` icon (+) to assign additional security labels; to discard a security label, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `SQL` tab to continue. + +Your entries in the `Materialized View` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Materialized View` dialog: + +![Create Materialized View dialog - SQL tab](../../images/materialized_view_sql.png) + +The example shown creates a query named `new_hires` that stores the result of the displayed query in the `pg_default` tablespace. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/17_package_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/17_package_dialog.mdx new file mode 100644 index 00000000000..64b8f79569e --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/17_package_dialog.mdx @@ -0,0 +1,53 @@ +--- +title: "Package Dialog" +--- + + + +Use the `Package` dialog to create a (user-defined) package specification. + +The `Package` dialog organizes the management of a package through the following dialog tabs: `General`, `Header`, `Body`, and `Security`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Package dialog - General tab](../../images/package_general.png) + +Use the fields in the `General` tab to identify the package: + +- Use the `Name` field to add a descriptive name for the package. The name of a new package must not match any existing package in the same schema. +- Select the schema in which the package will reside from the drop-down listbox in the `Schema` field. +- Store notes about the package in the `Comment` field. + +Click the `Header` tab to continue. + +![Create Package dialog - Header tab](../../images/package_header.png) + +Use the `Header` field to define the public interface for the package. + +Click the `Body` tab to continue. + +![Create Package dialog - Body tab](../../images/package_body.png) + +Use the `Body` field to provide the code that implements each package object. + +Click the `Security` tab to continue. + +![Create Package dialog - Security tab](../../images/package_security.png) + +Use the fields in the `Security` tab to to assign EXECUTE privileges for the package to a role. Click the `Add` icon (+) to set privileges for the package: + +- Select the name of the role from the drop-down listbox in the `Grantee` field. +- Click inside the `Privileges` field. Check the boxes to the left of a privilege to grant the selected privilege to the specified user. +- The current user, who is the default grantor for granting the privilege, is displayed in the `Grantor` field. + +Click the `Add` icon (+) to assign additional privileges; to discard a privilege, click the trash icon to the left of the row, and confirm the deletion in the `Delete Row` popup. + +Click the `SQL` tab to continue. + +Your entries in the `Package` dialog generate a SQL command that creates or modifies a package definition: + +![Create Package dialog - SQL tab](../../images/package_sql.png) + +The example shown demonstrates creating a package named `empinfo` that includes two function and two procedure. + +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to delete any changes to the dialog. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/18_procedure_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/18_procedure_dialog.mdx new file mode 100644 index 00000000000..b7284a798c8 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/18_procedure_dialog.mdx @@ -0,0 +1,107 @@ +--- +title: "Procedure Dialog" +--- + + + +Use the `Procedure` dialog to create a procedure; procedures are supported by PostgreSQL v11+ and EDB Postgres Advanced Server. The `Procedure` dialog allows you to implement options of the CREATE PROCEDURE command. + +The `Procedure` dialog organizes the development of a procedure through the following dialog tabs: `General`, *Definition*, `Options`, *Arguments*, *Parameters*, and `Security`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Procedure dialog - General tab](../../images/procedure_general.png) + +Use the fields in the `General` tab to identify a procedure: + +- Use the `Name` field to add a descriptive name for the procedure. The name will be displayed in the \*\* tree control. +- Use the drop-down listbox next to `Owner` to select a role. +- Select the name of the schema in which the procedure will reside from the drop-down listbox in the `Schema` field. +- Store notes about the procedure in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Procedure dialog - Definition tab](../../images/procedure_definition.png) + +Use the fields in the `Definition` tab to define the procedure: + +- Use the drop-down listbox next to `Language` to select a language. The default is `edbspl`. +- Use the fields in the `Arguments` section to define an argument. Click `Add` to set parameters and values for the argument: +- Use the drop-down listbox next to `Data type` to select a data type. +- Use the drop-down listbox next to `Mode` to select a mode. Select `IN` for an input parameter; select `OUT` for an output parameter; select `INOUT` for both an input and an output parameter; or, select `VARIADIC` to specify a VARIADIC parameter. +- Write a name for the argument in the `Argument Name` field. +- Specify a default value for the argument in the `Default Value` field. + +Click `Add` to define another argument; to discard an argument, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `Code` tab to continue. + +![Create Procedure dialog - Code tab](../../images/procedure_code.png) + +- Use the `Code` field to specify the code that will execute when the procedure is called. + +Click the `Options` tab to continue. + +![Create Procedure dialog - Options tab](../../images/procedure_options.png) + +Use the fields in the `Options` tab to describe or modify the behavior of the procedure: + +- Use the drop-down listbox under `Volatility` to select one of the following. `VOLATILE` is the default value. + + > - `VOLATILE` indicates that the value can change even within a single table scan, so no optimizations can be made. + > - `STABLE` indicates that the procedure cannot modify the database, and that within a single table scan it will consistently return the same result for the same argument values, but that its result could change across SQL statements. + > - `IMMUTABLE` indicates that the procedure cannot modify the database and always returns the same result when given the same argument values. + +- Move the `Strict?` switch to indicate if the procedure always returns NULL whenever any of its arguments are NULL. If `Yes`, the procedure is not executed when there are NULL arguments; instead a NULL result is assumed automatically. The default is `No`. + +- Move the `Security of definer?` switch to specify that the procedure is to be executed with the privileges of the user that created it. The default is `No`. + +- Use the `Estimated cost` field to specify a positive number representing the estimated execution cost for the procedure, in units of cpu_operator_cost. If the procedure returns a set, this is the cost per returned row. + +- Move the `Leak proof?` switch to indicate whether the procedure has side effects — it reveals no information about its arguments other than by its return value. The default is `No`. + +Click the `Parameters` tab to continue. + +![Create Procedure dialog - Parameters tab](../../images/procedure_parameters.png) + +Use the fields in the `Parameters` tab to specify settings that will be applied when the procedure is invoked: + +- Use the drop-down listbox next to `Parameter Name` in the `Parameters` panel to select a parameter. +- Click the `Add` button to add the variable to `Name` field in the table. +- Use the `Value` field to specify the value that will be associated with the selected variable. This field is context-sensitive. + +Click the `Security` tab to continue. + +![Create Procedure dialog - Security tab](../../images/procedure_security.png) + +Use the `Security` tab to assign privileges and define security labels. + +Use the `Privileges` panel to assign execute privileges for the procedure to a role: + +- Select the name of the role from the drop-down listbox in the `Grantee` field. +- Click inside the `Privileges` field. Check the boxes to the left of one or more privileges to grant the selected privilege to the specified user. +- The current user, who is the default grantor for granting the privilege, is displayed in the `Grantor` field. + +Click `Add` to assign additional privileges; to discard a privilege, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Use the `Security Labels` panel to define security labels applied to the procedure. Click `Add` to add each security label selection: + +- Specify a security label provider in the `Provider` field. The named provider must be loaded and must consent to the proposed labeling operation. +- Specify a a security label in the `Security Label` field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them. + +Click `Add` to assign additional security labels; to discard a security label, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `SQL` tab to continue. + +Your entries in the `Procedure` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by selections made in the `Procedure` dialog: + +![Create Procedure dialog - SQL tab](../../images/procedure_sql.png) + +The example demonstrates creating a procedure that returns a list of employees from a table named `emp`. The procedure is a SECURITY DEFINER, and will execute with the privileges of the role that defined the procedure. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/19_schema_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/19_schema_dialog.mdx new file mode 100644 index 00000000000..c9823d03051 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/19_schema_dialog.mdx @@ -0,0 +1,65 @@ +--- +title: "Schema Dialog" +--- + + + +Use the `Schema` dialog to define a schema. A schema is the organizational workhorse of a database, similar to directories or namespaces. To create a schema, you must be a database superuser or have the CREATE privilege. + +The `Schema` dialog organizes the development of schema through the following dialog tabs: `General` and `Security`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Schema dialog - General tab](../../images/schema_general.png) + +Use the fields on the `General` tab to identify the schema. + +- Use the `Name` field to add a descriptive name for the schema. The name will be displayed in the `Browser` tree control. +- Select the owner of the schema from the drop-down listbox in the `Owner` field. +- Store notes about the schema in the `Comment` field. + +Click the `Security` tab to continue. + +![Create Schema dialog - Security tab](../../images/schema_security.png) + +Use the `Security` tab to assign privileges and security labels for the schema. + +Click the `Add` icon (+) to assign a set of privileges in the `Privileges` panel: + +- Select the name of the role from the drop-down listbox in the `Grantee` field. +- Click inside the `Privileges` field. Check the boxes to the left of one or more privileges to grant the selected privileges to the specified user. +- Select the name of the role that is granting the privilege from the drop-down listbox in the `Grantor` field. The default grantor is the owner of the schema. + +Click the `Add` icon (+) to assign additional sets of privileges; to discard a privilege, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `Add` icon (+) to assign a security label in the `Security Labels` panel: + +- Specify a security label provider in the `Provider` field. The named provider must be loaded and must consent to the proposed labeling operation. +- Specify a a security label in the `Security Label` field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them. + +Click the `Add` icon (+) to assign additional security labels; to discard a security label, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `Default Privileges` tab to continue. + +![Create Schema dialog - Default Privileges tab](../../images/schema_default_privileges.png) + +Use the `Default Privileges` tab to grant privileges for tables, sequences, functions and types. Use the tabs nested inside the `Default Privileges` tab to specify the database object and click the `Add` icon (+) to assign a set of privileges: + +- Select the name of a role that will be granted privileges in the schema from the drop-down listbox in the `Grantee` field. +- Click inside the `Privileges` field. Check the boxes to the left of one or more privileges to grant the selected privileges to the specified user. +- The current user, who is the default grantor for granting the privilege, is displayed in the `Grantor` field. + +Click the `SQL` tab to continue. + +Your entries in the `Schema` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by selections made in the `Schema` dialog: + +![Create Schema dialog - SQL tab](../../images/schema_sql.png) + +The example creates a schema named hr; the command grants `USAGE` privileges to `public` and assigns the ability to grant privileges to `alice`. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/20_sequence_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/20_sequence_dialog.mdx new file mode 100644 index 00000000000..393467f75a1 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/20_sequence_dialog.mdx @@ -0,0 +1,69 @@ +--- +title: "Sequence Dialog" +--- + + + +Use the `Sequence` dialog to create a sequence. A sequence generates unique values in a sequential order (not necessarily contiguous). + +The `Sequence` dialog organizes the development of a sequence through the following dialog tabs: `General`, *Definition*, and `Security`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Sequence dialog - General tab](../../images/sequence_general.png) + +Use the fields in the `General` tab to identify a sequence: + +- Use the `Name` field to add a descriptive name for the sequence. The name will be displayed in the `Browser` tree control. The sequence name must be distinct from the name of any other sequence, table, index, view, or foreign table in the same schema. +- Use the drop-down listbox next to `Owner` to select the name of the role that will own the sequence. +- Use the drop-down listbox next to `Schema` to select the schema in which the sequence will reside. +- Store notes about the sequence in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Sequence dialog - Definition tab](../../images/sequence_definition.png) + +Use the fields in the `Definition` tab to define the sequence: + +- Use the `Increment` field to specify which value is added to the current sequence value to create a new value. +- Provide a value in the `Start` field to specify the beginning value of the sequence. The default starting value is MINVALUE for ascending sequences and MAXVALUE for descending ones. +- Provide a value in the `Minimum` field to specify the minimum value a sequence can generate. If this clause is not supplied or NO MINVALUE is specified, then defaults will be used. The defaults are 1 and -263-1 for ascending and descending sequences, respectively. +- Provide a value in the `Maximum` field to specify the maximum value for the sequence. If this clause is not supplied or NO MAXVALUE is specified, then default values will be used. The defaults are 263-1 and -1 for ascending and descending sequences, respectively. +- Provide a value in the `Cache` field to specify how many sequence numbers are to be preallocated and stored in memory for faster access. The minimum value is 1 (only one value can be generated at a time, i.e., no cache), and this is also the default. +- Move the `Cycled` switch to the `Yes` position to allow the sequence to wrap around when the MAXVALUE or the MINVALUE has been reached by an ascending or descending sequence respectively. If the limit is reached, the next number generated will be the MINVALUE or MAXVALUE, respectively. The default is `No`. + +Click the `Security` tab to continue. + +![Create Sequence dialog - Security tab](../../images/sequence_security.png) + +Use the `Security` tab to assign privileges and define security labels for the sequence. + +Use the `Privileges` panel to assign privileges. Click the `Add` icon (+) to set privileges: + +- Select the name of a role that will be granted privileges from the drop-down listbox in the `Grantee` field. +- Click inside the `Privileges` field. Check the boxes to the left of one or more privileges to grant the selected privilege to the specified user. +- The current user, who is the default grantor for granting the privilege, is displayed in the `Grantor` field. + +Click the `Add` icon (+) to assign additional privileges; to discard a privilege, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Use the `Security Labels` panel to define security labels applied to the sequence. Click the `Add` icon (+) to add each security label selection: + +- Specify a security label provider in the `Provider` field. The named provider must be loaded and must consent to the proposed labeling operation. +- Specify a a security label in the `Security Label` field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them. + +Click the `Add` icon (+) to assign additional security labels; to discard a security label, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `SQL` tab to continue. + +Your entries in the `Sequence` dialog generate a generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Sequence` dialog: + +![Create Sequence dialog - SQL tab](../../images/sequence_sql.png) + +The example shown demonstrates a sequence named `seconds`. The sequence will increase in `5` second increments, and stop when it reaches a maximum value equal of `60`. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/21_synonym_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/21_synonym_dialog.mdx new file mode 100644 index 00000000000..1b8e80138d2 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/21_synonym_dialog.mdx @@ -0,0 +1,34 @@ +--- +title: "Synonym Dialog" +--- + + + +Use the `Synonym` dialog to substitute the name of a target object with a user-defined synonym. + +The `Synonym` dialog organizes the development of a synonym through the `General` tab. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Synonym dialog - General tab](../../images/synonym_general.png) + +Use the fields in the `General` tab to identify the synonym: + +- Use the `Name` field to specify the name of synonym. The name will be displayed in the `Browser` tree control. +- Select the name of the schema in which the synonym will reside from the drop-down listbox in the `Schema` field. + +In the definition panel, identify the target: + +- Use the drop-down listbox next to `Target Type` to select the the type of object referenced by the synonym. +- Use the drop-down listbox next to `Target Schema` to select the name of the schema in which the object resides. +- Use the drop-down listbox next to `Target Object` to select the name of the object referenced by the synonym. + +Click the `SQL` tab to continue. + +Your selections and entries in the `Synonym` dialog generate a SQL command. + +![Create Synonym dialog - SQL tab](../../images/synonym_sql.png) + +The example creates a synonym for the `emp` table named `emp_hist`. + +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/22_trigger_function_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/22_trigger_function_dialog.mdx new file mode 100644 index 00000000000..ec5f21b72ff --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/22_trigger_function_dialog.mdx @@ -0,0 +1,112 @@ +--- +title: "Trigger function Dialog" +--- + + + +Use the `Trigger function` dialog to create or manage a trigger_function. A trigger function defines the action that will be invoked when a trigger fires. + +The `Trigger function` dialog organizes the development of a trigger function through the following dialog tabs: `General`, *Definition*, `Code`, *Options*, *Parameters* and `Security`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Trigger Function dialog - General tab](../../images/trigger_function_general.png) + +Use the fields in the `General` tab to identify the trigger function: + +- Use the `Name` field to add a descriptive name for the trigger function. The name will be displayed in the `Browser` tree control. Please note that trigger functions will be invoked in alphabetical order. +- Use the drop-down listbox next to `Owner` to select the role that will own the trigger function. +- Select the name of the schema in which the trigger function will reside from the drop-down listbox in the `Schema` field. +- Store notes about the trigger function in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Trigger Function dialog - Definition tab](../../images/trigger_function_definition.png) + +Use the fields in the `Definition` tab to define the trigger function: + +- Use the drop-down listbox next to `Return type` to specify the pseudotype that is associated with the trigger function: + + > - Select `trigger` if you are creating a DML trigger. + > - Select `event_trigger` if you are creating a DDL trigger. + +- Use the drop-down listbox next to `Language` to select the implementation language. The default is `plpgsql`. + +Click the `Code` tab to continue. + +![Create Trigger Function dialog - Code tab](../../images/trigger_function_code.png) + +- Use the `Code` field to write the code that will execute when the trigger function is called. + +Click the `Options` tab to continue. + +![Create Trigger Function dialog - Options tab](../../images/trigger_function_options.png) + +Use the fields in the `Options` tab to describe or modify the action of the trigger function: + +- Use the drop-down listbox next to `Volatility` to select one of the following: + + > - `VOLATILE` indicates that the trigger function value can change even within a single table scan. + > - `STABLE` indicates that the trigger function cannot modify the database, and that within a single table scan it will consistently return the same result for the same argument values. + > - `IMMUTABLE` indicates that the trigger function cannot modify the database and always returns the same result when given the same argument values. + +- Move the `Returns a Set?` switch to indicate if the trigger function returns a set that includes multiple rows. The default is `No`. + +- Move the `Strict?` switch to indicate if the trigger function always returns NULL whenever any of its arguments are NULL. If `Yes`, the function is not executed when there are NULL arguments; instead a NULL result is assumed automatically. The default is `No`. + +- Move the `Security of definer?` switch to specify that the trigger function is to be executed with the privileges of the user that created it. The default is `No`. + +- Move the `Window?` switch to indicate that the trigger function is a window function rather than a plain function. The default is `No`. This is currently only useful for trigger functions written in C. + +- Use the `Estimated cost` field to specify a positive number representing the estimated execution cost for the trigger function, in units of cpu_operator_cost. If the function returns a set, this is the cost per returned row. + +- Use the `Estimated rows` field to specify a positive number giving the estimated number of rows that the query planner should expect the trigger function to return. This is only allowed when the function is declared to return a set. The default assumption is 1000 rows. + +- Move the `Leak proof?` switch to indicate whether the trigger function has side effects. The default is `No`. This option can only be set by the superuser. + +Click the `Parameters` tab to continue. + +![Create Trigger Function dialog - Parameters tab](../../images/trigger_function_parameters.png) + +Use the fields in the `Parameters` tab to specify settings that will be applied when the trigger function is invoked. Click the `Add` icon (+) to add a `Name`/*Value* pair to the table below. + +- Use the drop-down listbox in the `Name` field to select a parameter. +- Use the `Value` field to specify the value that will be associated with the selected parameter. This field is context-sensitive. + +Click the `Add` icon (+) to set additional parameters; to discard a parameter, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `Security` tab to continue. + +![Create Trigger Function dialog - Security tab](../../images/trigger_function_security.png) + +Use the `Security` tab to assign privileges and define security labels. + +Use the `Privileges` panel to assign usage privileges for the trigger function to a role. Click the `Add` icon (+) to to add a role to the table. + +- Select the name of the role from the drop-down listbox in the `Grantee` field. +- Click inside the `Privileges` field. Check the boxes to the left of one or more privileges to grant the selected privilege to the specified user. +- The current user, who is the default grantor for granting the privilege, is displayed in the `Grantor` field. + +Click the `Add` icon (+) to assign additional privileges; to discard a privilege, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Use the `Security Labels` panel to define security labels applied to the trigger function. Click the `Add` icon (+) to add each security label selection: + +- Specify a security label provider in the `Provider` field. The named provider must be loaded and must consent to the proposed labeling operation. +- Specify a a security label in the `Security Label` field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them. + +Click the `Add` icon (+) to assign additional security labels; to discard a security label, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `SQL` tab to continue. + +Your entries in the `Trigger function` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit other tabs to modify the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Trigger function` dialog: + +![Create Trigger Function dialog - SQL tab](../../images/trigger_function_sql.png) + +The example shown demonstrates creating a trigger function named `emp_stamp` that checks for a new employee's name, and checks that the employee's salary is a positive value. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/23_type_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/23_type_dialog.mdx new file mode 100644 index 00000000000..f96a56b22d7 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/23_type_dialog.mdx @@ -0,0 +1,139 @@ +--- +title: "Type Dialog" +--- + + + +Use the `Type` dialog to register a custom data type. + +The `Type` dialog organizes the development of a data type through the following dialog tabs: `General`, *Definition*, and `Security`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Type dialog - General tab](../../images/type_general.png) + +Use the fields in the `General` tab to identify the custom data type: + +- Use the `Name` field to add a descriptive name for the type. The name will be displayed in the `Browser` tree control. The type name must be distinct from the name of any existing type, domain, or table in the same schema. +- Use the drop-down listbox next to `Owner` to select the role that will own the type. +- Select the name of the schema in which the type will reside from the drop-down listbox in the `Schema` field. +- Store notes about the type in the `Comments` field. + +Click the `Definition` tab to continue. + +Select a data type from the drop-down listbox next to `Type` on the `Definition` tab; the panel below changes to display the options appropriate for the selected data type. Use the fields in the panel to define the data type. + +There are five data types: + +> - *Composite Type* +> - *Enumeration Type* +> - *Range Type* +> - `External Type` (or `Base Type`) +> - *Shell Type* + +If you select `Composite` in the `Type` field, the `Definition` tab displays the `Composite Type` panel: + +![Create Type dialog - Definition tab - Composite section](../../images/type_composite.png) + +Click the `Add` icon (+) to provide attributes of the type. Fields on the `General` panel are context sensitive and may be disabled. + +- Use the `Member Name` field to add an attribute name. +- Use the drop-down listbox in the `Type` field to select a datatype. +- Use the `Length/Precision` field to specify the maximum length of a non-numeric type, or the total count of significant digits in a numeric type. +- Use the `Scale` field to specify the number of digits to the right of the decimal point. +- Use the drop-down listbox in the `Collation` field to select a collation (if applicable). + +Click the `Add` icon (+) to define an additional member; click the trash icon to the left of the row to discard a row. + +If you select the `Enumeration` in the `Type` field, the `Definition` tab displays the `Enumeration Type` panel: + +![Create Type dialog - Definition tab - Enumeration section](../../images/type_enumeration.png) + +Click the `Add` icon (+) to provide a label for the type. + +- Use the `Label` field to add a label, which must be less than 64 bytes long. + +Click the `Add` icon (+) after each selection to create additional labels; to discard a label, click the trash icon to the left of the row. + +If you select `External`, the `Definition` tab displays the `External Type` panel: + +![Create Type dialog - Definition tab - External section](../../images/type_external.png) + +On the `Required` tab: + +- Use the drop-down listbox next to the `Input function` field to add an input_function. The input_function converts the type's external textual representation to the internal representation used by the operators and functions defined for the type. +- Use the drop-down listbox next to the `Output function` field to add an output_function. The output_function converts the type's internal representation used by the operators and functions defined for the type to the type's external textual representation. + +On the `Optional-1` tab: + +- Use the drop-down listbox next to the optional `Receive Function` field to select a receive_function. The optional receive_function converts the type's external binary representation to the internal representation. If this function is not supplied, the type cannot participate in binary input. +- Use the drop-down listbox next to the optional `Send function` field to select a send_function. The optional send_function converts from the internal representation to the external binary representation. If this function is not supplied, the type cannot participate in binary output. +- Use the drop-down listbox next to the optional `Typmod in function` field tab to select a type_modifier_input_function. +- Use the drop-down listbox next to the optional `Typmod out function` field tab to select a type_modifier_output_function. It is allowed to omit the type_modifier_output_function, in which case the default display format is the stored typmod integer value enclosed in parentheses. +- Use the optional `Internal length` to specify a value for internal representation. +- Move the `Variable?` switch to specify the internal representation is of variable length (VARIABLE). The default is a fixed length positive integer. +- Specify a default value in the optional `Default` field in cases where a column of the data type defaults to something other than the null value. Specify the default with the DEFAULT key word. (A default can be overridden by an explicit DEFAULT clause attached to a particular column.) +- Use the drop-down listbox next to the optional `Analyze function` field to select a function for performing type-specific statistics collection for columns of the data type. +- Use the drop-down listbox next to the optional `Category type` field to help control which implicit cast will be applied in ambiguous situations. +- Move the `Preferred?` switch to `Yes` to specify the selected category type is preferred. The default is `No`. + +On the `Optional-2` tab: + +- Use the drop-down listbox next to the optional `Element type` field to specify a data type. +- Use the optional `Delimiter` field to indicate the delimiter to be used between values in the external representation of arrays for this data type. The default delimiter is the comma (,). Note that the delimiter is associated with the array element type, not the array type itself. +- Use the drop-down listbox next to `Alignment type` to specify the storage alignment required for the data type. The allowed values (char, int2, int4, and double) correspond with alignment on 1, 2, 4, or 8 byte boundaries. +- Use the drop-down listbox next to optional `Storage type` to select a strategy for storing data. +- Move the `Passed by value?` switch to `Yes` to override the existing data type value. The default is `No`. +- Move the `Collatable?` switch to `Yes` to specify column definitions and expressions of the type may carry collation information through use of the COLLATE clause. The default is `No`. + +If you select `Range` in the `Type` field, the `Definition` tab displays the `Range` panel. Fields on the `Range` panel are context-sensitive and may be disabled. + +![Create Type dialog - Definition tab - Range section](../../images/type_range.png) + +- Use the drop-down listbox next to `Sub-type` to select an associated b-tree operator class (to determine the ordering of values for the range type). +- Use the drop-down listbox next to `Sub-type operator class` to use a non-default operator class. +- Use the drop-down listbox next to `Collation` to use a non-default collation in the range's ordering if the sub-type is collatable. +- Use the drop-down listbox next to `Canonical function` to convert range values to a canonical form. +- Use the drop-down listbox next to `Sub-type diff function` to select a user-defined subtype_diff function. + +If you select `Shell` in the `Type` field, the `Definition` tab displays the `Shell` panel: + +![Create Type dialog - Definition tab - Shell section](../../images/type_shell.png) + +A shell type is a placeholder for a type and has no parameters. + +Click the `Security` tab to continue. + +![Create Type dialog - Security tab](../../images/type_security.png) + +Use the `Security` tab to assign privileges and define security labels. + +Use the `Privileges` panel to assign privileges for the type; click the `Add` icon (+) to grant privileges: + +- Select the name of the role that will be granted privileges on the type from the drop-down listbox in the `Grantee` field. +- Click inside the `Privileges` field. Check the boxes to the left of one or more privileges to grant the selected privilege to the specified user. +- The current user, who is the default grantor for granting the privilege, is displayed in the `Grantor` field. + +Click the `Add` icon (+) to assign additional privileges; to discard a privilege, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Use the `Security Labels` panel to define security labels applied to the type. Click the `Add` icon (+) to add each security label selection: + +- Specify a security label provider in the `Provider` field. The named provider must be loaded and must consent to the proposed labeling operation. +- Specify a security label in the `Security Label` field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them. + +Click the `Add` icon (+) to assign additional security labels; to discard a security label, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `SQL` tab to continue. + +Your entries in the `Type` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of a sql command generated by user selections made in the `Type` dialog: + +![Create Type dialog - SQL tab](../../images/type_sql.png) + +The example shown demonstrates creating a data type named `work_order`. The data type is an enumerated type with three labels: new, open and closed. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/24_user_mapping_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/24_user_mapping_dialog.mdx new file mode 100644 index 00000000000..9c63c6457b5 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/24_user_mapping_dialog.mdx @@ -0,0 +1,45 @@ +--- +title: "User Mapping Dialog" +--- + + + +Use the `User Mapping` dialog to define a new mapping of a user to a foreign server. + +The `User Mapping` dialog organizes the development of a user mapping through the following dialog tabs: `General` and `Options`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create User Mapping dialog - General tab](../../images/user_mapping_general.png) + +Use the drop-down listbox in the `User` field in the `General` tab to identify the connecting role: + +- Select `CURRENT_USER` to use the name of the current role. +- Select `PUBLIC` if no other user-specific mapping is applicable. +- Select a pre-defined role name to specify the name of an existing user. + +Click the `Options` tab to continue. + +![Create User Mapping dialog - Options tab](../../images/user_mapping_options.png) + +Use the fields in the `Options` tab to specify connection options; the accepted option names and values are specific to the foreign data wrapper associated with the server specified in the user mapping. Click the `Add` button to add an option/value pair. + +- Specify the option name in the `Option` field. +- Provide a corresponding value in the `Value` field. + +Click `Add` to specify each additional option/value pair; to discard an option, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `SQL` tab to continue. + +Your entries in the `User Mapping` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `User Mapping` dialog: + +![Create User Mapping dialog - SQL tab](../../images/user_mapping_sql.png) + +The example shown demonstrates a user mapping for the `hdfs_server`. The user is `CURRENT_USER` with a password `secret`. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/25_view_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/25_view_dialog.mdx new file mode 100644 index 00000000000..8351d9098a8 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/25_view_dialog.mdx @@ -0,0 +1,75 @@ +--- +title: "View Dialog" +--- + + + +Use the `View` dialog to define a view. The view is not physically materialized; the query is executed each time the view is referenced in a query. + +The `View` dialog organizes the development of a View through the following dialog tabs: `General`, *Definition*, `Code` and *Security*". The `SQL` tab displays the SQL code generated by dialog selections. + +Click the `General` tab to begin. + +![Create View dialog - General tab](../../images/view_general.png) + +Use the fields in the `General` tab to identify a view: + +- Use the `Name` field to add a descriptive name for the view. The name of the view must be distinct from the name of any other view, table, sequence, index or foreign table in the same schema. The name will be displayed in the `Browser` tree control. +- Use the drop-down listbox next to `Owner` to select the role that will own the view. +- If applicable, select the name of the schema in which the view will reside from the drop-down listbox in the `Schema` field. +- Store notes about the view in the `Comments` field. + +Click the `Definition` tab to continue. + +![Create View dialog - Definition tab](../../images/view_definition.png) + +Use the fields in the `Definition` tab to define properties of the view: + +- Set the `Security Barrier` switch to `Yes` to indicate that the view is to act as a security barrier. For more information about defining and using a security barrier rule, see Section 38.5 of the PostgreSQL documentation. +- Use the drop-down listbox next to `Check options` to select from `No`, *Local* or `Cascaded`: + - The `Local` option specifies that new rows are only checked against the conditions defined in the view. Any conditions defined on underlying base views are not checked (unless you specify the CHECK OPTION). + - The `Cascaded` option specifies new rows are checked against the conditions of the view and all underlying base views. + +Click the `Code` tab to continue. + +![Create View dialog - Code tab](../../images/view_code.png) + +Use the workspace in the `Code` tab to write a query to create a view. + +Click the `Security` tab to continue. + +![Create View dialog - Security tab](../../images/view_security.png) + +Use the `Security` tab to assign privileges and define security labels. + +Use the `Privileges` panel to assign privileges to a role. Click the `Add` icon (+) to set privileges for the view: + +- Select the name of the role that will be granted privileges from the drop-down listbox in the `Grantee` field. +- Click inside the `Privileges` field. Check the boxes to the left of one or more privileges to grant the selected privilege to the specified user. +- The current user, who is the default grantor for granting the privilege, is displayed in the `Grantor` field. + +Click the `Add` icon (+) to assign additional privileges; to discard a privilege, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Use the `Security Labels` panel to define security labels applied to the view. Click the `Add` icon (+) to add each security label selection: + +- Specify a security label provider in the `Provider` field. The named provider must be loaded and must consent to the proposed labeling operation. +- Specify a a security label in the `Security Label` field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them. + +Click the `Add` icon (+) to assign additional security labels; to discard a security label, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `SQL` tab to continue. + +Your entries in the `View` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `View` dialog: + +![Create View dialog - SQL tab](../../images/view_sql.png) + +The example shown demonstrates creating a view named `distributor_codes` that includes the content of the `code` column from the `distributors` table. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/index.mdx new file mode 100644 index 00000000000..0b29b8a24d8 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/11_managing_database_objects/index.mdx @@ -0,0 +1,17 @@ +--- +title: "Managing Database Objects" +--- + + + +PEM provides simple but powerful dialogs that you can use to design and create database objects. Each dialog contains a series of tabs that you use to describe the object that will be created by the dialog; the SQL tab displays the SQL command that the server will execute when creating the object. + +To access a dialog that allows you to create a database object, right-click on the object type in the Browser tree control, and select the `Create` option for that object. For example, to create a new cast, right-click on the `Casts` node, and select Create Cast... + +Contents: + +
+ +cast_dialog collation_dialog domain_dialog domain_constraint_dialog event_trigger_dialog extension_dialog foreign_data_wrapper_dialog foreign_server_dialog foreign_table_dialog fts_configuration_dialog fts_dictionary_dialog fts_parser_dialog fts_template_dialog function_dialog language_dialog materialized_view_dialog package_dialog procedure_dialog schema_dialog sequence_dialog synonym_dialog trigger_function_dialog type_dialog user_mapping_dialog view_dialog + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/01_check_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/01_check_dialog.mdx new file mode 100644 index 00000000000..c57efb14158 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/01_check_dialog.mdx @@ -0,0 +1,43 @@ +--- +title: "Check Dialog" +--- + + + +Use the `Check` dialog to define or modify a check constraint. A check constraint specifies an expression that produces a Boolean result that new or updated rows must satisfy for an insert or update operation to succeed. + +The `Check` dialog organizes the development of a check constraint through the `General` and `Definition` tabs. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Check dialog - General tab](../../images/check_general.png) + +Use the fields in the `General` tab to identify the check constraint: + +- Use the `Name` field to provide a descriptive name for the check constraint that will be displayed in the `Browser` tree control. With PostgreSQL 9.5 forward, when a table has multiple check constraints, they will be tested for each row in alphabetical order by name and after NOT NULL constraints. +- Store notes about the check constraint in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Check dialog - Definition tab](../../images/check_definition.png) + +Use the fields in the `Definition` tab to define the check constraint: + +- Provide the expression that a row must satisfy in the `Check` field. +- Move the `No Inherit?` switch to the `Yes` position to specify this constraint is automatically inherited by a table's children. The default is `No`. +- Move the `Don't validate?` switch to the `No` position to skip validation of existing data; the constraint may not hold for all rows in the table. The default is `Yes`. + +Click the `SQL` tab to continue. + +Your entries in the `Check` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Check` dialog: + +![Create Check dialog - SQL tab](../../images/check_sql.png) + +The example shown demonstrates creating a check constraint named `check_price` on the `price` column of the `products` table. The constraint confirms that any values added to the column are greater than 0. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/02_column_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/02_column_dialog.mdx new file mode 100644 index 00000000000..9ac82206a72 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/02_column_dialog.mdx @@ -0,0 +1,101 @@ +--- +title: "Column Dialog" +--- + + + +Use the `Column` dialog to add a column to an existing table or modify a column definition. + +The `Column` dialog organizes the development of a column through the following dialog tabs: `General`, `Definition`, and `Security`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Column dialog - General tab](../../images/column_general.png) + +Use the fields in the `General` tab to identify the column: + +- Use the `Name` field to add a descriptive name for the column. The name will be displayed in the `Browser` tree control. This field is required. +- Store notes about the column in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Column dialog - Definition tab](../../images/column_definition.png) + +Use the fields in the `Definition` tab to add parameters for the column. (Fields are disabled if inapplicable.) + +- Use the drop-down listbox next to `Data Type` to select a data type for the column. For more information on the data types that are supported by PostgreSQL, refer to Chapter 8 of the Postgres core documentation. This field is required. +- Use the `Length/Precision` and `Scale` fields to specify the maximum number of significant digits in a numeric value, or the maximum number of characters in a text value. +- Use the drop-down listbox next to `Collation` to apply a collation setting to the column. + +Click the `Constraints` tab to continue. + +![Create Column dialog - Constraints tab](../../images/column_constraints.png) + +Use the fields in the `Constraints` tab to specify constraints for the column. (Fields are disabled if inapplicable.) + +- Use the `Default Value` field to specify a default data value. +- Move the `Not Null` switch to the `Yes` position to specify the column may not contain null values. The default is `No`. +- Use the `Type` field to specify the column type (NONE/IDENTITY/GENERATED). The default is `NONE`. + +Click the `IDENTITY` type to create Identity column. + +![Create Column dialog - Constraints tab - Identiy section](../../images/column_constraint_identity.png) + +Use the following fields to create `IDENTITY` column. Identity columns are applicable for PG/EPAS version 10 and above. + +- Use the `Identity` field to specify ALWAYS or BY DEFAULT. This clause is used to determine how the sequence value is given precedence over a user-specified value in an INSERT statement. +- Use the `Increment` field to specify which value is added to the current sequence value to create a new value. +- Provide a value in the `Start` field to specify the beginning value of the sequence. The default starting value is MINVALUE for ascending sequences and MAXVALUE for descending ones. +- Provide a value in the `Minimum` field to specify the minimum value a sequence can generate. If this clause is not supplied or NO MINVALUE is specified, then defaults will be used. The defaults are 1 and -263-1 for ascending and descending sequences, respectively. +- Provide a value in the `Maximum` field to specify the maximum value for the sequence. If this clause is not supplied or NO MAXVALUE is specified, then default values will be used. The defaults are 263-1 and -1 for ascending and descending sequences, respectively. +- Provide a value in the `Cache` field to specify how many sequence numbers are to be preallocated and stored in memory for faster access. The minimum value is 1 (only one value can be generated at a time, i.e., no cache), and this is also the default. +- Move the `Cycled` switch to the `Yes` position to allow the sequence to wrap around when the MAXVALUE or the MINVALUE has been reached by an ascending or descending sequence respectively. If the limit is reached, the next number generated will be the MINVALUE or MAXVALUE, respectively. The default is `No`. + +Click the `GENERATED` type to create Generated column. + +![Create Column dialog - Constraints tab - Generated section](../../images/column_constraint_generated.png) + +Use the following fields to create `GENERATED` column. Generated columns are applicable for PG/EPAS version 12 and above. + +- Use the `Expression` field to specify the generation expression. It can refer to other columns in the table, but not other generated columns. Any functions and operators used must be immutable. References to other tables are not allowed. + +Click the `Variables` tab to continue. + +![Create Column dialog - Variables tab](../../images/column_variables.png) + +Use the `Variables` tab to to specify the number of distinct values that may be present in the column; this value overrides estimates made by the ANALYZE command. Click the `Add` icon (+) to add a `Name`/`Value` pair: + +- Select the name of the variable from the drop-down listbox in the `Name` field. + + > - Select `n_distinct` to specify the number of distinct values for the column. + > - Select `n_distinct_inherited` to specify the number of distinct values for the table and its children. + +- Specify the number of distinct values in the `Value` field. For more information, see the documentation for [ALTER TABLE](http://www.postgresql.org/docs/9.6/static/sql_altertable.html). + +Click the `Add` icon (+) to specify each additional `Name`/`Value` pair; to discard a variable, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `Security` tab to continue. + +![Create Column dialog - Security tab](../../images/column_security.png) + +Use the `Security` tab to assign attributes and define security labels. Click the `Add` icon (+) to add each security label selection: + +- Specify a security label provider in the `Provider` field. The named provider must be loaded and must consent to the proposed labeling operation. +- Specify a a security label in the `Security Label` field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them. + +Click the `Add` icon (+) to assign additional security labels; to discard a security label, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `SQL` tab to continue. + +Your entries in the `Column` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Column` dialog: + +![Create Column dialog - SQL tab](../../images/column_sql.png) + +The example shown demonstrates creating a column named `territory` in the table named `distributors`. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/03_compound_trigger_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/03_compound_trigger_dialog.mdx new file mode 100644 index 00000000000..885f5bde0ae --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/03_compound_trigger_dialog.mdx @@ -0,0 +1,53 @@ +--- +title: "Compound Trigger Dialog" +--- + + + +Use the `Compound Trigger` dialog to create a compound trigger or modify an existing compound trigger. `Compound Trigger` is supported only for EPAS server 12 and above. A compound trigger executes a specified code when certain events occur. + +The `Compound Trigger` dialog organizes the development of a compound trigger through the following dialog tabs: `General`, `Events`, and `Code`. The SQL tab displays the SQL code generated by dialog selections. + +![Create Compound Trigger dialog - General tab](../../images/compound_trigger_general.png) + +Use the fields in the `General` tab to identify the compound trigger: + +- Use the `Name` field to add a descriptive name for the compound trigger. This must be distinct from the name of any other compound trigger for the same table. The name will be displayed in the `Browser` tree control. +- Store notes about the compound trigger in the `Comment` field. + +![Create Compound Trigger dialog - General tab - Trigger enable option](../../images/compound_trigger_general_enabled.png) + +- `Trigger enabled` field is available in compound trigger dialog once the trigger is created by selecting the `properties` of the trigger. You can select one of the four options available. + +Click the `Events` tab to continue. + +![Create Compound Trigger dialog - Events tab](../../images/compound_trigger_events.png) + +Use the fields in the `Events` tab to specify how and when the compound trigger fires: + +- Select the type of event(s) that will invoke the compound trigger; to select an event type, move the switch next to the event to the `YES` position. The supported event types are `INSERT`, `UPDATE`, `DELETE` and `TRUNCATE`. Views cannot have TRUNCATE triggers. +- Use the `When` field to provide a boolean condition that will invoke the compound trigger. +- If defining a column-specific compound trigger, use the `Columns` field to specify the columns or columns that are the target of the compound trigger. + +Click the `Code` tab to continue. + +![Create Compound Trigger dialog - Code tab](../../images/compound_trigger_code.png) + +Use the `Code` field to specify the code for the five timing events `BEFORE STATEMENT`, `AFTER STATEMENT`, `BEFORE EACH ROW`, `AFTER EACH ROW`, `INSTEAD OF EACH ROW` that will be invoked when the compound trigger fires. Basic template is provided with place holders. + +Click the `SQL` tab to continue. + +Your entries in the `Compound Trigger` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +## Example + +The following is an example of the sql command generated by user selections in the `Compound Trigger` dialog: + +![Create Compound Trigger dialog - SQL tab](../../images/compound_trigger_sql.png) + +The example demonstrates creating a compound trigger named `test_ct`. + +- Click the `Info` button (i) to access online help. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/04_exclusion_constraint_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/04_exclusion_constraint_dialog.mdx new file mode 100644 index 00000000000..76d3d16acc1 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/04_exclusion_constraint_dialog.mdx @@ -0,0 +1,69 @@ +--- +title: "Exclusion constraint Dialog" +--- + + + +Use the `Exclusion constraint` dialog to define or modify the behavior of an exclusion constraint. An exclusion constraint guarantees that if any two rows are compared on the specified column or expression (using the specified operator), at least one of the operator comparisons will return false or null. + +The `Exclusion constraint` dialog organizes the development of an exclusion constraint through the following dialog tabs: `General`, `Definition`, and `Columns`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Exclusion Constraint dialog - General tab](../../images/exclusion_constraint_general.png) + +Use the fields in the `General` tab to identify the exclusion constraint: + +- Use the `Name` field to provide a descriptive name for the exclusion constraint. The name will be displayed in the `Browser` tree control. + +Click the `Definition` tab to continue. + +![Create Compound Trigger dialog - Definition tab](../../images/exclusion_constraint_definition.png) + +Use the fields in the `Definition` tab to define the exclusion constraint: + +- Use the drop-down listbox next to `Tablespace` to select the tablespace in which the index associated with the exclude constraint will reside. + +- Use the drop-down listbox next to `Access method` to specify the type of index that will be used when implementing the exclusion constraint: + + > - Select `gist` to specify a GiST index. + > - Select `spgist` to specify a space-partitioned GiST index. + > - Select `btree` to specify a B-tree index. + > - Select `hash` to specify a hash index. + +- Use the `Fill Factor` field to specify a fill factor for the table and associated index. The fill factor is a percentage between 10 and 100. 100 (complete packing) is the default. + +- Move the `Deferrable?` switch to the `Yes` position to specify that the timing of the constraint is deferrable, and can be postponed until the end of the statement. The default is `No`. + +- If enabled, move the `Deferred?` switch to the `Yes` position to specify the timing of the constraint is deferred to the end of the statement. The default is `No`. + +- Use the `Constraint` field to provide a condition that a row must satisfy to be included in the table. + +Click the `Columns` tab to continue. + +![Create Compound Trigger dialog - Columns tab](../../images/exclusion_constraint_columns.png) + +Use the fields in the *Columns* tab to specify the column(s) or expression(s) to which the constraint applies. Use the *Is expression ?* switch to enable expression text input. Use the drop-down listbox next to *Column* to select a column. Once the *Column* is selected or the *Expression* is entered then click the *Add* icon (+) to provide details of the action on the column/expression: + +- The *Col/Exp* field is populated with the selection made in the *Column* drop-down listbox or the *Expression* entered. +- If applicable, use the drop-down listbox in the `Operator class` to specify the operator class that will be used by the index for the column. +- Move the `DESC` switch to `DESC` to specify a descending sort order. The default is `ASC` which specifies an ascending sort order. +- Use the `NULLs order` column to specify the placement of NULL values (when sorted). Specify `FIRST` or `LAST`. +- Use the drop-down list next to `Operator` to specify a comparison or conditional operator. + +Use `Include columns` field to specify columns for `INCLUDE` clause of the constraint. This option is available in Postgres 11 and later. + +Click the `SQL` tab to continue. + +Your entries in the `Exclusion Constraint` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Exclusion Constraint` dialog: + +![Create Compound Trigger dialog - SQL tab](../../images/exclusion_constraint_sql.png) + +The example shown demonstrates creating an exclusion constraint named `exclude_department` that restricts additions to the dept table to those additions that are not equal to the value of the `deptno` column. The constraint uses a btree index. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/05_foreign_key_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/05_foreign_key_dialog.mdx new file mode 100644 index 00000000000..be99627e39a --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/05_foreign_key_dialog.mdx @@ -0,0 +1,85 @@ +--- +title: "Foreign key Dialog" +--- + + + +Use the `Foreign key` dialog to specify the behavior of a foreign key constraint. A foreign key constraint maintains referential integrity between two tables. A foreign key constraint cannot be defined between a temporary table and a permanent table. + +The `Foreign key` dialog organizes the development of a foreign key constraint through the following dialog tabs: `General`, `Definition`, `Columns`, and `Action`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Foreign Key dialog - General tab](../../images/foreign_key_general.png) + +Use the fields in the `General` tab to identify the foreign key constraint: + +- Use the `Name` field to add a descriptive name for the foreign key. The name will be displayed in the `Browser` tree control. +- Store notes about the foreign key constraint in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Foreign Key dialog - Definition tab](../../images/foreign_key_definition.png) + +Use the fields in the `Definition` tab to define the foreign key constraint: + +- Move the `Deferrable?` switch to the `Yes` position to specify the timing of the constraint is deferrable and can be postponed until the end of the statement. The default is `No`. + +- If enabled, move the `Deferred?` switch to the `Yes` position to specify the timing of the constraint is deferred to the end of the statement. The default is `No`. + +- Move the `Match type` switch specify the type of matching that is enforced by the constraint: + + > - Select `Full` to indicate that all columns of a multicolumn foreign key must be null if any column is null; if all columns are null, the row is not required to have a match in the referenced table. + > - Select `Simple` to specify that a single foreign key column may be null; if any column is null, the row is not required to have a match in the referenced table. + +- Move the `Validated` switch to the `Yes` position to instruct the server to validate the existing table content (against a foreign key or check constraint) when you save modifications to this dialog. + +- Move the `Auto FK Index` switch to the `No` position to disable the automatic index feature. + +- The field next to `Covering Index` generates the name of an index if the `Auto FK Index` switch is in the `Yes` position; or, this field is disabled. + +Click the `Columns` tab to continue. + +![Create Foreign Key dialog - Columns tab](../../images/foreign_key_columns.png) + +Use the fields in the `Columns` tab to specify one or more reference column(s). A Foreign Key constraint requires that one or more columns of a table must only contain values that match values in the referenced column(s) of a row of a referenced table: + +- Use the drop-down listbox next to `Local column` to specify the column in the current table that will be compared to the foreign table. +- Use the drop-down listbox next to `References` to specify the name of the table in which the comparison column(s) resides. +- Use the drop-down listbox next to `Referencing` to specify a column in the foreign table. + +Click the `Add` icon (+) to add a column to the list; repeat the steps above and click the `Add` icon (+) to add additional columns. To discard an entry, click the trash icon to the left of the entry and confirm deletion in the `Delete Row` popup. + +Click the `Action` tab to continue. + +![Create Foreign Key dialog - Action tab](../../images/foreign_key_action.png) + +Use the drop-down listboxes on the `Action` tab to specify behavior related to the foreign key constraint that will be performed when data within the table is updated or deleted: + +- Use the drop-down listbox next to `On update` to select an action that will be performed when data in the table is updated. +- Use the drop-down listbox next to `On delete` to select an action that will be performed when data in the table is deleted. + +The supported actions are: + +| | | +| ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| NO ACTION | Produce an error indicating that the deletion or update will create a foreign key constraint violation. If the constraint is deferred, this error will be produced at constraint check time if any referencing rows still exist. This is the default. | +| RESTRICT | Throw an error indicating that the deletion or update would create a foreign key constraint violation. This is the same as NO ACTION except that the check is not deferrable. | +| CASCADE | Delete any rows referencing the deleted row, or update the values of the referencing column(s) to the new values of the referenced columns, respectively. | +| SET NULL | Set the referencing column(s) to null. | +| SET DEFAULT | Set the referencing column(s) to their default values. There must be a row in the referenced table that matches the default values (if they are not null), or the operation will fail. | + +Click the `SQL` tab to continue. + +Your entries in the `Foreign key` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Foreign key` dialog: + +![Create Foreign Key dialog - SQL tab](../../images/foreign_key_sql.png) + +The example shown demonstrates creating a foreign key constraint named `territory_fkey` that matches values in the `distributors` table `territory` column with those of the `sales_territories` table `region` column. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/06_index_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/06_index_dialog.mdx new file mode 100644 index 00000000000..856f5198c92 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/06_index_dialog.mdx @@ -0,0 +1,79 @@ +--- +title: "Index Dialog" +--- + + + +Use the `Index` dialog to create an index on a specified table or materialized view. + +The `Index` dialog organizes the development of a index through the following dialog tabs: `General` and `Definition`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Index dialog - General tab](../../images/index_general.png) + +Use the fields in the `General` tab to identify the index: + +- Use the `Name` field to add a descriptive name for the index. The name will be displayed in the `Browser` tree control. +- Use the drop-down listbox next to `Tablespace` to select the tablespace in which the index will reside. +- Store notes about the index in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Index dialog - Definition tab](../../images/index_definition.png) + +Use the fields in the `Definition` tab to define the index: + +- Use the drop-down listbox next to `Access Method` to select an index type: + + > - Select `btree` to create a B-tree index. A B-tree index may improve performance when managing equality and range queries on data that can be sorted into some ordering (the default). + > - Select `hash` to create a hash index. A hash index may improve performance when managing simple equality comparisons. + > - Select `gist` to create a GiST index. A GiST index may improve performance when managing two-dimensional geometric data types and nearest-neighbor searches + > - Select `gin` to create a GIN index. A GIN index may performance when managing values with more than one key. + > - Select `spgist` to create a space-partitioned GiST index. A SP-GiST index may improve performance when managing non-balanced data structures. + > - Select `brin` to create a BRIN index. A BRIN index may improve performance when managing minimum and maximum values and ranges. + +- Use the `Fill Factor` field to specify a fill factor for the index. The fill factor specifies how full the selected method will try to fill each index page. + +- Move the `Unique?` switch to the `Yes` position to check for duplicate values in the table when the index is created and when data is added. The default is `No`. + +- Move the `Clustered?` switch to the `Yes` position to instruct the server to cluster the table. + +- Move the `Concurrent build?` switch to the `Yes` position to build the index without taking any locks that prevent concurrent inserts, updates, or deletes on the table. + +- Use the `Constraint` field to provide a constraint expression; a constraint expression limits the entries in the index to those rows that satisfy the constraint. + +Use the context-sensitive fields in the `Columns` panel to specify which column(s) the index queries. Click the `Add` icon (+) to add a column: + +- Use the drop-down listbox in `Column` field to select the name of the column from the table. + +- If enabled, use the drop-down listbox to select an available `Operator class` to specify the type of action performed on the column. + +- If enabled, move the `Sort order` switch to specify the sort order: + + > - Select `ASC` to specify an ascending sort order (the default); + > - Select `DESC` to specify a descending sort order. + +- If enabled, move the `Nulls` switch to specify the sort order of nulls: + + > - Select `First` to specify nulls sort before non-nulls; + > - Select `Last` to specify nulls sort after non-nulls (the default). + +- Use the drop-down listbox in the `Collation` field to select a collation to use for the index. + +Use `Include columns` field to specify columns for `INCLUDE` clause of the index. This option is available in Postgres 11 and later. + +Click the `SQL` tab to continue. + +Your entries in the `Index` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Index` dialog: + +![Create Index dialog - SQL tab](../../images/index_sql.png) + +The example shown demonstrates creating an index named `dist_codes` that indexes the values in the `code` column of the `distributors` table. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/07_primary_key_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/07_primary_key_dialog.mdx new file mode 100644 index 00000000000..6fdd7e92d00 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/07_primary_key_dialog.mdx @@ -0,0 +1,46 @@ +--- +title: "Primary key Dialog" +--- + + + +Use the `Primary key` dialog to create or modify a primary key constraint. A primary key constraint indicates that a column, or group of columns, uniquely identifies rows in a table. This requires that the values in the selected column(s) be both unique and not null. + +The `Primary key` dialog organizes the development of a primary key constraint through the `General` and `Definition` tabs. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Primary Key dialog - General tab](../../images/primary_key_general.png) + +Use the fields in the `General` tab to identify the primary key: + +- Use the `Name` field to add a descriptive name for the primary key constraint. The name will be displayed in the `Browser` tree control. + +Click the `Definition` tab to continue. + +![Create Primary Key dialog - Definition tab](../../images/primary_key_definition.png) + +Use the fields in the `Definition` tab to define the primary key constraint: + +- Click inside the `Columns` field and select one or more column names from the drop-down listbox. To delete a selection, click the `x` to the left of the column name. The primary key constraint should be different from any unique constraint defined for the same table; the selected column(s) for the constraints must be distinct. +- Use `Include columns` field to specify columns for `INCLUDE` clause of the index. This option is available in Postgres 11 and later. +- Select the name of the tablespace in which the primary key constraint will reside from the drop-down listbox in the `Tablespace` field. +- Select the name of an index from the drop-down listbox in the `Index` field. This field is optional. Adding a primary key will automatically create a unique B-tree index on the column or group of columns listed in the primary key, and will force the column(s) to be marked NOT NULL. +- Use the `Fill Factor` field to specify a fill factor for the table and index. The fill factor for a table is a percentage between 10 and 100. 100 (complete packing) is the default. +- Move the `Deferrable?` switch to the `Yes` position to specify the timing of the constraint is deferrable and can be postponed until the end of the statement. The default is `No`. +- If enabled, move the `Deferred?` switch to the `Yes` position to specify the timing of the constraint is deferred to the end of the statement. The default is `No`. + +Click the `SQL` tab to continue. + +Your entries in the `Primary key` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Primary key` dialog: + +![Create Primary Key dialog - SQL tab](../../images/primary_key_sql.png) + +The example shown demonstrates creating a primary key constraint named `dept_pkey` on the `dept_id` column of the `dept` table. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/08_rls_policy_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/08_rls_policy_dialog.mdx new file mode 100644 index 00000000000..417208ac0a0 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/08_rls_policy_dialog.mdx @@ -0,0 +1,56 @@ +--- +title: "RLS Policy Dialog" +--- + + + +Use the `RLS Policy` dialog to Create a Row Level Security Policy. + +
+ +
+ +Note + +
+ +If the Row Level Security is enabled at table level and no policy is created then by default `Deny Policy` is applied. That means, no rows are visible or can be modified for that table. + +
+ +The `RLS Policy` dialog creates a Row Level Security Policy through the following dialog tabs: `General`, and `Commands`. The `SQL` tab displays the SQL code generated by dialog selections. + +RLS Policy General Tab + +Use the fields in the `General` tab to define the RLS Policy: + +- Use the `Name` field to add a descriptive name for the RLS Policy. The name will be displayed in the `pgAdmin` tree control. +- Use the drop-down listbox next to `Role` to select the Role to which the RLS Policy is to be applied. +- Use the drop-down listbox next to `Type` to select the type of the policy. + +Click the `Commands` tab to continue. + +RLS Policy Commands Tab + +Use the fields in the `Commands` tab to define the RLS Policy: + +- Use the drop-down listbox next to `Event` to select the command to which policy applies. Valid options are ALL, SELECT, INSERT, UPDATE, and DELETE. Default is ALL. +- Use the `Using` field to add a SQL conditional expression returning boolean. This expression will be added to queries that refer to the table if row level security is enabled. +- Use the `With check` field to add a SQL conditional expression returning boolean. This expression will be used in INSERT and UPDATE queries against the table if row level security is enabled. + +Click the `SQL` tab to continue. + +Your entries in the `RLS Policy` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +## Example + +The following is an example of the sql command generated by user selections in the `RLS Policy` dialog: + +RLS Policy sql tab + +The example shown demonstrates creating a RLS Policy named `account_managers` that applies the Row Level Security on the `accounts` table. + +- Click the `Info` button (i) to access online help. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/09_rule_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/09_rule_dialog.mdx new file mode 100644 index 00000000000..9ee162ce279 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/09_rule_dialog.mdx @@ -0,0 +1,54 @@ +--- +title: "Rule Dialog" +--- + + + +Use the `Rule` dialog to define or modify a rule for a specified table or view. A PostgreSQL rule allows you to define an additional action that will be performed when a SELECT, INSERT, UPDATE, or DELETE is performed against a table. + +The `Rule` dialog organizes the development of a rule through the `General`, `Definition`, `Condition`, `Commands` tabs. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Rule dialog - General tab](../../images/rule_general.png) + +Use the fields in the `General` tab to identify the rule: + +- Use the `Name` field to add a descriptive name for the rule. The name will be displayed in the `Browser` tree control. Multiple rules on the same table are applied in alphabetical name order. +- Store notes about the rule in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Rule dialog - Definition tab](../../images/rule_definition.png) + +Use the fields in the `Definition` tab to write parameters: + +- Click inside the `Event` field to select the type of event that will invoke the rule; event may be `Select`, `Insert`, `Update`, or `Delete`. +- Move the `Do Instead` switch to `Yes` indicate that the commands should be executed instead of the original command; if Do Instead specifies `No`, the rule will be invoked in addition to the original command. + +Click the `Condition` tab to continue. + +![Create Rule dialog - Condition tab](../../images/rule_condition.png) + +Specify a SQL conditional expression that returns a boolean value in the editor. + +Click the `Commands` tab to continue. + +![Create Rule dialog - Commands tab](../../images/rule_commands.png) + +Provide a command in the editor that defines the action performed by the rule. + +Click the `SQL` tab to continue. + +Your entries in the `Rule` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Rule` dialog: + +![Create Rule dialog - SQL tab](../../images/rule_sql.png) + +The example sends a notification when an UPDATE executes against a table. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/10_table_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/10_table_dialog.mdx new file mode 100644 index 00000000000..debbccce287 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/10_table_dialog.mdx @@ -0,0 +1,322 @@ +--- +title: "Table Dialog" +--- + + + +Use the `Table` dialog to create or modify a table. + +The `Table` dialog organizes the development of a table through the following dialog tabs: `General`, *Columns*, `Constraints`, *Advanced*, `Parameter`, and `Security`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Table dialog - General tab](../../images/table_general.png) + +Use the fields in the `General` tab to identify the table: + +- Use the `Name` field to add a descriptive name for the table. A table cannot have the same name as any existing table, sequence, index, view, foreign table, or data type in the same schema. The name specified will be displayed in the `Browser` tree control. This field is required. +- Select the owner of the table from the drop-down listbox in the `Owner` field. By default, the owner of the table is the role that creates the table. +- Select the name of the schema in which the table will reside from the drop-down listbox in the `Schema` field. +- Use the drop-down listbox in the `Tablespace` field to specify the tablespace in which the table will be stored. +- Move the `Partitioned Table?` switch to the `Yes` in case you want to create a partitioned table. Option is available for PostgreSQL 10 and above. +- Store notes about the table in the `Comment` field. + +Click the `Columns` tab to continue. + +![Create Table dialog - Columns tab](../../images/table_columns.png) + +Use the drop-down listbox next to `Inherited from table(s)` to specify any parent table(s); the table will inherit columns from the selected parent table(s). Click inside the `Inherited from table(s)` field to select a table name from a drop-down list. Repeat to add any other parent tables. Delete a selected table by clicking the `x` to the left of the parent name. Note that inherited column names and datatypes are not editable in the current dialog; they must be modified at the parent level. + +Click the `Add` icon (+) to specify the names of columns and their datatypes in the `Columns` table: + +- Use the `Name` field to add a descriptive name for the column. +- Use the drop-down listbox in the `Data type` field to select a data type for the column. This can include array specifiers. For more information on the data types supported by PostgreSQL, refer to Chapter 8 of the core documentation. +- If enabled, use the `Length` and `Precision` fields to specify the maximum number of significant digits in a numeric value, or the maximum number of characters in a text value. +- Move the `Not NULL?` switch to the `Yes` position to require a value in the column field. +- Move the `Primary key?` switch to the `Yes` position to specify the column is the primary key constraint. + +> Click the `Add` icon (+) to add additional columns; to discard a column, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `Constraints` tab to continue. + +![Create Table dialog - Constraints tab - Primary Key](../../images/table_primary_constraints_general.png) + +Use the fields in the `Constraints` tab to provide a table or column constraint. Optional constraint clauses specify constraints (tests) that new or updated rows must satisfy for an `INSERT` or `UPDATE` operation to succeed. Select the appropriate constraint type by selecting one of the following tabs on the `Constraints` panel: + +| Tab Name | Constraint | +| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Primary Key` | Provides a unique identifier for each row in the table. | +| `Foreign Key` | Maintains referential integrity between two tables. | +| `Check` | Requires data satisfies an expression or condition before insertion or modification. | +| `Unique` | Ensures that the data contained in a column, or a group of columns, is unique among all the rows in the table. | +| `Exclude` | Guarantees that if any two rows are compared on the specified column or expression (using the specified operator), at least one of the operator comparisons will return false or null. | + +To add a primary key for the table, select the `Primary Key` tab, and click the `Add` icon (+). To define the primary key, click the `Edit` icon to the left of the `Trash` icon. A dialog similar to the `Primary key` dialog (accessed by right clicking on `Constraints` in the `Browser` tree control) opens. + +Use the fields in the `General` tab to identify the primary key: + +- Use the `Name` field to add a descriptive name for the primary key constraint. The name will be displayed in the `Browser` tree control. +- Provide notes about the primary key in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Table dialog - Constraints tab - Primary Key Constraint definition](../../images/table_primary_key_definition.png) + +Use the fields in the `Definition` tab to define the primary key constraint: + +- Click inside the `Columns` field and select one or more column names from the drop-down listbox. To delete a selection, click the `x` to the left of the column name. The primary key constraint should be different from any unique constraint defined for the same table; the selected column(s) for the constraints must be distinct. +- Select the name of the tablespace in which the primary key constraint will reside from the drop-down listbox in the `Tablespace` field. +- Use the `Fill Factor` field to specify a fill factor for the table and index. The fill factor for a table is a percentage between 10 and 100. 100 (complete packing) is the default. +- Move the `Deferrable?` switch to the `Yes` position to specify the timing of the constraint is deferrable and can be postponed until the end of the statement. The default is `No`. +- If enabled, move the `Deferred?` switch to the `Yes` position to specify the timing of the constraint is deferred to the end of the statement. The default is `No`. + +![Create Table dialog - Foreign Key Constraint](../../images/table_foreign_key_general.png) + +To add a foreign key constraint, select the `Foreign Key` tab, and click the `Add` icon (+). To define the constraint, click the `Edit` icon to the left of the `Trash` icon. A dialog similar to the `Foreign key` dialog (accessed by right clicking on `Constraints` in the `Browser` tree control) opens. + +Use the fields in the `General` tab to identify the foreign key constraint: + +- Use the `Name` field to add a descriptive name for the foreign key constraint. The name will be displayed in the `Browser` tree control. +- Provide notes about the foreign key in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Table dialog - Constraints tab - Foreign Key Constraint definition](../../images/table_foreign_key_definition.png) + +Use the fields in the `Definition` tab to define the foreign key constraint: + +- Move the `Deferrable?` switch to the `Yes` position to specify the timing of the constraint is deferrable and can be postponed until the end of the statement. The default is `No`. + +- If enabled, move the `Deferred?` switch to the `Yes` position to specify the timing of the constraint is deferred to the end of the statement. The default is `No`. + +- Move the `Match type` switch specify the type of matching that is enforced by the constraint: + + > - Select `Full` to indicate that all columns of a multicolumn foreign key must be null if any column is null; if all columns are null, the row is not required to have a match in the referenced table. + > - Select `Simple` to specify that a single foreign key column may be null; if any column is null, the row is not required to have a match in the referenced table. + +- Move the `Validated` switch to the `Yes` position to instruct the server to validate the existing table content (against a foreign key or check constraint) when you save modifications to this dialog. + +- Move the `Auto FK Index` switch to the `No` position to disable the automatic index feature. + +- The field next to `Covering Index` generates the name of an index if the `Auto FK Index` switch is in the `Yes` position; or, this field is disabled. + +Click the `Columns` tab to continue. + +![Create Table dialog - Constraints tab - Foreign Key Constraint columns](../../images/table_foreign_key_columns.png) + +Use the fields in the `Columns` tab to specify one or more reference column(s). A Foreign Key constraint requires that one or more columns of a table must only contain values that match values in the referenced column(s) of a row of a referenced table: + +- Use the drop-down listbox next to `Local column` to specify the column in the current table that will be compared to the foreign table. +- Use the drop-down listbox next to `References` to specify the name of the table in which the comparison column(s) resides. +- Use the drop-down listbox next to `Referencing` to specify a column in the foreign table. + +Click the `Add` icon (+) to add a column to the list; repeat the steps above and click the `Add` icon (+) to add additional columns. To discard an entry, click the trash icon to the left of the entry and confirm deletion in the `Delete Row` popup. + +Click the `Action` tab to continue. + +![Create Table dialog - Constraints tab - Foreign Key Constraint action](../../images/table_foreign_key_action.png) + +Use the drop-down listboxes on the `Action` tab to specify behavior related to the foreign key constraint that will be performed when data within the table is updated or deleted: + +- Use the drop-down listbox next to `On update` to select an action that will be performed when data in the table is updated. +- Use the drop-down listbox next to `On delete` to select an action that will be performed when data in the table is deleted. + +The supported actions are: + +| | | +| ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| NO ACTION | Produce an error indicating that the deletion or update will create a foreign key constraint violation. If the constraint is deferred, this error will be produced at constraint check time if any referencing rows still exist. This is the default. | +| RESTRICT | Throw an error indicating that the deletion or update would create a foreign key constraint violation. This is the same as NO ACTION except that the check is not deferrable. | +| CASCADE | Delete any rows referencing the deleted row, or update the values of the referencing column(s) to the new values of the referenced columns, respectively. | +| SET NULL | Set the referencing column(s) to null. | +| SET DEFAULT | Set the referencing column(s) to their default values. There must be a row in the referenced table that matches the default values (if they are not null), or the operation will fail. | + +![Create Table dialog - Constraints tab - Check constraint](../../images/table_check_constraint_general.png) + +To add a check constraint, select the `Check` tab on the panel, and click the `Add` icon (+). To define the check constraint, click the `Edit` icon to the left of the `Trash` icon. A dialog similar to the `Check` dialog (accessed by right clicking on `Constraints` in the `Browser` tree control) opens. + +Use the fields in the `General` tab to identify the check constraint: + +- Use the `Name` field to add a descriptive name for the check constraint. The name will be displayed in the `Browser` tree control. With PostgreSQL 9.5 forward, when a table has multiple check constraints, they will be tested for each row in alphabetical order by name and after NOT NULL constraints. +- Provide notes about the check constraint in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Table dialog - Check Constraint definition](../../images/table_check_constraint_definition.png) + +Use the fields in the `Definition` tab to define the check constraint: + +- Provide the expression that a row must satisfy in the `Check` field. This field is required. +- Move the `No Inherit?` switch to the `Yes` position to specify this constraint is automatically inherited by a table's children. The default is `No`. +- Move the `Don't validate?` switch to the `No` position to skip validation of existing data; the constraint may not hold for all rows in the table. The default is `Yes`. + +![Create Table dialog - Constraints tab - Unique constraint](../../images/table_unique_constraint_general.png) + +To add a unique constraint, select the `Unique` tab on the panel, and click the `Add` icon (+). To define the constraint, click the `Edit` icon to the left of the `Trash` icon. A dialog similar to the `Unique constraint` dialog (accessed by right clicking on `Constraints` in the `Browser` tree control) opens. + +Use the fields in the `General` tab to identify the unique constraint: + +- Use the `Name` field to add a descriptive name for the unique constraint. The name will be displayed in the `Browser` tree control. +- Provide notes about the unique constraint in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Table dialog - Constraints tab - Unique Constraint definition](../../images/table_unique_constraint_definition.png) + +Use the fields in the `Definition` tab to define the unique constraint: + +- Click inside the `Columns` field and select one or more column names from the drop-down listbox. To delete a selection, click the `x` to the left of the column name. The unique constraint should be different from the primary key constraint defined for the same table; the selected column(s) for the constraints must be distinct. +- Select the name of the tablespace in which the unique constraint will reside from the drop-down listbox in the `Tablespace` field. +- Use the `Fill Factor` field to specify a fill factor for the table and index. The fill factor for a table is a percentage between 10 and 100. 100 (complete packing) is the default. +- Move the `Deferrable?` switch to the `Yes` position to specify the timing of the constraint is deferrable and can be postponed until the end of the statement. The default is `No`. +- If enabled, move the `Deferred?` switch to the `Yes` position to specify the timing of the constraint is deferred to the end of the statement. The default is `No`. + +![Create Table dialog - Constraints tab - Exclude constraint](../../images/table_exclusion_constraint_general.png) + +To add an exclusion constraint, select the `Exclude` tab on the panel, and click the `Add` icon (+). To define the constraint, click the `Edit` icon to the left of the `Trash` icon. A dialog similar to the `Exclusion constraint` dialog (accessed by right clicking on `Constraints` in the `Browser` tree control) opens. + +Use the fields in the `General` tab to identify the exclusion constraint: + +- Use the `Name` field to provide a descriptive name for the exclusion constraint. The name will be displayed in the `Browser` tree control. +- Provide notes about the exclusion constraint in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Table dialog - Constraints tab - Exclusion Constraint definition](../../images/table_exclusion_constraint_definition.png) + +Use the fields in the `Definition` tab to define the exclusion constraint: + +- Use the drop-down listbox next to `Tablespace` to select the tablespace in which the index associated with the exclude constraint will reside. + +- Use the drop-down listbox next to `Access method` to specify the type of index that will be used when implementing the exclusion constraint: + + > - Select `gist` to specify a GiST index (the default). + > - Select `spgist` to specify a space-partitioned GiST index. + > - Select `btree` to specify a B-tree index. + > - Select `hash` to specify a hash index. + +- Use the `Fill Factor` field to specify a fill factor for the table and associated index. The fill factor is a percentage between 10 and 100. 100 (complete packing) is the default. + +- Move the `Deferrable?` switch to the `Yes` position to specify that the timing of the constraint is deferrable, and can be postponed until the end of the statement. The default is `No`. + +- If enabled, move the `Deferred?` switch to the `Yes` position to specify the timing of the constraint is deferred to the end of the statement. The default is `No`. + +- Use the `Constraint` field to provide a condition that a row must satisfy to be included in the table. + +Click the `Columns` tab to continue. + +![Create Table dialog - Constraints tab - Exclusion Constraint columns](../../images/table_exclusion_constraint_columns.png) + +Use the fields in the `Columns` tab to to specify the column(s) to which the constraint applies. Use the drop-down listbox next to `Column` to select a column and click the `Add` icon (+) to provide details of the action on the column: + +- The `Column` field is populated with the selection made in the `Column` drop-down listbox. +- If applicable, use the drop-down listbox in the `Operator class` to specify the operator class that will be used by the index for the column. +- Move the `DESC` switch to `DESC` to specify a descending sort order. The default is `ASC` which specifies an ascending sort order. +- Move the `NULLs order` switch to `LAST` to define an ascending sort order for NULLs. The default is `FIRST` which specifies a descending order. +- Use the drop-down list next to `Operator` to specify a comparison or conditional operator. + +Click the `Advanced` tab to continue. + +![Create Table dialog - Advanced tab](../../images/table_advanced.png) + +Use the fields in the `Advanced` tab to define advanced features for the table: + +- Move the `RLS Policy?` switch to the `Yes` position to enable the Row Level Security. +- Move the `Force RLS Policy?` to the `Yes` position to force the policy on the owner of the table. +- Use the drop-down listbox next to `Of type` to copy the table structure from the specified composite type. Please note that a typed table will be dropped if the type is dropped (with DROP TYPE ... CASCADE). +- Use the `Fill Factor` field to specify a fill factor for the table. The fill factor for a table is a percentage between 10 and 100. 100 (complete packing) is the default. +- Use the `Toast tuple target` field to set toast_tuple_target storage parameter of the table. The toast_tuple_target value is in bytes and has minimum value of 128. This field will be enabled only for PostgreSQL version >= 11 +- Use the `Parallel workers` field to set parallel_workers storage parameter of the table. The parallel_workers sets the number of workers that should be used to assist a parallel scan of the table. This field will be enabled only for PostgreSQL version >= 9.6 +- Move the `Has OIDs?` switch to the `Yes` position to specify that each row within a table has a system-assigned object identifier. The default is `No`. +- Move the `Unlogged?` switch to the `Yes` position to disable logging for the table. Data written to an unlogged table is not written to the write-ahead log. Any indexes created on an unlogged table are automatically unlogged as well. The default is `No`. + +Use the fields in the **Like** box to specify which attributes of an existing table from which a table will automatically copy column names, data types, and not-null constraints; after saving the new or modified table, any changes to the original table will not be applied to the new table. + +- Use the drop-down listbox next to `Relation` to select a reference table. +- Move the `With default values?` switch to the `Yes` position to copy default values. +- Move the `With constraints?` switch to the `Yes` position to copy table and column constraints. +- Move the `With indexes?` switch to the `Yes` position to copy indexes. +- Move the `With storage?` switch to the `Yes` position to copy storage settings. +- Move the `With comments?` switch to the `Yes` position to copy comments. + +With PostgreSQL 10 forward, the `Partition` tab will be visible. + +Click the `Partition` tab to continue. + +![Create Table dialog - Partition tab](../../images/table_partition.png) + +Use the fields in the `partition` tab to create the partitions for the table: + +- Select a partition type from the `Partition Type` selection box. There are 3 options available; Range, List and Hash. Hash option will only enable for PostgreSQL version >= 11. + +Use the `Partition Keys` panel to define the partition keys. Click the `Add` icon (+) to add each partition keys selection: + +- Select a partition key type in the `Keytype` field. +- Select a partition column in the `Column` field if Column option selected for `Keytype` field . +- Specify the expression in the `Expression` field if Expression option selected for the `Keytype` field. + +Use the `Partitions` panel to define the partitions of a table. Click the `Add` icon (+) to add each partition: + +- Move the `Operation` switch to `attach` to attach the partition, by default it is `create`. +- Use the `Name` field to add the name of the partition. +- If partition type is Range or List then `Default` field will be enabled. +- If partition type is Range then `From` and `To` fields will be enabled. +- If partition type is List then `In` field will be enabled. +- If partition type is Hash then `Modulus` and `Remainder` fields will be enabled. + +Users can create a partition and define them as a partitioned table. Click the `Edit` icon to expand the properties of a partition. Use the `Partition` tab to create that partition as a partitioned table. + +- Move the `Partitioned Table?` switch to the `Yes` in case you want to create a partitioned table. +- Select a partition type from the `Partition Type` selection box. +- Use the `Partition Keys` panel to define the partition keys. + +View of multi level Partitioned Table in browser tree: + +Table dialog partition tree + +Click the `Parameter` tab to continue. + +![Create Table dialog - Parameter tab](../../images/table_parameter.png) + +Use the tabs nested inside the `Parameter` tab to specify VACUUM and ANALYZE thresholds; use the `Table` tab and the `Toast Table` tab to customize values for the table and the associated toast table: + +- Move the `Custom auto-vacuum?` switch to the `Yes` position to perform custom maintenance on the table and to select values in the `Vacuum table`. The `Vacuum Table` provides default values for maintenance operations. +- Changing `Autovacuum enabled?` to `Not set` will reset autovacuum_enabled. + +Provide a custom value in the `Value` column for each metric listed in the `Label` column. + +Click the `Security` tab to continue. + +![Create Table dialog - Security tab](../../images/table_security.png) + +Use the `Security` tab to assign privileges and define security labels. + +Use the `Privileges` panel to assign privileges to a role. Click the `Add` icon (+) to set privileges for database objects: + +- Select the name of the role from the drop-down listbox in the `Grantee` field. +- Click inside the `Privileges` field. Check the boxes to the left of one or more privileges to grant the selected privilege to the specified user. +- The current user, who is the default grantor for granting the privilege, is displayed in the `Grantor` field. + +Click the `Add` icon (+) to assign additional privileges; to discard a privilege, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Use the `Security Labels` panel to define security labels applied to the function. Click the `Add` icon (+) to add each security label selection: + +- Specify a security label provider in the `Provider` field. The named provider must be loaded and must consent to the proposed labeling operation. +- Specify a a security label in the `Security Label` field. The meaning of a given label is at the discretion of the label provider. PostgreSQL places no restrictions on whether or how a label provider must interpret security labels; it merely provides a mechanism for storing them. + +Click the `Add` icon (+) to assign additional security labels; to discard a security label, click the trash icon to the left of the row and confirm deletion in the `Delete Row` popup. + +Click the `SQL` tab to continue. + +Your entries in the `Table` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Table` dialog: + +![Create Table dialog - SQL tab](../../images/table_sql.png) + +The example shown demonstrates creating a table named `product_category`. It has three columns and a primary key constraint on the `category_id` column. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/11_trigger_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/11_trigger_dialog.mdx new file mode 100644 index 00000000000..90c87d4ca48 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/11_trigger_dialog.mdx @@ -0,0 +1,67 @@ +--- +title: "Trigger Dialog" +--- + + + +Use the `Trigger` dialog to create a trigger or modify an existing trigger. A trigger executes a specified function when certain events occur. + +The `Trigger` dialog organizes the development of a trigger through the following dialog tabs: `General`, *Definition*, `Events`, and `Code`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Trigger dialog - General tab](../../images/trigger_general.png) + +Use the fields in the `General` tab to identify the trigger: + +- Use the `Name` field to add a descriptive name for the trigger. This must be distinct from the name of any other trigger for the same table. The name will be displayed in the `Browser` tree control. Note that if multiple triggers of the same kind are defined for the same event, they will be fired in alphabetical order by name. +- Store notes about the trigger in the `Comment` field. + +Click the `Definition` tab to continue. + +![Create Trigger dialog - Definition tab](../../images/trigger_definition.png) + +Use the fields in the `Definition` tab to define the trigger: + +- Move the `Row trigger?` switch to the `No` position to disassociate the trigger from firing on each row in a table. The default is `Yes`. +- Move the `Constraint trigger?` switch to the `Yes` position to specify the trigger is a constraint trigger. +- If enabled, move the `Deferrable?` switch to the `Yes` position to specify the timing of the constraint trigger is deferrable and can be postponed until the end of the statement. The default is `No`. +- If enabled, move the `Deferred?` switch to the `Yes` position to specify the timing of the constraint trigger is deferred to the end of the statement causing the triggering event. The default is `No`. +- Use the drop-down listbox next to `Trigger Function` to select a trigger function or procedure. +- Use the `Arguments` field to provide an optional (comma-separated) list of arguments to the function when the trigger is executed. The arguments are literal string constants. + +![Create Trigger dialog - Definition tab - Trigger Enable option](../../images/trigger_definition_enabled.png) + +- `Trigger enabled` field is available in trigger dialog once the trigger is created. You can select one of the four options available. + +Click the `Events` tab to continue. + +![Create Trigger dialog - Events tab](../../images/trigger_events.png) + +Use the fields in the `Events` tab to specify how and when the trigger fires: + +- Use the drop-down listbox next to the `Fires` fields to determine if the trigger fires `BEFORE` or `AFTER` a specified event. The default is `BEFORE`. +- Select the type of event(s) that will invoke the trigger; to select an event type, move the switch next to the event to the `YES` position. The supported event types are `INSERT`, *UPDATE*, `DELETE`, and `TRUNCATE`. +- Use the `When` field to provide a boolean condition that will invoke the trigger. +- If defining a column-specific trigger, use the `Columns` field to specify the columns or columns that are the target of the trigger. + +Click the `Code` tab to continue. + +![Create Trigger dialog - Code tab](../../images/trigger_code.png) + +Use the `Code` field to specify any additional code that will be invoked when the trigger fires. + +Click the `SQL` tab to continue. + +Your entries in the `Trigger` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Trigger` dialog: + +![Create Trigger dialog - SQL tab](../../images/trigger_sql.png) + +The example demonstrates creating a trigger named `log_update` that calls a procedure named `log_account_update` that logs any updates to the `distributors` table. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/12_unique_constraint_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/12_unique_constraint_dialog.mdx new file mode 100644 index 00000000000..b19e923bdf7 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/12_unique_constraint_dialog.mdx @@ -0,0 +1,46 @@ +--- +title: "Unique Constraint Dialog" +--- + + + +Use the `Unique constraint` dialog to define a unique constraint for a specified table. Unique constraints ensure that the data contained in a column, or a group of columns, is unique among all the rows in the table. + +The `Unique constraint` dialog organizes the development of a unique constraint through the following dialog tabs: `General` and `Definition`. The `SQL` tab displays the SQL code generated by dialog selections. + +![Create Unique Constraint dialog - General tab](../../images/unique_constraint_general.png) + +Use the fields in the `General` tab to identify the unique constraint: + +- Use the `Name` field to add a descriptive name for the unique constraint. The name will be displayed in the `Browser` tree control. + +Click the `Definition` tab to continue. + +![Create Unique Constraint dialog - Definition tab](../../images/unique_constraint_definition.png) + +Use the fields in the `Definition` tab to define the unique constraint: + +- Click inside the `Columns` field and select one or more column names from the drop-down listbox. To delete a selection, click the `x` to the left of the column name. The unique constraint should be different from the primary key constraint defined for the same table; the selected column(s) for the constraints must be distinct. +- Use `Include columns` field to specify columns for `INCLUDE` clause of the constraint. This option is available in Postgres 11 and later. +- Select the name of the tablespace in which the unique constraint will reside from the drop-down listbox in the `Tablespace` field. +- Select the name of an index from the drop-down listbox in the `Index` field. This field is optional. Adding a unique constraint will automatically create a unique B-tree index on the column or group of columns listed in the constraint, and will force the column(s) to be marked NOT NULL. +- Use the `Fill Factor` field to specify a fill factor for the table and index. The fill factor for a table is a percentage between 10 and 100. 100 (complete packing) is the default. +- Move the `Deferrable?` switch to the `Yes` position to specify the timing of the constraint is deferrable and can be postponed until the end of the statement. The default is `No`. +- If enabled, move the `Deferred?` switch to the `Yes` position to specify the timing of the constraint is deferred to the end of the statement. The default is `No`. + +Click the `SQL` tab to continue. + +Your entries in the `Unique constraint` dialog generate a SQL command (see an example below). Use the `SQL` tab for review; revisit or switch tabs to make any changes to the SQL command. + +**Example** + +The following is an example of the sql command generated by user selections in the `Unique constraint` dialog: + +![Create Unique Constraint dialog - SQL tab](../../images/unique_constraint_sql.png) + +The example shown demonstrates creating a unique constraint named `name_con` on the `name` column of the `distributors` table. + +- Click the `Info` button (i) to access online help. View context-sensitive help in the `Tabbed browser`, where a new tab displays the PostgreSQL core documentation. +- Click the `Save` button to save work. +- Click the `Cancel` button to exit without saving work. +- Click the `Reset` button to restore configuration parameters. diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/index.mdx new file mode 100644 index 00000000000..79110c8d1af --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/12_modifying_tables/index.mdx @@ -0,0 +1,17 @@ +--- +title: "Creating or Modifying a Table" +--- + + + +PEM provides dialogs that allow you to modify all table properties and attributes. + +To access a dialog that allows you to create a database object, right-click on the object type in the `Browser` tree control, and select the `Create` option for that object. For example, to create a new table, Select a database from the tree control, select the schema under the database, right-click on the *Tables* node, and select *Create Table...* + +Contents: + +
+ +check_dialog column_dialog compound_trigger_dialog exclusion_constraint_dialog foreign_key_dialog index_dialog primary_key_dialog rls_policy_dialog rule_dialog table_dialog trigger_dialog unique_constraint_dialog + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/index.mdx new file mode 100644 index 00000000000..a984ba3f5d3 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/05_toc_pem_management_basics/index.mdx @@ -0,0 +1,47 @@ +--- +title: "Management Basics" +--- + + + +PEM provides a graphical interface that you can use to simplify management of your Postgres servers and the objects that reside on them. + +The Grant Wizard simplifies the task of privilege management; to open the Grant Wizard, highlight the name of a server, database, or schema in the PEM client tree control, and select `Grant Wizard...` from the `Tools` menu. + +Contents: + +
+ +grant_wizard + +
+ +PEM provides an easy to use environment in which to manage restore points, import/export tasks, and organize vacuum/analyze management. + +Contents: + +
+ +add_restore_point_dialog import_export_data maintenance storage_manager + +
+ +A powerful, but user-friendly interface provides an easy way to use take backups and create copies of databases or database objects. + +Contents: + +
+ +backup_dialog backup_globals_dialog backup_server_dialog restore_dialog + +
+ +You can also use the client to manage objects that reside on managed and unmanaged database servers: + +Contents: + +
+ +managing_cluster_objects managing_database_objects modifying_tables + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/01_managing_bart_prerequisites.mdx b/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/01_managing_bart_prerequisites.mdx new file mode 100644 index 00000000000..d0ab64476bd --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/01_managing_bart_prerequisites.mdx @@ -0,0 +1,15 @@ +--- +title: "Prerequisites for managing BART" +--- + + + +- Before adding a BART server to the PEM console, you must manually install and configure BART on the BART host. For more information about installing and configuring BART, please see the `BART Installation Guide` available at: + + [https://www.enterprisedb.com/docs](/bart/latest/bart_inst/) + +- Before associating a database server with a BART server, you must install SSH on the database server and the BART server. + +- Before restoring a BART backup, you must install BART, PEM agent, and SSH on the target server. SSH must also be installed on the BART server that you plan to use for restore. + +- To take a backup of the replica database servers, you must ensure that the latest `pg_basebackup` utility is installed on the database server that you want to manage through BART. diff --git a/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/02_configuring_bart_server.mdx b/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/02_configuring_bart_server.mdx new file mode 100644 index 00000000000..2a61bbc9530 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/02_configuring_bart_server.mdx @@ -0,0 +1,50 @@ +--- +title: "Configuring a BART Server" +--- + + + +You can use the `Create–BART server` dialog to register an existing BART server with the PEM server. To access the dialog, right-click on the `BART Servers` node and select `Create-BART Server`. + +![Create-BART server dialog - General tab](../images/create_BART_server_general.png) + +Use the fields on the `General` tab to describe the general properties of the BART Server: + +- Use the `Agent Name` field to select the agent that you want to configure as a BART server. Only those PEM agents that are supported for BART are listed in the drop-down list. + +- Use the `Server Name` field to specify a user-friendly name for the server. The name specified will identify the server in the Browser tree. + +- Use the `Host` field to specify the IP address of the host or agent where BART is installed. + +- Use the `User` field to specify the user name that will be used for performing all the BART operations. You can either use the `enterprisedb` (for Advanced Server) or `postgres` (for PostgreSQL) database user account or you can create a new BART user account. This user must be an operating system user who owns the BART backup catalog directory. + +- Use the `Installation path` field to specify the directory path where BART is installed on the host or BART server. + +- Use the `Backup path` field to specify the file system parent directory where all BART backups and archived WAL files will be stored. + +- Use the `pg_basebackup_path` field to specify the path to the `pg_basebackup` utility. + +- Use the `Xlog/WAL` method field to specify how the transaction log should be collected during the execution of pg_basebackup. The default option is `fetch`; it specifies that the transaction log files will be collected after the backup has completed. Set the `Xlog` method to `stream` to stream the transaction log in parallel with the full base backup creation. If streaming is used, the `max_wal_senders` configuration parameter in the `postgresql.conf` file for affected database servers must account for an additional session for the streaming of the transaction log (the setting must be a minimum of 2). + + For more information about Xlog method, see: + + > + +- Use the `Retention policy` field to specify the retention policy for the backup. This determines when an active backup should be marked as obsolete, and hence, be a candidate for deletion. You can specify the retention policy in terms of number of backup or in terms of duration (days, weeks, or months). + +- Use the `Log file` field to specify the path to BART log file. This is an optional field. + +![Create-BART server dialog - Misc tab](../images/create_BART_server_misc.png) + +Use the fields on the `Misc` tab to describe the backup-related properties of the BART Server: + +- Use the `Scanner log file` field to specify the path to the Xlog/WAL scanner log file. This is an optional field; BART does not create a WAL scanner log file if you do not specify the path. +- Use the `Socket dir path` field to specify the path to the socket directory where all BART sockets will be stored. The default directory is `/tmp`. This parameter is added from BART version 2.5.2 onwards. +- Use the `Socket name` field to specify a user-friendly BART socket file name. Using this option overrides the default BART socket name generated using MD5 checksum. This parameter is added from BART version 2.5.6 onwards. +- Use the `WAL compression?` switch to specify if you want to compress the archived Xlog/WAL files in Gzip format. To enable WAL compression, the gzip compression program must be present in the BART user account’s PATH. The WAL compression setting must not be enabled for those database servers where you need to take incremental backups. +- Use the `Copy WALs during restore?` field to specify how the archived WAL files are collected when invoking the RESTORE operation. Set to enabled to copy the archived WAL files from the BART backup catalog to the `restore_path/archived_wals` directory prior to the database server archive recovery. Set to `disabled` to retrieve the archived WAL files directly from the BART backup catalog during the database server archive recovery. Enabling this option helps you save time during the restore operation. +- Use the `Thread count` field to specify the number of worker threads for copying blocks or data files from the database server to the BART backup catalog. Specify a `thread count` of `1` if you want to take the backup using the `pg_basebackup` utility. +- Use the `Batch size` field to specify the number of blocks of memory used for copying modified blocks. This is applicable only for incremental backups. +- Use the `scan interval` field to specify the number of seconds after which the WAL scanner should scan the new WAL files. +- Use the `MBM scan timeout` field to specify the number of seconds to wait for MBM files before timing out. This is applicable only for incremental backups. +- Use the `Workers` field to specify the number of parallel worker processes required to stream the modified blocks of an incremental backups to the restore host. diff --git a/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/03_associating_bart_server_with_database_server.mdx b/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/03_associating_bart_server_with_database_server.mdx new file mode 100644 index 00000000000..3e0c5ce563e --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/03_associating_bart_server_with_database_server.mdx @@ -0,0 +1,46 @@ +--- +title: "Associating the BART Server with a Database Server" +--- + + + +After configuring the BART server, you need to associate it with the database server whose backup you want to manage with BART. You can do one of the following: + +- Use the PEM console to modify the properties of an existing monitored database server to map it to the newly configured BART server. +- Use the PEM console to create a new monitored database server, and map it to the newly configured BART server. + +To map the BART server to a new PEM database server, right-click the `PEM Server Directory` node and select `Create` > `Server`. Enter the details on all the generic tabs and then enter the BART-specific details on the `BART` tab. + +![Create Server dialog (BART - General tab)](../images/create_server_bart_general.png) + +Use the fields on the `General` tab to describe the general properties of the BART Server that will map to the PEM server: + +- Use the `BART server` field to select the BART server name. All the BART servers configured in the PEM console will be listed in this drop down list. +- Use the `Server name` field to specify a name for the database server that you want to backup using the BART server. This name gets stored in the BART configuration file. +- Use the `Description` field to specify the description of the database server. +- Use the `Backup name` field to specify a template for user-defined names to be assigned to the backups of the database server. If you do not specify a backup name template, then the backup can only be referenced in BART sub-commands by the BART assigned, integer backup identifier. +- Use the `Host address` field to specify the IP address of the database server that you want to configure for backup. +- Use the `Port` field to specify the port to be used for the database that you want to backup. +- Use the `User` field to specify the user of the database that you want to backup using BART through PEM console. If you want to enable incremental backups for this database server, then the user must be a superuser. +- Use the `Password` field to specify the password for the user of the database that you want to backup. +- Use the `Cluster owner` field to specify the Linux operating system user account that owns the database cluster. This is typically `enterprisedb` for Advanced Server database clusters installed in the Oracle databases compatible mode, or `postgres` for PostgreSQL database clusters and for Advanced Server database clusters installed in the PostgreSQL databases compatible mode. +- Use the `Override archive command?` switch to specify if you want to override the archive command in the database server's `postgresql.conf` file. If you override the archive command, the database server will be restarted or database configurations will be reloaded after the server gets added. +- Use the `Archive command` field to specify the desired format of the archive command string. Ensure to bind a PEM agent and provide `Service ID` to reload the database configuration or restart the server. +- Use the `Archive path` field to store the archived WAL files. The default location is the BART backup catalog. This parameter is added from BART version 2.5.2 onwards. +- Use the `Allow incremental backup?` switch to specify if incremental backup should be enabled for this database server. +- Use the `Setup passwordless SSH?` switch to specify if you want to create SSH certificates to allow passwordless logins between the database server and the BART server. You must ensure that a PEM agent is bound to the server before configuring passwordless SSH authentication. Passwordless SSH will not work for a database server that is being remotely monitored by a PEM agent. + +![Create Server dialog (BART - Misc tab)](../images/create_server_bart_misc.png) + +Use the fields on the `Misc` tab to describe the miscellaneous properties of the BART Server: + +- Use the `Override default configuration?` Switch to specify if you want to override the BART server configurations with the specific database server configurations. +- Use the `Xlog` method to specify how the transaction log should be collected during the execution of `pg_basebackup`. +- Use the `Retention policy` field to specify the retention policy for the backup. This determines when an active backup should be marked as obsolete, and hence, be a candidate for deletion. You can specify the retention policy in terms of number of backup or in terms of duration (days, weeks, or months). +- Use the `WAL compression` switch to specify if you want to compress the archived Xlog/WAL files in Gzip format. To enable WAL compression, the gzip compression program must be present in the BART user account’s PATH. The wal_compression setting must not be enabled for those database servers where you need to take incremental backups. +- Use the `Copy WALs during restore` field to specify how the archived WAL files are collected when invoking the RESTORE operation. Set to enabled to copy the archived WAL files from the BART backup catalog to the <restore_path>/archived_wals directory prior to the database server archive recovery. Set to disabled to retrieve the archived WAL files directly from the BART backup catalog during the database server archive recovery. +- Use the `Thread count` field to specify the number of threads to copy the blocks. You must set `thread count` to `1` if you want to take a backup with the `pg_basebackup` utility. +- Use the `Batch size` field to specify the number of blocks of memory used for copying modified blocks, applicable only for incremental backups. +- Use the `Scan interval` field to specify the number of seconds after which the WAL scanner should scan the new WAL files. +- Use the `MBM scan timeout` field to specify the number of seconds to wait for MBM files before timing out, applicable only for incremental backups. +- Use the `Workers` field to specify the number of parallel worker processes required to stream the modified blocks of an incremental backups to the restore host. diff --git a/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/04_viewing_bart_dashboard.mdx b/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/04_viewing_bart_dashboard.mdx new file mode 100644 index 00000000000..b299366562f --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/04_viewing_bart_dashboard.mdx @@ -0,0 +1,25 @@ +--- +title: "Viewing the BART Server Details on a PEM Dashboard" +--- + + + +Once the BART server is associated with the database server, you can see the entire backup and restore related details for that particular BART server on the PEM Dashboard. You can also perform operations such as restoration or deletion of a backup that is listed on the dashboard. + +![BART Dashboard](../images/bart_backup_dashboard.png) + +When you select a monitored BART server, details of all the associated database servers along with their activities are displayed as a chart on the Dashboard in the `BART Tool Activities` panel. You can select the activities on any criteria that you specify in the filter boxes (the database server, status, duration or date). + +The `Managed Database servers` panel displays a list of all the database servers managed by that particular BART server along with their high-level details. + +The `Initiated Server Backups` panel displayes a list of all the backups of the database servers managed by that particular BART server. You can filter the list to display the details of a particular database server. You can also filter the list on any criteria that you specify in the filter box. Typically, this filter works with any kind of string value (excluding date, time, and size) listed under the columns. For example, you can type `tar` to filter the list and display only those backups that are in tar format. + +Backup details displayed include the `Backup Name`, *Backup ID*, `Status`, *Server Name*, `Start Time`, *Type*, `Parent ID`, *Format*, `Duration`, and `Size`. The `Status` column shows the status of the backups which can be one of the following: `In Progress`, *Active*, `Keep`, or `Obsolete`. + +The backups are marked as `Obsolete` after the backup retention period has passed or number of retained backups that you have specified as retention policy of the BART server is met. If you want to make an exception so that a particular backup does not get marked as `Obsolete` even after the expiry of the duration of retention policy, then you need to mark that particular backup as `Keep`. Similarly, if you mark a particular backup as `NoKeep`, the backup is re-evaluated to determine if its status should be changed back to obsolete based upon the current retention policy. + +Please note that if any of the scheduled tasks for backup, restore, validate host, validate server or delete obsolete backup for any of the BART Server gets deleted, it will not display under the `BART Tool Activities` graph of BART Server's dashboard. However, it gets listed under the `Initiated Server Backups` list. + +A pin in the first column under `Actions` indicates that a backup can be marked as `Keep` by clicking the pin; while an inverted pin indicates that the backup can be marked as `NoKeep`. The second column under `Actions` displays the `Restore` icon; you can perform the `Restore` operation by clicking on the icon. + +You can delete all the `Obsolete` backups by clicking the `Delete Obsolete` button. You can also refresh the list of backups by clicking the `Refresh` button. diff --git a/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/05_scheduling_bart_backups.mdx b/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/05_scheduling_bart_backups.mdx new file mode 100644 index 00000000000..f56792cfd8b --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/05_scheduling_bart_backups.mdx @@ -0,0 +1,54 @@ +--- +title: "Scheduling BART Backups" +--- + + + +To schedule a backup using BART, select `Schedule Backup` under `Tools` menu. You can see a list of scheduled backups with details such as `Logs`, *Last result*, `Database server`, *Last backup name*, `Started on`, *Type*, `Parent`, *Format*, `Verify checksum?`, and `Use pg_basebackup?`. Click the Add icon (+) to add a schedule for the backup. Enter the details in the schedule definition dialog: + +![Schedule Backups dialog - General tab](../images/BART_backup_scheduler_general.png) + +Use the fields on the `General` tab to describe the general properties of the backup: + +- Use the `Database Server` field to specify the target database server that you want to back up. +- Use the `Backup name` to specify a user-defined name for the backup. +- Use the `Backup type` switch to specify the backup type I. e. full backup or incremental backup. +- Use the `Parent backup` field to select the ID of the parent backup for incremental backup. This parent backup can either be a full or an incremental backup. +- Use the `Format switch` to specify the output format of the backup i.e plain text or tar. For incremental backup, you need to select plain text only. +- Use the `Gzip compression` switch to specify if gzip compression should be enabled for the backup. This option is applicable only for the tar format. +- Use the `Compression level` field to specify the gzip compression level on the tar file output. +- Use the `Thread count` field to specify the number of threads that will copy the blocks. +- Use the `MBM scan timeout` field to specify the number of seconds to wait for required MBM files before timing out. +- Use the `Checksum algorithm` field to specify checksum algorithm for MBM files of the backup. +- Use the `Verify checksum` field to specify if you want the application to verify the checksum of the backup. +- Use the `pg_basebackup` field to specify if the pg_basebackup utility should be used for the backup. Typically, pg_basebackup utility is used only for backing up the replica servers since it cannot be used for incremental backups. + +![Schedule Backups dialog - Schedule General tab](../images/BART_backup_scheduler_schedule_general.png) + +Provide information on the `Schedule` tab to describe the scheduling details: + +- Use the `Enabled?` switch to indicate if the schedule should be enabled (`Yes`) or disabled (`No`). +- Use the calendar selector in the `Start` field to specify the starting date and time for the schedule. +- Use the calendar selector in the `End` field to specify the ending date and time for the schedule. + +![Schedule Backups dialog - Schedule Repeat tab](../images/BART_backup_scheduler_schedule_repeat.png) + +Use the fields on the `Repeat` tab to specify the details about the schedule in a cron-style format. The schedule will execute on each date or time element selected on the `Repeat` tab. Click within a field to open a list of valid values for that field; click on a specific value to add that value to the list of selected values for the field. To clear the values from a field, click the `X` located at the right-side of the field. + +Use the fields within the `Days` box to specify the days on which the schedule will execute: + +- Use the `Week Days` field to select the days on which the schedule will execute. +- Use the `Month Days` field to select the numeric days on which the schedule will execute. Specify the Last Day to indicate that the schedule should be performed on the last day of the month, regardless of the date. +- Use the `Months` field to select the months in which the schedule will execute. + +Use the fields within the `Times` box to specify the times at which the schedule will execute: + +- Use the `Hours` field to select the hour at which the schedule will execute. +- Use the `Minutes` field to select the minute at which the schedule will execute. + +![Schedule Backups dialog - Notifications tab](../images/BART_backup_scheduler_schedule_notifications.png) + +Use the fields on the `Notifications` tab to specify the email notification settings for a scheduled backup: + +- Use the `Send the notifications` field to specify when you want the email notifications to be sent. +- Use the `Email group` field to specify the email group that should receive the email notification. diff --git a/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/06_scheduling_bart_obsolete_backups_deletion.mdx b/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/06_scheduling_bart_obsolete_backups_deletion.mdx new file mode 100644 index 00000000000..3ddecaedd73 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/06_scheduling_bart_obsolete_backups_deletion.mdx @@ -0,0 +1,30 @@ +--- +title: "Scheduling BART Obsolete Backups Deletion" +--- + + + +Use the `Schedule Obsolete Backup Deletion` dialog to schedule or modify a BART obsolete backup deletion. Use context menu from database server where BART has been configured. + +![Schedule Obsolete Backup dialog - General tab](../images/BART_obsolete_backup_scheduler_general.png) + +Provide information on the `General` tab to describe the scheduling details: + +- Use the `Enabled?` switch to indicate if the schedule should be enabled (`Yes`) or disabled (`No`). +- Use the calendar selector in the `Start` field to specify the starting date and time for the schedule. +- Use the calendar selector in the `End` field to specify the ending date and time for the schedule. + +![Schedule Obsolete Backup dialog - Repeat tab](../images/BART_obsolete_backup_scheduler_repeat.png) + +Use the fields on the `Repeat` tab to specify the details about the schedule in a cron-style format. The schedule will execute on each date or time element selected on the `Repeat` tab. Click within a field to open a list of valid values for that field; click on a specific value to add that value to the list of selected values for the field. To clear the values from a field, click the `X` located at the right-side of the field. + +Use the fields within the `Days` box to specify the days on which the schedule will execute: + +- Use the `Week Days` field to select the days on which the schedule will execute. +- Use the `Month Days` field to select the numeric days on which the schedule will execute. Specify the Last Day to indicate that the schedule should be performed on the last day of the month, regardless of the date. +- Use the `Months` field to select the months in which the schedule will execute. + +Use the fields within the `Times` box to specify the times at which the schedule will execute: + +- Use the `Hours` field to select the hour at which the schedule will execute. +- Use the `Minutes` field to select the minute at which the schedule will execute. diff --git a/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/07_bart_backup_dialog.mdx b/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/07_bart_backup_dialog.mdx new file mode 100644 index 00000000000..3eb3898e335 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/07_bart_backup_dialog.mdx @@ -0,0 +1,30 @@ +--- +title: "BART Backup Dialog" +--- + + + +Use the `BART Backup` dialog to take ad-hoc backups using BART. This dialog can be opened using `Backup...` context menu of BART server node and `Backup...` sub menu of `BART` context menu of Database server node. + +![BART Backup dialog - General tab](../images/bart_backup_dialog_general.png) + +Use the fields on the `General` tab to describe the general properties of the backup: + +- Use the `Database Server` field to specify the target database server that you want to back up. +- Use the `Backup name` to specify a user-defined name for the backup. +- Use the `Backup type` switch to specify the backup type I. e. full backup or incremental backup. +- Use the `Parent backup` field to select the ID of the parent backup for incremental backup. This parent backup can either be a full or an incremental backup. +- Use the `Format switch` to specify the output format of the backup i.e plain text or tar. For incremental backup, you need to select plain text only. +- Use the `Gzip compression` switch to specify if gzip compression should be enabled for the backup. This option is applicable only for the tar format. +- Use the `Compression level` field to specify the gzip compression level on the tar file output. +- Use the `Thread count` field to specify the number of threads that will copy the blocks. +- Use the `Checksum algorithm` field to specify checksum algorithm for MBM files of the backup. +- Use the `Verify checksum` field to specify if you want the application to verify the checksum of the backup. +- Use the `pg_basebackup` field to specify if the pg_basebackup utility should be used for the backup. Typically, pg_basebackup utility is used only for backing up the replica servers since it cannot be used for incremental backups. + +![BART Backup dialog - Notifications tab](../images/bart_backup_dialog_notifications.png) + +Use the fields on the `Notifications` tab to specify the email notification settings for a backup: + +- Use the `Send the notifications` field to specify when you want the email notifications to be sent. +- Use the `Email group` field to specify the email group that should receive the email notification. diff --git a/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/08_restoring_bart_backups.mdx b/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/08_restoring_bart_backups.mdx new file mode 100644 index 00000000000..26e1af500a0 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/08_restoring_bart_backups.mdx @@ -0,0 +1,51 @@ +--- +title: "Restoring BART Backups" +--- + + + +You can restore the backups that you have earlier created using BART server on a target remote host. When you select a particular BART server, all the associated backups are listed in the Dashboard under `Initiated Server Backups`. + +To restore a backup, click the `Restore` icon next to the backup that you want to restore. + +![Restore Backup dialog - General tab](../images/BART_backup_restore_general.png) + +In the `Restore Backup` dialog, provide information in the fields on the `General` tab: + +- Use the `Target agent` field name to specify the name of the agent where you want to restore the backup. +- Use the `Remote user` field to specify the use account on the remote database server host where you want to restore the backup. +- Use the `Remote host address` field to specify the IP address of the remote host where you want to restore the backup. +- Use the `SSH port` field to specify the SSH port to be used for restoring the backup. +- Use the `Restore path` field to specify the path where you want to restore the backup. +- Use the `Number of workers` field to specify processes to run in parallel to stream the modified blocks of an incremental backup to the restore location. +- Use the `Setup passwordless SSH?` switch to specify if you want to create SSH certificates to allow passwordless logins between the BART server and the target host for restore. +- Use the `Verify checksum` switch to specify if you want to verify checksum of a backup. + +![Restore Backup dialog - Advanced tab](../images/BART_backup_restore_advanced.png) + +On the `Advanced` tab, specify your preferences for advanced options for restoring the backup: + +- Use the `Copy WALs to restore path?` switch to specify if you want to copy WALs to the restore path. +- Use the `Point in time recovery` switch to specify if you want point in time recovery. +- Use the `Timeline ID` field to specify the timeline ID to be used for replaying the archived WAL files for point-in-time recovery. +- Use the `Transaction ID (XID)` field to specify the transaction ID for point-in-time recovery. +- Use the `Timestamp` field to the timestamp to be used for restore. + +
+ +
+ +Note + +
+ +You can specify either `Transaction ID` or `Timestamp` for the point-in-time recovery. + +
+ +![Restore Backup dialog - Notifications tab](../images/BART_backup_restore_notifications.png) + +Use the fields on the `Notifications` tab to specify the email notification settings for restoring the backup. + +- Use the `Send the notifications` field to specify when you want the email notifications to be sent. +- Use the `Email group` field to specify the email group that should receive the email notification. diff --git a/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/index.mdx new file mode 100644 index 00000000000..49150cbf9a7 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/06_toc_pem_bart_management/index.mdx @@ -0,0 +1,37 @@ +--- +title: "Managing a BART Server" +--- + + + +Postgres Enterprise Manager (PEM) is designed to assist database administrators, system architects, and performance analysts when administering, monitoring, and tuning PostgreSQL and Advanced Server database servers. + +The EDB Backup and Recovery Tool (BART) is an administrative utility providing simplified backup and recovery management for multiple local or remote EDB Postgres Advanced Server and PostgreSQL database servers. For more information about BART, please visit the EnterpriseDB website at: + +> + +From PEM version 7.10 onwards, you can manage a BART server through PEM console. PEM provides a user-friendly interface that allows you to manage your BART server and perform all the BART operations from PEM console. + +Before you manage a BART server through PEM console, you must ensure that your system meets certain requirements. For more information, see: + +
+ +managing_bart_prerequisites + +
+ +You must add a BART server to the PEM console and then associate that BART server with the database server whose backup you want to manage with BART. For more information, see: + +
+ +configuring_bart_server associating_bart_server_with_database_server + +
+ +After you associate the BART server with the database server, you will be able to view the details of the backups in the dashboard. You can perform operations such as scheduling a backup or restoring a backup. For more information, see: + +
+ +viewing_bart_dashboard scheduling_bart_backups scheduling_bart_obsolete_backups_deletion bart_backup_dialog restoring_bart_backups + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/07_toc_pem_sql_profiler/01_sp_installing_sql_profiler.mdx b/product_docs/docs/pem/7.16/pem_online_help/07_toc_pem_sql_profiler/01_sp_installing_sql_profiler.mdx new file mode 100644 index 00000000000..fadade589db --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/07_toc_pem_sql_profiler/01_sp_installing_sql_profiler.mdx @@ -0,0 +1,91 @@ +--- +title: "Installing SQL Profiler" +--- + + + +SQL Profiler allows a database superuser to locate and optimize poorly-running SQL code. Users of Microsoft SQL Server’s Profiler will find PEM’s SQL Profiler very similar in operation and capabilities. SQL Profiler is installed with each Advanced Server instance; if you are using PostgreSQL, you must download the SQL Profiler installer or packages and install the SQL Profiler product into each managed database instance you wish to profile. + +SQL Profiler is officially supported only on the EnterpriseDB distributions of PostgreSQL version 9.4 or above and Advanced Server version 9.4 or above. The plugin is distributed via StackBuilder, or is available from the [EnterpriseDB website](https://www.enterprisedb.com/advanced-downloads) + +You can use the graphical installer to install any version of SQL Profiler on Windows platform. + +On Linux, if you have installed your database server through graphical installer then you must use the graphical installer to install the SQL Profiler. If you have installed your database server using the RPM or DEB package, then you must use the RPM or DEB package to install the SQL Profiler. + +## Installing SQL Profiler on Windows + +To invoke the SQL Profiler graphical installer, assume superuser privileges (or `Administrator` privileges on Windows), navigate into the directory that contains the installer, and invoke the installer: + +> `sqlprofiler-pg---windows-x64.exe` + +Where, `pg_version` is the version of your PostgreSQL and `sql_profiler_version` is the version of SQL Profiler. + +The SQL Profiler installer welcomes you to the Setup Wizard. + +![The SQL Profiler Installer - Welcome dialog](../images/installing_pem_sql_profiler_plugin_windows_welcome.png) + +Click `Next` to continue to the `License Agreement`. + +![The SQL Profiler Installer - License Agreement](../images/installing_pem_sql_profiler_plugin_windows_license_agreement.png) + +Carefully review the license agreement before highlighting the appropriate radio button and accepting the agreement; click `Next` to continue to the `Installation Directory` dialog. + +![The PostgreSQL Installer - Installation Directory](../images/installing_pem_sql_profiler_plugin_windows_installation_directory.png) + +Specify an alternate location for the installation directory, or accept the default location and click `Next` to continue. + +![The PostgreSQL Installer - Ready to Install](../images/installing_pem_sql_plugin_windows_ready_to_install.png) + +The wizard is now ready to install the SQL Profiler plugin. Click `Next` to continue. + +![The PostgreSQL Installer - Installation in Progress](../images/installing_pem_sql_profiler_plugin_windows_in_progress.png) + +The SQL Profiler plugin installer displays progress bars as it copies files to your system. + +![The SQL Profiler Installer - Finish](../images/installing_pem_sql_profiler_plugin_windows_finish.png) + +When the installation is complete, the SQL Profiler plugin is ready to be configured. + +## Installing SQL Profiler on Linux using RPMs + +
+ +
+ +Note + +
+ +You may be required to add the `sslutils` package to your PostgreSQL database servers before installing SQL Profiler. + +
+ +You can install SQL Profiler using rpm on RHEL or Centos 6 or 7, using yum command as root user: + +> `yum install postgresql-sqlprofiler` + +Where, `pg_version` is the version of your PostgreSQL. + +When the installation is complete, the SQL Profiler plugin is ready to be configured. + +## Installing SQL Profiler on Debian/Ubuntu using DEB + +
+ +
+ +Note + +
+ +You may be required to add the `sslutils` package to your PostgreSQL database servers before installing SQL Profiler. + +
+ +You can install SQL Profiler using DEB on Debian 9.x or Ubuntu 18, using apt command as root user: + +> `apt install postgresql--sqlprofiler` + +Where, `pg_version` is the version of your PostgreSQL. + +When the installation is complete, the SQL Profiler plugin is ready to be configured. diff --git a/product_docs/docs/pem/7.16/pem_online_help/07_toc_pem_sql_profiler/02_sp_configuring_sql_profiler.mdx b/product_docs/docs/pem/7.16/pem_online_help/07_toc_pem_sql_profiler/02_sp_configuring_sql_profiler.mdx new file mode 100644 index 00000000000..025ea262f8d --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/07_toc_pem_sql_profiler/02_sp_configuring_sql_profiler.mdx @@ -0,0 +1,25 @@ +--- +title: "Configuring SQL Profiler" +--- + + + +The SQL Profiler plugin is not automatically enabled when the installation process completes. This allows you to restart the server at a convenient time, and prevents the plugin from being loaded unnecessarily on systems where it is not required on a continual basis. + +Use the following steps to enable the plugin for each database monitored by SQL Profiler: + +1. Edit the `postgresql.conf` file on the server you wish to profile, modifying the `shared_preload_libraries` configuration parameter as shown below: + +> For Linux, `shared_preload_libraries = '$libdir/sql-profiler'` +> +> For Windows, `shared_preload_libraries = '$libdir/sql-profiler.dll'` + +1. Create the functions used by SQL Profiler in your database. The SQL Profiler installation program places a SQL script (named `sql-profiler.sql`) in the `share/contrib` subdirectory of the main PostgreSQL installation directory. You must invoke this script on the maintenance database (specified when registering the server with PEM). + +You can also use the psql command line to invoke the configuration script. The following command uses psql to invoke the sql-profiler.sql script on PostgreSQL Server database on a Linux system: + +> `$ /usr/pgsql-x/bin/psql -U postgres postgres -f /usr/pgsql-x/share/contrib/sql-profiler.sql` + +1. Stop and re-start the server for the changes to take effect. + +Please note: if you have connected to the PEM server with the PEM client before configuring SQL Profiler, you must disconnect and reconnect with the server to enable SQL Profiler functionality. diff --git a/product_docs/docs/pem/7.16/pem_online_help/07_toc_pem_sql_profiler/03_sp_create_new_trace.mdx b/product_docs/docs/pem/7.16/pem_online_help/07_toc_pem_sql_profiler/03_sp_create_new_trace.mdx new file mode 100644 index 00000000000..3bcf394c6e9 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/07_toc_pem_sql_profiler/03_sp_create_new_trace.mdx @@ -0,0 +1,114 @@ +--- +title: "Using SQL Profiler" +--- + + + +You can use SQL Profiler to create and store up to 15 named traces; use menu options to create and manage traces. + +## Creating a Trace + +You can use the Create trace... dialog to define a SQL Trace for any database on which SQL Profiler has been installed and configured. [installed and configured](01_sp_installing_sql_profiler/#sp_installing_sql_profiler). To access the dialog, highlight the name of the database in the PEM client tree control; navigate through the `Management` menu to the `SQL Profiler` pull-aside menu, and select `Create trace...`. + +![Create trace dialog - Trace options tab](../images/sp_create_new_trace.png) + +Use the fields on the `Trace options` tab to specify details about the new trace: + +- Provide a name for the trace in the `Name` field. +- Click in the `User filter` field to specify the roles whose queries will be included the trace; optionally, check the box next to `Select All` to include queries from all roles. +- Click in the `Database filter` field to specify which databases to trace; optionally, check the box next to `Select All` to include queries against all databases. +- Specify a trace size in the `Maximum Trace File Size` field; SQL Profiler will terminate the trace when it reaches approximately the size specified. +- Specify `Yes` in the `Run Now` field to start the trace when you select the `Create` button; select `No` to enable fields on the `Schedule` tab. + +![Create trace dialog - Schedule tab](../images/sp_create_new_trace_schedule.png) + +Use the fields on the `Schedule` tab to specify scheduling details for the new trace: + +- Use the `Start time` field to specify the starting time for the trace. +- Use the `End time` field to specify the ending time for the trace. +- Specify `Yes` in the `Repeat?` field to indicate that the trace should be repeated every day at the times specified; select `No` to enable fields on the `Periodic job options` tab. + +![Create trace - Schedule repeat tab](../images/sp_create_new_trace_periodic_job.png) + +Fields on the `Periodic job options` tab specify scheduing details for a recurring trace. Use fields in the `Days` section to specify the days on which the job will execute: + +- Click in the `Week days` field to select the days of the week on which the trace will execute. +- Click in the `Month days` field to select the days of the month on which the trace will execute. +- Click in the `Months` field to select the months in which the trace will execute. + +Use fields in the `Times` section to specify a time schedule for the trace execution: + +- Click in the `Hours` field to select the hours at which the trace will execute. +- Click in the `Minutes` field to select the hours at which the trace will execute. + +When you've completed the `Create trace...` dialog, click `Create` to start the newly defined trace or to schedule the trace for a later time. If you elect to execute the trace immediately, the trace results will display in the PEM client. + +![New trace executed](../images/sp_create_new_trace_executed.png) + +## Opening a Trace + +To view a previous trace, highlight the name of the profiled database in the PEM client tree control; navigate through the `Management` menu to the `SQL Profiler` pull-aside menu, and select `Open trace...`. You can also use the SQL Profiler toolbar menu to open a trace; select the `Open trace...` option. The `Open trace...` dialog opens. + +![Open existing trace dialog](../images/sp_open_existing_trace.png) + +Highlight an entry in the trace list and click `Open` to open the selected trace. The selected trace opens in the SQL Profiler tab. + +## Filtering a Trace + +A filter is a named set of (one or more) rules, each of which can hide events from the trace view. When you apply a filter to a trace, the hidden events are not removed from the trace, but are merely excluded from the display. Click the `Filter` icon to open the `Trace Filter` dialog and create a rule (or set of rules) that define a filter. Each rule will screen the events within the current trace based on the identity of the role that invoked the event, or the query type invoked during the event. + +![Trace filter - General tab](../images/sp_trace_filter.png) + +To open an existing filter, select the`Open` button; to define a new filter, click the Add (+) button to add a row to the table displayed on the `General` tab and provide rule details: + +- Use the `Type` drop-down listbox to specify the trace field that the filter rule will apply to. +- Use the `Condition` drop-down listbox to specify the type of operator that SQL Profiler will apply to the Value when it filters the trace: + +> - Select `Matches` to filter events that contain the specified Value. +> - Select `Does not match` to filter events that do not contain the specified Value. +> - Select `Is equal to` to filter events that contain an exact match to the string specified in the Value field. +> - Select `Is not equal to` to filter events that do not contain an exact match to the string specified in the Value field. +> - Select `Starts with` to filter events that begin with the string specified in the Value field. +> - Select `Does not start with` to filter events that do not begin with the string specified in the Value field. +> - Select `Less than` to filter events that have a numeric value less than the number specified in the Value field. +> - Select `Greater than` to filter events that have a numeric value greater than the number specified in the Value field. +> - Select `Less than or equal to` to filter events that have a numeric value less than or equal to the number specified in the Value field. +> - Select `Greater than or equal to` to filter events that have a numeric value greater than or equal to the number specified in the Value field. + +- Use the `Value` field to specify the string, number or regular expression that SQL Profiler will search for. + +When you've finished defining a rule, click the Add (+) button to add another rule to the filter. To delete a rule from a filter, highlight the rule and click the `Delete` icon. + +Click the `Save` button to save the filter definition to a file without applying the filter; to apply the filter, click `OK`. Select `Cancel` to exit the Trace Filter dialog and discard any changes to the filter. + +## Deleting a Trace + +To delete a trace, highlight the name of the profiled database in the PEM client tree control; navigate through the `Management` menu to the `SQL Profiler` pull-aside menu, and select `Delete trace(s)...`. You can also use the SQL Profiler toolbar menu to delete a trace; select the `Delete trace(s)...` option. The `Delete traces...` dialog opens. + +![Delete existing trace dialog](../images/sp_delete_trace.png) + +Click the icon to the left of a trace name to mark one or more traces for deletion and click `Delete`. + +![Delete existing trace notification](../images/sp_delete_trace.png) + +The PEM client will acknowledge that the selected traces have been deleted. + +## Viewing Scheduled Traces + +To view a list of scheduled traces, highlight the name of the profiled database in the PEM client tree control; navigate through the `Management` menu to the `SQL Profiler` pull-aside menu, and select `Scheduled traces...`. You can also use the SQL Profiler toolbar menu to the list; select the `Scheduled traces...` option. The `Scheduled traces...` dialog opens. + +![Scheduled traces dialog](../images/sp_scheduled_traces.png) + +The `Scheduled traces...` dialog displays a list of the traces that are awaiting execution. Click the edit button to the left of a trace name to access detailed information about the trace: + +![Scheduled traces details dialog](../images/sp_trace_details.png) + +The `General` tab displays detailed information about the scheduled trace: + +- The `Status` field lists the status of the current trace. +- The `Enabled?` switch displays `Yes` if the trace is enabled; `No` if the trace is disabled. +- The `Name` field displays the name of the trace. +- The `Agent` field displays the name of the agent responsible for executing the trace. +- The `Last run` field displays the date and time of the last execution of the trace. +- The `Next run` field displays the date and time of the next scheduled execution of the trace. +- The `Created` field displays the date and time that the trace was defined. diff --git a/product_docs/docs/pem/7.16/pem_online_help/07_toc_pem_sql_profiler/04_sp_index_advisor.mdx b/product_docs/docs/pem/7.16/pem_online_help/07_toc_pem_sql_profiler/04_sp_index_advisor.mdx new file mode 100644 index 00000000000..56d95bf5a5a --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/07_toc_pem_sql_profiler/04_sp_index_advisor.mdx @@ -0,0 +1,33 @@ +--- +title: "Using Index Advisor" +--- + + + +Index Advisor helps you determine the application tables (and columns) on which you should create common B-tree type indexes. This can reduce the execution cost of queries you expect to use on your tables. Index Advisor comes pre-installed with EDB Postgres (R) Advanced Server. Index Advisor works with Advanced Server's query planner by creating "hypothetical indexes" for the query planner to use to calculate execution costs if such indexes were available. + +Before using Index Advisor, you must: + +1. Modify the postgresql.conf file on each Advanced Server host, adding the index_advisor library to the shared_preload_libraries parameter. + +2. Install the Index Advisor contrib module. To install the module, use the psql client or PEM Query Tool to connect to the database, and invoke the following command: + + `/share/contrib/index_advisor.sql` + +3. Restart the server for your changes to take effect. + +After installing Index Advisor, you can select one or more rows from within a trace, and select the Index Advisor icon to access Index Advisor functionality. For detailed installation and usage information about Index Advisor, please see the EDB Postgres Advanced Server Guide, available from the EnterpriseDB website at: + +> + +
+ +
+ +Note + +
+ +It is recommended that you disable the index advisor while using the pg_dump functionality. + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/07_toc_pem_sql_profiler/05_sp_sql_profiler_tab.mdx b/product_docs/docs/pem/7.16/pem_online_help/07_toc_pem_sql_profiler/05_sp_sql_profiler_tab.mdx new file mode 100644 index 00000000000..129eec290ea --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/07_toc_pem_sql_profiler/05_sp_sql_profiler_tab.mdx @@ -0,0 +1,87 @@ +--- +title: "The SQL Profiler Tab" +--- + + + +## Toolbar Options + +Toolbar options on the SQL Profiler tab allow you to define new traces, start or stop existing traces, open and search through previous traces, and filter trace results. + +![SQL Profiler toolbar](../images/sp_toolbar.png) + +Use the following options to manage your SQL Profiler traces: + +| Option | Action | Shortcut | +| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | +| `Menu` | Use options accessed through the drop_down menu icon to manage SQL Profiler traces. | Accesskey + O | +| `Start Trace` | Select the `Start Trace` icon to start a new trace, using the attributes (user names, database names, comments, etc) that were defined for the trace currently displayed in the SQL Profiler dialog. | Accesskey + S | +| `Stop Trace` | Select the `Stop Trace` icon to stop an executing trace. | Accesskey + Q | +| `Refresh Trace` | Select the `Refresh Trace` icon to update the display to include any recent changes to an active trace. | Accesskey + R | +| `Clear Trace` | Select the `Clear Trace` icon to delete the trace and close the SQL Profiler window. | Accesskey + C | +| `Filter` | Select the `Filter` icon to define a new filter, or apply an existing filter to the trace. | Accesskey + T | +| `Information` | Select the information icon to view the properties of the trace displayed in the SQL Profiler window. | Accesskey + P | +| `Index Advisor` | Select the `Index Advisor` icon to open the [PEM Index Advisor](04_sp_index_advisor/#sp_index_advisor). \| Ac | cesskey + I | +| `Download Trace` | Use options accessed through the `Download Trace` menu to download a CSV file that contains the trace events shown on the current page or the complete set of trace data. | Accesskey + X | +| `Column Picker` | Click the `Column Picker` icon to choose the columns to be displayed in below table. | Accesskey + W | + +## Viewing Trace Data + +The SQL Profiler tab is divided into three panes: + +- The top of the tabbed browser window (the trace data pane) displays a list of the SQL commands executed during the trace. +- The lower-left panel dislays the SQL query that was executed, or the metrics gathered during the execution. +- The lower-right panel displays the query execution plan; you can view the execution plan in a Text-based form, or as a Graphical Plan. + +![SQL Profiler tab](../images/sp_sql_profiler_tab.png) + +**The Trace Data Pane** + +The Trace Data pane displays the SQL commands executed during the trace. By default, the commands are displayed in the order that the command was executed. + +Double-click a column heading to sort the trace by the column values; double-click the column heading a second time to toggle the data in the column to be in ascending or descending order. + +Use the drop-down listbox next to the `Show queries per page` label to specify the number of events that SQL Profiler should display in the pane. Select from 20, 50, 100, 200, 500, 1000, or 2000. The default is 500. + +If the number of events in the trace exceeds the count of events per page, use the page selector controls (located in the top left corner of the table) to navigate through pages of the trace. + +To include or exclude events from the currently displayed trace, select the Filter icon from the SQL Profiler toolbar. The Trace Filter dialog will allow you to define and apply a filter that will screen the displayed trace. + +**The Query/Metrics Pane** + +The Query/Metrics pane is located in the lower-left corner of the SQL Profiler window. The tabs provide detailed information about the currently selected query: + +- The `SQL Query` tab displays the text of the query that is currently highlighted in Trace Data pane. +- The `Metrics` tab displays detailed statistical information about the execution of the query. The table below describes the metrics that are displayed in the Metrics dialog; the percentages listed describe the percentage of the total quantity of the parameter that is attributed to the selected SQL command: + +| **Property** | **Description** | +| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Executed (#) | The number of times that the selected SQL command executed. | +| Execution (%) | The percentage of the execution count that the SQL command represents. For example if the trace profiles 4 SQL commands, each command will represent 25% of the trace execution %. | +| Duration (%) | The percentage of the total trace time consumed by the highlighted SQL Command. | +| Rows updated (%) | The percentage of the rows updated during the trace that were updated by the selected SQL command. | +| Page faults (%) | The percentage of the page faults that occur during the trace that can be attributed to the selected SQL command. | +| Page reclaims (%) | The percentage of the pages reclaimed during the trace that can be attributed to the selected SQL command. | +| Swaps (%) | The percentage of swaps that occur during the trace that can be attributed to the selected SQL command. | +| File system in (%) | The percentage of bytes written to disk during the trace that can be attributed to the selected SQL command. | +| File system out (%) | The percentage of bytes read from disk during the trace that can be attributed to the selected SQL command. | +| Signals received (%) | Currently unused. | +| Messages received | (%)Currently unused. | +| Messages sent (%) | Currently unused. | +| Voluntary context switches | (%)Currently unused. | +| Involuntary context switches | (%)Currently unused. | +| Shared blocks read (%) | The percentage of the shared blocks read by the highlighted SQL command. | +| Shared blocks written (%) | The percentage of the shared blocks written by the highlighted SQL command. | +| Shared blocks hit (%) | The percentage of the shared blocks hit by the highlighted SQL command. | +| Local blocks read (%) | The percentage of local blocks read by the highlighted SQL command. | +| Local blocks written (%) | The percentage of local blocks written by the highlighted SQL command. | +| Local blocks hit (%) | The percentage of local blocks hit by the highlighted SQL commands. | +| Temporary blocks read (%) | The percentage of the temporary blocks read by the highlighted SQL commands. | +| Temporary blocks written (%) | The percentage of the temporary blocks written by the highlighted SQL commands. | + +**The Explain Pane** + +The Graphical or Text-based explain pane displays one of two representations of the query execution plan for the selected query. + +- Select the Text-based Plan tab to display the execution plan for the currently highlighted event in text format: +- Select the Graphical-based Plan tab to display a graphical interpretation of the execution plan of the highlighted query. For more information about interpreting the graphical query plan, see [Interpreting the Graphical Query Plan](../08_toc_pem_developer_tools/03_pem_interpreting_graphical_query/#pem_interpreting_graphical_query). diff --git a/product_docs/docs/pem/7.16/pem_online_help/07_toc_pem_sql_profiler/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/07_toc_pem_sql_profiler/index.mdx new file mode 100644 index 00000000000..60648bb6637 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/07_toc_pem_sql_profiler/index.mdx @@ -0,0 +1,17 @@ +--- +title: "SQL Profiler" +--- + + + +SQL Profiler captures statistical information and query execution plans for SQL statements executed during a trace session. You can use the information stored by SQL Profiler to identify performance issues. Before using SQL Profiler, you must [install and configure SQL Profiler](01_sp_installing_sql_profiler/#sp_installing_sql_profiler) on each database you intend to profile. + +Contents: + +
+ +sp_installing_sql_profiler sp_configuring_sql_profiler sp_create_new_trace sp_index_advisor sp_sql_profiler_tab + +
+ +SQL Profiler can support as many as 15 concurrently active traces. Open traces are displayed on the SQL Profiler tab. diff --git a/product_docs/docs/pem/7.16/pem_online_help/08_toc_pem_developer_tools/01_debugger.mdx b/product_docs/docs/pem/7.16/pem_online_help/08_toc_pem_developer_tools/01_debugger.mdx new file mode 100644 index 00000000000..3960eeef092 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/08_toc_pem_developer_tools/01_debugger.mdx @@ -0,0 +1,88 @@ +--- +title: "pgAdmin Debugger" +--- + + + +![Debugger page - Parameters tab](../images/debug_main.png) + +The debugger may be used to debug PL/pgSQL functions in PostgreSQL, as well as EDB-SPL functions, stored procedures and packages in Advanced Server. The Debugger is available as an extension for your PostgreSQL installation, and is distributed as part of Advanced Server. You must have superuser privileges to use the debugger. + +Before using the debugger, you must modify the `postgresql.conf` file, adding the server-side debugger components to the the value of the `shared_preload_libraries` parameter: + +> shared_preload_libraries = '$libdir/`other_libraries`/plugin_debugger' + +After modifying the `shared_preload_libraries` parameter, restart the server to apply the changes. + +The debugger may be used for either in-context debugging or direct debugging of a target function or procedure. When you use the debugger for in-context debugging, you set a breakpoint at the first line of a program; when a session invokes the target, control is transferred to the debugger. When using direct debugging, the debugger prompts you for any parameters required by the target, and then allows you to step through the code. + +**In-context Debugging** + +To set a breakpoint at the first line of a program, right-click the name of the object you would like to debug, and select `Set breakpoint` from the `Debugging` sub-menu. The debugger window will open, waiting for another session to invoke the program. + +![Debugger tab](../images/debug_set_breakpoint.png) + +When another session invokes the target, the debugger will display the code, allowing you to add break points, or step through line-by-line. The other session is suspended until the debugging completes; then control is returned to the session. + +![Debugger page - Stack tab](../images/debug_ic_step_in.png) + +**Direct Debugging** + +To use the debugger for direct debugging, right click on the name of the object that you wish to debug in the pgAdmin tree control and select `Debug` from the `Debugging` sub-menu. The debugger window will open, prompting you for any values required by the program: + +![Debugger parameter dialog](../images/debug_params.png) + +Use the fields on the `Debugger` dialog to provide a value for each parameter: + +> - The `Name` field contains the formal parameter name. +> - The `Type` field contains the parameter data type. +> - Check the `Null?` checkbox to indicate that the parameter is a NULL value. +> - Check the `Expression?` checkbox if the Value field contains an expression. +> - Use the `Value` field to provide the parameter value that will be passed to the program. When entering parameter values, type the value into the appropriate cell on the grid, or, leave the cell empty to represent NULL, enter '' (two single quotes) to represent an empty string, or to enter a literal string consisting of just two single quotes, enter ''. PostgreSQL 8.4 and above supports variadic function parameters. These may be entered as a comma-delimited list of values, quoted and/or cast as required. +> - Check the `Use default?` checkbox to indicate that the program should use the value in the Default Value field. +> - The `Default Value` field contains the default value of the parameter. + +Provide values required by the program, and click the `Debug` button to start stepping through the program, The values of the arguments provided here are saved. The values will be pre-filled next time the dialog opens. To clear the values, use the `Clear All` button. + +![Debugger page - Stack tab](../images/debug_step_in.png) + +**Using the Debugger** + +The main debugger window consists of two panels and a context-sensitive toolbar. Use toolbar icons to manage breakpoints and step into or through code; hover over an icon for a tooltip that identifies the option associated with the icon. The toolbar options are: + +![Debugger navigation toolbar](../images/debug_toolbar.png) + +| Option | Action | +| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Step into` | Click the `Step into` icon to execute the currently highlighted line of code.
| +| `Step over` | Click the `Step over` icon to execute a line of code, stepping over any sub-functions invoked by the code.The sub-function executes, but is not debugged unless it contains a breakpoint. | +| `Continue/Start` | Click the `Continue/Start` icon to execute the highlighted code, and continue until the programencounters a breakpoint or completes. | +| `Toggle breakpoint` | Use the `Toggle breakpoint` icon to enable or disable a breakpoint (without removing the breakpoint).
| +| `Clear all breakpoints` | Click the `Clear all breakpoints` icon to remove all breakpoints from the program.
| +| `Stop` | Click the `Stop` icon to halt the execution of a program.
| + +The top panel of the debugger window displays the program body; click in the grey margin next to a line number to add a breakpoint. The highlighted line in the top panel is the line that is about to execute. + +![Debugger main page](../images/debug_main.png) + +The lower panel of the debugger window provides a set of tabs that allow you to review information about the program: + +> - The `Parameters` tab displays the value of each parameter. +> - The `Local` variables tab displays the current value of the program variables. +> - The `Messages` tab displays any messages returned by the server (errors, warnings and informational messages). +> - The `Results` tab displays the server message when the program completes. +> - The `Stack` tab displays the list of functions that have been invoked, but which have not yet completed. + +As you step through a program, the `Local variables` tab displays the current value of each variable: + +![Debugger page - Local variables tab](../images/debug_variables.png) + +When you step into a subroutine, the `Stack` tab displays the call stack, including the name of each caller, the parameter values for each caller (if any), and the line number within each caller: + +![Debugger page - Stack tab](../images/debug_stack.png) + +Select a caller to change focus to that stack frame and display the state of the caller in the upper panel. + +When the program completes, the `Results` tab displays the message returned by the server. If the program encounters an error, the `Messages` tab displays details: + +![Debugger page - Message tab](../images/debug_error_message.png) diff --git a/product_docs/docs/pem/7.16/pem_online_help/08_toc_pem_developer_tools/02_query_tool.mdx b/product_docs/docs/pem/7.16/pem_online_help/08_toc_pem_developer_tools/02_query_tool.mdx new file mode 100644 index 00000000000..9a19c67e9f2 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/08_toc_pem_developer_tools/02_query_tool.mdx @@ -0,0 +1,239 @@ +--- +title: "Query Tool" +--- + + + +The Query Tool is a powerful, feature-rich environment that allows you to execute arbitrary SQL commands and review the result set. You can access the Query Tool via the `Query Tool` menu option on the `Tools` menu, or through the context menu of select nodes of the Browser tree control. The Query Tool allows you to: + +- Issue ad-hoc SQL queries. +- Execute arbitrary SQL commands. +- Edit the result set of a SELECT query if it is [updatable](#updatable-result-set). +- Displays current connection and transaction status as configured by the user. +- Save the data displayed in the output panel to a CSV file. +- Review the execution plan of a SQL statement in either a text, a graphical format or a table format (similar to ). +- View analytical information about a SQL statement. + +![Query Tool tab](../images/query_tool.png) + +You can open multiple copies of the Query tool in individual tabs simultaneously. To close a copy of the Query tool, click the `X` in the upper-right hand corner of the tab bar. + +The Query Tool features two panels: + +- The upper panel displays the `SQL Editor`. You can use the panel to enter, edit, or execute a query. It also shows the `History` tab which can be used to view the queries that have been executed in the session, and a `Scratch Pad` which can be used to hold text snippets during editing. If the Scratch Pad is closed, it can be re-opened (or additional ones opened) by right-clicking in the SQL Editor and other panels and adding a new panel. +- The lower panel displays the `Data Output` panel. The tabbed panel displays the result set returned by a query, information about a query's execution plan, server messages related to the query's execution and any asynchronous notifications received from the server. + +**The Query Tool Toolbar** + +The `Query Tool` toolbar uses context-sensitive icons that provide shortcuts to frequently performed tasks. If an icon is highlighted, the option is enabled; if the icon is grayed-out, the task is disabled. Please note that disabled icons may support functionality accessed via the [data editor](04_editgrid/#editgrid). + +![Query Tool toolbar](../images/query_toolbar.png) + +Hover over an icon to display a tooltip that describes the icon's functionality: + +| Icon | Behavior | Shortcut | +| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `Open File` | Click the `Open File` icon to display a previously saved query in the SQL Editor. | Accesskey + O | +| `Save` | Click the `Save` icon to perform a quick-save of a previously saved query, or to access the `Save` menu:
- Select `Save` to save the selected content of the SQL Editor panel in a file.
- Select `Save As` to open a new browser dialog and specify a new location to which to save the selected content of the SQL Editor panel.
| Accesskey + S | +| `Find` | Use the `Find` menu to search, replace, or navigate the code displayed in the SQL Editor:
- Select `Find` to provide a search target, and search the SQL Editor contents.
- Select `Find next` to locate the next occurrence of the search target.
- Select `Find previous` to move to the last occurrence of the search target.
- Select `Pesistent find` to identify all occurrences of the search target within the editor.
- Select `Replace` to locate and replace (with prompting) individual occurrences of the target.
- Select `Replace all` to locate and replace all occurrences of the target within the editor.
- Select `Jump` to navigate to the next occurrence of the search target.
| Cmd+F

Cmd+G

Cmd+Shift+G

Cmd+Shift+F

Alt+G
| +| `Copy` | Click the `Copy` icon to copy the content that is currently highlighted in the Data Output panel. when in View/Edit data mode. | Accesskey + C | +| `Paste` | Click the `Paste` icon to paste a previously row into a new row when in View/Edit data mode. | Accesskey + P | +| `Delete` | Click the `Delete` icon to mark the selected rows for delete when in View/Edit data mode. | Accesskey + D | +| `Edit` | Use options on the `Edit` menu to access text editing tools; the options operate on the text displayed in the SQL Editor panel when in Query Tool mode:
- Select `Indent Selection` to indent the currently selected text.
- Select `Unindent Selection` to remove indentation from the currently selected text.
- Select `Inline Comment Selection` to enclose any lines that contain the selection in SQL style comment notation.
- Select `Inline Uncomment Selection` to remove SQL style comment notation from the selected line.
- Select `Block Comment` to enclose all lines that contain the selection in C style comment notation. This option acts as a toggle.
| Tab

Shift+Tab

Cmd+/

Cmd+.

Shift+Cmd+/
| +| `Filter` | Click the `Filter` icon to set filtering and sorting criteria for the data when in View/Edit data mode. Click the down arrow to access other filtering and sorting options:
- Click `Sort/Filter` to open the sorting and filtering dialogue.
- Click `Filter by Selection` to show only the rows containing the values in the selected cells.
- Click `Exclude by Selection` to show only the rows that do not contain the values in the selected cells.
- Click `Remove Sort/Filter` to remove any previously selected sort or filtering options.
| Accesskey + F | +| Limit Selector | Select a value in the `Limit Selector` to limit the size of the dataset to a number of rows. | Accesskey + R | +| `Stop` | Click the `Stop` icon to cancel the execution of the currently running query. | Accesskey + Q | +| `Execute/Refresh` | Click the `Execute/Refresh` icon to either execute or refresh the query highlighted in the SQL editor panel. Click the down arrow to access other execution options:
- Add a check next to `Auto-Rollback` to instruct the server to automatically roll back a transaction if an error occurs during the transaction.
- Add a check next to `Auto-Commit` to instruct the server to automatically commit each transaction. Any changes made by the transaction will be visible to others, and durable in the event of a crash.
| F5 | +| `Explain` | - Click the `Explain` icon to view an explanation plan for the current query. The result of the

EXPLAIN is displayed graphically on the `Explain` tab of the output panel, and in text form on the `Data Output` tab.
| F7 | +| `Explain analyze` | Click the `Explain analyze` icon to invoke an EXPLAIN ANALYZE command on the current query.

Navigate through the `Explain Options` menu to select options for the EXPLAIN command:
- Select `Verbose` to display additional information regarding the query plan.
- Select `Costs` to include information on the estimated startup and total cost of each plan node, as well as the estimated number of rows and the estimated width of each row.
- Select `Buffers` to include information on buffer usage.
- Select `Timing` to include information about the startup time and the amount of time spent in each node of the query.
| Shift+F7 | +| `Commit` | Click the `Commit` icon to commit the transaction. | Shift+CTRL+M | +| `Rollback` | Click the `Rollback` icon to rollback the transaction. | Shift+CTRL+R | +| `Clear` | Use options on the `Clear` drop-down menu to erase display contents:
- Select `Clear Query Window` to erase the content of the SQL Editor panel.
- Select `Clear History` to erase the content of the `History` tab.
| Accesskey + L | +| `Download as CSV` | Click the `Download as CSV` icon to download the result set of the current query to a comma-separated list. You can specify the CSV settings through `Preferences -> SQL Editor -> CSV output` dialogue. | F8 | +| `Macros` | Click the *Macros* icon to manage the macros. You can create, edit or clear the macros through *Manage Macros* option. | | + +**The SQL Editor Panel** + +The `SQL editor` panel is a workspace where you can manually provide a query, copy a query from another source, or read a query from a file. The SQL editor features syntax coloring and autocompletion. + +![Query Tool - Query Editor tab](../images/query_sql_editor.png) + +To use autocomplete, begin typing your query; when you would like the Query editor to suggest object names or commands that might be next in your query, press the Control+Space key combination. For example, type "*SELECT \* FROM*" (without quotes, but with a trailing space), and then press the Control+Space key combination to select from a popup menu of autocomplete options. + +![Query Tool - Query Editor tab - Autocomplete feature](../images/query_autocomplete.png) + +After entering a query, select the `Execute/Refresh` icon from the toolbar. The complete contents of the SQL editor panel will be sent to the database server for execution. To execute only a section of the code that is displayed in the SQL editor, highlight the text that you want the server to execute, and click the `Execute/Refresh` icon. + +![Query Tool - Query Editor tab - Execute query](../images/query_execute_section.png) + +The message returned by the server when a command executes is displayed on the `Messages` tab. If the command is successful, the `Messages` tab displays execution details. + +![Query Tool - Query Editor - Message tab](../images/query_tool_message.png) + +Options on the `Edit` menu offer functionality that helps with code formatting and commenting: + +- The auto-indent feature will automatically indent text to the same depth as the previous line when you press the Return key. +- Block indent text by selecting two or more lines and pressing the Tab key. +- Implement or remove SQL style or toggle C style comment notation within your code. + +You can also **drag and drop** certain objects from the treeview which can save time in typing long object names. Text containing the object name will be fully qualified with schema. Double quotes will be added if required. For functions and procedures, the function name along with parameter names will be pasted in the Query Tool. + +**The Data Output Panel** + +The `Data Output` panel displays data and statistics generated by the most recently executed query. + +![Query Tool - Data output tab](../images/query_output_data.png) + +The `Data Output` tab displays the result set of the query in a table format. You can: + +- Select and copy from the displayed result set. +- Use the `Execute/Refresh` options to retrieve query execution information and set query execution options. +- Use the `Save results to file` icon to save the content of the `Data Output` tab as a comma-delimited file. +- Edit the data in the result set of a SELECT query if it is updatable. + + + +A result set is updatable if: + +- All columns are either selected directly from a single table, or are not table columns at all (e.g. concatenation of 2 columns). Only columns that are selected directly from the table are editable, other columns are read-only. +- All the primary key columns or OIDs of the table are selected in the result set. + +Any columns that are renamed or selected more than once are also read-only. + +Editable and read-only columns are identified using pencil and lock icons (respectively) in the column headers. + +![Query Tool - Editable and Read-only columns](../images/query_tool_editable_columns.png) + +The psycopg2 driver version should be equal to or above 2.8 for updatable query result sets to work. + +An updatable result set is identical to the [Data Grid](04_editgrid/#data-grid) in View/Edit Data mode, and can be modified in the same way. + +If Auto-commit is off, the data changes are made as part of the ongoing transaction, if no transaction is ongoing a new one is initiated. The data changes are not committed to the database unless the transaction is committed. + +If any errors occur during saving (for example, trying to save NULL into a column with NOT NULL constraint) the data changes are rolled back to an automatically created SAVEPOINT to ensure any previously executed queries in the ongoing transaction are not rolled back. + +All rowsets from previous queries or commands that are displayed in the `Data Output` panel will be discarded when you invoke another query; open another query tool browser tab to keep your previous results available. + +## Explain Panel + +To generate the `Explain` or `Explain Analyze` plan of a query, click on `Explain` or `Explain Analyze` button in the toolbar. + +More options related to `Explain` and `Explain Analyze` can be selected from the drop down on the right side of `Explain Analyze` button in the toolbar. + +![Query Tool - Toolbar Explain button](../images/query_toolbar_explain.png) + +Please note that pgAdmin generates the `Explain [Analyze]` plan in JSON format. + +On successful generation of `Explain` plan, it will create three tabs/panels under the Explain panel. + +- Graphical + +Please note that `EXPLAIN VERBOSE` cannot be displayed graphically. Click on a node icon on the `Graphical` tab to review information about that item; a popup window will display on the right side with the information about the selected object. For information on JIT statistics, triggers and a summary, Click on the button top-right corner; a similar popup window will be displayed when appropriate. + +Use the download button on top left corner of the `Explain` canvas to download the plan as an SVG file. + +!!! Note + Download as SVG is not supported on Internet Explorer. + +![Query Tool - Explain tab - Graphical plan tab](../images/query_output_explain_details.png) + +Note that the query plan that accompanies the `Explain analyze` is available on the `Data Output` tab. + +- Table + +`Table` tab shows the plan details in table format, it generates table format similar to `explain.depsez.com`. Each row of the table represent the data for a `Explain Plan Node`. It may contain the node information, exclusive timing, inclusive timing, actual vs planned rows differences, actual rows, planned rows, loops. + +background color of the exclusive, inclusive, and Rows X columns may vary based on the difference between actual vs planned. + +If percentage of the exclusive/inclusive timings of the total query time is: > 90 - Red color > 50 - Orange (between red and yellow) color > 10 - Yellow color + +If planner mis-estimated number of rows (actual vs planned) by 10 times - Yellow color 100 times - Orange (between Red and Yellow) color 1000 times - Red color + +![Query Tool - Explain tab - Analysis tab](../images/query_explain_analyze_table.png) + +- Statistics + +`Statistics` tab shows two tables: 1. Statistics per Plan Node Type 2. Statistics per Table + +![Query Tool - Explain plan tab - Statistics tab](../images/query_explain_analyze_statistics.png) + +## Messages Panel + +Use the `Messages` tab to view information about the most recently executed query: + +![Query Tool - Messages tab](../images/query_output_error.png) + +If the server returns an error, the error message will be displayed on the `Messages` tab, and the syntax that caused the error will be underlined in the SQL editor. If a query succeeds, the `Messages` tab displays how long the query took to complete and how many rows were retrieved: + +![Query Tool - Messages tabn](../images/query_output_messages.png) + +*Query tool output information* + +## Query History Panel + +Use the `Query History` tab to review activity for the current session: + +![Query Tool - Query History tab](../images/query_output_history.png) + +The Query History tab displays information about recent commands: + +- The date and time that a query was invoked. +- The text of the query. +- The number of rows returned by the query. +- The amount of time it took the server to process the query and return a result set. +- Messages returned by the server (not noted on the `Messages` tab). +- The source of the query (indicated by icons corresponding to the toolbar). + +You can show or hide the queries generated internally by pgAdmin (during 'View/Edit Data' or 'Save Data' operations). + +To erase the content of the `Query History` tab, select `Clear history` from the `Clear` drop-down menu. + +Query History is maintained across sessions for each database on a per-user basis when running in Query Tool mode. In View/Edit Data mode, history is not retained. By default, the last 20 queries are stored for each database. This can be adjusted in config_local.py by overriding the MAX_QUERY_HIST_STORED value. + +## Connection Status + +Use the `Connection status` feature to view the current connection and transaction status by clicking on the status icon in query tool: + +![Query Tool - Connection Status button](../images/query_tool_connection_status.png) + +Change connection +\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* + +User can connect to another server or database from existing open session of query tool. + +- Click on the connection link next to connection status. +- Now click on the *<New Connection>* option from the dropdown. + +Query tool connection options + +- Now select server, database, user, and role to connect and click OK. + +Query tool connection dialog + +- A newly created connection will now get listed in the options. +- To connect, select the newly created connection from the dropdown list. + +## Macros + +Query Tool Macros enable you to execute pre-defined SQL queries with a single key press. Pre-defined queries can contain the placeholder $SELECTION$. Upon macro execution, the placeholder will be replaced with the currently selected text in the Query Editor pane of the Query Tool. + +Query Tool Manage macros + +To create a macro, select the *Manage Macros* option from the *Macros* menu on the *Query Tool*. Select the key you wish to use, enter the name of the macro, and the query, optionally including the selection placeholder, and then click the *Save* button to store the macro. + +Query Tool Manage Macros dialogue + +To clear a macro, select the macro on the *Manage Macros* dialogue, and then click the *Clear* button. + +Query Tool Manage Macros clear the row + +The server will prompt you for confirmation to clear the macro. + +Query Tool Manage Macros Clear row confirmation + +To clear all macros, click on the *Clear* button on left side of the key. The server will prompt you for confirmation to clear all the rows. + +Query Tool Macros Clear All + +To execute a macro, simply select the appropriate shortcut keys, or select it from the *Macros* menu. + +Query Tool Macros Execution diff --git a/product_docs/docs/pem/7.16/pem_online_help/08_toc_pem_developer_tools/03_pem_interpreting_graphical_query.mdx b/product_docs/docs/pem/7.16/pem_online_help/08_toc_pem_developer_tools/03_pem_interpreting_graphical_query.mdx new file mode 100644 index 00000000000..c89fad74c5d --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/08_toc_pem_developer_tools/03_pem_interpreting_graphical_query.mdx @@ -0,0 +1,61 @@ +--- +title: "Interpreting Graphical Query Plans" +--- + + + +The graphical explain plan provides clues that can help you identify the aspects of the selected query that consume the most resources; within the diagram, thicker lines indicate the portions of the query that are expected to take the most processing time. + +To view a graphical interpretation of an executed query, select `Explain` or `Explain Analyze` from the `Execute/Refresh` drop-down menu. Please note that you can use the `Explain Options` pull-aside menu to specify the level of detail displayed for each node. + +![Graphical Explain plan](../images/graphical_explain.png) + +Hover over an icon within the plan to view details for the selected node: + +![Graphical Explain plan - Details](../images/graphical_explain_details.png) + +Each query operator (within the selected query) is represented in the graphical display by an icon. The table below describes the Advanced Server query operators: + +| Icon | Represents | Description | +| ----------------------------------------------------------------------- | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| ![Result set icon](../images/result_set_icon.png) | Result Set | The Result Set icon represents a simple result set in the query plan. Typically, a Result Set operator is used to evaluate a query that does not fetch data from a table. | +| ![Aggregat icon](../images/aggregate_icon.png) | Aggregate | The server creates an Aggregate operator whenever the query invokes an aggregate function (a function that returns a value computed from multiple rows). Aggregate functions include: AVG(), COUNT(), MAX(), MIN(), STDDEV(), SUM(), and VARIANCE(). | +| ![Window aggregate icon](../images/window_aggregate_icon.png) | Window Aggregate | The server may use a Window aggregate operator to implement windowed aggregate functions; a windowed aggregate function is a function that returns a value computed from a set of rows within the input. | +| ![Seek icon](../images/seek_icon.png) | Seek | The server may use a Seek operator in any plan that includes an Index Scan operator. The Seek operator represents a probe into the heap to fetch the tuple that corresponds to an index entry (found by the Index Scan operator). | +| ![Seq scan icon](../images/seq_scan_icon.png) | Seq Scan | The server may use a Seq scan (sequential scan) to read through a table from beginning to end. | +| ![Index scan icon](../images/index_scan_icon.png) | Index Scan | The server may use an Index scan operator to read through a table in the order specified in the index. | +| ![CTE scan icon](../images/cte_scan_icon.png) | CTE Scan | The server may use a CTE Scan operator if the query performs a scan of a common table expression. | +| ![Tuple id scan icon](../images/tuple_id_scan_icon.png) | Tuple ID Scan | The server uses a Tuple ID scan if the query uses the Tuple ID (ctid) as a constraint in a WHERE clause. | +| ![Group icon](../images/group_icon.png) | Group | The server may use a Group operator when the query includes a GROUP BY clause. The operator requires a single input set ordered by the target column(s). | +| ![Sort icon](../images/sort_icon.png) | Sort | The server may use a Sort operator when a query includes an ORDER BY clause to impose an order on a result set. | +| ![Limit icon](../images/limit_icon.png) | Limit | The server may use the Limit operator to limit the size of a result set (when a query includes the LIMIT or OFFSET clause). | +| ![Sub plan icon](../images/subplan_icon.png) | Sub Plan | The server may use a Subplan operator for queries that include subselects. | +| ![Unique icon](../images/unique_icon.png) | Unique | The server may use the Unique operator to remove duplicate values from a result set; the diagram will include a Unique operator if the query includes a DISTINCT clause. | +| ![Hash icon](../images/hash_icon.png) | Hash | The server may use a Hash operator when joining two input sets that are not ordered by the column that controls the join. | +| ![Hash semi join icon](../images/hash_semi_join_icon.png) | Hash Semi-Join | The server may use a Hash Semi-Join operator to evaluate a query that joins two tables, but returns data from only one of those tables. | +| ![Hash anti join icon](../images/hash_anti_join_icon.png) | Hash Anti-Join | The server may use a Hash Anti-Join operator to evaluate a query that includes a NOT IN clause. | +| ![Anti join icon](../images/anti_join_icon.png) | Anti-Join | The server may use an Anti-Join operator to evaluate a query that includes a NOT IN clause. | +| ![Join icon](../images/join_Icon.png) | Join | The server may use a Join operator when joining two input sets that are ordered by the column that controls the join. | +| ![Recursive union icon](../images/recursive_union_icon.png) | Recursive Union | The server may use a Recursive Union operator if the query includes a WITH RECURSIVE clause. | +| ![Set operator icon](../images/set_operator_icon.png) | Set Operator | The server may use a Set operator if the query includes an INTERSECT, INTERSECT ALL, EXCEPT or EXCEPT ALL clause. | +| ![Hash set operator icon](../images/hash_set_operator_icon.png) | Hash Set Operator (Setop) Intersect | The server may use an Intersect Set operator if the query includes an INTERSECT clause. | +| ![Hash setop int all icon](../images/hash_setop_int_all_icon.png) | Hash Set Operator (Setop) Intersect All | The server may use an Intersect Set operator if the query includes an INTERSECT ALL. | +| ![Hash setop except icon](../images/hash_setop_except_icon.png) | Hash Set Operator (Setop) Except | The server may use an Except Set operator if the query includes an EXCEPT. | +| ![Hash setop except all icon](../images/hash_setop_except_all_icon.png) | Hash Set Operator (Setop) Except All | The server may use an Except All Set operator if the query includes an EXCEPT ALL clause. | +| ![Materialize icon](../images/materialize_icon.png) | Materialize | The server may choose to use a Materialize operator for a subselect operation (a nested query). | +| ![Append icon](../images/append_icon.png) | Append | The server may use an Append operator to implement queries that contain a UNION clause. | +| ![Nested loop icon](../images/nested_loop_icon.png) | Nested Loop | The server may use a Nested Loop operator to perform a join between two tables. When implementing a nested loop, the server searches for rows from the inner table that match the corresponding row in the outer table. | +| ![Merge join icon](../images/merge_join_icon.png) | Merge Join | The server may use a Merge Join operator to join two tables. A Merge Join requires two sets of inputs, where each set is ordered by the column used for the comparison. | +| ![Merge semi join icon](../images/merge_semi_join_icon.png) | Merge Semi-Join | The server may use a Merge Semi-Join operator to evaluate a query that joins two tables, but returns data from only one of those tables. | +| ![Merge anti join icon](../images/merge_anti_join_icon.png) | Merge Anti-Join | The server may use a Merge Anti-Join operator to evaluate a query that includes a NOT IN clause. | +| ![nested loop semi join icon](../images/nested_loop_semi_join_icon.png) | Nested Loop Semi-Join | The server may use a Nested Semi-Join operator to evaluate a query that joins two tables, but returns data fro m only one of those tables. | +| ![Nested loop anti join icon](../images/nested_loop_anti_join_icon.png) | Nested Loop Anti-Join | The server may use a Nested Anti-Join operator to evaluate a query that includes a NOT IN clause. | +| ![Bitmap index icon](../images/bitmap_index_icon.png) | Bitmap Index | The server may use a Bitmap Index operator when locating a subset of rows in an indexed table. | +| ![Bitmap heap icon](../images/bitmap_heap_icon.png) | Bitmap Heap | The server may use a Bitmap Heap operator when the query returns a subset of rows from an indexed table. | + +While you cannot directly specify the execution plan of a query, you can use indexes, configuration parameters and optimizer hints to direct Advanced Server as it selects from the query plans presented by the server. See the following resources for more information about query optimization: + +- For more information about interpreting and understanding a query plan, see Using EXPLAIN, in the PostgreSQL documentation. +- For information about using PEM's Index Advisor, see the EDB Postgres Advanced Server Guide, available from the EnterpriseDB website at [www.enterprisedb.com](http://www.enterprisedb.com). +- For information about using configuration parameters to influence query plans, see Query Planning, in the PostgreSQL documentation. +- For more information about using Oracle-compatible optimizer hints, see the EDB Postgres Advanced Server Oracle Compatibility Developer's Guide, available from the EnterpriseDB website at [www.enterprisedb.com](http://www.enterprisedb.com). diff --git a/product_docs/docs/pem/7.16/pem_online_help/08_toc_pem_developer_tools/04_editgrid/01_viewdata_filter.mdx b/product_docs/docs/pem/7.16/pem_online_help/08_toc_pem_developer_tools/04_editgrid/01_viewdata_filter.mdx new file mode 100644 index 00000000000..b20db8a7891 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/08_toc_pem_developer_tools/04_editgrid/01_viewdata_filter.mdx @@ -0,0 +1,23 @@ +--- +title: "View/Edit Data Filter" +--- + + + +You can access `Data Filter dialog` by clicking on `Filtered Rows` toolbar button visible on the Browser panel or by selecting *View/Edit Data -> Filtered Rows* context menu option. + +This allows you to specify an SQL Filter to limit the data displayed in the edit grid window: + +![View Data filter dialog](../../images/viewdata_filter_dialog.png) + +
+ +
+ +Note + +
+ +Use SHIFT + ENTER keys to apply filter. + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/08_toc_pem_developer_tools/04_editgrid/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/08_toc_pem_developer_tools/04_editgrid/index.mdx new file mode 100644 index 00000000000..8df77395c4a --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/08_toc_pem_developer_tools/04_editgrid/index.mdx @@ -0,0 +1,109 @@ +--- +title: "Reviewing and Editing Data" +--- + + + +To review or modify data, right click on a table or view name in the `Browser` tree control. When the context menu opens, use the `View/Edit Data` menu to specify the number of rows you would like to display in the editor panel. + +![Edit grid window](../../images/editgrid.png) + +To modify the content of a table, each row in the table must be uniquely identifiable. If the table definition does not include an OID or a primary key, the displayed data is read only. Note that views cannot be edited; updatable views (using rules) are not supported. + +The editor features a toolbar that allows quick access to frequently used options, and a work environment divided into two panels: + +- The upper panel displays the SQL command that was used to select the content displayed in the lower panel. +- The lower panel (the Data Grid) displays the data selected from the table or view. + +**The View/Edit Data Toolbar** + +The toolbar includes context-sensitive icons that provide shortcuts to frequently performed tasks. + +![Edit grid toolbar](../../images/editgrid_toolbar.png) + +Hover over an icon to display a tooltip that describes the icon's functionality. + +| Icon | Behavior | Shortcut | +| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | +| `Save` | Use the `Save` icon to save your changes to the currently displayed table contents. | | +| `Find` | Use options on the `Find` menu to access Search and Replace functionality or to Jump to another line. | Ctrl/Cmd +F | +| `Copy` | Click the `Copy` icon to copy the currently selected data. | Ctrl+C | +| `Paste Row` | Click the `Paste Row` icon to paste the content that is currently on the clipboard. | | +| `Delete Row` | Use the `Delete Row` icon to delete all the selected rows from the output panel. | | +| `Filter` | Click the `Filter` icon to open a dialog that allows you to write and apply a filter for the content currently displayed in the output panel. Click the down arrow to open the `Filter` drop-down menu and select from pre-defined options:


Use options on the `Filter` menu to quick-sort or quick-filter the data set:
- Filter: This option opens a dialog that allows you to define a filter. A filter is a condition that is supplied to an arbitrary WHERE clause that restricts the result set.
- Remove Filter: This option removes all selection / exclusion filter conditions.
- By Selection: This option refreshes the data set and displays only those rows whose column value matches the value in the cell currently selected.
- Exclude Selection: This option refreshes the data set and excludes those rows whose column value matches the value in the cell currently selected.
| | +| `No limit` | Use the `No limit` drop-down listbox to specify how many rows to display in the output panel. Select from: `No limit` (the default), `1000 rows`, `500 rows`, or `100 rows`. | | +| `Execute/Refresh` | Click the `Execute/Refresh` icon to execute the SQL command that is displayed in the top panel. If you have not saved modifications to the content displayed in the data grid, you will be prompted to confirm the execution. To preserve your changes before refreshing the content, click the `Save` toolbar button before executing the refresh. | F5 | +| `Stop` | Click the `Stop` icon to cancel the execution of the currently running query. | | +| `Clear History` | Use the `Clear History` drop-down menu to erase the contents of the `History` tab. | | +| `Download as CSV` | Click the `Download as CSV` icon to download the result set of the current query to a comma-separated list. You can control the CSV settings through `Preferences -> SQL Editor -> CSV output` dialogue. | F8 | + +**The Data Grid** + +The top row of the data grid displays the name of each column, the data type, and if applicable, the number of characters allowed. A column that is part of the primary key will additionally be marked with \[PK]. + + + +To modify the displayed data: + +- To change a numeric value within the grid, double-click the value to select the field. Modify the content in the square in which it is displayed. +- To change a non-numeric value within the grid, double-click the content to access the edit bubble. After modifying the contentof the edit bubble, click the `Save` button to display your changes in the data grid, or `Cancel` to exit the edit bubble without saving. + +To enter a newline character, click Ctrl-Enter or Shift-Enter. Newline formatting is only displayed when the field content is accessed via an edit bubble. + +To add a new row to the table, enter data into the last (unnumbered) row of the table. As soon as you store the data, the row is assigned a row number, and a fresh empty line is added to the data grid. + +To write a SQL NULL to the table, simply leave the field empty. When you store the new row, the will server fill in the default value for that column. If you store a change to an existing row, the value NULL will explicitly be written. + +To write an empty string to the table, enter the special string '' (two single quotes) in the field. If you want to write a string containing solely two single quotes to the table, you need to escape these quotes, by typing '' + +To delete a row, press the `Delete` toolbar button. A popup will open, asking you to confirm the deletion. + +To commit the changes to the server, select the `Save` toolbar button. Modifications to a row are written to the server automatically when you select a different row. + +**Geometry Data Viewer** + +If PostGIS is installed, you can view GIS objects in a map by selecting row(s) and clicking the 'View Geometry' button in the column. If no rows are selected, the entire data set will be rendered: + +![Geometry Viewer button](../../images/geometry_viewer.png) + +You can adjust the layout by dragging the title of the panel. To view the properties of the geometries directly in map, just click the specific geometry: + +![Geometry Viewer - Property Table](../../images/geometry_viewer_property_table.png) + +Notes: + +- `Supported data types:` The Geometry Viewer supports 2D and 3DM geometries in EWKB format including Point, LineString, Polygon MultiPoint, MultiLineString, MultiPolygon and GeometryCollection. +- `SRIDs:` If there are geometries with different SRIDs in the same column, the viewer will render geometries with the same SRID in the map. If SRID=4326 the OSM tile layer will be added into the map. +- `Data size:` For performance reasons, the viewer will render no more than 100000 geometries, totaling up to 20MB. +- `Internet access:` An internet connection is required for the Geometry Viewer to function correctly. + +**Sort/Filter options dialog** + +You can access `Sort/Filter options dialog` by clicking on Sort/Filter button. This allows you to specify an SQL Filter to limit the data displayed and data sorting options in the edit grid window: + +![Edit grid filter dialog window](../../images/editgrid_filter_dialog.png) + +- Use `SQL Filter` to provide SQL filtering criteria. These will be added to the "WHERE" clause of the query used to retrieve the data. For example, you might enter: + +```sql +id > 25 AND created > '2018-01-01' +``` + +- Use `Data Sorting` to sort the data in the output grid + +To add new column(s) in data sorting grid, click on the \[+] icon. + +- Use the drop-down `Column` to select the column you want to sort. +- Use the drop-down `Order` to select the sort order for the column. + +To delete a row from the grid, click the trash icon. + +- Click the `Help` button (?) to access online help. +- Click the `Ok` button to save work. +- Click the `Close` button to discard current changes and close the dialog. + +
+ +viewdata_filter + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/08_toc_pem_developer_tools/05_schema_diff.mdx b/product_docs/docs/pem/7.16/pem_online_help/08_toc_pem_developer_tools/05_schema_diff.mdx new file mode 100644 index 00000000000..07888d4d2b7 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/08_toc_pem_developer_tools/05_schema_diff.mdx @@ -0,0 +1,83 @@ +--- +title: "Schema Diff" +--- + + + +**Schema Diff** is a feature that allows you to compare objects between two database or two schemas. Use the `Tools` menu to access Schema Diff. + +The Schema Diff feature allows you to: + +> - Compare and synchronize the database objects (from source to target). +> - Visualize the differences between database objects. +> - List the differences in SQL statement for target database objects. +> - Generate synchronization scripts. + +!!! Note + > - The source and target database servers must be of the same major version. + > - If you compare two **schemas** then dependencies won't be resolved. + +Click on *Schema Diff* under the *Tools* menu to open a selection panel. To compare **databases** choose the source and target servers, and databases. To compare **schemas** choose the source and target servers, databases, and schemas. After selecting the objects, click on the *Compare* button. + +You can open multiple copies of `Schema Diff` in individual tabs simultaneously. To close a copy of Schema Diff, click the \*X\* in the upper-right hand corner of the tab bar. You can rename the panel title by right-clicking and select the "Rename Panel" option. + +schema diff dialog + +Use the [Preferences](../03_toc_pem_client/04_preferences/#preferences) dialog to specify following: + +> - *Schema Diff* should open in a new browser tab. Set *Open in new browser tab* option to true. +> - *Schema Diff* should ignore the whitespaces while comparing string objects. Set *Ignore whitespaces* option to true. +> - *Schema Diff* should ignore the owner while comparing objects. Set *Ignore owner* option to true. + +The `Schema Diff` panel is divided into two panels; an Object Comparison panel and a DDL Comparison panel. + +## The Schema Diff Object Comparison Panel + +In the object comparison panel, you can select the source and target servers of the same major version, and databases to be compared. You can select any server listed under the browser tree whether it is connected or disconnected. If you select a server that is not connected then it will prompt you for the password before using the server. + +Next, select the databases that will be compared. The databases can be the same or different (and within the same server or from different servers). + +Schema diff compare button + +After you select servers and databases, click on the *Compare* button to obtain the `Comparison Result`. + +Schema diff comparison results + +Use the drop-down lists of Database Objects to view the DDL statements. + +In the upper-right hand corner of the object comparison panel is a *Filter* option that you can use to filter the database objects based on the following comparison criteria: + +> - Identical – If the object is found in both databases with the same SQL statement, then the comparison result is identical. +> - Different – If the object is found in both databases but have different SQL statements, then the comparison result is different. +> - Source Only – If the object is found in source database only and not in target database, then the comparison result is source only. +> - Target Only – If the object is found in target database only and not in source database, then the comparison result is target only. + +Schema diff filter option + +Click on any of the database objects in the object comparison panel to display the DDL Statements of that object in the DDL Comparison panel. + +## Schema Diff DDL Comparison Panel + +The `DDL Comparison` panel displays three columns: + +- The first column displays the DDL statement of the object from the source database. +- The second column displays the DDL statement of the object from the target database. +- The third column displays the difference in the SQL statement of the target database object. + +Schema diff DDL comparison + +You can review the DDL statements of all the database objects to check for the differences in the SQL statements. + +Also, you can generate the SQL script of the differences found in the target database object based on the SQL statement of the source database object. To generate the script, select the checkboxes of the database objects in the object comparison panel and then click on the *Generate Script* button in the upper-right hand corner of the object comparison panel. + +Schema diff generate script + +Select the database objects and click on the *Generate Script* button to open the `Query Tool` in a new tab, with the difference in the SQL statement displayed in the `Query Editor`. + +If you have clicked on the database object to check the difference generated in the `DDL Comparison` Panel, and you have not selected the checkbox of the database object, PEM will open the `Query Tool` in a new tab, with the differences in the SQL statements displayed in the `Query Editor`. + +You can also use the `Copy` button to copy the difference generated in the `DDL Comparison` panel. + +Schema diff generate script query editor + +Apply the SQL Statement in the target database to synchronize the databases. diff --git a/product_docs/docs/pem/7.16/pem_online_help/08_toc_pem_developer_tools/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/08_toc_pem_developer_tools/index.mdx new file mode 100644 index 00000000000..9e463dd7a79 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/08_toc_pem_developer_tools/index.mdx @@ -0,0 +1,15 @@ +--- +title: "Developer Tools" +--- + + + +The PEM client features powerful developer tools that you can use to execute and analyze complex SQL commands, manage data, and debug PL/SQL code. + +Contents: + +
+ +debugger query_tool pem_interpreting_graphical_query editgrid schema_diff + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/09_toc_pem_configure_pgbouncer/01_pem_pgbouncer_server_agent_connection.mdx b/product_docs/docs/pem/7.16/pem_online_help/09_toc_pem_configure_pgbouncer/01_pem_pgbouncer_server_agent_connection.mdx new file mode 100644 index 00000000000..d647f1a0f77 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/09_toc_pem_configure_pgbouncer/01_pem_pgbouncer_server_agent_connection.mdx @@ -0,0 +1,15 @@ +--- +title: "Connecting PEM to pgBouncer" +--- + + + +Each PEM agent connects to the PEM database server using the SSL certificates for each individual user. For example, an agent with ID#1 connects to the PEM database server using the agent1 user. + +![PEM without pgbouncer](../images/pem_pgbouncer_without.png) + +Prior to PEM version 7.5, the following limitations did not allow use of the connection pooler between the PEM server and PEM agent: \* The PEM agent uses an SSL Certificate to connect the PEM database server. \* It uses an individual user identifier when connecting to the PEM database server. EnterpriseDB has modified the PEM agent to allow the agent to use a common database user (instead of the dedicated agent users) to connect the PEM database server. + +![PEM with pgbouncer](../images/pem_pgbouncer_with.png) + +We recommend using pgBouncer versions equal to or later than version 1.9.0 as the connection pooler. Since versions 1.9.0 or later support cert authentication; PEM Agents can connect to pgBouncer using SSL certificates. diff --git a/product_docs/docs/pem/7.16/pem_online_help/09_toc_pem_configure_pgbouncer/02_pem_pgbouncer_preparing_dbserver.mdx b/product_docs/docs/pem/7.16/pem_online_help/09_toc_pem_configure_pgbouncer/02_pem_pgbouncer_preparing_dbserver.mdx new file mode 100644 index 00000000000..1aa72de0703 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/09_toc_pem_configure_pgbouncer/02_pem_pgbouncer_preparing_dbserver.mdx @@ -0,0 +1,65 @@ +--- +title: "Preparing the PEM Server for pgBouncer Connections" +--- + + + +You must configure the PEM database server to accept connections from pgBouncer; the following example demonstrates the steps required to prepare the PEM database server. + +1. Create a dedicated user named pgbouncer on the PEM database server. For example: + + ``` + pem=# CREATE USER pgbouncer PASSWORD 'ANY_PASSWORD' LOGIN; + CREATE ROLE + ``` + +2. Create a user named pem_admin1 (a non-super user) with pem_admin and pem_agent_pool role membership on the PEM database server. For example: + + ``` + pem=# CREATE USER pem_admin1 PASSWORD 'ANY_PASSWORD' LOGIN CREATEROLE; + CREATE ROLE + pem=# GRANT pem_admin, pem_agent_pool TO pem_admin1; + GRANT ROLE + ``` + +3. Grant CONNECT privilege to the pgbouncer user on the pem database. For example: + + ``` + pem=# GRANT CONNECT ON DATABASE pem TO pgbouncer ;GRANT USAGE ON SCHEMA pem TO pgbouncer; + GRANT + ``` + +4. Grant USAGE privilege to the pgbouncer user for the pem schema on the pem database. For example: + + ``` + pem=# GRANT USAGE ON SCHEMA pem TO pgbouncer; + GRANT + ``` + +5. Grant EXECUTE privilege to the pgbouncer user on the pem.get_agent_pool_auth(text) function in the pem database. For example: + + ``` + pem=# GRANT EXECUTE ON FUNCTION pem.get_agent_pool_auth(text) TO pgbouncer; + GRANT + ``` + +6. Use the pem.create_proxy_agent_user(varchar) function to create a user named pem_agent_user1 on the PEM database server. The function will create a user with the same name with a random password, and grant `pem_agent` and `pem_agent_pool` roles to the user. This allows pgBouncer to use a proxy user on behalf of the agent. For example: + + ``` + pem=# SELECT pem.create_proxy_agent_user('pem_agent_user1'); + create_proxy_agent_user + ------------------------- + (1 row) + ``` + +7. Add the following entries to the start of the `pg_hba.conf` file of the PEM database server; this will allow pgBouncer user to connect to the pem database using the md5 authentication method. For example: + + ``` + # Allow the PEM agent proxy user (used by + # pgbouncer) to connect the to PEM server using + # md5 + + local pem pgbouncer,pem_admin1 md5 + ``` + +After configuring the PEM server, you should configure pgBouncer. diff --git a/product_docs/docs/pem/7.16/pem_online_help/09_toc_pem_configure_pgbouncer/03_pem_pgbouncer_configuring_pgbouncer.mdx b/product_docs/docs/pem/7.16/pem_online_help/09_toc_pem_configure_pgbouncer/03_pem_pgbouncer_configuring_pgbouncer.mdx new file mode 100644 index 00000000000..82368180471 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/09_toc_pem_configure_pgbouncer/03_pem_pgbouncer_configuring_pgbouncer.mdx @@ -0,0 +1,108 @@ +--- +title: "Configuring pgBouncer" +--- + + + +You must configure pgBouncer to work with the PEM database server. In our example, we will run pgBouncer as the enterprisedb system user. The following steps outline the process of configuring pgBouncer (version >= 1.9). + +1. Open a terminal window and navigate into the pgBouncer directory. + +2. Change the owner of the etc directory for pgBouncer (where pgbouncer.ini resides) to enterprisedb, and change the directory permissions to 0700. For example: + + ``` + $ chown enterprisedb:enterprisedb /etc/edb/pgbouncer1.9 + $ chmod 0700 /etc/edb/pgbouncer1.9 + ``` + +3. Change the contents of the pgbouncer.ini or edb-pgbouncer.ini file as follows: + + ``` + [databases] + ;; Change the pool_size according to maximum connections allowed + ;; to the PEM database server as required. + ;; 'auth_user' will be used for authenticate the db user (proxy + ;; agent user in our case) + pem = port=5444 host=/tmp dbname=pem auth_user=pgbouncer pool_size=80 pool_mode=transaction + * = port=5444 host=/tmp dbname=pem auth_user=pgbouncer pool_size=10 + [pgbouncer] + logfile = /var/log/edb/pgbouncer1.9/edb-pgbouncer-1.9.log + pidfile = /var/run/edb/pgbouncer1.9/edb-pgbouncer-1.9.pid + listen_addr = * + ;; Agent needs to use this port to connect the pem database now + listen_port = 6432 + ;; Require to support for the SSL Certificate authentications + ;; for PEM Agents + client_tls_sslmode = require + ;; These are the root.crt, server.key, server.crt files present + ;; in the present under the data directory of the PEM database + ;; server, used by the PEM Agents for connections. + client_tls_ca_file = /var/lib/edb/as11/data/root.crt + client_tls_key_file = /var/lib/edb/as11/data/server.key + client_tls_cert_file = /var/lib/edb/as11/data/server.crt + ;; Use hba file for client connections + auth_type = hba + ;; Authentication file, Reference: + ;; https://pgbouncer.github.io/config.html#auth_file + auth_file = /etc/edb/pgbouncer1.9/userlist.txt + ;; HBA file + auth_hba_file = /etc/edb/pgbouncer1.9/hba_file + ;; Use pem.get_agent_pool_auth(TEXT) function to authenticate + ;; the db user (used as a proxy agent user). + auth_query = SELECT * FROM pem.get_agent_pool_auth($1) + ;; DB User for administration of the pgbouncer + admin_users = pem_admin1 + ;; DB User for collecting the statistics of pgbouncer + stats_users = pem_admin1 + server_reset_query = DISCARD ALL + ;; Change based on the number of agents installed/required + max_client_conn = 500 + ;; Close server connection if its not been used in this time. + ;; Allows to clean unnecessary connections from pool after peak. + server_idle_timeout = 60 + ``` + +4. Use the following command to create and update the /etc/edb/pgbouncer1.9/userlist.txt authentication file for pgBouncer: + + ``` + pem=# COPY ( + SELECT 'pgbouncer'::TEXT, 'pgbouncer_password' + UNION ALL + SELECT 'pem_admin1'::TEXT, 'pem_admin1_password' + ) TO '/etc/edb/pgbouncer1.9/userlist.txt' + WITH (FORMAT CSV, DELIMITER ' ', FORCE_QUOTE *); + COPY 2 + ``` + +> NOTE: A super user cannot invoke the PEM authentication query function pem.get_proxy_auth(text). If the pem_admin user is a super user, you must add the password to the authentication file, which is enterprisedb in the above example. + +1. Create an HBA file (/etc/edb/pgbouncer1.9/hba_file) for pgBouncer that contains the following content: + + ``` + # Use authentication method md5 for the local connections to + # connect pem database & pgbouncer (virtual) database. + local pgbouncer all md5 + + # Use authentication method md5 for the remote connections to + # connect to pgbouncer (virtual database) using enterprisedb + # user. + host pgbouncer,pem pem_admin1 0.0.0.0/0 md5 + # Use authentication method cert for the TCP/IP connections to + # connect the pem database using pem_agent_user1 + hostssl pem pem_agent_user1 0.0.0.0/0 cert + ``` + +2. Change the owner of the HBA file (/etc/edb/pgbouncer1.9/hba_file) to enterprisedb, and change the directory permissions to 0600. For example: + + ``` + $ chown enterprisedb:enterprisedb /etc/edb/pgbouncer1.9/hba_file + $ chmod 0600 /etc/edb/pgbouncer1.9/hba_file + ``` + +3. Enable the pgBouncer service, and start the service. For example: + + ``` + $ systemctl enable edb-pgbouncer-1.9 + Created symlink from /etc/systemd/system/multi-user.target.wants/edb-pgbouncer-1.9.service to /usr/lib/systemd/system/edb-pgbouncer-1.9.service. + $ systemctl start edb-pgbouncer-1.9 + ``` diff --git a/product_docs/docs/pem/7.16/pem_online_help/09_toc_pem_configure_pgbouncer/04_pem_pgbouncer_configuring_pem_agent.mdx b/product_docs/docs/pem/7.16/pem_online_help/09_toc_pem_configure_pgbouncer/04_pem_pgbouncer_configuring_pem_agent.mdx new file mode 100644 index 00000000000..ff04b3815a9 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/09_toc_pem_configure_pgbouncer/04_pem_pgbouncer_configuring_pem_agent.mdx @@ -0,0 +1,88 @@ +--- +title: "Configuring the PEM Agent to use pgBouncer" +--- + + + +You can use an RPM package to install a PEM Agent; for detailed installation information, please see the PEM Installation Guide, available from the [EnterpriseDB website](https://www.enterprisedb.com/resources/product-documentation) + +Please note that PEM Agent which is responsible for sending SNMP notifications should not be configured with pgBouncer. For Example - If default PEM Agent installed along with PEM Server is used for SNMP notifications, then it should not be configured with pgBouncer. + +## Configuring a New PEM Agent (installed using an RPM) + +After using an RPM package to install the PEM agent, you will need to configure it to work it against a particular PEM database server. Use the following command: + +``` +$ PGSSLMODE=require PEM_SERVER_PASSWORD=pem_admin1_password /usr/edb/pem/agent/bin/pemworker --register-agent --pem-server 172.16.254.22 --pem-port 6432 --pem-user pem_admin1 --pem-agent-user pem_agent_user1 --display-name *Agent_Name* +Postgres Enterprise Manager Agent registered successfully! +``` + +In above command, the command line argument --pem-agent-user instructs the agent to create an SSL certificate and key pair for the pem_agent_user1 database user in /root/.pem directory. For example: + +``` +/root/.pem/pem_agent_user1.crt +/root/.pem/pem_agent_user1.key +``` + +They will be used by the PEM agent to connect to the PEM database server as pem_agent_user1. It will also create /usr/edb/pem/agent/etc/agent.cfg. + +You will find a line mentioning the agent-user to be used in the agent.cfg configuration file. For example: + +``` +$ cat /usr/edb/pem/agent/etc/agent.cfg +[PEM/agent] +pem_host=172.16.254.22 +pem_port=6432 +agent_id=12 +agent_user=pem_agent_user1 +agent_ssl_key=/root/.pem/pem_agent_user1.key +agent_ssl_crt=/root/.pem/pem_agent_user1.crt +log_level=warning +log_location=/var/log/pem/worker.log +agent_log_location=/var/log/pem/agent.log +long_wait=30 +short_wait=10 +alert_threads=0 +enable_smtp=false +enable_snmp=false +enable_webhook=false +max_webhook_retries=3 +allow_server_restart=true +max_connections=0 +connect_timeout=-1 +connection_lifetime=0 +allow_batch_probes=false +heartbeat_connection=false +``` + +## Configuring an Existing PEM Agent (installed using an RPM) + +If you are using an existing PEM agent, you can copy the SSL certificate and key files to the target machine, and reuse the files. You will need to modify the files, adding a new parameter and replacing some parameters in the existing `agent.cfg` file. + +Add a line for agent_user to be used for the agent. For example: + +``` +agent_user=pem_agent_user1 +``` + +Update the port to specify the pgBouncer port. For example: + +``` +pem_port=6432 +``` + +Update the certificate and key path locations. For example: + +``` +agent_ssl_key=/root/.pem/pem_agent_user1.key +agent_ssl_crt=/root/.pem/pem_agent_user1.crt +``` + +Please note: as an alternative, you can run the agent self registration, but that will create a new agent id. If you do run the agent self-registration, you must replace the new agent id with existing id, and disable the entry for the new agent id in the pem.agent table. For example: + +``` +pem=# UPDATE pem.agent SET active = false WHERE id = *new_agent_id*; +UPDATE 1 +``` + +Please keep a backup of the existing SSL certificate, key file, and agent configuration file. diff --git a/product_docs/docs/pem/7.16/pem_online_help/09_toc_pem_configure_pgbouncer/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/09_toc_pem_configure_pgbouncer/index.mdx new file mode 100644 index 00000000000..270c06d0562 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/09_toc_pem_configure_pgbouncer/index.mdx @@ -0,0 +1,15 @@ +--- +title: "Configuring pgBouncer for use with PEM Agents" +--- + + + +pgBouncer is a lightweight connection pooler for Postgres. You can use pgBouncer to limit the number of connections from the PEM Agent towards the Postgres Enterprise Manager (PEM) server on a non-Windows machine. + +Contents: + +
+ +pem_pgbouncer_server_agent_connection pem_pgbouncer_preparing_dbserver pem_pgbouncer_configuring_pgbouncer pem_pgbouncer_configuring_pem_agent + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/10_pgagent/01_using_pgagent.mdx b/product_docs/docs/pem/7.16/pem_online_help/10_pgagent/01_using_pgagent.mdx new file mode 100644 index 00000000000..9fb69ad8a21 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/10_pgagent/01_using_pgagent.mdx @@ -0,0 +1,21 @@ +--- +title: "Using pgAgent" +--- + + + +pgAgent is a scheduling agent that runs and manages jobs; each job consists of one or more steps and schedules. If two or more jobs are scheduled to execute concurrently, pgAgent will execute the jobs in parallel (each with its own thread). + +A step may be a series of SQL statements or an operating system batch/shell script. Each step in a given job is executed when the previous step completes, in alphanumeric order by name. Switches on the `pgAgent Job` dialog (accessed through the `Properties` context menu) allow you to modify a job, enabling or disabling individual steps as needed. + +Each job is executed according to one or more schedules. Each time the job or any of its schedules are altered, the next runtime of the job is re-calculated. Each instance of pgAgent periodically polls the database for jobs with the next runtime value in the past. By polling at least once every minute, all jobs will normally start within one minute of the specified start time. If no pgAgent instance is running at the next runtime of a job, it will run as soon as pgAgent is next started, following which it will return to the normal schedule. + +When you highlight the name of a defined job in the browser tree control, the `Properties` tab of the main PEM window will display details about the job, and the `Statistics` tab will display details about the job's execution. + +## Security concerns + +pgAgent is a very powerful tool, but does have some security considerations that you should be aware of: + +**Database password** - `DO NOT` be tempted to include a password in the pgAgent connection string - on Unix systems it may be visible to all users in 'ps' output, and on Windows systems it will be stored in the registry in plain text. Instead, use a libpq `~/.pgpass` file to store the passwords for every database that pgAgent must access. Details of this technique may be found in the [PostgreSQL documentation on .pgpass file](http://www.postgresql.org/docs/current/static/libpq-pgpass.html). + +**System/database access** - all jobs run by pgAgent will run with the security privileges of the pgAgent user. SQL steps will run as the user that pgAgent connects to the database as, and batch/shell scripts will run as the operating system user that the pgAgent service or daemon is running under. Because of this, it is essential to maintain control over the users that are able to create and modify jobs. By default, only the user that created the pgAgent database objects will be able to do this - this will normally be the PostgreSQL superuser. diff --git a/product_docs/docs/pem/7.16/pem_online_help/10_pgagent/02_pgagent_install.mdx b/product_docs/docs/pem/7.16/pem_online_help/10_pgagent/02_pgagent_install.mdx new file mode 100644 index 00000000000..89f85b3278e --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/10_pgagent/02_pgagent_install.mdx @@ -0,0 +1,99 @@ +--- +title: "Installing pgAgent" +--- + + + +pgAgent runs as a daemon on Unix systems, and a service on Windows systems. In most cases it will run on the database server itself - for this reason, pgAgent is not automatically configured when PEM is installed. In some cases however, it may be preferable to run pgAgent on multiple systems, against the same database; individual jobs may be targeted at a particular host, or left for execution by any host. Locking prevents execution of the same instance of a job by multiple hosts. + +## Database setup + +Before using PEM to manage pgAgent, you must create the pgAgent extension in the maintenance database registered with PEM. To install pgAgent on a PostgreSQL host, connect to the `postgres` database, and navigate through the `Tools` menu to open the Query tool. For server versions 9.1 or later, and pgAgent 3.4.0 or later, enter the following command in the query window, and click the `Execute` icon: + +``` +CREATE EXTENSION pgagent; +``` + +This command will create a number of tables and other objects in a schema called 'pgagent'. + +The database must also have the pl/pgsql procedural language installed - use the PostgreSQL `CREATE LANGUAGE` command to install pl/pgsql if necessary. To install pl/pgsql, enter the following command in the query window, and click the `Execute` icon: + +``` +CREATE LANGUAGE plpgsql; +``` + +## Daemon installation on Unix + +
+ +
+ +Note + +
+ +pgAgent is available in Debian/Ubuntu (DEB) and Redhat/Fedora (RPM) packages for Linux users, as well as source code. See the [pgAdmin Website](https://www.pgadmin.org/download/). for more information. + +
+ +To install the pgAgent daemon on a Unix system, you will normally need to have root privileges to modify the system startup scripts. Modifying system startup scripts is quite system-specific so you should consult your system documentation for further information. + +The program itself takes few command line options, most of which are only needed for debugging or specialised configurations: + +``` +Usage: + /path/to/pgagent [options] + + +options: + -f run in the foreground (do not detach from the terminal) + -t + -r =10, default 30)> + -s + -l +``` + +The connection string is a standard PostgreSQL libpq connection string (see the [PostgreSQL documentation on the connection string](http://www.postgresql.org/docs/current/static/libpq.html#libpq-connect) for further details). For example, the following command line will run pgAgent against a server listening on the localhost, using a database called 'postgres', connecting as the user 'postgres': + +``` +/path/to/pgagent hostaddr=127.0.0.1 dbname=postgres user=postgres +``` + +## Service installation on Windows + +
+ +
+ +Note + +
+ +pgAgent is available in a pre-built installer if you use [EnterpriseDB's PostgreSQL Installers](https://www.enterprisedb.com/downloads/postgres-postgresql-downloads). Use the StackBuilder application to download and install it. If installed in this way, the service will automatically be created and the instructions below can be ignored. + +
+ +pgAgent can install itself as a service on Windows systems. The command line options available are similar to those on Unix systems, but include an additional parameter to tell the service what to do: + +``` +Usage: + pgAgent REMOVE + pgAgent INSTALL [options] + pgAgent DEBUG [options] + + options: + -u + -p + -d + -t + -r =10, default 30)> + -l +``` + +The service may be quite simply installed from the command line as follows (adjust the path as required): + +``` +"C:\Program Files\pgAgent\bin\pgAgent" INSTALL pgAgent -u postgres -p secret hostaddr=127.0.0.1 dbname=postgres user=postgres +``` + +You can then start the service at the command line using `net start pgAgent`, or from the `Services` control panel applet. Any logging output or errors will be reported in the Application event log. The DEBUG mode may be used to run pgAgent from a command prompt. When run this way, log messages will output to the command window. diff --git a/product_docs/docs/pem/7.16/pem_online_help/10_pgagent/03_pgagent_jobs.mdx b/product_docs/docs/pem/7.16/pem_online_help/10_pgagent/03_pgagent_jobs.mdx new file mode 100644 index 00000000000..ad4a501a1e4 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/10_pgagent/03_pgagent_jobs.mdx @@ -0,0 +1,136 @@ +--- +title: "Creating a pgAgent Job" +--- + + + +pgAgent is a scheduling agent that runs and manages jobs; each job consists of steps and schedules. + +To create or manage a job, use the Browser tree control to browse to the server on which the pgAgent database objects were created. The tree control will display a `pgAgent Jobs` node, under which currently defined jobs are displayed. To add a new job, right click on the `pgAgent Jobs` node, and select `Create pgAgent Job...` from the context menu. + +When the pgAgent dialog opens, use the tabs on the `pgAgent Job` dialog to define the steps and schedule that make up a pgAgent job. + +![Create pgAgent Job dialog - General tab](../images/pgagent_general.png) + +Use the fields on the `General` tab to provide general information about a job: + +> - Provide a name for the job in the `Name` field. +> +> - Move the `Enabled` switch to the `Yes` position to enable a job, or `No` to disable a job. +> +> - Use the `Job Class` drop-down to select a class (for job categorization). +> +> - Use the `Host Agent` field to specify the name of a machine that is running pgAgent to indicate that only that machine may execute the job. Leave the field blank to specify that any machine may perform the job. +> +> !!! Note +> It is not always obvious what value to specify for the Host Agent in order to target a job step to a specific machine. With pgAgent running on the required machines and connected to the scheduler database, you can use the following query to view the hostnames as reported by each agent: +> +> ``` +> SELECT jagstation FROM pgagent.pga_jobagent +> ``` +> +> Use the hostname exactly as reported by the query in the Host Agent field. +> +> - Use the `Comment` field to store notes about the job. + +![Create pgAgent Job dialog - Steps tab](../images/pgagent_steps.png) + +Use the `Steps` tab to define and manage the steps that the job will perform. Click the Add icon (+) to add a new step; then click the compose icon (located at the left side of the header) to open the step definition dialog: + +![Create pgAgent Job dialog - Steps tab - General tab](../images/pgagent_step_definition.png) + +Use fields on the step definition dialog to define the step: + +> - Provide a name for the step in the `Name` field; please note that steps will be performed in alphanumeric order by name. +> - Use the `Enabled` switch to include the step when executing the job (`True`) or to disable the step (`False`). +> - Use the `Kind` switch to indicate if the job step invokes SQL code (`SQL`) or a batch script (`Batch`). +> +> > - If you select `SQL`, use the `Code` tab to provide SQL code for the step. +> > - If you select `Batch`, use the `Code` tab to provide the batch script that will be executed during the step. + +
+ +
+ +Note + +
+ +The fields `Connection type`, `Database` and `Connection string` are only applicable when `SQL` is selected because `Batch` cannot be run on remote servers. + +
+ +- Use the `Connection type` switch to indicate if the step is performed on a local server (`Local`) or on a remote host (`Remote`). If you specify a remote connection should be used for the step, the `Connection string` field will be enabled, and you must provide a libpq-style connection string. +- Use the `Database` drop-down to select the database on which the job step will be performed. +- Use the `Connection string` field to specify a libpq-style connection string to the remote server on which the step will be performed. For more information about writing a connection string, please see the [PostgreSQL documentation](https://www.postgresql.org/docs/current/libpq.html#libpq-connect). +- Use the `On error` drop-down to specify the behavior of pgAgent if it encounters an error while executing the step. Select from: + - `Fail` - Stop the job if you encounter an error while processing this step. + - `Success` - Mark the step as completing successfully, and continue. + - `Ignore` - Ignore the error, and continue. + +> - Use the `Comment` field to provide a comment about the step. + +![Create pgAgent Job dialog - Steps tab - Code tab](../images/pgagent_step_definition_code.png) + +Use the context-sensitive field on the step definition dialog's `Code` tab to provide the SQL code or batch script that will be executed during the step: + +> - If the step invokes SQL code, provide one or more SQL statements in the `SQL query` field. +> - If the step performs a batch script, provide the script in the `Script` field. If you are running on a Windows server, standard batch file syntax must be used. When running on a Linux server, any shell script may be used, provided that a suitable interpreter is specified on the first line (e.g. `#!/bin/sh`). + +When you've provided all of the information required by the step, click the compose icon to close the step definition dialog. Click the add icon (+) to add each additional step, or select the `Schedules` tab to define the job schedule. + +![Create pgAgent Job dialog - Schedules tab](../images/pgagent_schedules.png) + +Click the Add icon (+) to add a schedule for the job; then click the compose icon (located at the left side of the header) to open the schedule definition dialog: + +![Create pgAgent Job dialog - Schedules tab - General tab](../images/pgagent_schedule_definition.png) + +Use the fields on the schedule definition tab to specify the days and times at which the job will execute. + +> - Provide a name for the schedule in the `Name` field. +> - Use the `Enabled` switch to indicate that pgAgent should use the schedule (`Yes`) or to disable the schedule (`No`). +> - Use the calendar selector in the `Start` field to specify the starting date and time for the schedule. +> - Use the calendar selector in the `End` field to specify the ending date and time for the schedule. +> - Use the `Comment` field to provide a comment about the schedule. + +Select the `Repeat` tab to define the days on which the schedule will execute. + +![Create pgAgent Job dialog - Schedules tab - Repeat tab](../images/pgagent_schedule_repeat.png) + +Use the fields on the `Repeat` tab to specify the details about the schedule in a cron-style format. The job will execute on each date or time element selected on the `Repeat` tab. + +Click within a field to open a list of valid values for that field; click on a specific value to add that value to the list of selected values for the field. To clear the values from a field, click the X located at the right-side of the field. + +Use the fields within the `Days` box to specify the days on which the job will execute: + +> - Use the `Week Days` field to select the days on which the job will execute. +> - Use the `Month Days` field to select the numeric days on which the job will execute. Specify the `Last Day` to indicate that the job should be performed on the last day of the month, irregardless of the date. +> - Use the `Months` field to select the months in which the job will execute. + +Use the fields within the `Times` box to specify the times at which the job will execute: + +> - Use the `Hours` field to select the hour at which the job will execute. +> - Use the `Minutes` field to select the minute at which the job will execute. + +Select the `Exceptions` tab to specify any days on which the schedule will `not` execute. + +![Create pgAgent Job dialog - Schedules tab - Exceptions tab](../images/pgagent_schedule_exceptions.png) + +Use the fields on the `Exceptions` tab to specify days on which you wish the job to not execute; for example, you may wish for jobs to not execute on national holidays. + +Click the Add icon (+) to add a row to the exception table, then: + +> - Click within the `Date` column to open a calendar selector, and select a date on which the job will not execute. Specify `` in the `Date` column to indicate that the job should not execute on any day at the time selected. +> - Click within the `Time` column to open a time selector, and specify a time on which the job will not execute. Specify `` in the `Time` column to indicate that the job should not execute at any time on the day selected. + +When you've finished defining the schedule, you can use the `SQL` tab to review the code that will create or modify your job. + +![Create pgAgent Job dialog - SQL tab](../images/pgagent_sql.png) + +Click the `Save` button to save the job definition, or `Cancel` to exit the job without saving. Use the `Reset` button to remove your unsaved entries from the dialog. + +After saving a job, the job will be listed under the `pgAgent Jobs` node of the browser tree control of the server on which it was defined. The `Properties` tab in the main PEM window will display a high-level overview of the selected job, and the `Statistics` tab will show the details of each run of the job. + +![pgAgent Object Properties tab](../images/pgagent_properties.png) + +To modify an existing job or to review detailed information about a job, right-click on a job name, and select `Properties` from the context menu. diff --git a/product_docs/docs/pem/7.16/pem_online_help/10_pgagent/04_pgagent-steps.mdx b/product_docs/docs/pem/7.16/pem_online_help/10_pgagent/04_pgagent-steps.mdx new file mode 100644 index 00000000000..94c36fea1fe --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/10_pgagent/04_pgagent-steps.mdx @@ -0,0 +1,17 @@ +--- +title: "pgAgent Steps" +--- + + + +Each Job consists of a number of steps, each of which may be an SQL script, or an operating system batch/shell script. Each step in a given job is run in turn, in alphanumeric name order. + +Steps may be added to a job through the job properties dialogue, or added as a sub-object. The `Properties` tab of the main PEM client window will display details of the selected step, and the `Statistics` tab will display details of each run of the step, including and output or errors from the script. + +![pgAgent Job - Steps details](../images/pgagent_stepstats.png) + +Each step consists of the details shown on the screenshot below, most of which are self-explanatory. If `Kind` is set to SQL, then it goes without saying that a database against which to run the script must be selected. If set to `Batch`, the database/connection string should be left blank. The `On Error` option controls how failure of this step will affect the status of the overall job. + +![pgAgent Job - Steps definition details](../images/pgagent_stepdetails.png) + +The `Definition` tab contains a single text box into which the step script should be entered. For SQL steps, this should be a series of one or more SQL statements. For batch jobs, when running on a Windows server, standard batch file syntax must be used, and when running on a *nix server, any shell script may be used, provided that a suitable interpreter is specified on the first line (e.g.*#!/bin/sh\*). diff --git a/product_docs/docs/pem/7.16/pem_online_help/10_pgagent/05_pgagent-schedules.mdx b/product_docs/docs/pem/7.16/pem_online_help/10_pgagent/05_pgagent-schedules.mdx new file mode 100644 index 00000000000..81b7e946b21 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/10_pgagent/05_pgagent-schedules.mdx @@ -0,0 +1,23 @@ +--- +title: "pgAgent Schedules" +--- + + + +Each Job is executed according to one or more schedules. Each time the job or any of its schedules are altered, the next runtime of the job is re-calculated. Each instance of pgAgent periodically polls the database for jobs with the next runtime value in the past. By polling at least once every minute, all jobs will normally start within one minute of the specified start time. If no pgAgent instance is running at the next runtime of a job, it will run as soon as pgAgent is next started, following which it will return to the normal schedule. + +Schedules may be added to a job through the job properties dialogue, or added as a sub-object. The `Properties` tab of the main PEM client window will display details of the selected schedule. + +![pgAgent schedule - Properties tab](../images/pgagent_scheduleproperties.png) + +Each schedule consists of the basic details such as a name, whether or not it is enable and a comment. In addition, a start date and time is specified (before which the schedule has no effect), and optionally an end date and time (after which the schedule has no effect). + +![pgAgent schedule - General tab](../images/pgagent_scheduledetails1.png) + +Schedules are specified using a cron-style format. For each selected time or date element, the schedule will execute. For example, to execute at 5 minutes past every hour, simply tick '5' in the `Minutes` list box. Values from more than one field may be specified in order to further control the schedule. For example, to execute at 12:05 and 14:05 every Monday and Thursday, you would tick minute 5, hours 12 and 14, and weekdays Monday and Thursday. For additional flexibility, the `Month Days` check list includes an extra `Last Day` option. This matches the last day of the month, whether it happens to be the 28th, 29th, 30th or 31st. + +![pgAgent schedule - Repeat tab](../images/pgagent_scheduledetails2.png) + +On occasion it may be desirable to specify an exception for a schedule - for example, you may not want a schedule to fire on a particular national holiday. To achieve this, each schedule may have a list of date and/or time exceptions attached to it. If a schedule lands on an exception, that instance will be skipped, and the following occurance will become the next runtime. + +![pgAgent schedule - Exceptions tab](../images/pgagent_scheduledetails3.png) diff --git a/product_docs/docs/pem/7.16/pem_online_help/10_pgagent/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/10_pgagent/index.mdx new file mode 100644 index 00000000000..1fc62f8790e --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/10_pgagent/index.mdx @@ -0,0 +1,17 @@ +--- +title: "pgAgent" +--- + + + +pgAgent is a job scheduling agent for Postgres databases, capable of running multi-step batch or shell scripts and SQL tasks on complex schedules. + +pgAgent is distributed independently. You can download pgAgent from the [download area](http://www.pgadmin.org/download) of the pgAdmin website. + +Contents: + +
+ +using_pgagent pgagent_install pgagent_jobs pgagent-steps pgagent-schedules + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/11_appendices/01_licence.mdx b/product_docs/docs/pem/7.16/pem_online_help/11_appendices/01_licence.mdx new file mode 100644 index 00000000000..9006c4912fb --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/11_appendices/01_licence.mdx @@ -0,0 +1,7 @@ +--- +title: "Licence" +--- + + + +pgAdmin is released under the [PostgreSQL Licence](http://www.postgresql.org/about/licence), which is a liberal Open Source licence similar to BSD or MIT, and approved by the Open Source Initiative. The copyright for the project source code, website and documentation is attributed to the [pgAdmin Development Team](https://www.pgadmin.org/development/team.php). diff --git a/product_docs/docs/pem/7.16/pem_online_help/11_appendices/02_kerberos.mdx b/product_docs/docs/pem/7.16/pem_online_help/11_appendices/02_kerberos.mdx new file mode 100644 index 00000000000..3cd61dabfaf --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/11_appendices/02_kerberos.mdx @@ -0,0 +1,21 @@ +--- +title: "The MIT Kerberos Licence" +--- + + + +Postgres Enterprise Manager uses PostgreSQL's libpq library which may be linked with MIT Kerberos Libraries on some distributions. The MIT Kerberos licence is included below: + +## Kerberos Copyright + +This software is being provided to you, the LICENSEE, by the Massachusetts Institute of Technology (M.I.T.) under the following license. By obtaining, using and/or copying this software, you agree that you have read, understood, and will comply with these terms and conditions: + +Permission to use, copy, modify and distribute this software and its documentation for any purpose and without fee or royalty is hereby granted, provided that you agree to comply with the following copyright notice and statements, including the disclaimer, and that the same appear on ALL copies of the software and documentation, including modifications that you make for internal use or for distribution: + +Copyright 1992-2004 by the Massachusetts Institute of Technology. All rights reserved. + +THIS SOFTWARE IS PROVIDED "AS IS", AND M.I.T. MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. By way of example, but not limitation, M.I.T. MAKES NO REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + +The name of the Massachusetts Institute of Technology or M.I.T. may NOT be used in advertising or publicity pertaining to distribution of the software. Title to copyright in this software and any associated documentation shall at all times remain with M.I.T., and USER agrees to preserve same. + +Project Athena, Athena, Athena MUSE, Discuss, Hesiod, Kerberos, Moira, OLC, X Window System, and Zephyr are trademarks of the Massachusetts Institute of Technology (MIT). No commercial use of these trademarks may be made without prior written permission of MIT. diff --git a/product_docs/docs/pem/7.16/pem_online_help/11_appendices/03_openssl.mdx b/product_docs/docs/pem/7.16/pem_online_help/11_appendices/03_openssl.mdx new file mode 100644 index 00000000000..ab8c41655ce --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/11_appendices/03_openssl.mdx @@ -0,0 +1,22 @@ +--- +title: "The OpenSSL Licence" +--- + + + +Postgres Enterprise Manager uses code from the OpenSSL project to provide support for SSL encrypted connections. The OpenSSL licence is included below: + +**Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved.** + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +- All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. ()" +- The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact [openssl-core@openssl.org](mailto:openssl-core@openssl.org). +- Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. +- Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit ()" + +THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +This product includes cryptographic software written by Eric Young ([eay@cryptsoft.com](eay@cryptsoft.com)). This product includes software written by Tim Hudson ([tjh@cryptsoft.com](tjh@cryptsoft.com)). diff --git a/product_docs/docs/pem/7.16/pem_online_help/11_appendices/04_snmp++.mdx b/product_docs/docs/pem/7.16/pem_online_help/11_appendices/04_snmp++.mdx new file mode 100644 index 00000000000..d4c62142a65 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/11_appendices/04_snmp++.mdx @@ -0,0 +1,15 @@ +--- +title: "The SNMP++ Licence" +--- + + + +Postgres Enterprise Manager uses code from the SNMP++ project to send snmp v1/v2 notifications. The SNMP++ licence is included below: + +**Copyright (c) 2001-2010 Jochen Katz, Frank Fock** + +This software is based on SNMP++2.6 from Hewlett Packard: + +Copyright (c) 1996 Hewlett-Packard Company + +ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. Permission to use, copy, modify, distribute and/or sell this software and/or its documentation is hereby granted without fee. User agrees to display the above copyright notice and this license notice in all copies of the software and any documentation of the software. User agrees to assume all liability for the use of the software; Hewlett-Packard and Jochen Katz make no representations about the suitability of this software for any purpose. It is provided "AS-IS" without warranty of any kind, either express or implied. User hereby grants a royalty-free license to any and all derivatives based upon this software code base. diff --git a/product_docs/docs/pem/7.16/pem_online_help/11_appendices/05_jquery_table_sort.mdx b/product_docs/docs/pem/7.16/pem_online_help/11_appendices/05_jquery_table_sort.mdx new file mode 100644 index 00000000000..d46b7908b37 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/11_appendices/05_jquery_table_sort.mdx @@ -0,0 +1,9 @@ +--- +title: "The jquery table sort Licence" +--- + + + +TABLESORT.JS Copyright, Andy Croxall ([mitya@mitya.co.uk](mailto:mitya@mitya.co.uk)) For documentation and demo see + +USAGE This script may be used, distributed and modified freely but this header must remain in tact. For usage info and demo, including info on args and params, see [www.mitya.co.uk/scripts](http://www.mitya.co.uk/scripts) diff --git a/product_docs/docs/pem/7.16/pem_online_help/11_appendices/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/11_appendices/index.mdx new file mode 100644 index 00000000000..7e3f8b511f0 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/11_appendices/index.mdx @@ -0,0 +1,43 @@ +--- +title: "Appendices" +--- + + + +Contents: + +
+ +licence kerberos openssl snmp++ jquery_table_sort + +
+ +**Additional Licences** + +| Component Name | Licence Name | Licence Url | +| --------------------------------- | ---------------------- | ----------------------------------------------------------------------------- | +| wxWidgets | wxWidgets Licence | | +| Apache HTTPD | Apache Licence | | +| PHP | PHP Licence | | +| Gettext runtime | LGPL v2.1 | | +| Curl runtime | MIT/X derivate license | | +| Zlib runtime | Zlib Licence | | +| XML/XSLT runtime | MIT Licence | | +| libpng runtime | Open Source | | +| libjpeg runtime | GNU GPLv2 | | +| iconv runtime | LGPL v2.1 | | +| ezComponents (Graphs) | New BSD Licence | | +| jQuery | MIT Licence | | +| jQuery Dynatree plugin | MIT Licence | | +| jQuery Superfish menu plugin | MIT Licence | | +| jQuery UI Layout plugin | MIT Licence | | +| jQuery UI plugin | MIT Licence | | +| jQuery qTip tooltip plugin | MIT Licence | | +| LakTEK jQuery simple color picker | MIT Licence | | +| jQuery Editable plugin 1.3.3 | MIT Licence | | +| jQuery Slider Access plugin | MIT Licence | | +| jQuery UI Spinner plugin | MIT Licence | | +| jQuery Timepicker Add-on plugin | MIT Licence | | +| jQuery Downloader plugin | MIT Licence | | + +`Postgres Enterprise Manager`, `Postgres Plus`, and `EnterpriseDB` are trademarks of EnterpriseDB Corporation. diff --git a/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/01_pem_release_notes_8_0_1.mdx b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/01_pem_release_notes_8_0_1.mdx new file mode 100644 index 00000000000..5e555cd08c7 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/01_pem_release_notes_8_0_1.mdx @@ -0,0 +1,64 @@ +--- +title: "PEM v8.0.1" +--- + +Release date: 2021-03-03 + +## Features + +[Issue #5091](https://redmine.postgresql.org/issues/5091) - Make Statistics, Dependencies, Dependants tabs closable and the user can add them back using the 'Add panel' option. + +## Housekeeping + +[Issue #5338](https://redmine.postgresql.org/issues/5338) - Improve code coverage and API test cases for pgAgent. +[Issue #5343](https://redmine.postgresql.org/issues/5343) - Improve code coverage and API test cases for Debugger. +[Issue #6079](https://redmine.postgresql.org/issues/6079) - Updated mimetype from 'text/javascript' to 'application/javascript' as 'text/javascript' is obsolete. + +## Bug fixes + +PEM-3549 - Fixed the issue where latest BART backups were not displaying on BART dashboard refresh. \[Support ticket # 1046037] +PEM-3577 - Allow superuser name containing "-" provided during configuring configure-pem-server.sh script. \[Support ticket # 1055435] +PEM-3881 - Close the operating system resources properly during batch probe and command execution to avoid 'too many open files' error. \[Support ticket # 1048713] +PEM-3845 - Bundle pgaevent dll in agent windows installer to suppress event message log error. \[Support ticket # 1106021] +PEM-3901 - Fixed the unicode string handling support in pemAgent. \[Support ticket # 1153153] +PEM-3903 - Fixed the issue where BART restore was failing when agent was not bound with BART server. \[Support ticket # 1129454] +[Issue #4892](https://redmine.postgresql.org/issues/4892) - Fixed an issue where pressing the back button will show another instance of the main page inside of the Query Tool tab. +[Issue #5282](https://redmine.postgresql.org/issues/5282) - Added 'Count Rows' option to the partition sub tables. +[Issue #5488](https://redmine.postgresql.org/issues/5488) - Improve the explain plan details by showing popup instead of tooltip on clicking of the specified node. +[Issue #5571](https://redmine.postgresql.org/issues/5571) - Added support for expression in exclusion constraints. +[Issue #5809](https://redmine.postgresql.org/issues/5809) - Fixed an issue where the focus is not properly set on the filter text editor after closing the error dialog. +[Issue #5871](https://redmine.postgresql.org/issues/5871) - Ensure that username should be visible in the 'Connect to Server' popup when service and user name both specified. +[Issue #5875](https://redmine.postgresql.org/issues/5875) - Ensure that the 'template1' database should not be visible after pg_upgrade. +[Issue #5886](https://redmine.postgresql.org/issues/5886) - Fixed false error is shown while adding a new foreign key from the table dialog when a foreign key already exists with Auto FK Index set to true. +[Issue #5905](https://redmine.postgresql.org/issues/5905) - Fixed an issue where the Save button is enabled by default in Macro. +[Issue #5906](https://redmine.postgresql.org/issues/5906) - Remove extra line after Manage Macros menu while clearing all macros. +[Issue #5907](https://redmine.postgresql.org/issues/5907) - Ensure that 'Clear All Rows' should not work if there is no existing macro available and the user does not specify any value. +[Issue #5929](https://redmine.postgresql.org/issues/5929) - Fixed an issue where the server is disconnected error message displayed if the user creates Macro with invalid SQL. +[Issue #5965](https://redmine.postgresql.org/issues/5965) - Ensure that the macro query result should be download properly. +[Issue #5973](https://redmine.postgresql.org/issues/5973) - Added appropriate help message and a placeholder for letting users know about the account password expiry for Login/Group Role. +[Issue #5991](https://redmine.postgresql.org/issues/5991) - Ensure that dirty indicator (\*) should not be visible when renaming the tabs. +[Issue #5992](https://redmine.postgresql.org/issues/5992) - Fixed an issue where escape character is shown when the server/database name has some special characters. +[Issue #5997](https://redmine.postgresql.org/issues/5997) - Updated Flask-BabelEx to the latest. +[Issue #5998](https://redmine.postgresql.org/issues/5998) - Fixed an issue where schema diff doesn't show the result of compare if source schema has tables with RLS. +[Issue #6003](https://redmine.postgresql.org/issues/6003) - Fixed an issue where an illegal argument is showing for trigger SQL when a trigger is created for View. +[Issue #6045](https://redmine.postgresql.org/issues/6045) - Fixed autocomplete issue where it is not showing any suggestions if the schema name contains escape characters. +[Issue #6046](https://redmine.postgresql.org/issues/6046) - Fixed an issue where the state of the Save File icon does not match the dirty editor indicator. +[Issue #6047](https://redmine.postgresql.org/issues/6047) - Fixed an issue where the dirty indicator stays active even if all changes were undone. +[Issue #6058](https://redmine.postgresql.org/issues/6058) - Ensure that the rename panel should be disabled when the SQL file opened in the query tool. +[Issue #6061](https://redmine.postgresql.org/issues/6061) - Fixed extra parentheses issue around joins for Views. +[Issue #6065](https://redmine.postgresql.org/issues/6065) - Fixed accessibility issues in schema diff module. +[Issue #6069](https://redmine.postgresql.org/issues/6069) - Fixed an issue on refreshing files in Query Tool. +[Issue #6077](https://redmine.postgresql.org/issues/6077) - Fixed accessibility issues in various dialogs. +[Issue #6084](https://redmine.postgresql.org/issues/6084) - Fixed TypeError exception in schema diff when selected any identical object. +[Issue #6087](https://redmine.postgresql.org/issues/6087) - Fixed an issue where the dependencies tab showing multiple owners for the objects having shared dependencies. +[Issue #6098](https://redmine.postgresql.org/issues/6098) - Fixed an issue of deleting records when the user tries to delete multiple records. +[Issue #6120](https://redmine.postgresql.org/issues/6120) - Ensure that the user should be able to specify an older date for the account expiration of the role/user. +[Issue #6121](https://redmine.postgresql.org/issues/6121) - Fixed an issue where the database list in the new connection window is not visible. +[Issue #6122](https://redmine.postgresql.org/issues/6122) - Added informative message when there is no difference found for schema diff. +[Issue #6128](https://redmine.postgresql.org/issues/6128) - Fixed an issue where sequences are not created. +[Issue #6140](https://redmine.postgresql.org/issues/6140) - Ensure that verbose logs should be visible for Utility(Backup, Maintenance) jobs. +[Issue #6144](https://redmine.postgresql.org/issues/6144) - Ensure that the current value of the sequence should be ignored while comparing using schema diff. +[Issue #6157](https://redmine.postgresql.org/issues/6157) - Fixed an issue where strike-through is not visible for rows selected for deletion after scrolling. +[Issue #6178](https://redmine.postgresql.org/issues/6178) - Fixed an issue where the user unable to change the background color for a server. +[Issue #6187](https://redmine.postgresql.org/issues/6187) - Limit the upgrade check to run once per day. +[Issue #6208](https://redmine.postgresql.org/issues/6208) - Fixed an issue where utility(Backup, Maintenance, ...) jobs are failing when the log level is set to DEBUG. diff --git a/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/02_pem_release_notes_8_0.mdx b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/02_pem_release_notes_8_0.mdx new file mode 100644 index 00000000000..9ce77545f54 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/02_pem_release_notes_8_0.mdx @@ -0,0 +1,72 @@ +--- +title: "PEM v8.0" +--- + +Release date: 2020-12-09 + +## Features + +PEM-3669 - Support new configurations of BART ('bart_socket_name') in PEM +PEM-3612 - Enhanced the placeholders for alert script execution. \[Support Ticket # 1051538] +PEM-3613 - Added documentation for "How to replace alert placeholders inside script". \[Support Ticket # 1051538] +PEM-3786 - Added support for --checksum-algorithm and --disable-checksum parameters introduced in BART 2.6.0. +PEM-2501 - Added alert details sql for template 'A user expires in N days'. \[Support Ticket # 891377] +PEM-3684, PEM-3665 - Added alert details sql for Alert Errors, Table bloat, Dead/live tuples and few other. \[Support Ticket # 1065250] +PEM-3802, PEM-3805 - Documented the best security practices for PEM to avoid security vulnerabilities. +PEM-3808 - Improved installtion and upgrade guide as per customer feedback. \[Support Ticket # 1101462] +PEM-3819 - Add webhooks for event-based alerting +[Issue #1402](https://redmine.postgresql.org/issues/1402) - Added Macro support. +[Issue #2519](https://redmine.postgresql.org/issues/2519) - Added support to view trigger function under the respective trigger node. +[Issue #3318](https://redmine.postgresql.org/issues/3318) - Added support to download utility files at the client-side. +[Issue #3794](https://redmine.postgresql.org/issues/3794) - Allow user to change the database connection from an open query tool tab. +[Issue #4230](https://redmine.postgresql.org/issues/4230) - Added support to rename query tool and debugger tabs title. +[Issue #4231](https://redmine.postgresql.org/issues/4231) - Added support for dynamic tab size. +[Issue #4232](https://redmine.postgresql.org/issues/4232) - Added tab title placeholder for Query Tool, View/Edit Data, and Debugger. +[Issue #5200](https://redmine.postgresql.org/issues/5200) - Added support to ignore the owner while comparing objects in the Schema Diff tool. +[Issue #5857](https://redmine.postgresql.org/issues/5857) - Added documentation for Macro support. + +## Housekeeping + +[Issue #5328](https://redmine.postgresql.org/issues/5328) - Improve code coverage and API test cases for Foreign Tables. +[Issue #5330](https://redmine.postgresql.org/issues/5330) - Improve code coverage and API test cases for Functions. +[Issue #5337](https://redmine.postgresql.org/issues/5337) - Improve code coverage and API test cases for Views and Materialized Views. +[Issue #5395](https://redmine.postgresql.org/issues/5395) - Added RESQL/MSQL test cases for Functions. +[Issue #5497](https://redmine.postgresql.org/issues/5497) - Merged the latest code of 'pgcli' used for the autocomplete feature. +[Issue #5938](https://redmine.postgresql.org/issues/5938) - Documentation of Storage Manager. + +## Bug fixes + +PEM-672 - Documented that while configuring the pem server, certificates must be present in data directory of backend database server in the installation guides. \[Support ticket # 729238] +PEM-3184 - Fixed an issue where connections were not getting released when user disconnects the database server. \[Support Ticket # 969833] +PEM-3737 - Fixed an issue where BART integration isn't working, when BART is installed at custom location. \[Support Ticket # 1088574] +PEM-3791 - Do not include detail alert information while sending SNMP traps. \[Support Ticket # 1069206, # 1115277] +PEM-3816 - Fixed the issue of making two database connections for failed login attempt which result in locking the user profile. \[Support Ticket # 1103288] +PEM-3795 - Added python3 as prerequisite for PEM in Upgrade and migration guide. +PEM-3799 - Package deployment and streaming replication deprecation warning is added in Upgrade and migration guide. \[Support ticket # 1021617] +[Issue #4639](https://redmine.postgresql.org/issues/4639) - Ensure that some fields should be disabled for the trigger in edit mode. +[Issue #4806](https://redmine.postgresql.org/issues/4806) - Added useful message when the explain plan is not used and empty. +[Issue #4855](https://redmine.postgresql.org/issues/4855) - Fixed an issue where file extension is stripped on renaming a file. +[Issue #5131](https://redmine.postgresql.org/issues/5131) - Ensure that 'ctrl + a' shortcut does not move the cursor in SQL editor. +[Issue #5826](https://redmine.postgresql.org/issues/5826) - Fixed an issue where schema diff is showing identical table as different due to default vacuum settings. +[Issue #5830](https://redmine.postgresql.org/issues/5830) - Fixed reverse engineering SQL where parenthesis is not properly arranged for View/MView definition. +[Issue #5835](https://redmine.postgresql.org/issues/5835) - Fixed 'can't execute an empty query' message if the user change the option of Auto FK Index. +[Issue #5841](https://redmine.postgresql.org/issues/5841) - Fixed an issue where the server is not able to connect using the service. +[Issue #5842](https://redmine.postgresql.org/issues/5842) - Ensure that query history should be listed by date/time in descending order. +[Issue #5843](https://redmine.postgresql.org/issues/5843) - Fixed an issue where the 'PARALLEL UNSAFE' option is missing from reverse engineering SQL of function/procedure. +[Issue #5853](https://redmine.postgresql.org/issues/5853) - Fixed an issue where 'Rows X' column values were not visible properly for Explain Analyze in Dark theme. +[Issue #5855](https://redmine.postgresql.org/issues/5855) - Ensure that the user should be able to change the start value of the existing sequence. +[Issue #5858](https://redmine.postgresql.org/issues/5858) - Ensure that search object functionality works with case insensitive string. +[Issue #5882](https://redmine.postgresql.org/issues/5882) - Fixed invalid literal issue when fetching dependencies for Materialized View. +[Issue #5885](https://redmine.postgresql.org/issues/5885) - Fixed an issue where the user is unable to change the macro name. +[Issue #5895](https://redmine.postgresql.org/issues/5895) - Fixed an issue where the suffix for Toast table size is not visible in the Statistics tab. +[Issue #5911](https://redmine.postgresql.org/issues/5911) - Ensure that macros should be run on the older version of Safari and Chrome. +[Issue #5914](https://redmine.postgresql.org/issues/5914) - Fixed an issue where a mismatch in the value of 'Estimated row' for functions. +[Issue #5923](https://redmine.postgresql.org/issues/5923) - Fixed an issue where non-closeable tabs are getting closed. +[Issue #5943](https://redmine.postgresql.org/issues/5943) - Ensure that folder rename should work properly in Storage Manager. +[Issue #5950](https://redmine.postgresql.org/issues/5950) - Fixed an issue where a long file name is not visible on the process watcher dialog. +[Issue #5953](https://redmine.postgresql.org/issues/5953) - Fixed an issue where connection to the server is on wait state if a different user is provided. +[Issue #5959](https://redmine.postgresql.org/issues/5959) - Ensure that Grant Wizard should include foreign tables. +[Issue #5974](https://redmine.postgresql.org/issues/5974) - Fixed an issue where the debugger's custom tab title not applied when opened in the new browser tab. +[Issue #5978](https://redmine.postgresql.org/issues/5978) - Fixed an issue where dynamic tab title has not applied the first time for debugger panel. +[Issue #5983](https://redmine.postgresql.org/issues/5983) - Added the appropriate server icon based on the server type in the new connection dialog. +[Issue #5985](https://redmine.postgresql.org/issues/5985) - Fixed an issue where the process watcher dialog throws an error for the database server which is already removed. diff --git a/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/03_pem_release_notes_7_16.mdx b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/03_pem_release_notes_7_16.mdx new file mode 100644 index 00000000000..a44c81868a7 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/03_pem_release_notes_7_16.mdx @@ -0,0 +1,109 @@ +--- +title: "PEM v7.16" +--- + +Release date: 2020-09-30 + +## Features + +PEM-3157 - Documentation of Defining and Monitoring Postgres instances on AWS EC2 and RDS is added. \[Support Ticker #1060981] +PEM-322 - Use the same agent-id on agent registration using '--force-registration', and regenerate the certificates. \[Support Ticket #695978] +PEM-688 - Added capability to monitor parameters set by EFM (missingnodes, minimumstandbys and membershipcoordinator). +PEM-2200 - Auto discover database servers installed using debian packaging. +PEM-2578 - Allow user to schedule bulk alert blackout from PEM console. \[Support Ticket #901007] +PEM-2651 - List all the events and display error message on tooltip in BART activities graph. \[Support Ticket #950623] +PEM-3053 - Automate BART Obsolete backup Cleanup process in PEM. \[Support Ticket #950518] +PEM-3054 - Manage bart-scanner from PEM console. \[Support Ticket #951184, #1027171] +PEM-3421 - Perform EFM cluster switchover from PEM console. \[Support Ticket #1059731] +PEM-3528 - Make the current state and related information of the alerts available through REST API +PEM-3529 - Make the state change history of the alerts available at Agent, Server & Database through REST API +PEM-3614 - Added details of directory creation and permissions for backups taken using BART in PEM - BART Management Features Guide \[Support Ticket #1038375] +PEM-3615 - Allow incremental backup from a parent backup which was taken in tar.gz format. \[Support Ticket #1059420] +[Issue #2042](https://redmine.postgresql.org/issues/2042) - Added SQL Formatter support in Query Tool. +[Issue #3904](https://redmine.postgresql.org/issues/3904) - Replace charting library Flotr2 with ChartJS using React on the Dashboard panel. +[Issue #4059](https://redmine.postgresql.org/issues/4059) - Added a new button to the query tool toolbar to open a new query tool window. +[Issue #5126](https://redmine.postgresql.org/issues/5126) - Modified schema diff tool to compare two databases instead of two schemas. +[Issue #5653](https://redmine.postgresql.org/issues/5653) - Added High Contrast (Beta) theme support. +[Issue #5772](https://redmine.postgresql.org/issues/5772) - Warn the user when connecting to a server that is older than PEM supports. + +## Housekeeping + +[Issue #5323](https://redmine.postgresql.org/issues/5323) - Improve code coverage and API test cases for Foreign Data Wrapper. +[Issue #5324](https://redmine.postgresql.org/issues/5324) - Improve code coverage and API test cases for Foreign Servers and User Mappings. +[Issue #5327](https://redmine.postgresql.org/issues/5327) - Improve code coverage and API test cases for Schemas. +[Issue #5332](https://redmine.postgresql.org/issues/5332) - Improve code coverage and API test cases for Columns and Constraints (Index, Foreign Key, Check, Exclusion). +[Issue #5336](https://redmine.postgresql.org/issues/5336) - Improve code coverage and API test cases for Types. +[Issue #5344](https://redmine.postgresql.org/issues/5344) - Improve code coverage and API test cases for Grant Wizard. +[Issue #5731](https://redmine.postgresql.org/issues/5731) - Upgrade font awesome from v4 to v5. +[Issue #5774](https://redmine.postgresql.org/issues/5774) - Improve code coverage and API test cases for Tables. + +## Bug fixes + +PEM-812/ Issue #5830 <> - Display parenthesis around AND/OR conditions in the same order within PEM and dba_views. Fixed reverse engineering SQL where parenthesis is not properly arranged for View/MView definition. \[Support Ticket #315838] +PEM-2579 - Fixed issues in SNMP's MIB file reported by \[Support Ticket #900679] +PEM-3532 - Fixed the issue in monitoring dashboard line charts where data points were not showing correct local time information. \[Support Ticket #1023887] +PEM-3542 - Fixed potential data type migration problem when upgrading PEM Server to PG v.12 \[Support Ticket #1044052] +PEM-3487 - Fixed configure script issue for google cloud instance running RHEL7 +PEM-3666 - Fixed security issue related to secure flag for session cookies. \[Support Ticket #1035935] +PEM-3667 - Fixed security issue related to information exposed in Server response header. \[Support Ticket #1035935] +PEM-3677 - Fixed security issue related to content Security Policy (CSP) configuration. \[Support Ticket #1035935] +PEM-3678 - Fixed security issue related to HTTP Strict Transport Security (HSTS) in server response header. \[Support Ticket #1035935] +PEM-3679 - Fixed security issue related to session fixation. \[Support Ticket #1035935] +PEM-3682 - Fixed security issue related to directory listing. \[Support Ticket #1035935] +PEM-3693 - Fixed security issue in the Capacity manager report. \[Support Ticket #1035935] +PEM-3695 - Transaction ID or timestamp must be provided during BART restore point-in time recovery operation \[Support Ticket #1067393] +PEM-3696 - Fixed security issue in the pem configure script where it should not log sensitive informations. \[Support Ticket #1035935] +PEM-3663 - Fixed pemworker segfault error in dmesg and messages file. \[Support Ticket #999681] +PEM-3698 - Fixed current and previous alert state related issue during alert script execution when alert state gets clear. \[Support Ticket #1078828] +PEM-2015 - Fixed vulnerability issues related to webserver. \[Support Ticket # 856609] +[Issue #3767](https://redmine.postgresql.org/issues/3767) - Ensure that the original file format should be retained when saving the same file in SQL editor. +[Issue #3791](https://redmine.postgresql.org/issues/3791) - Added missing comments in reverse engineering SQL for each column of a View. +[Issue #4123](https://redmine.postgresql.org/issues/4123) - Fixed an issue where debugger doesn't work if the search path is set other than 'public'. +[Issue #4216](https://redmine.postgresql.org/issues/4216) - Ensure that schema names starting with 'pg' should be visible in browser tree when standard_conforming_strings is set to off. +[Issue #4361](https://redmine.postgresql.org/issues/4361) - Fixed ssh tunnel hang issue when the user tries to disconnect the server. +[Issue #4387](https://redmine.postgresql.org/issues/4387) - Fixed an issue where the user is not able to insert the data if the table and columns name contains special characters. +[Issue #4810](https://redmine.postgresql.org/issues/4810) - Fixed an issue where the user is not able to save the new row if the table is empty. +[Issue #5137](https://redmine.postgresql.org/issues/5137) - Fixed save button enable issue when focusing in and out of numeric input field. +[Issue #5417](https://redmine.postgresql.org/issues/5417) - Fixed and improve API test cases for the schema diff tool. +[Issue #5426](https://redmine.postgresql.org/issues/5426) - Adjusted the height of jobstep code block to use maximum space. +[Issue #5429](https://redmine.postgresql.org/issues/5429) - Ensure that the Dictionaries drop-down shows all the dictionaries in the FTS configuration dialog. +[Issue #5526](https://redmine.postgresql.org/issues/5526) - Fixed an issue where copying and pasting a cell with multiple line data will result in multiple rows. +[Issue #5530](https://redmine.postgresql.org/issues/5530) - Ensure that the referenced table should be displayed on foreign key constraints. +[Issue #5567](https://redmine.postgresql.org/issues/5567) - Fixed an issue where conversion of bytea to the binary string results in an error. +[Issue #5569](https://redmine.postgresql.org/issues/5569) - Fixed reverse engineered SQL for partitions when storage parameters are specified. +[Issue #5604](https://redmine.postgresql.org/issues/5604) - Fixed an issue where the entire logs is in red text when the user runs backup and restore. +[Issue #5632](https://redmine.postgresql.org/issues/5632) - Ensure that the user will be able to modify the start value of the Identity column. +[Issue #5646](https://redmine.postgresql.org/issues/5646) - Ensure that RLS Policy node should be searchable using search object. +[Issue #5652](https://redmine.postgresql.org/issues/5652) - Modified the 'Commit' and 'Rollback' query tool button icons. +[Issue #5666](https://redmine.postgresql.org/issues/5666) - Added missing dependencies/dependent and corrected some wrongly identified. +[Issue #5670](https://redmine.postgresql.org/issues/5670) - Fixed an issue where the error message does not have a close button on utility dialogs. +[Issue #5675](https://redmine.postgresql.org/issues/5675) - Fixed CSRF errors when PEM opened in an iframe on safari browser. +[Issue #5677](https://redmine.postgresql.org/issues/5677) - Fixed text color issue in explain analyze for the Dark theme. +[Issue #5686](https://redmine.postgresql.org/issues/5686) - Fixed issue where the user was not able to update policy if the policy is created with space. +[Issue #5689](https://redmine.postgresql.org/issues/5689) - Added the 'ORDER BY' clause for the privileges type to fix schema diff issue. +[Issue #5710](https://redmine.postgresql.org/issues/5710) - Fixed an issue when comparing the table with a trigger throwing error in schema diff. +[Issue #5713](https://redmine.postgresql.org/issues/5713) - Corrected DROP SQL syntax for catalog. +[Issue #5716](https://redmine.postgresql.org/issues/5716) - Fixed an issue where ajax call continues to fire even after disconnect the database server. +[Issue #5722](https://redmine.postgresql.org/issues/5722) - Ensure that the user should be able to drop the database even if it is connected. +[Issue #5724](https://redmine.postgresql.org/issues/5724) - Clarify some of the differences when running in server mode in the docs. +[Issue #5730](https://redmine.postgresql.org/issues/5730) - Resolve schema diff dependencies by selecting the appropriate node automatically and maintain the order in the generated script. +[Issue #5732](https://redmine.postgresql.org/issues/5732) - Fixed some accessibility issues. +[Issue #5734](https://redmine.postgresql.org/issues/5734) - Update the description of GIN and GiST indexes in the documentation. +[Issue #5739](https://redmine.postgresql.org/issues/5739) - Ensure that the import/export feature should work with SSH Tunnel. +[Issue #5746](https://redmine.postgresql.org/issues/5746) - Fixed an issue where --load-server does not allow loading connections that use pg_services. +[Issue #5748](https://redmine.postgresql.org/issues/5748) - Fixed incorrect reverse engineering SQL for Foreign key when creating a table. +[Issue #5754](https://redmine.postgresql.org/issues/5754) - Fixed an issue where schema diff is not working when providing the options to Foreign Data Wrapper, Foreign Server, and User Mapping. +[Issue #5764](https://redmine.postgresql.org/issues/5764) - Fixed SQL for Row Level Security which is incorrectly generated. +[Issue #5765](https://redmine.postgresql.org/issues/5765) - Fixed an issue in the query tool when columns are having the same name as javascript object internal functions. +[Issue #5766](https://redmine.postgresql.org/issues/5766) - Fixed string indices must be integers issue for PostgreSQL < 9.3. +[Issue #5779](https://redmine.postgresql.org/issues/5779) - Remove illegal argument from trigger function in trigger DDL statement. +[Issue #5794](https://redmine.postgresql.org/issues/5794) - Fixed excessive CPU usage by stopping the indefinite growth of the graph dataset. +[Issue #5802](https://redmine.postgresql.org/issues/5802) - Remove maximum length on the password field in the server dialog. +[Issue #5807](https://redmine.postgresql.org/issues/5807) - Fixed an issue where a column is renamed and then removed, then the drop SQL query takes the wrong column name. +[Issue #5815](https://redmine.postgresql.org/issues/5815) - Fixed an issue where clicking on the 'Generate script' button shows a forever spinner due to pop up blocker. +[Issue #5816](https://redmine.postgresql.org/issues/5816) - Ensure that the 'CREATE SCHEMA' statement should be present in the generated script if the schema is not present in the target database. +[Issue #5820](https://redmine.postgresql.org/issues/5820) - Fixed an issue while refreshing Resource Group. +[Issue #5833](https://redmine.postgresql.org/issues/5833) - Fixed an issue where custom sequences are not visible when show system objects are set to false. +[Issue #5834](https://redmine.postgresql.org/issues/5834) - Ensure that the 'Remove Server Group' option is available in the context menu. +[Issue #5839](https://redmine.postgresql.org/issues/5839) - Ensure that multiple extensions can be dropped from the properties tab. +[Issue #5845](https://redmine.postgresql.org/issues/5845) - Fixed an issue where the query tool is not fetching more than 1000 rows for the table does not have any primary key. diff --git a/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/04_pem_release_notes_7_15.mdx b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/04_pem_release_notes_7_15.mdx new file mode 100644 index 00000000000..7d31551776b --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/04_pem_release_notes_7_15.mdx @@ -0,0 +1,80 @@ +--- +title: "PEM v7.15" +--- + +Release date: 2020-07-22 + +## Features + +PEM-2457 - Added support for schema level restriction. \[Support Ticket #883404] +PEM-2540 - Added capability to monitor the xLogReceive parameter set by EFM +PEM-3432 - Added support to monitor PG/EPAS 13 +PEM-3445 - Support new configurations of BART ('archive_path', 'bart_socket_directory') in PEM \[Support Ticket #1015972] +PEM-3446 - Document SNMP trap oid detailed information used by PEM \[Support Ticket #900679] +PEM-3482 - Improve the performance diagnostics tool to show CPU usage for the active sessions along with the wait events for better performance analysis +[Issue #5452](https://redmine.postgresql.org/issues/5452) - Added connected PEM user and connection name in the log file. +[Issue #5468](https://redmine.postgresql.org/issues/5468) - Added option to ignore the whitespaces while comparing objects in schema diff. +[Issue #5500](https://redmine.postgresql.org/issues/5500) - Added server group name while selecting servers in schema diff. +[Issue #5516](https://redmine.postgresql.org/issues/5516) - Added support of Row Security Policies. +[Issue #5576](https://redmine.postgresql.org/issues/5576) - Improve error messaging if the storage and log directories cannot be created. +[Issue #5601](https://redmine.postgresql.org/issues/5601) - Added RLS Policy support in Schema Diff. +[Issue #5622](https://redmine.postgresql.org/issues/5622) - Added support for permissive/restricted policy type while creating RLS Policy. + +## Housekeeping + +[Issue #5325](https://redmine.postgresql.org/issues/5325) - Improve code coverage and API test cases for Collations. +[Issue #5326](https://redmine.postgresql.org/issues/5326) - Improve code coverage and API test cases for Domain and Domain Constraints. +[Issue #5329](https://redmine.postgresql.org/issues/5329) - Improve code coverage and API test cases for FTS Configuration, FTS Parser, FTS Dictionaries, and FTS Template. +[Issue #5333](https://redmine.postgresql.org/issues/5333) - Improve code coverage and API test cases for Indexes. +[Issue #5334](https://redmine.postgresql.org/issues/5334) - Improve code coverage and API test cases for the Rules module. +[Issue #5335](https://redmine.postgresql.org/issues/5335) - Improve code coverage and API test cases for Triggers and Compound Triggers. +[Issue #5455](https://redmine.postgresql.org/issues/5455) - Refactor PEM entrypoint python file so it can be imported and is a lot more readable. +[Issue #5493](https://redmine.postgresql.org/issues/5493) - Search object UI improvements. +[Issue #5581](https://redmine.postgresql.org/issues/5581) - Documentation of Row Level Security Policies. + +## Bug fixes + +PEM-699 - "Long running queries" alert should not log autovacuum queries. \[Support Ticket #679920] +PEM-3349 - pemworker register server help option should show the agent configuration directory path. \[Support Ticket #1001212] +PEM-1508 - Documented about calculation of shared system memory and removed it from capacity manager metrics as is always constant. \[809378] +PEM-3322 - Documented about system jobs and their default schedules. \[990553] +PEM-3436 - Updated all the alert templates queries which show negative values and improve the performance while fetching the data from history tables. \[992418] +PEM-2490 - Supported Platforms and Versions link is added to Software prerequisites section in Installation guides. \[Support Ticket #885334] +PEM-3490 - Removed send_email from POST/PUT payload and added validation for all_low_alert_enable/high_low_alert_enable/med_low_alert_enable/low_alert_enable for their respective email group id. \[Support Ticket #1005781] +[Issue #3591](https://redmine.postgresql.org/issues/3591) - Ensure that the query tool should display the proper error message while terminating the active session. +[Issue #3669](https://redmine.postgresql.org/issues/3669) - Ensure that proper error should be displayed for the deleted node. +[Issue #3694](https://redmine.postgresql.org/issues/3694) - Gracefully informed the user that the database is already connected when they click on "Connect Database...". +[Issue #3787](https://redmine.postgresql.org/issues/3787) - Disabled the Stop process button after clicking it and added a message 'Terminating the process...' to notify the user. +[Issue #3814](https://redmine.postgresql.org/issues/3814) - Fixed issue of error message not getting displayed when filename is empty for backup, restore, and import/export. +[Issue #3851](https://redmine.postgresql.org/issues/3851) - Add proper indentation to the code while generating functions, procedures, and trigger functions. +[Issue #4033](https://redmine.postgresql.org/issues/4033) - Fixed an issue where clicking on the cross button of the alert box on the login page is not working. +[Issue #4099](https://redmine.postgresql.org/issues/4099) - Fixed the SQL help issue for EDB Postgres Advanced Server. +[Issue #4223](https://redmine.postgresql.org/issues/4223) - Ensure that maintenance jobs should be worked properly for indexes under a materialized view. +[Issue #4226](https://redmine.postgresql.org/issues/4226) - Fixed an issue where select all checkbox only selects the first 50 tables. +[Issue #4235](https://redmine.postgresql.org/issues/4235) - Fixed tab indent issue on a selection of lines is deleting the content when 'use spaces == true' in the preferences. +[Issue #4840](https://redmine.postgresql.org/issues/4840) - Ensure that 'With OID' option should be disabled while taking backup of database server version 12 and above. +[Issue #5001](https://redmine.postgresql.org/issues/5001) - Fixed invalid literal issue when removing the connection limit for the existing role. +[Issue #5287](https://redmine.postgresql.org/issues/5287) - Fixed dark theme-related CSS and modify the color codes. +[Issue #5398](https://redmine.postgresql.org/issues/5398) - Fixed generated SQL issue for auto vacuum options. +[Issue #5416](https://redmine.postgresql.org/issues/5416) - Ensure that the query tool panel gets closed when clicking on the 'Don't Save' button. +[Issue #5422](https://redmine.postgresql.org/issues/5422) - Ensure that the dependencies tab shows correct information for Synonyms. +[Issue #5434](https://redmine.postgresql.org/issues/5434) - Fixed an issue where the newly added table is not alphabetically added to the tree. +[Issue #5440](https://redmine.postgresql.org/issues/5440) - Fixed list sorting issue in the schema diff tool. +[Issue #5449](https://redmine.postgresql.org/issues/5449) - Fixed an issue while comparing the two identical schemas using the schema diff tool. +[Issue #5450](https://redmine.postgresql.org/issues/5450) - Fixed an issue when renaming the column not added in the proper order. +[Issue #5463](https://redmine.postgresql.org/issues/5463) - Fixed an issue where CSV download quotes numeric columns. +[Issue #5465](https://redmine.postgresql.org/issues/5465) - Fixed an issue where the Edge browser version is showing wrong and warning message gets displayed. +[Issue #5470](https://redmine.postgresql.org/issues/5470) - Fixed backgrid row hover issue where on hover background color is set for edit and delete cell only. +[Issue #5481](https://redmine.postgresql.org/issues/5481) - Fixed data truncation issue when updating the data of type character with length. +[Issue #5492](https://redmine.postgresql.org/issues/5492) - Fixed an issue where the search object is unable to locate inherited tables and constraint filters are not working. +[Issue #5496](https://redmine.postgresql.org/issues/5496) - Fixed an issue where clicking on Select All button, not selecting all the options in pgAgent job scheduler. +[Issue #5507](https://redmine.postgresql.org/issues/5507) - Fixed connection and version number detection issue when the database server is upgraded. +[Issue #5539](https://redmine.postgresql.org/issues/5539) - Fixed typo in exception keyword. +[Issue #5584](https://redmine.postgresql.org/issues/5584) - Fixed an issue where two identical tables showing different by schema diff tool. +[Issue #5620](https://redmine.postgresql.org/issues/5620) - Fixed an issue while creating RLS Policy with the name having space. +[Issue #5621](https://redmine.postgresql.org/issues/5621) - Remove extra brackets from reverse engineering SQL of RLS Policy. +[Issue #5629](https://redmine.postgresql.org/issues/5629) - Fixed an issue where the user is able to edit properties when some of the collection nodes are selected. +[Issue #5631](https://redmine.postgresql.org/issues/5631) - Fixed 'cant execute empty query' issue when remove the value of 'USING' or 'WITH CHECK' option of RLS Policy. +[Issue #5633](https://redmine.postgresql.org/issues/5633) - Ensure that create RLS Policy menu should not be visible for catalog objects. +[Issue #5647](https://redmine.postgresql.org/issues/5647) - Fixed an issue where difference DDL is showing the wrong SQL when changing the policy owner. +[Issue #5673](https://redmine.postgresql.org/issues/5673) - Fixed an issue where fetching the schema throws an error if the database is not connected in Schema Diff. diff --git a/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/05_pem_release_notes_7_14.mdx b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/05_pem_release_notes_7_14.mdx new file mode 100644 index 00000000000..5843ead568e --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/05_pem_release_notes_7_14.mdx @@ -0,0 +1,109 @@ +--- +title: "PEM v7.14" +--- + +Release date: 2020-05-13 + +## Features + +PEM-799 - Allow multiple agents to send emails & SNMP traps by enabling the configurations 'enable_smtp' & 'enable_snmp' in agent configuration (agent.cfg) file. +PEM-1593 - Introduced a new state 'Unmanaged' for the database servers for which are not being not monitored by PEM, but registered with it. +PEM-3283 - Modified the configuration script, installer & PEMAgent to generate certificates using 4096 bit key, and modified SSLUtils to sign certificates using SHA256 Hash \[Support Ticket #989497] +PEM-3283 - PEMAgent service will not get disabled after upgrading \[Support Ticket #994563] +PEM-3308 - Introduced new v3 version of REST API, which includes SNMP v3 support. +[Issue #2172](https://redmine.postgresql.org/issues/2172) - Added search object functionality. +[Issue #5154](https://redmine.postgresql.org/issues/5154) - Added accessibility support in AlertifyJS. +[Issue #5179](https://redmine.postgresql.org/issues/5179) - Added Python 3.8 support. +[Issue #5184](https://redmine.postgresql.org/issues/5184) - Added support for parameter toast_tuple_target and parallel_workers of the table. +[Issue #5261](https://redmine.postgresql.org/issues/5261) - Added support of Collation, FTS Configuration, FTS Dictionary, FTS Parser, and FTS Template to the Schema Diff. +[Issue #5262](https://redmine.postgresql.org/issues/5262) - Added support of Domain, Domain Constraints and Types to the Schema Diff. +[Issue #5263](https://redmine.postgresql.org/issues/5263) - Added support of Foreign Tables to the Schema Diff. +[Issue #5264](https://redmine.postgresql.org/issues/5264) - Added support of Packages, Sequences and Synonyms to the Schema Diff. +[Issue #5399](https://redmine.postgresql.org/issues/5399) - Warn the user if an unsupported, deprecated or unknown browser is detected. + +## Housekeeping + +[Issue #5133](https://redmine.postgresql.org/issues/5133) - Improvements in the UI for both default and dark themes. +[Issue #5271](https://redmine.postgresql.org/issues/5271) - Enhance the color of switch control for both light and dark theme. +[Issue #4620](https://redmine.postgresql.org/issues/4620) - Add Reverse Engineered and Modified SQL tests for procedures. + +## Bug fixes + +PEM-965 - Fixed hanging issue after 'Enable Remote Monitoring?' prompted to user. \[Support Ticket #771096] +PEM-2500 - Corrected the version 3 of the certificate generated by sslutils +PEM-3129 - Update 'pem.bart_backups' table with primary key as server id and backup id. \[Support Ticket #972254] +PEM-3183 - SQL profiler plugin was not able to load the profiler traces on ppcle machine \[Support Ticket #991929] +PEM-3202 - Allow user to open the job step logs in the new browser window as well as download it from schedule tasks. +PEM-3248 - Check for proper PEM schema version before running BART specific functions for backward compatibility \[Support Ticket #981208] +PEM-3272 - Fixed issue where SQL profiler filter dialog not able to display applied filter properly \[Support Ticket #987042] +PEM-3316 - Fixed PEMAgent service should not get disabled after upgrading \[Support Ticket #994563] +PEM-3323 - Fixed an issue where user was not able to change the email group from Agent dialog \[Support Ticket #995734] +[Issue #1257](https://redmine.postgresql.org/issues/1257) - Ensure all object types have a "System XXX?" property. +[Issue #2813](https://redmine.postgresql.org/issues/2813) - Ensure that the password prompt should not be visible if the database server is in trust authentication mode. +[Issue #3495](https://redmine.postgresql.org/issues/3495) - Fixed an issue where the query tool unable to load the file which contains the BOM marker. +[Issue #3523](https://redmine.postgresql.org/issues/3523) - Fixed an issue where right-clicking a browser object does not apply to the object on which right-click was fired. +[Issue #3645](https://redmine.postgresql.org/issues/3645) - Ensure that the start and end date should be deleted when clear the selection for pgAgent Job. +[Issue #3900](https://redmine.postgresql.org/issues/3900) - Added multiple drop/delete functionality for the table constraints. +[Issue #3947](https://redmine.postgresql.org/issues/3947) - Fixed copy-paste row issues in View/Edit Data. +[Issue #3972](https://redmine.postgresql.org/issues/3972) - Modified keyboard shortcuts in Query Tool for OSX native support. +[Issue #3988](https://redmine.postgresql.org/issues/3988) - Fixed cursor disappeared issue in the query editor for some of the characters when zoomed out. +[Issue #4180](https://redmine.postgresql.org/issues/4180) - Fixed mouse click issue where it does not select an object in Browser unless the pointer is over the object. +[Issue #4237](https://redmine.postgresql.org/issues/4237) - Fix an issue where the user can not change the value of DateTime picker control using keyboard. +[Issue #4440](https://redmine.postgresql.org/issues/4440) - Ensure the DROP statements in reverse engineered SQL are properly quoted for all objects. +[Issue #4445](https://redmine.postgresql.org/issues/4445) - Ensure all object names in the title line of the reverse-engineered SQL are not quoted. +[Issue #4504](https://redmine.postgresql.org/issues/4504) - Fixed an issue where like options should be disabled if the relation is not selected while creating a table. +[Issue #4512](https://redmine.postgresql.org/issues/4512) - Fixed calendar opening issue on the exception tab inside the schedules tab of pgAgent. +[Issue #4573](https://redmine.postgresql.org/issues/4573) - Ensure that if the delimiter is set other than comma then download the file as '.txt' file. +[Issue #4608](https://redmine.postgresql.org/issues/4608) - Fixed some accessibility issues in the dialogs. +[Issue #4684](https://redmine.postgresql.org/issues/4684) - Fixed encoding issue while saving data in encoded charset other than 'utf-8'. +[Issue #4709](https://redmine.postgresql.org/issues/4709) - Added schema-qualified dictionary names in FTS configuration to avoid confusion of duplicate names. +[Issue #4856](https://redmine.postgresql.org/issues/4856) - Enable the save button by default when a query tool is opened with CREATE or other scripts. +[Issue #4858](https://redmine.postgresql.org/issues/4858) - Fixed python exception error when user tries to download the CSV and there is a connection issue. +[Issue #4873](https://redmine.postgresql.org/issues/4873) - Fixed an issue when changing the comments of the procedure with arguments gives error in case of overloading. +[Issue #4946](https://redmine.postgresql.org/issues/4946) - Fixed an issue when the user creates a temporary table with 'on commit drop as' clause. +[Issue #4955](https://redmine.postgresql.org/issues/4955) - Changed the color of selected and hovered item for Select2 dropdown. +[Issue #4957](https://redmine.postgresql.org/issues/4957) - Ensure that Constraint Trigger, Deferrable, Deferred option should be disabled when the user selects EDB-SPL function for the trigger. +[Issue #4969](https://redmine.postgresql.org/issues/4969) - Fixed an issue where changing the values of columns with JSONB or JSON types to NULL. +[Issue #4996](https://redmine.postgresql.org/issues/4996) - Improve the style of the highlighted code after query execution for Dark mode. +[Issue #5007](https://redmine.postgresql.org/issues/5007) - Ensure index dropdown should have existing indexes while creating unique constraints. +[Issue #5043](https://redmine.postgresql.org/issues/5043) - Fixed an issue where columns names should be visible in the order of their creation in the browser tree. +[Issue #5053](https://redmine.postgresql.org/issues/5053) - Fixed an issue where changing the columns in the existing view throws an error. +[Issue #5058](https://redmine.postgresql.org/issues/5058) - Ensure that AlertifyJS should not be visible as a title for alert dialog. +[Issue #5077](https://redmine.postgresql.org/issues/5077) - Changed background pattern for geometry viewer to use #fff for all themes. +[Issue #5101](https://redmine.postgresql.org/issues/5101) - Fix an issue where debugger not showing all arguments anymore after hitting SQL error while debugging. +[Issue #5115](https://redmine.postgresql.org/issues/5115) - Fix an issue where command and statements were parsed incorrectly for Rules. +[Issue #5142](https://redmine.postgresql.org/issues/5142) - Ensure that all the transactions should be canceled before closing the connections when a server is disconnected using PEM. +[Issue #5143](https://redmine.postgresql.org/issues/5143) - Fix accessibility issue for the maximize button of the Alertify dialog. +[Issue #5157](https://redmine.postgresql.org/issues/5157) - Ensure that default sort order should be using the primary key in View/Edit data. +[Issue #5180](https://redmine.postgresql.org/issues/5180) - Fixed an issue where the autovacuum_enabled parameter is added automatically in the RE-SQL when the table has been created using the WITH clause. +[Issue #5184](https://redmine.postgresql.org/issues/5184) - Fixed Firefox monospaced issue by updating the font to the latest version. +[Issue #5213](https://redmine.postgresql.org/issues/5213) - Fixed an issue when the user performs refresh on a large size materialized view. +[Issue #5214](https://redmine.postgresql.org/issues/5214) - Update Flask-SQLAlchemy and SQLAlchemy package which is not working on Windows with Python 3.8. +[Issue #5215](https://redmine.postgresql.org/issues/5215) - Fix syntax error when changing the event type for the existing rule. +[Issue #5221](https://redmine.postgresql.org/issues/5221) - Improve logic to get the DDL statements as a part of the comparison. +[Issue #5227](https://redmine.postgresql.org/issues/5227) - Fixed an issue where user cannot be added if many users are already exists. +[Issue #5241](https://redmine.postgresql.org/issues/5241) - Fixed tab key navigation issue for Grant Wizard. +[Issue #5268](https://redmine.postgresql.org/issues/5268) - Fixed generated SQL when any token in FTS Configuration or any option in FTS Dictionary is changed. +[Issue #5270](https://redmine.postgresql.org/issues/5270) - Ensure that OID should be shown in properties for Synonyms. +[Issue #5275](https://redmine.postgresql.org/issues/5275) - Fixed tab key navigation issue for parameters in table dialog. +[Issue #5279](https://redmine.postgresql.org/issues/5279) - Fixed Unicode character issue causing error on Python2 environment. +[Issue #5302](https://redmine.postgresql.org/issues/5302) - Fixed an issue where difference SQL is not seen in the schema diff tool for Types. +[Issue #5314](https://redmine.postgresql.org/issues/5314) - Ensure that switch cell is in sync with switch control for accessibility. +[Issue #5315](https://redmine.postgresql.org/issues/5315) - Fixed an issue where schema diff showing changes in the identical domain constraints. +[Issue #5350](https://redmine.postgresql.org/issues/5350) - Fixed an issue where schema diff marks an identical table as different. +[Issue #5352](https://redmine.postgresql.org/issues/5352) - Fixed the rightmost and bottom tooltip crop issues in the explain query plan. +[Issue #5356](https://redmine.postgresql.org/issues/5356) - Fixed modified SQL issue while adding an exception in pgAgent job schedule. +[Issue #5361](https://redmine.postgresql.org/issues/5361) - Fixes an issue where PEM GUI does not display properly in IE 11. +[Issue #5362](https://redmine.postgresql.org/issues/5362) - Fixed an issue where the identical packages and sequences visible as different in the schema diff tool. +[Issue #5366](https://redmine.postgresql.org/issues/5366) - Added alert message to Reset Layout if any of the panels from Query Tool failed to load. +[Issue #5371](https://redmine.postgresql.org/issues/5371) - Fixed tab key navigation for some dialogs. +[Issue #5375](https://redmine.postgresql.org/issues/5375) - Fixed an issue where the Mode cell of argument grid does not appear completely in the Functions dialog. +[Issue #5383](https://redmine.postgresql.org/issues/5383) - Fixed syntax error while refreshing the existing synonyms. +[Issue #5387](https://redmine.postgresql.org/issues/5387) - Fixed an issue where the mode is not shown in the properties dialog of functions/procedures if all the arguments are "IN" arguments. +[Issue #5396](https://redmine.postgresql.org/issues/5396) - Fixed an issue where the search object module unable to locate the object in the browser tree. +[Issue #5400](https://redmine.postgresql.org/issues/5400) - Fixed internal server error when the database server is logged in with non-super user. +[Issue #5401](https://redmine.postgresql.org/issues/5401) - Fixed search object issue when the object name contains special characters. +[Issue #5410](https://redmine.postgresql.org/issues/5410) - Fixed an issue while removing the package body showing wrong modified SQL. +[Issue #5441](https://redmine.postgresql.org/issues/5441) - Fixed an issue where the search object not able to locate pg\_[toast](<>)\* tables in the pg_toast schema. +[Issue #5415](https://redmine.postgresql.org/issues/5415) - Ensure that the query tool context menu should work on the collection nodes. +[Issue #5447](https://redmine.postgresql.org/issues/5447) - Fixed failed to fetch utility error when click on refresh(any option) materialized view. diff --git a/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/06_pem_release_notes_7_13.mdx b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/06_pem_release_notes_7_13.mdx new file mode 100644 index 00000000000..d4139f7d4e7 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/06_pem_release_notes_7_13.mdx @@ -0,0 +1,72 @@ +--- +title: "PEM v7.13" +--- + +Release date: 2020-02-20 + +## Features + +PEM-594 - Logout the user session when there is no user activity. +PEM-3107 - Core usage report. +PEM-2794 - Added capability in pemAgent to send SNMP trap with SNMP v3 support. +[Issue #2554](https://redmine.postgresql.org/issues/2554) - Added support for a multi-level partitioned table. +[Issue #3452](https://redmine.postgresql.org/issues/3452) - Added a Schema Diff tool to compare two schemas and generate the diff script. +[Issue #4762](https://redmine.postgresql.org/issues/4762) - Allow screen-reader to read label & description of non-textable elements. +[Issue #4763](https://redmine.postgresql.org/issues/4763) - Allow screen-reader to identify the alert errors. +[Issue #4764](https://redmine.postgresql.org/issues/4764) - Allow screen-reader to read relationship attributes in nested elements. +[Issue #4770](https://redmine.postgresql.org/issues/4770) - Added labels and titles after parsing and validating all the web pages for accessibility. +[Issue #4993](https://redmine.postgresql.org/issues/4993) - Set input controls as read-only instead of disabled will allow tab navigation in the properties tab and also allow screen readers to read it. + +## Housekeeping + +[Issue #4988](https://redmine.postgresql.org/issues/4988) - Refactored SQL of Table's and it's child nodes. +[Issue #5023](https://redmine.postgresql.org/issues/5023) - Refactored SQL of Views and Materialized Views. +[Issue #5024](https://redmine.postgresql.org/issues/5024) - Refactored SQL of Functions and Procedures. +[Issue #5038](https://redmine.postgresql.org/issues/5038) - Added support for on-demand loading of items in Select2. +[Issue #5049](https://redmine.postgresql.org/issues/5049) - Improve code coverage and API test cases for the CAST module. +[Issue #5050](https://redmine.postgresql.org/issues/5050) - Improve code coverage and API test cases for the LANGUAGE module. +[Issue #5072](https://redmine.postgresql.org/issues/5072) - Updated wcDocker package which includes aria-label accessibility improvements. +[Issue #5088](https://redmine.postgresql.org/issues/5088) - Improve code coverage and API test cases for the Event Trigger module. +[Issue #5096](https://redmine.postgresql.org/issues/5096) - Replace node-sass with sass for SCSS compilation. +[Issue #5176](https://redmine.postgresql.org/issues/5176) - Enhance logging by tracking stdout and stderr of subprocess when log level set to DEBUG. +[Issue #5185](https://redmine.postgresql.org/issues/5185) - Added option to override the class name of a label tag for select2 control. + +## Bug fixes + +PEM-383 - Provide the column picker toolbar button in SQL profiler trace window. +PEM-723 - Fixed a SQL Syntax error when PEM Agent queries tablespaces. \[Support Ticket #570926] +PEM-789 - Fixed historical span issue with memory usage graph. \[Support Ticket #665140] +PEM-933 - Fixed sorting of table chart data when rendering on custom dashboard. \[Support Ticket #764647] +PEM-1406 - Fixed the Swap Consumption alert template to reflect the actual swap consumption instead of total swap space. \[Support Ticket #806008] +PEM-2255 - Fixed in PEM RestAPI for server black out option. \[Support Ticket #882589] +PEM-2545/Issue #4511 <> - Grant wizard is not able to handle multiple objects because all objects are passed as query string URL \[Support Ticket #897419] +PEM-2573 - Fixed for shared_buffers dashboard's historical span issue. \[Support Ticket #894867] +PEM-2614 - Fixed idle in transaction (aborted) state check in the probe code for session info. \[Support Ticket #908442] +PEM-2647 - Fixed storage pie chart issue to display the correct value. \[Support Ticket #907753] +PEM-2686 - Fixed save password functionality is not working when server was registered by PEM worker. \[Support Ticket #912948] +PEM-2828 - Fixed "Alert Errors" alert template to count the errors for which alerts are enabled. \[Support Ticket #903272] +PEM-3041 - Fixed not able to see the agent status in the PEM Monitoring dashboard due to numeric overflow error. \[Support Ticket #934778] +PEM-3139 - RLS policy was not updated properly for "pem.job" table during the PEM upgrade. \[Support Ticket #937823] +[Issue #3812](https://redmine.postgresql.org/issues/3812) - Ensure that path file name should not disappear when changing ext from the dropdown in file explorer dialog. +[Issue #4198](https://redmine.postgresql.org/issues/4198) - Fix syntax highlighting in code mirror for backslash and escape constant. +[Issue #4410](https://redmine.postgresql.org/issues/4410) - Fixed an issue while editing char\[] or character varying\[] column from View/Edit data throwing an error. +[Issue #4506](https://redmine.postgresql.org/issues/4506) - Fix an issue where clicking on an empty textbox like fill factor or comments, considers it as change and enabled the save button. +[Issue #4601](https://redmine.postgresql.org/issues/4601) - Added tab navigation on close buttons for all the panels and create/properties dialog. +[Issue #4633](https://redmine.postgresql.org/issues/4633) - Added support to view multilevel partitioned tables. +[Issue #4724](https://redmine.postgresql.org/issues/4724) - Fix network disconnect issue while establishing the connection via SSH Tunnel and it impossible to expand the Servers node. +[Issue #4818](https://redmine.postgresql.org/issues/4818) - Fix server connection drops out issue in query tool. +[Issue #4827](https://redmine.postgresql.org/issues/4827) - Fix column resizable issue in the file explorer dialog. +[Issue #4842](https://redmine.postgresql.org/issues/4842) - Ensure that constraints, indexes, rules, triggers, and compound triggers should be created on partitions. +[Issue #4926](https://redmine.postgresql.org/issues/4926) - Fix VPN network disconnect issue where it hangs on expanding the Servers node. +[Issue #4933](https://redmine.postgresql.org/issues/4933) - Ensure that the Servers collection node should expand independently of server connections. +[Issue #4943](https://redmine.postgresql.org/issues/4943) - Added more information to the 'Database connected/disconnected' message. +[Issue #5000](https://redmine.postgresql.org/issues/5000) - Logout the session when no user activity of mouse move, click or keypress. +[Issue #5008](https://redmine.postgresql.org/issues/5008) - Ensure that the error message should not be displayed if Tablespace is not selected while creating the index. +[Issue #5009](https://redmine.postgresql.org/issues/5009) - Fix an issue where operator, access method and operator class is not visible for exclusion constraints. +[Issue #5025](https://redmine.postgresql.org/issues/5025) - Fix an issue where setting STORAGE_DIR to empty should show all the volumes on Windows in server mode. +[Issue #5047](https://redmine.postgresql.org/issues/5047) - Added tab navigation for tabs under explain panel in query tool. +[Issue #5065](https://redmine.postgresql.org/issues/5065) - Updated the incorrect icon used for the cast node on refresh. +[Issue #5066](https://redmine.postgresql.org/issues/5066) - Fix an issue where refreshing a package results in the change in the object completely. +[Issue #5074](https://redmine.postgresql.org/issues/5074) - Fix an issue where select, insert and update scripts on tables throwing an error. +[Issue #5107](https://redmine.postgresql.org/issues/5107) - Set proper focus on tab navigation for file manager dialog. +[Issue #5116](https://redmine.postgresql.org/issues/5116) - Fixed an issue where Save Password control disappears after clicking on it while creating a server. diff --git a/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/07_pem_release_notes_7_12.mdx b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/07_pem_release_notes_7_12.mdx new file mode 100644 index 00000000000..9b9728470f4 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/07_pem_release_notes_7_12.mdx @@ -0,0 +1,76 @@ +--- +title: "PEM v7.12" +--- + +Release date: 2019-12-02 + +## Features + +PEM-2477 - Allow the pemAgent to create a password-less SSH authentication between two linux systems. User can now choose to create it from the database server properties dialog, and backup restore dialog. +PEM-2848 - Allow the pemAgent to set/override the 'archive_command' of the database server configuration using 'BART INIT' command. User can choose to set/override the 'archive_command' from the database server properties dialog. +[Issue #1974](https://redmine.postgresql.org/issues/1974) - Added encrypted password in reverse engineered SQL for roles. +[Issue #3741](https://redmine.postgresql.org/issues/3741) - Added Dark (Beta) UI Theme option. +[Issue #4006](https://redmine.postgresql.org/issues/4006) - Support Enable Always and Enable Replica on triggers. +[Issue #4351](https://redmine.postgresql.org/issues/4351) - Add an option to request confirmation before cancelling changes on a Properties dialog. +[Issue #4396](https://redmine.postgresql.org/issues/4396) - Warn the user on changing the definition of Materialized View about the loss of data and its dependent objects. +[Issue #4435](https://redmine.postgresql.org/issues/4435) - Allow drag and drop functionality for all the nodes under the database node, excluding collection nodes. +[Issue #4711](https://redmine.postgresql.org/issues/4711) - Use a 'play' icon for the Execute Query button in the Query Tool for greater consistency with other applications. +[Issue #4772](https://redmine.postgresql.org/issues/4772) - Added aria-label to provide an invisible label where a visible label cannot be used. +[Issue #4773](https://redmine.postgresql.org/issues/4773) - Added role="status" attribute to all the status messages for accessibility. +[Issue #4990](https://redmine.postgresql.org/issues/4990) - Changed the open query tool and data filter icons. + +## Housekeeping + +[Issue #4696](https://redmine.postgresql.org/issues/4696) - Add Reverse Engineered and Modified SQL tests for Materialized Views. +[Issue #4701](https://redmine.postgresql.org/issues/4701) - Optimize Webpack to improve overall performance. +[Issue #4807](https://redmine.postgresql.org/issues/4807) - Refactored code of table and it's child nodes. +[Issue #4938](https://redmine.postgresql.org/issues/4938) - Refactored code of columns node. + +## Bug fixes + +[Issue #3130](https://redmine.postgresql.org/issues/3130) - Ensure create new object dialog should be opened when alt+shift+n key is pressed on the collection node. +[Issue #3279](https://redmine.postgresql.org/issues/3279) - Fixed issue where Drop and Disconnect connection menu points are too close to each other. +[Issue #3538](https://redmine.postgresql.org/issues/3538) - Fix issue where the Reset button does not get enabled till all the mandatory fields are provided in the dialog. +[Issue #3789](https://redmine.postgresql.org/issues/3789) - Ensure context menus never get hidden below the menu bar. +[Issue #3859](https://redmine.postgresql.org/issues/3859) - Rename the context menu from 'Drop Server' to 'Remove Server'. +[Issue #3913](https://redmine.postgresql.org/issues/3913) - Ensure the correct "running at" agent is shown when a pgAgent job is executing. +[Issue #3915](https://redmine.postgresql.org/issues/3915) - Fix an issue in the Query Tool where shortcut keys could be ignored following a query error. +[Issue #3999](https://redmine.postgresql.org/issues/3999) - Fix the toggle case shortcut key combination. +[Issue #4191](https://redmine.postgresql.org/issues/4191) - Ensure comments are shown in reverse engineered SQL for table partitions. +[Issue #4242](https://redmine.postgresql.org/issues/4242) - Handle NULL values appropriately when sorting backgrid tables. +[Issue #4341](https://redmine.postgresql.org/issues/4341) - Give appropriate error messages when the user tries to use an blank master password. +[Issue #4451](https://redmine.postgresql.org/issues/4451) - Remove arbitrary (and incorrect) requirement that composite types must have at least two members. +[Issue #4459](https://redmine.postgresql.org/issues/4459) - Don't quote bigints when copying them from the Query Tool results grid. +[Issue #4482](https://redmine.postgresql.org/issues/4482) - Ensure compression level is passed to pg_dump when backing up in directory format. +[Issue #4483](https://redmine.postgresql.org/issues/4483) - Ensure the number of jobs can be specified when backing up in directory format. +[Issue #4516](https://redmine.postgresql.org/issues/4516) - Remove the sorting of table headers with no labels. +[Issue #4564](https://redmine.postgresql.org/issues/4564) - Ensure Javascript errors during Query Tool execution are reported as such and not as Ajax errors. +[Issue #4610](https://redmine.postgresql.org/issues/4610) - Suppress Enter key presses in Alertify dialogues when the come from Select2 controls to allow item selection with Enter. +[Issue #4647](https://redmine.postgresql.org/issues/4647) - Ensure that units are respected when sorting by file size in the File dialog. +[Issue #4659](https://redmine.postgresql.org/issues/4659) - Updated documentation for default privileges to clarify more on the grantor. +[Issue #4674](https://redmine.postgresql.org/issues/4674) - Fix query tool launch error if user name contains HTML characters. It's a regression. +[Issue #4730](https://redmine.postgresql.org/issues/4730) - Ensure all messages are retained in the Query Tool from long running queries. +[Issue #4734](https://redmine.postgresql.org/issues/4734) - Updated documentation for the delete row button that only strikeout the row instead of deleting it. +[Issue #4761](https://redmine.postgresql.org/issues/4761) - Fix an issue where the wrong type is displayed when changing the datatype from timestamp with time zone to timestamp without time zone. +[Issue #4779](https://redmine.postgresql.org/issues/4779) - Updated documentation for the query tool toolbar buttons. +[Issue #4792](https://redmine.postgresql.org/issues/4792) - Ensure that the superuser should be able to create database, as the superuser overrides all the access restrictions. +[Issue #4878](https://redmine.postgresql.org/issues/4878) - Ensure that the superuser should be able to create role, as the superuser overrides all the access restrictions. +[Issue #4893](https://redmine.postgresql.org/issues/4893) - Fix reverse engineering SQL issue for partitions when specifying digits as comments. +[Issue #4896](https://redmine.postgresql.org/issues/4896) - Fixed an issue where escape key not working to close the open/save file dialog. +[Issue #4906](https://redmine.postgresql.org/issues/4906) - Fixed an issue where keyboard shortcut for context menu is not working when using Firefox on CentOS7. +[Issue #4923](https://redmine.postgresql.org/issues/4923) - Enhance the logic to change the label from 'Delete/Drop' to 'Remove' for the server and server group node. +[Issue #4925](https://redmine.postgresql.org/issues/4925) - Shown some text on process watcher till the initial logs are loaded. +[Issue #4930](https://redmine.postgresql.org/issues/4930) - Fix main window tab navigation accessibility issue. +[Issue #4935](https://redmine.postgresql.org/issues/4935) - Fix accessibility issues. +[Issue #4947](https://redmine.postgresql.org/issues/4947) - Fix XSS issue in explain and explain analyze for table and type which contain HTML. +[Issue #4952](https://redmine.postgresql.org/issues/4952) - Fix an issue of retrieving properties for Compound Triggers. It's a regression of #4006. +[Issue #4953](https://redmine.postgresql.org/issues/4953) - Fix an issue where PEM unable to retrieve table node if the trigger is already disabled and the user clicks on Enable All. +[Issue #4958](https://redmine.postgresql.org/issues/4958) - Fix reverse engineering SQL issue for triggers when passed a single argument to trigger function. +[Issue #4964](https://redmine.postgresql.org/issues/4964) - Fix an issue where length and precision are not removed from table/column dialog. +[Issue #4965](https://redmine.postgresql.org/issues/4965) - Fix an issue where the Interval data type is not displayed in the properties dialog of table/column. +[Issue #4966](https://redmine.postgresql.org/issues/4966) - Fix 'Could not find the object on the server.' error while refreshing the check constraint. +[Issue #4975](https://redmine.postgresql.org/issues/4975) - Fix issue where the user can not switch the UI language. It's a regression of #4348. +[Issue #4976](https://redmine.postgresql.org/issues/4976) - Fix reverse engineering SQL issue where when clause is not visible for PG/EPAS 12. +[Issue #4982](https://redmine.postgresql.org/issues/4982) - Added statistics and storage information in reverse engineering SQL of table/column. +[Issue #4985](https://redmine.postgresql.org/issues/4985) - Fix an issue where the inherited table name with quotes did not escape correctly. +[Issue #4991](https://redmine.postgresql.org/issues/4991) - Fix an issue where context menu is open along with submenu and the focus is not on context menu or submenu. diff --git a/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/08_pem_release_notes_7_11.mdx b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/08_pem_release_notes_7_11.mdx new file mode 100644 index 00000000000..096412e8a7d --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/08_pem_release_notes_7_11.mdx @@ -0,0 +1,26 @@ +--- +title: "PEM v7.11" +--- + +Release date: 2019-12-18 + +## Features + +[Issue #4778](https://redmine.postgresql.org/issues/4778) - Implemented the Query Plan Analyser. + +## Housekeeping + +## Bug fixes + +PEM-2793 - User with 'super_pem_admin' role should be able to see all servers and agents. (922716) +PEM-2827 - Fixed a security risk - PEMAgent used to run the SHELL/BATCH script(s), defined as the step(s) of user job(s), alert script(s) and custom batch probes, as root user on non-windows system and as an Administrator on Windows. +[Issue #3386](https://redmine.postgresql.org/issues/3386) - Ensure backup a partition table should not backup the whole database. +[Issue #4590](https://redmine.postgresql.org/issues/4590) - Fix issue where backup fails for schema name that needs quoting. +[Issue #4728](https://redmine.postgresql.org/issues/4728) - Highlighted the color of closing or opening parenthesis when user select them in CodeMirror. +[Issue #4751](https://redmine.postgresql.org/issues/4751) - Fix issue where export job fails when deselecting all the columns. +[Issue #4753](https://redmine.postgresql.org/issues/4753) - Fix an error where 'false' string is displayed when we add a new parameter in the Parameters tab, also clear the old value when the user changes the parameter name. +[Issue #4760](https://redmine.postgresql.org/issues/4760) - Ensure the search path should not be quoted for Database. +[Issue #4780](https://redmine.postgresql.org/issues/4780) - Ensure the search path should not be quoted for Function, Procedure and Trigger Function. +[Issue #4791](https://redmine.postgresql.org/issues/4791) - Fix issue where VALID foreign keys show as NOT VALID in the SQL tab for tables. +[Issue #4845](https://redmine.postgresql.org/issues/4845) - Fixed potential error in the properties dialog for the Code tab. +[Issue #4850](https://redmine.postgresql.org/issues/4850) - Fixed an issue where Datetimepicker control opens when clicking on the label. diff --git a/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/09_pem_release_notes_7_10.mdx b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/09_pem_release_notes_7_10.mdx new file mode 100644 index 00000000000..19915f8c308 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/09_pem_release_notes_7_10.mdx @@ -0,0 +1,105 @@ +--- +title: "PEM v7.10" +--- + +Release date: 2019-10-09 + +## Features + +Issue #PEM-952 - Allow to configure and manage the BART server through PEM (limited functionalities) +Issue #PEM-2088 - Allow a banner to be displayed on the login and other related pages showing custom text. (869690) +Issue #PEM-2152 - Allow to manage and monitor PostgreSQL 12 and EDB Postgres Advanced Server 12. +[Issue #3009](https://redmine.postgresql.org/issues/3009) - Added Copy with headers functionality when copy data from Query Tool/View Data. +[Issue #4144](https://redmine.postgresql.org/issues/4144) - Add support of Compound Triggers for EPAS 12+. +[Issue #4139](https://redmine.postgresql.org/issues/4139) - Allow some objects to be dragged/dropped into the Query Tool to insert their signature into the query text. +[Issue #4333](https://redmine.postgresql.org/issues/4333) - Add support for planner support functions in PostgreSQL 12+ functions. +[Issue #4334](https://redmine.postgresql.org/issues/4334) - Add support for generated columns in Postgres 12+. +[Issue #4540](https://redmine.postgresql.org/issues/4540) - Use the full tab space for CodeMirror instances on dialogues where appropriate. +[Issue #4566](https://redmine.postgresql.org/issues/4566) - Allow enhanced cookie protection to be disabled for compatibility with dynamically addressed hosting environments. +[Issue #4570](https://redmine.postgresql.org/issues/4570) - Add an optimisation to the internal code responsible for searching for treeview nodes. +[Issue #4574](https://redmine.postgresql.org/issues/4574) - Display the row count in the popup message when counting table rows, not just in the properties list. +[Issue #4612](https://redmine.postgresql.org/issues/4612) - Add support in query history to show internal queries generated by pgAdmin during save data operations. +[Issue #4667](https://redmine.postgresql.org/issues/4667) - Ensure editable and read-only columns in Query Tool should be identified by icons and tooltips in the column header. + +## Housekeeping + +[Issue #4472](https://redmine.postgresql.org/issues/4472) - Add Reverse Engineered and Modified SQL tests for Synonyms. +[Issue #4546](https://redmine.postgresql.org/issues/4546) - Add Reverse Engineered SQL tests for Columns. +[Issue #4554](https://redmine.postgresql.org/issues/4554) - Add Reverse Engineered SQL tests for Trigger Functions. +[Issue #4555](https://redmine.postgresql.org/issues/4555) - Add Reverse Engineered SQL tests for Exclusion Constraint. +[Issue #4560](https://redmine.postgresql.org/issues/4560) - Add a --modules option to the RE-SQL test suite to allow testing of specific object types. +[Issue #4575](https://redmine.postgresql.org/issues/4575) - Add Reverse Engineered SQL tests for Schemas. +[Issue #4576](https://redmine.postgresql.org/issues/4576) - Add Reverse Engineered SQL tests for Views. +[Issue #4600](https://redmine.postgresql.org/issues/4600) - Add Reverse Engineered SQL tests for Rules. +[Issue #4616](https://redmine.postgresql.org/issues/4616) - Add Reverse Engineered and Modified SQL tests for Foreign Keys. +[Issue #4617](https://redmine.postgresql.org/issues/4617) - Add Reverse Engineered and Modified SQL tests for Foreign Servers. +[Issue #4618](https://redmine.postgresql.org/issues/4618) - Add Reverse Engineered and Modified SQL tests for Foreign Tables. +[Issue #4619](https://redmine.postgresql.org/issues/4619) - Add Reverse Engineered and Modified SQL tests for FTS Templates. +[Issue #4621](https://redmine.postgresql.org/issues/4621) - Add Reverse Engineered and Modified SQL tests for Indexes. +[Issue #4624](https://redmine.postgresql.org/issues/4624) - Add Reverse Engineered and Modified SQL tests for Primary Keys. +[Issue #4627](https://redmine.postgresql.org/issues/4627) - Add Reverse Engineered and Modified SQL tests for User Mappings. +[Issue #4628](https://redmine.postgresql.org/issues/4628) - Add Reverse Engineered and Modified SQL tests for Unique Constraints. +[Issue #4690](https://redmine.postgresql.org/issues/4690) - Add Modified SQL tests for Resource Group. + +## Bug fixes + +Issue #PEM-706 - Changed the label from "Blocked Users" to "Blocked Sessions" on User Activity chart. (661653) +Issue #PEM-2492 - Ensure parameter values are quoted when needed when editing roles. (876762) +Issue #PEM-2581 - Error when changing kind(SQL/BATCH) for pgAgent job step. (893794) +Issue #PEM-2727 - Upgrading SNMP to fix the agent crash issue (913881) +[Issue #2706](https://redmine.postgresql.org/issues/2706) - Added ProjectSet icon for explain module. +[Issue #2828](https://redmine.postgresql.org/issues/2828) - Added Gather Merge, Named Tuple Store Scan and Table Function Scan icon for explain module. +[Issue #3605](https://redmine.postgresql.org/issues/3605) - Fix issue where Deleting N number of rows makes first N number of rows disable. +[Issue #3778](https://redmine.postgresql.org/issues/3778) - Ensure Boolean columns should be editable using keyboard keys. +[Issue #3936](https://redmine.postgresql.org/issues/3936) - Further code refactoring to stabilise the Feature Tests. +[Issue #4179](https://redmine.postgresql.org/issues/4179) - Fix generation of reverse engineered SQL for tables with Greenplum 5.x. +[Issue #4199](https://redmine.postgresql.org/issues/4199) - Ensure that 'ENTER' key in the data filter should not run the query. +[Issue #4229](https://redmine.postgresql.org/issues/4229) - Update wcDocker to allow the browser's context menu to be used except in tab strips and panel headers. +[Issue #4381](https://redmine.postgresql.org/issues/4381) - Fix an issue where oid column should not be pasted when copy/paste row is used on query output containing the oid column. +[Issue #4401](https://redmine.postgresql.org/issues/4401) - Ensure type names are properly encoded in the results grid. +[Issue #4408](https://redmine.postgresql.org/issues/4408) - Fix display of validation error message in SlickGrid cells. +[Issue #4412](https://redmine.postgresql.org/issues/4412) - Fix issue where Validated switch option is inverted for the Foreign Key. +[Issue #4414](https://redmine.postgresql.org/issues/4414) - Fix generation of reverse engineered SQL for partition table, partitions were shown as a child of indexes. +[Issue #4419](https://redmine.postgresql.org/issues/4419) - Fix a debugger error when using Python 2.7. +[Issue #4429](https://redmine.postgresql.org/issues/4429) - Ensure drag/drop from the treeview works as expected on Firefox. +[Issue #4461](https://redmine.postgresql.org/issues/4461) - Fix error while importing data to a table using Import/Export dialog and providing "Not null columns" option. +[Issue #4486](https://redmine.postgresql.org/issues/4486) - Ensure View should be created with special characters. +[Issue #4487](https://redmine.postgresql.org/issues/4487) - Ensure Boolean columns should be editable in View/Edit data and Query Tool. +[Issue #4489](https://redmine.postgresql.org/issues/4489) - Update wcDocker to prevent window state loading creating blank dialogues. +[Issue #4490](https://redmine.postgresql.org/issues/4490) - Fix accessibility issue for checkbox in IE11. +[Issue #4492](https://redmine.postgresql.org/issues/4492) - Ensure the Query Tool doesn't throw an error when viewing the contents of a table with no columns. +[Issue #4496](https://redmine.postgresql.org/issues/4496) - Ensure columns can be created when they are IDENTITY fields with the CYCLE option enabled. +[Issue #4497](https://redmine.postgresql.org/issues/4497) - Ensure purely numeric comments can be saved on new columns. +[Issue #4508](https://redmine.postgresql.org/issues/4508) - Fix accessibility issue for Datetime cell in backgrid. +[Issue #4520](https://redmine.postgresql.org/issues/4520) - Ensure the query tool will work with older versions of psycopg2 than we officially support, albeit without updatable resultsets. +[Issue #4525](https://redmine.postgresql.org/issues/4525) - Ensure command tags are shown in the messages tab of the Query Tool. +[Issue #4536](https://redmine.postgresql.org/issues/4536) - Fix load on demand in View/Edit data mode. +[Issue #4552](https://redmine.postgresql.org/issues/4552) - Fix some errors thrown on the JS console when dragging text in the Query Tool. +[Issue #4559](https://redmine.postgresql.org/issues/4559) - Ensure triggers should be updated properly for EPAS server. +[Issue #4565](https://redmine.postgresql.org/issues/4565) - Fix the reverse engineered SQL for trigger functions with the WINDOW option selected. +[Issue #4577](https://redmine.postgresql.org/issues/4577) - Fix an error that could be seen when click on any system column of a table. +[Issue #4578](https://redmine.postgresql.org/issues/4578) - Ensure enable trigger menu should be visible when trigger is disabled. +[Issue #4581](https://redmine.postgresql.org/issues/4581) - Ensure the comment on a Primary Key constraint can be edited under the Table node. +[Issue #4582](https://redmine.postgresql.org/issues/4582) - Fix console error when changing kind(SQL/BATCH) for pgAgent job step. +[Issue #4584](https://redmine.postgresql.org/issues/4584) - Unescape HTML entities in database names in the Query Tool title bar. +[Issue #4585](https://redmine.postgresql.org/issues/4585) - Fix double click issue to expand the contents of a cell if the resultset was not editable. +[Issue #4586](https://redmine.postgresql.org/issues/4586) - Fix generation of reverse engineered SQL for Rules. +[Issue #4631](https://redmine.postgresql.org/issues/4631) - Add editor options for plain text mode and to disable block folding to workaround rendering speed issues in CodeMirror with very large scripts. +[Issue #4635](https://redmine.postgresql.org/issues/4635) - Ensure compound triggers for event should be updated properly. +[Issue #4638](https://redmine.postgresql.org/issues/4638) - Ensure compound triggers should be displayed under Views. +[Issue #4641](https://redmine.postgresql.org/issues/4641) - Ensure Truncate option should be available for Compound Triggers. +[Issue #4643](https://redmine.postgresql.org/issues/4643) - Fix Truncate option deselect issue for compound triggers. +[Issue #4644](https://redmine.postgresql.org/issues/4644) - Fix length and precision enable/disable issue when changing the data type for Domain node. +[Issue #4650](https://redmine.postgresql.org/issues/4650) - Fix SQL tab issue for Views. It's a regression of compound triggers. +[Issue #4663](https://redmine.postgresql.org/issues/4663) - Fix exception in query history for python 2.7. +[Issue #4674](https://redmine.postgresql.org/issues/4674) - Fix query tool launch error if user name contain html characters. +[Issue #4681](https://redmine.postgresql.org/issues/4681) - Increase cache control max age for static files to improve performance over longer run. +[Issue #4698](https://redmine.postgresql.org/issues/4698) - Fix SQL issue of length and precision when changing the data type of Column. +[Issue #4702](https://redmine.postgresql.org/issues/4702) - Fix modified SQL for Index when reset the value of Fill factor and Clustered?. +[Issue #4703](https://redmine.postgresql.org/issues/4703) - Fix reversed engineered SQL for btree Index when provided sort order and NULLs. +[Issue #4726](https://redmine.postgresql.org/issues/4726) - Ensure sequence with negative value should be created. +[Issue #4727](https://redmine.postgresql.org/issues/4727) - Fix issue where EXEC script doesn't write the complete script for Procedures. +[Issue #4742](https://redmine.postgresql.org/issues/4742) - Ensure Primary Key should be created with Index. +[Issue #4750](https://redmine.postgresql.org/issues/4750) - Fix query history exception for Python 3.6. +[Issue #4756](https://redmine.postgresql.org/issues/4756) - Fix issue where PEM/pgAdmin does not load completely if loaded in an iframe. +[Issue #4777](https://redmine.postgresql.org/issues/4777) - Fix issue where query history is not visible in the query history tab. diff --git a/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/10_pem_release_notes_7_9.mdx b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/10_pem_release_notes_7_9.mdx new file mode 100644 index 00000000000..c61d78b39a3 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/10_pem_release_notes_7_9.mdx @@ -0,0 +1,82 @@ +--- +title: "PEM v7.9" +--- + +Release date: 2019-07-31 + +## Features + +Issue #PEM-2525 - Send SMTP notification on the completion of a scheduled task +Issue #PEM-2526 - Schedule a SHELL/BATCH script, SQL based jobs at agent level +Issue #PEM-2048 - Allow to configure pem-server without disabling the selinux on RHLE/CentOS (883342) +[Issue #1760](https://redmine.postgresql.org/issues/1760) - Add support for editing of resultsets in the Query Tool, if the data can be identified as updatable. +[Issue #2653](https://redmine.postgresql.org/issues/2653) - Allow the UI layout to be fully locked or to prevent docking changes. +[Issue #3174](https://redmine.postgresql.org/issues/3174) - Visually distinguish simple tables from tables that are inherited and from which other tables are inherited. +[Issue #4283](https://redmine.postgresql.org/issues/4283) - Initial support for PostgreSQL 12. +[Issue #4288](https://redmine.postgresql.org/issues/4288) - Initial support for PostgreSQL 12. +[Issue #4290](https://redmine.postgresql.org/issues/4290) - Initial support for PostgreSQL 12. +[Issue #4318](https://redmine.postgresql.org/issues/4318) - Set the mouse cursor appropriately based on the layout lock state. +[Issue #4335](https://redmine.postgresql.org/issues/4335) - Add EXPLAIN options for SETTINGS and SUMMARY. + +## Housekeeping + +[Issue #4202](https://redmine.postgresql.org/issues/4202) - Add a framework for testing reversed engineered SQL and CRUD API endpoints. +[Issue #4415](https://redmine.postgresql.org/issues/4415) - Add Reverse Engineered SQL tests for Roles and Resource Groups. +[Issue #4441](https://redmine.postgresql.org/issues/4441) - Add Reverse Engineered SQL tests for FDWs. +[Issue #4450](https://redmine.postgresql.org/issues/4450) - Fix reverse engineered sql for Foreign Data Wrapper created on EPAS server in redwood mode. +[Issue #4452](https://redmine.postgresql.org/issues/4452) - Add Reverse Engineered SQL tests for Languages. +[Issue #4453](https://redmine.postgresql.org/issues/4453) - Add Reverse Engineered SQL tests for Extensions. +[Issue #4454](https://redmine.postgresql.org/issues/4454) - Add Reverse Engineered SQL tests for FTS Configurations. +[Issue #4456](https://redmine.postgresql.org/issues/4456) - Add Reverse Engineered SQL tests for Packages. +[Issue #4460](https://redmine.postgresql.org/issues/4460) - Add Reverse Engineered SQL tests for FTS Dictionaries. +[Issue #4463](https://redmine.postgresql.org/issues/4463) - Add Reverse Engineered SQL tests for Domains. +[Issue #4464](https://redmine.postgresql.org/issues/4464) - Add Reverse Engineered SQL tests for Collations. +[Issue #4468](https://redmine.postgresql.org/issues/4468) - Add Reverse Engineered SQL tests for Types. +[Issue #4469](https://redmine.postgresql.org/issues/4469) - Add Reverse Engineered SQL tests for Sequences. +[Issue #4471](https://redmine.postgresql.org/issues/4471) - Add Reverse Engineered SQL tests for FTS Parsers. + +## Bug fixes + +Issue #PEM-2459 - Tuning wizard shows wrong original value for 'max_wal_size' parameter \[Support Ticket #880186] +Issue #PEM-2499 - Index Advisor is not suggesting index on PEM UI. \[Support Ticket #891318] +Issue #PEM-2503 - Issue while scheduling the pgAgent job on PEM UI. \[Support Ticket #891220] +[Issue #3919](https://redmine.postgresql.org/issues/3919) - Allow keyboard navigation of all controls on subnode grids. +[Issue #3994](https://redmine.postgresql.org/issues/3994) - Fix issue where the dependencies tab for inherited tables/foreign keys shows partial text. +[Issue #3996](https://redmine.postgresql.org/issues/3996) - Fix dropping of pgAgent schedules through the Job properties. +[Issue #4036](https://redmine.postgresql.org/issues/4036) - Allow editing of data where a primary key column includes a % sign in the value. +[Issue #4162](https://redmine.postgresql.org/issues/4162) - Fix syntax error when adding more than one column to the existing table. +[Issue #4169](https://redmine.postgresql.org/issues/4169) - Omit the geometry viewer in the Query Tool from layout saving. +[Issue #4171](https://redmine.postgresql.org/issues/4171) - Fix issue where reverse engineered SQL was failing for foreign tables, if it had "=" in the options. +[Issue #4195](https://redmine.postgresql.org/issues/4195) - Fix keyboard navigation in "inner" tabsets such as the Query Tool and Debugger. +[Issue #4224](https://redmine.postgresql.org/issues/4224) - Prevent flickering of large tooltips on the Graphical EXPLAIN canvas. +[Issue #4228](https://redmine.postgresql.org/issues/4228) - Ensure the correct label is used in panel headers when viewing filtered rows. +[Issue #4253](https://redmine.postgresql.org/issues/4253) - Fix issue where new column should be created with Default value. +[Issue #4255](https://redmine.postgresql.org/issues/4255) - Prevent the geometry viewer grabbing key presses when not in focus under Firefox, IE and Edge. +[Issue #4284](https://redmine.postgresql.org/issues/4284) - Fix syntax error when creating a table with a serial column. +[Issue #4320](https://redmine.postgresql.org/issues/4320) - Fix issue where SSH tunnel connection using password is failing, it's regression of Master Password. +[Issue #4329](https://redmine.postgresql.org/issues/4329) - Fix an initialisation error when two functions with parameters are debugged in parallel. +[Issue #4343](https://redmine.postgresql.org/issues/4343) - Fix issue where property dialog of column should open properly for EPAS v12. +[Issue #4345](https://redmine.postgresql.org/issues/4345) - Capitalize the word 'export' used in Import/Export module. +[Issue #4349](https://redmine.postgresql.org/issues/4349) - Ensure strings are properly encoded in the Query History. +[Issue #4350](https://redmine.postgresql.org/issues/4350) - Ensure we include the CSRF token when uploading files. +[Issue #4360](https://redmine.postgresql.org/issues/4360) - Ensure the debugger control buttons are only enabled once initialisation is complete. +[Issue #4362](https://redmine.postgresql.org/issues/4362) - Remove additional "SETOF" included when generating CREATE scripts for trigger functions. +[Issue #4365](https://redmine.postgresql.org/issues/4365) - Fix help links for backup globals and backup server. +[Issue #4367](https://redmine.postgresql.org/issues/4367) - Fix an XSS issue seen in View/Edit data mode if a column name includes HTML. +[Issue #4378](https://redmine.postgresql.org/issues/4378) - Ensure Python escaping matched JS escaping and fix a minor XSS issue in the Query Tool that required superuser access to trigger. +[Issue #4380](https://redmine.postgresql.org/issues/4380) - Ensure that both columns and partitions can be edited at the same time in the table dialog. +[Issue #4386](https://redmine.postgresql.org/issues/4386) - Fix an XSS issue when username contains XSS vulnerable text. +[Issue #4389](https://redmine.postgresql.org/issues/4389) - Fix an error that could be seen when editing column privileges. +[Issue #4393](https://redmine.postgresql.org/issues/4393) - Ensure parameter values are quoted when needed when editing roles. +[Issue #4403](https://redmine.postgresql.org/issues/4403) - Ensure the browser close confirmation is only shown when closing a Query Tool which is running in a separate browser tab. +[Issue #4404](https://redmine.postgresql.org/issues/4404) - Prevent an error that may occur when editing data with an integer primary key. +[Issue #4407](https://redmine.postgresql.org/issues/4407) - Fix a quoting issue that caused a blank UI to be displayed when running in French. +[Issue #4427](https://redmine.postgresql.org/issues/4427) - Fix an error while retrieving json data from the table. +[Issue #4428](https://redmine.postgresql.org/issues/4428) - Fix 'malformed array literal' error when updating a pgAgent job. +[Issue #4437](https://redmine.postgresql.org/issues/4437) - Fix table icon issue when updating any existing field. +[Issue #4446](https://redmine.postgresql.org/issues/4446) - Use ROLE consistently when generating RE-SQL for roles, not USER. +[Issue #4448](https://redmine.postgresql.org/issues/4448) - Fix an error seen when updating a connection string in a pgAgent job step. +[Issue #4462](https://redmine.postgresql.org/issues/4462) - Fix some minor UI issues on IE11. +[Issue #4470](https://redmine.postgresql.org/issues/4470) - Fix sequence reverse engineered SQL generation with quoted names on PG/EPAS 10+. +[Issue #4484](https://redmine.postgresql.org/issues/4484) - Fix an issue where Explain and Explain Analyze are not working, it's regression of #1760. +[Issue #4485](https://redmine.postgresql.org/issues/4485) - Fix an issue where Filter toolbar button is not working in view/edit data, it's regression of keyboard navigation. diff --git a/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/11_pem_release_notes_7_8.mdx b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/11_pem_release_notes_7_8.mdx new file mode 100644 index 00000000000..121fe3814f4 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/11_pem_release_notes_7_8.mdx @@ -0,0 +1,77 @@ +--- +title: "PEM v7.8" +--- + +Release date: 2019-06-05 + +## Features + +Feature #PEM-614 - Added --enable-heartbeat-connection parameter to use dedicated heartbeat connection while self registring pemagent. \[Support Ticket #742120] +[Feature #4017](https://redmine.postgresql.org/issues/4017) - Make the Query Tool history persistent across sessions. +[Feature #4018](https://redmine.postgresql.org/issues/4018) - Remove the large and unnecessary dependency on React and 87 other related libraries. +[Feature #4030](https://redmine.postgresql.org/issues/4030) - Add support for IDENTITY columns. + +## Bug fixes + +Bug #PEM-986 - Fetch the pem schema version again in pemagent when PEM server restarts. \[Support Ticket #769569] +Bug #PEM-1449 - Copy alert REST API document is missing. \[Support Ticket #804272] +Bug #PEM-2046 - Use the 'g' flag to replace all occurance of placeholder in the alert script code, alert email template, alert email subject. \[Support Ticket #856746] +Bug #PEM-2087 - Line chart on Dashboard is not honouring the user's selected start & end timespan. \[Support Ticket #859558] +Bug #PEM-2135 - No take over is happening after PEM agent and server upgrade from version 7.4 to 7.7. \[Support Ticket #859340] +Bug #PEM-2166 - Table chart created using custom probe should render properly. \[Support Ticket #872498] +[Bug #4217](https://redmine.postgresql.org/issues/4217)/PEM-2204 - Fixed CSRF security vulnerability issue. +[Bug #1269](https://redmine.postgresql.org/issues/1269) - Fix naming inconsistency for the column and FTS parser modules. +[Bug #2392](https://redmine.postgresql.org/issues/2392) - Ensure that on clicking Delete button should not delete rows immediately from the database server, it should be deleted when Save button will be clicked. +[Bug #2627](https://redmine.postgresql.org/issues/2627) - Include inherited column comments and defaults in reverse engineered table SQL. +[Bug #3582](https://redmine.postgresql.org/issues/3582) - Ensure that JSON strings as comments should be added properly for all the objects. +[Bug #3605](https://redmine.postgresql.org/issues/3605) - Fix an issue where Deleting N number of rows makes first N number of rows disable. +[Bug #3933](https://redmine.postgresql.org/issues/3933) - Ignore exceptions in the logger. +[Bug #3938](https://redmine.postgresql.org/issues/3938) - Added support for Default Partition. +[Bug #4019](https://redmine.postgresql.org/issues/4019) - Update all Python and JavaScript dependencies. +[Bug #4037](https://redmine.postgresql.org/issues/4037) - Include comment SQL for inherited columns in reverse engineered table SQL. +[Bug #4050](https://redmine.postgresql.org/issues/4050) - Make the WHEN field a CodeMirror control on the Event Trigger dialogue. +[Bug #4052](https://redmine.postgresql.org/issues/4052) - Fix the online help button on the resource group dialogue. +[Bug #4053](https://redmine.postgresql.org/issues/4053) - Enable the online help button on the index dialogue. +[Bug #4062](https://redmine.postgresql.org/issues/4062) - Fix handling of numeric arrays in View/Edit Data. +[Bug #4063](https://redmine.postgresql.org/issues/4063) - Enlarge the grab handles for resizing dialogs etc. +[Bug #4069](https://redmine.postgresql.org/issues/4069) - Append the file suffix to filenames when needed in the File Create dialogue. +[Bug #4073](https://redmine.postgresql.org/issues/4073) - Change the CodeMirror active line background colour to $color-danger-lighter so it doesn't conflict with the selection colour. +[Bug #4081](https://redmine.postgresql.org/issues/4081) - Fix the RE-SQL syntax for roles with a VALID UNTIL clause. +[Bug #4082](https://redmine.postgresql.org/issues/4082) - Prevent an empty error message being shown when "downloading" a CREATE script using the CSV download. +[Bug #4084](https://redmine.postgresql.org/issues/4084) - Overhaul the layout saving code so it includes the Query Tool and Debugger, and stores the layout when change events are detected rather than (unreliably) on exit. +[Bug #4085](https://redmine.postgresql.org/issues/4085) - Display errors during CSV download from the Query Tool in the UI rather than putting them in the CSV file. +[Bug #4087](https://redmine.postgresql.org/issues/4087) - Fix an issue where 'GRANT UPDATE' sql should be displayed for default sequence privileges. +[Bug #4096](https://redmine.postgresql.org/issues/4096) - Ensure the toolbar buttons are properly reset following a CSV download in the Query Tool. +[Bug #4099](https://redmine.postgresql.org/issues/4099) - Fix SQL help for EPAS 10+, and refactor the URL generation code into a testable function. +[Bug #4100](https://redmine.postgresql.org/issues/4100) - Ensure sequences can be created with increment, start, minimum and maximum options set. +[Bug #4101](https://redmine.postgresql.org/issues/4101) - Ensure that confirmation dialog should be popped up before reload of query tool or debugger if it is opened in a new browser tab. +[Bug #4104](https://redmine.postgresql.org/issues/4104) - Ensure that record should be add/edited for root partition table with primary keys. +[Bug #4105](https://redmine.postgresql.org/issues/4105) - Fix an issue where JSON data would not be rendered in the Query Tool. +[Bug #4109](https://redmine.postgresql.org/issues/4109) - Ensure View/Materialized View node should be visible after updating any property. +[Bug #4110](https://redmine.postgresql.org/issues/4110) - Fix custom autovacuum configuration for Materialized Views. +[Bug #4121](https://redmine.postgresql.org/issues/4121) - Fixed alignment issue of columns in definition section of Index node. +[Bug #4131](https://redmine.postgresql.org/issues/4131) - Relabel the Save button on the datagrid text editor to avoid confusion with the actual Save button that updates the database. +[Bug #4134](https://redmine.postgresql.org/issues/4134) - Fixed 'Location cannot be empty' error when open Tablespace properties. +[Bug #4138](https://redmine.postgresql.org/issues/4138) - Fix an issue where the dropdown becomes misaligned/displaced. +[Bug #4142](https://redmine.postgresql.org/issues/4142) - Added recommended ESLinter checks. +[Bug #4143](https://redmine.postgresql.org/issues/4143) - Ensure that pgAdmin4 should work properly with psycopg2 v2.8 +[Bug #4154](https://redmine.postgresql.org/issues/4154) - Ensure the treeview shows all sequences except those used to implement IDENTITY columns (which can be edited as part of the column). Show all if Show System Objects is enabled. +[Bug #4160](https://redmine.postgresql.org/issues/4160) - Fixed 'Increment value cannot be empty' error for existing tables. +[Bug #4161](https://redmine.postgresql.org/issues/4161) - Ensure that parameters of procedures for EPAS server 10 and below should be set/reset properly. +[Bug #4163](https://redmine.postgresql.org/issues/4163) - Prevent duplicate columns being included in reverse engineered SQL for tables. +[Bug #4164](https://redmine.postgresql.org/issues/4164) - Fix file browser path issue which occurs when client is on Windows and server is on Mac/Linux. +[Bug #4182](https://redmine.postgresql.org/issues/4182) - Ensure sanity of the permissions on the storage and session directories and the config database. +[Bug #4218](https://redmine.postgresql.org/issues/4218) - Properly assign dropdownParent in Select2 controls. +[Bug #4219](https://redmine.postgresql.org/issues/4219) - Ensure popper.js is installed when needed. +[Bug #4246](https://redmine.postgresql.org/issues/4246) - Fixed console error when subnode control is used in panels. +[Bug #4194](https://redmine.postgresql.org/issues/4194) - Fix accessibility issue for menu navigation. +[Bug #4227](https://redmine.postgresql.org/issues/4227) - Fixed Tab key navigation for Maintenance dialog. +[Bug #4244](https://redmine.postgresql.org/issues/4244) - Fix Tab key issue for Toggle switch controls and button on the dialog footer in Safari browser. +[Bug #4245](https://redmine.postgresql.org/issues/4245) - Ensure that element should get highlighted when they get focus on using Tab key. +[Bug #4261](https://redmine.postgresql.org/issues/4261) - Stop using application/x-javascript as a mime type and use the RFC-compliant application/javascript instead. +[Bug #4262](https://redmine.postgresql.org/issues/4262) - Fixed error on displaying table properties of a table partitioned by list having a default partition. +[Bug #4263](https://redmine.postgresql.org/issues/4263) - Fix handling of JSON in the Query Tool with NULL elements. +[Bug #4269](https://redmine.postgresql.org/issues/4269) - Fix navigation of switch cells in grids. +[Bug #4276](https://redmine.postgresql.org/issues/4276) - Relax the permission check on the directory containing the config database, as it may fail in some environments such as OpenShift. +[Bug #4278](https://redmine.postgresql.org/issues/4278) - Prevent Backgrid Password cells from losing focus if the browser opens an autocomplete list. +[Bug #4308](https://redmine.postgresql.org/issues/4308) - Fix the issue of accessing the SQL for Views and Materialized Views. Regression of pluralisation of folder names. diff --git a/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/12_pem_release_notes_7_7_1.mdx b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/12_pem_release_notes_7_7_1.mdx new file mode 100644 index 00000000000..6082a0feb2a --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/12_pem_release_notes_7_7_1.mdx @@ -0,0 +1,12 @@ +--- +title: "PEM v7.7.1" +--- + +Release date: 2019-04-10 + +This release contains bug fixes. + +## Bug fixes + +Bug #PEM-2092 - Remove the obsolete packages while upgrading the edb-pem-server (v7.5 and ealier) using the RPM +Bug #PEM-2089 - Zooming on a line chart does not working when line charts are linked. diff --git a/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/13_pem_release_notes_7_7.mdx b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/13_pem_release_notes_7_7.mdx new file mode 100644 index 00000000000..6389b20f8e4 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/13_pem_release_notes_7_7.mdx @@ -0,0 +1,110 @@ +--- +title: "PEM v7.7" +--- + +Release date: 2019-03-13 + +This release contains a new PEM UI update and some of the features and bug fixes. + +## Features + +[Feature #2233](https://redmine.postgresql.org/issues/2233) - Add a "scratch pad" to the Query Tool to hold text snippets whilst editing. +[Feature #2418](https://redmine.postgresql.org/issues/2418) - Add Commit and Rollback buttons to the Query Tool. +[Feature #3439](https://redmine.postgresql.org/issues/3439) - Allow X-FRAME-OPTIONS to be set for security. Default to SAMEORIGIN. +[Feature #3559](https://redmine.postgresql.org/issues/3559) - Automatically expand child nodes as well as the selected node on the treeview if there is only one. +[Feature #4034](https://redmine.postgresql.org/issues/4034) - Support double-click on Query Tool result grid column resize handles to auto-size to the content. + +## Bug fixes + +Bug #PEM-732 - Allow user to download explain plan from sql profiler \[Support Ticket #484049] +Bug #PEM-1544 - Give proper privileges and explicit type cast to hstore extension \[Support Ticket #820063] +Bug #PEM-1596 - PEM Agent registration creates cert files with additional .crt extension \[Support Ticket #853579] +Bug #PEM-1684 - Handle proper exception during alert processing. \[Support Ticket #830175] +Bug #PEM-1743 - Delete all the agent entry except for the lastest one sorted by login time \[Support Ticket #829037] +Bug #PEM-1855 - Server info probe shows numeric overflow error if shared memory size is too high \[Support Ticket #833535] +Bug #PEM-1943 - Honour the pause of the auto-refresh on the 'Alert Status' table whilst showing the alert details \[Support Ticket #853200] +Bug #PEM-1964 - RPM libboost dependencies issues on IBM powerbox \[Support Ticket #849462] +Bug #PEM-1976 - Fetch the session information for the same server when fetching the lock information \[Support Ticket #853549] +[Bug #3051](https://redmine.postgresql.org/issues/3051) - Replace Bootstrap switch with Bootstrap4 toggle to improve the performance. +[Bug #3096](https://redmine.postgresql.org/issues/3096) - Ensure size stats are prettified on the statistics tab when the UI language is not English. +[Bug #3272](https://redmine.postgresql.org/issues/3272) - Replace the PyCrypto module with the cryptography module. +[Bug #3352](https://redmine.postgresql.org/issues/3352) - Handle display of roles with expiration set to infinity correctly. +[Bug #3418](https://redmine.postgresql.org/issues/3418) - Allow editing of values in columns with the oid datatype which are not an actual row OID. +[Bug #3453](https://redmine.postgresql.org/issues/3453) - Fixed SQL for foreign table options. +[Bug #3475](https://redmine.postgresql.org/issues/3475) - Fixed execution time to show Hours part for long running queries in Query Tool. +[Bug #3505](https://redmine.postgresql.org/issues/3505) - Fix SQL generated for tables with inherited columns. +[Bug #3544](https://redmine.postgresql.org/issues/3544) - Make the Query Tool tab titles more concise and useful. +[Bug #3549](https://redmine.postgresql.org/issues/3549) - Display event trigger functions correctly on EPAS. +[Bug #3575](https://redmine.postgresql.org/issues/3575) - Ensure the context menu works after a server is renamed. +[Bug #3583](https://redmine.postgresql.org/issues/3583) - Update CodeMirror to 5.43.0 to resolve issues with auto-indent. +[Bug #3587](https://redmine.postgresql.org/issues/3587) - Fix support for bigint's in JSONB data. +[Bug #3600](https://redmine.postgresql.org/issues/3600) - Ensure JSON data isn't modified in-flight by psycopg2 when using View/Edit data. +[Bug #3608](https://redmine.postgresql.org/issues/3608) - Messages tab of query tool should be clear on subsequent execution of table/view using View/Edit Data. +[Bug #3609](https://redmine.postgresql.org/issues/3609) - Clear drop-down menu should be disabled for View/Edit Data. +[Bug #3664](https://redmine.postgresql.org/issues/3664) - Fixed Statistics panel hang issue for 1000+ tables. +[Bug #3673](https://redmine.postgresql.org/issues/3673) - Modify the Download as CSV option to use the same connection as the Query Tool its running in so temporary tables etc. can be used. +[Bug #3679](https://redmine.postgresql.org/issues/3679) - Fix a webpack issue that could cause the Query Tool to fail to render. +[Bug #3693](https://redmine.postgresql.org/issues/3693) - Proper error should be thrown when server group is created with existing name. +[Bug #3695](https://redmine.postgresql.org/issues/3695) - Ensure long string should be wrap in alertify dialogs. +[Bug #3697](https://redmine.postgresql.org/issues/3697) - Ensure that output of the query should be displayed even if Data Output window is detached from the Query Tool. +[Bug #3702](https://redmine.postgresql.org/issues/3702) - Ensure we display the relation name (and not the OID) in the locks table wherever possible. +[Bug #3740](https://redmine.postgresql.org/issues/3740) - Inline edbspl trigger functions should not be visible in Grant Wizard. +[Bug #3774](https://redmine.postgresql.org/issues/3774) - Proper SQL should be generated when create function with return type as custom type argument. +[Bug #3780](https://redmine.postgresql.org/issues/3780) - Ensure that null values handled properly in CSV download. +[Bug #3800](https://redmine.postgresql.org/issues/3800) - Ensure that database restriction of server dialog should work with special characters. +[Bug #3809](https://redmine.postgresql.org/issues/3809) - Ensure auto complete should works when first identifier in the FROM clause needs quoting. +[Bug #3810](https://redmine.postgresql.org/issues/3810) - Ensure auto complete should works for columns from a schema-qualified table. +[Bug #3811](https://redmine.postgresql.org/issues/3811) - Ensure that Backup/Restore button should work on single click. +[Bug #3836](https://redmine.postgresql.org/issues/3836) - Fix ordering of VACUUM options which changed in PG11. +[Bug #3837](https://redmine.postgresql.org/issues/3837) - Fixed SQL for when clause while creating Trigger. +[Bug #3838](https://redmine.postgresql.org/issues/3838) - Proper SQL should be generated when creating/changing column with custom type argument. +[Bug #3840](https://redmine.postgresql.org/issues/3840) - Ensure that file format combo box value should be retained when hidden files checkbox is toggled. +[Bug #3842](https://redmine.postgresql.org/issues/3842) - Don't show system catalogs in the schemas property list unless show system objects is enabled. +[Bug #3846](https://redmine.postgresql.org/issues/3846) - Proper SQL should be generated when create procedure with custom type arguments. +[Bug #3849](https://redmine.postgresql.org/issues/3849) - Ensure that browser should warn before close or refresh. +[Bug #3850](https://redmine.postgresql.org/issues/3850) - Fixed EXEC script for procedures. +[Bug #3853](https://redmine.postgresql.org/issues/3853) - Proper SQL should be generated when create domain of type interval with precision. +[Bug #3856](https://redmine.postgresql.org/issues/3856) - Fixed an issue while creating export job. +[Bug #3858](https://redmine.postgresql.org/issues/3858) - Drop-down should be closed when click on any other toolbar button. +[Bug #3861](https://redmine.postgresql.org/issues/3861) - Fix help for the backup/restore dialogues. +[Bug #3862](https://redmine.postgresql.org/issues/3862) - Fixed keyboard navigation for dialog tabs. +[Bug #3865](https://redmine.postgresql.org/issues/3865) - Increase frames splitter mouse hover area to make it easier to resize. +[Bug #3866](https://redmine.postgresql.org/issues/3866) - Ensure that last row of table data should be visible and user will be able to add new row. +[Bug #3871](https://redmine.postgresql.org/issues/3871) - Fixed alignment of tree arrow icons for Internet Explorer. +[Bug #3872](https://redmine.postgresql.org/issues/3872) - Ensure object names in external process dialogues are properly escaped. +[Bug #3873](https://redmine.postgresql.org/issues/3873) - Fix context sub-menu alignment on Safari. +[Bug #3877](https://redmine.postgresql.org/issues/3877) - Make the browser more robust in the face of multibyte characters in SQL_ASCII databases. +[Bug #3891](https://redmine.postgresql.org/issues/3891) - Correct order of Save and Cancel button for json/jsonb editing. +[Bug #3897](https://redmine.postgresql.org/issues/3897) - Data should be updated properly for FTS Configurations, FTS Dictionaries, FTS Parsers and FTS Templates. +[Bug #3899](https://redmine.postgresql.org/issues/3899) - Fixed unable to drop multiple Rules and Foreign Tables from properties tab. +[Bug #3903](https://redmine.postgresql.org/issues/3903) - Fixed Query Tool Initialization Error. +[Bug #3906](https://redmine.postgresql.org/issues/3906) - Fix alignment of Close and Maximize button of Grant Wizard. +[Bug #3908](https://redmine.postgresql.org/issues/3908) - Fixed keyboard navigation for Select2 and Privilege cell in Backgrid. +[Bug #3911](https://redmine.postgresql.org/issues/3911) - Add full support and tests for all PG server side encodings. +[Bug #3912](https://redmine.postgresql.org/issues/3912) - Fix editing of table data with a JSON primary key. +[Bug #3916](https://redmine.postgresql.org/issues/3916) - Correct schema should be displayed in Materialized View dialog. +[Bug #3927](https://redmine.postgresql.org/issues/3927) - Fixed debugger issue for procedure inside package for EPAS servers. +[Bug #3929](https://redmine.postgresql.org/issues/3929) - Fix alignment of help messages in properties panels. +[Bug #3932](https://redmine.postgresql.org/issues/3932) - Fix alignment of submenu for Internet Explorer. +[Bug #3935](https://redmine.postgresql.org/issues/3935) - Ensure that grant wizard should list down functions for EPAS server running with no-redwood-compat mode. \[Support Ticket #833292] +[Bug #3941](https://redmine.postgresql.org/issues/3941) - Dashboard graph optimization. +[Bug #3946](https://redmine.postgresql.org/issues/3946) - Fix alignment of checkbox to drop multiple schedules of pgAgent job. +[Bug #3948](https://redmine.postgresql.org/issues/3948) - Set the background colour for backform notes, and add an icon. +[Bug #3954](https://redmine.postgresql.org/issues/3954) - Remove Python 2.6 code that's now obsolete. +[Bug #3958](https://redmine.postgresql.org/issues/3958) - Don't exclude SELECT statements from transaction management in the Query Tool in case they call data-modifying functions. +[Bug #3959](https://redmine.postgresql.org/issues/3959) - Optimise display of Dependencies and Dependents, and use on-demand loading of rows in batches of 100. +[Bug #3961](https://redmine.postgresql.org/issues/3961) - Exclude HTTPExceptions from the all_exception_handler as they should be returned as-is. +[Bug #3963](https://redmine.postgresql.org/issues/3963) - Fix alignment of import/export toggle switch. +[Bug #3968](https://redmine.postgresql.org/issues/3968) - Update wcDocker to fix the issue where the Scratch Pad grows in size if the results panel is resized. +[Bug #3970](https://redmine.postgresql.org/issues/3970) - Prevent an error when closing the Sort/Filter dialogue with an empty filter string. +[Bug #3973](https://redmine.postgresql.org/issues/3973) - Use 'set_config(...)' function to update the 'bytea_output' settings instead of 'UPDATE' statement, which is not allowed in the the read-only instances. +[Bug #3974](https://redmine.postgresql.org/issues/3974) - Fix alignment of Connection type toggle switch of pgagent. +[Bug #3982](https://redmine.postgresql.org/issues/3982) - Add full support and tests for all PG server side encodings. +[Bug #3992](https://redmine.postgresql.org/issues/3992) - Add full support and tests for all PG server side encodings. +[Bug #3995](https://redmine.postgresql.org/issues/3995) - Avoid 'bogus varno' message from Postgres when viewing the SQL for a table with triggers. +[Bug #3998](https://redmine.postgresql.org/issues/3998) - Custom-encode forward slashes in URL parameters as Apache HTTPD doesn't allow them in some cases. +[Bug #4000](https://redmine.postgresql.org/issues/4000) - Update CodeMirror to 5.43.0 to resolve issues with tab indent with use spaces enabled. +[Bug #4013](https://redmine.postgresql.org/issues/4013) - Ensure long queries don't cause errors when downloading CSV in the Query Tool. +[Bug #4021](https://redmine.postgresql.org/issues/4021) - Disable the editor and execute functions whilst queries are executing. +[Bug #4054](https://redmine.postgresql.org/issues/4054) - Handle resultsets with zero columns correctly in the Query Tool. +[Bug #4071](https://redmine.postgresql.org/issues/4071) - Ensure that Firefox prompts for a filename/location when downloading query results as a CSV file. diff --git a/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/14_pem_release_notes_7_6.mdx b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/14_pem_release_notes_7_6.mdx new file mode 100644 index 00000000000..da583cd678e --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/14_pem_release_notes_7_6.mdx @@ -0,0 +1,50 @@ +--- +title: "PEM v7.6" +--- + +Release date: 2019-01-09 + +This release contains a number of features and fixes reported since the release of PEM v7.6 + +## Features + +Feature #PEM-545 - Allow to delete the server group \[Support Ticket #737596] +Feature #PEM-945 - Allow to use the performance diagnostic (edb_wait_stat) plugin for EDB Postgres Advance Server +Feature #PEM-1522 - Adding support in the sslutils to work with OpenSSL 1.1+ +[Feature #1513](https://redmine.postgresql.org/issues/1513) - Add support for dropping multiple objects at once from the collection Properties panel. +[Feature #3562](https://redmine.postgresql.org/issues/3562) - Migrate from Bootstrap 3 to Bootstrap 4. +Feature #PEM-1528/[Feature #3589](https://redmine.postgresql.org/issues/3589) - Allow query plans to be downloaded as an SVG file \[Support Ticket #816621] + +## Bug fixes + +Bug #PEM-1368/[Bug #3676](https://redmine.postgresql.org/issues/3676) - Fix CREATE Script functionality for EDB-Wrapped functions. \[Support Ticket #796491] +Bug #PEM-1530 - Fix the server level charts \[Support Ticket #815806] +Bug #PEM-1532 - Disable TRACE option from the configuration file for the apache server \[Support Ticket #784345, #818383] +Bug #PEM-1610 - EFM Status in streaming replication dashborad on PEM not shown \[Support Ticket #826397] +Bug #PEM-1611 - PEM not able to monitor EFM with error: Failed to parse EFM json file \[Support Ticket #826197] +[Bug #3016](https://redmine.postgresql.org/issues/3016) - Ensure previous notices are not removed from the Messages tab in the Query Tool if an error occurs during query execution. +[Bug #3029](https://redmine.postgresql.org/issues/3029) - Allow the selection order to be preserved in the Select2 control to fix column ordering in data Import/Export. +[Bug #3083](https://redmine.postgresql.org/issues/3083) - Increase the size of the resize handle of the edit grid text pop-out. +[Bug #3232](https://redmine.postgresql.org/issues/3232) - Ensure that Utilities(Backup/Restore/Maintenence/Import-Export) should not be started if binary path is wrong and also added 'Stop Process' button to cancel the process. +[Bug #3354](https://redmine.postgresql.org/issues/3354) - Fix handling of array types as inputs to the debugger. +[Bug #3433](https://redmine.postgresql.org/issues/3433) - Fix an issue that could cause the Query Tool to fail to render. +[Bug #3559](https://redmine.postgresql.org/issues/3559) - Further improvements to treeview restoration. +[Bug #3619](https://redmine.postgresql.org/issues/3619) - Add titles to the code areas of the Query Tool and Debugger to ensure that panels can be re-docked within them. +[Bug #3629](https://redmine.postgresql.org/issues/3629) - Allow use of 0 (integer) and empty strings as parameters in the debugger. +[Bug #3638](https://redmine.postgresql.org/issues/3638) - Fix syntax error when creating new pgAgent schedules with a start date/time and exception. +[Bug #3711](https://redmine.postgresql.org/issues/3711) - Fix an encoding issue in the query tool. +[Bug #3722](https://redmine.postgresql.org/issues/3722) - Ensure that utility existence check should work for schema and other child objects while taking Backup/Restore. +[Bug #3723](https://redmine.postgresql.org/issues/3723) - Properly report errors when debugging cannot be started. +[Bug #3726](https://redmine.postgresql.org/issues/3726) - Include the WHERE clause on EXCLUDE constraints in RE-SQL. +[Bug #3734](https://redmine.postgresql.org/issues/3734) - Prevent the debugger controls being pressed again before previous processing is complete. +[Bug #3736](https://redmine.postgresql.org/issues/3736) - Fix toggle breakpoints buttons in the debugger. +[Bug #3742](https://redmine.postgresql.org/issues/3742) - Fix changes to the NOT NULL and default value options in the Table Dialogue. +[Bug #3746](https://redmine.postgresql.org/issues/3746) - Fix dropping of multiple functions/procedures at once. +[Bug #3753](https://redmine.postgresql.org/issues/3753) - Fix an issue when user define Cast from smallint->text is created. +[Bug #3757](https://redmine.postgresql.org/issues/3757) - Hide Radio buttons that should not be shown on the maintenance dialogue. +[Bug #3797](https://redmine.postgresql.org/issues/3797) - Prevent attempts to bulk-drop schema objects. +[Bug #3798](https://redmine.postgresql.org/issues/3798) - Ensure the browser toolbar buttons work in languages other than English. +[Bug #3805](https://redmine.postgresql.org/issues/3805) - Allow horizontal sizing of the edit grid text pop-out. +[Bug #3821](https://redmine.postgresql.org/issues/3821) - Ensure identifiers are properly displayed in the plan viewer. +[Bug #3823](https://redmine.postgresql.org/issues/3823) - Delete/Drop and drop cascade option under properties section is disabled for multiple objects. +[Bug #3824](https://redmine.postgresql.org/issues/3824) - Ensure the dashboard tabs are styles correctly. diff --git a/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/15_pem_release_notes_7_5.mdx b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/15_pem_release_notes_7_5.mdx new file mode 100644 index 00000000000..40803b507dd --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/15_pem_release_notes_7_5.mdx @@ -0,0 +1,43 @@ +--- +title: "PEM v7.5" +--- + +Release date: 2018-10-24 + +This release contains a number of features and fixes reported since the release of PEM v7.5 + +## Features + +Feature #PEM-796 - As a user I should be able to exclude particular mount point from the disk-space probe +Feature #PEM-1020 - As a user I would like to monitor the advanced server V11 +Feature #PEM-1021 - As a user I would like to monitor the postgres V11 +Feature #PEM-1022 - As a user I would like to use PG/EPAS v11 as backend server for the PEM +Feature #PEM-1295 - Limit the number of connections to the PEM DB Server (using pgbouncer - connection pooler) \[Support Ticket #784672] +[Feature #3564](https://redmine.postgresql.org/issues/3564) - Add shortcuts for View Data and the Query tool to the Browser header bar. +[Feature #3514](https://redmine.postgresql.org/issues/3514) - Add optional data point markers and mouse-over tooltips to display values on graphs. +[Feature #1407](https://redmine.postgresql.org/issues/1407) - Add a geometry viewer that can render PostGIS data on a blank canvas or various map sources. +[Feature #1253](https://redmine.postgresql.org/issues/1253) - Save the treeview state periodically, and restore it automatically when reconnecting. + +## Bug fixes + +Bug #PEM-724 - Can't debug function and procedure in package(EnterpriseDB) use non-superuser role \[Support Ticket #569062] +Bug #PEM-918/[#3596](https://redmine.postgresql.org/issues/3596) - Fix support for the CLOB datatype in EPAS \[Support Ticket #761853] +Bug #PEM-1004 - Allow to enter floating values for threshold fields in Alerts configuration window \[Support Ticket #775364] +Bug #PEM-1330 - User can not save password when connecting to server \[Support Ticket #792298] +Bug #PEM-1350 - Allow to install on PostgreSQL/EDB Postgres Advanced Server 9.4 \[Support Ticket #796149] +Bug #PEM-1431 - Release the connections for the connected servers on logout \[Support Ticket #807009] +[Bug #3191](https://redmine.postgresql.org/issues/3191) - Fixed debugger execution issues. +[Bug #3420](https://redmine.postgresql.org/issues/3420) - Merge pgcli code with version 1.10.3, which is used for auto complete feature. +[Bug #3525](https://redmine.postgresql.org/issues/3525) - Ensure that refresh button on dashboard should refresh the table. +[Bug #3551](https://redmine.postgresql.org/issues/3551) - Fix handling of backslashes in the edit grid. +[Bug #3554](https://redmine.postgresql.org/issues/3554) - Fix auto scrolling issue in debugger on step in and step out. \[Support Ticket #779956] +[Bug #3576](https://redmine.postgresql.org/issues/3576) - Ensure queries are no longer executed when dashboards are closed. +[Bug #3604](https://redmine.postgresql.org/issues/3604) - Correct the documentation of View/Edit data. +[Bug #3607](https://redmine.postgresql.org/issues/3607) - Fix logic around validation and highlighting of Sort/Filter in the Query Tool. +[Bug #3630](https://redmine.postgresql.org/issues/3630) - Ensure auto-complete works for objects in schemas other than public and pg_catalog. +[Bug #3657](https://redmine.postgresql.org/issues/3657) - Ensure changes to Query Tool settings from the Preferences dialogue are applied before executing queries. +[Bug #3658](https://redmine.postgresql.org/issues/3658) - Swap the Schema and Schemas icons and Catalog and Catalogs icons that had been used the wrong way around. +[Bug #3660](https://redmine.postgresql.org/issues/3660) - Rename the 'SQL Editor' section of the Preferences to 'Query Tool' as it applies to the whole tool, not just the editor. +[Bug #3674](https://redmine.postgresql.org/issues/3674) - Cleanup session files periodically. +[Bug #3700](https://redmine.postgresql.org/issues/3700) - Fix connection garbage collector. +[Bug #3703](https://redmine.postgresql.org/issues/3703) - Purge connections from the cache on logout. \[Support Ticket #807009] diff --git a/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/index.mdx new file mode 100644 index 00000000000..ee13a98d865 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/12_release_notes/index.mdx @@ -0,0 +1,11 @@ +--- +title: "Release Notes" +--- + +EDB Postgres Enterprise Manager release notes provide the information on the features and improvements in each release. This page includes release notes for major release and minor (bugfix) releases. Select your version from the list below to see the release notes for it. + +
+ +pem_release_notes_8_0_1 pem_release_notes_8_0 pem_release_notes_7_16 pem_release_notes_7_15 pem_release_notes_7_14 pem_release_notes_7_13 pem_release_notes_7_12 pem_release_notes_7_11 pem_release_notes_7_10 pem_release_notes_7_9 pem_release_notes_7_8 pem_release_notes_7_7_1 pem_release_notes_7_7 pem_release_notes_7_6 pem_release_notes_7_5 + +
diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/BART_backup_restore_advanced.png b/product_docs/docs/pem/7.16/pem_online_help/images/BART_backup_restore_advanced.png new file mode 100644 index 00000000000..0ec9f6453a7 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/BART_backup_restore_advanced.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/BART_backup_restore_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/BART_backup_restore_general.png new file mode 100644 index 00000000000..018304908ac Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/BART_backup_restore_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/BART_backup_restore_notifications.png b/product_docs/docs/pem/7.16/pem_online_help/images/BART_backup_restore_notifications.png new file mode 100644 index 00000000000..a1ff81c6535 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/BART_backup_restore_notifications.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/BART_backup_scheduler_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/BART_backup_scheduler_general.png new file mode 100644 index 00000000000..d6b79a16f59 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/BART_backup_scheduler_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/BART_backup_scheduler_schedule_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/BART_backup_scheduler_schedule_general.png new file mode 100755 index 00000000000..feba53b372d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/BART_backup_scheduler_schedule_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/BART_backup_scheduler_schedule_notifications.png b/product_docs/docs/pem/7.16/pem_online_help/images/BART_backup_scheduler_schedule_notifications.png new file mode 100755 index 00000000000..d83ad744046 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/BART_backup_scheduler_schedule_notifications.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/BART_backup_scheduler_schedule_repeat.png b/product_docs/docs/pem/7.16/pem_online_help/images/BART_backup_scheduler_schedule_repeat.png new file mode 100755 index 00000000000..ed43ce38872 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/BART_backup_scheduler_schedule_repeat.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/BART_obsolete_backup_scheduler_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/BART_obsolete_backup_scheduler_general.png new file mode 100644 index 00000000000..819554efc3d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/BART_obsolete_backup_scheduler_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/BART_obsolete_backup_scheduler_repeat.png b/product_docs/docs/pem/7.16/pem_online_help/images/BART_obsolete_backup_scheduler_repeat.png new file mode 100644 index 00000000000..4dd4f8ff46f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/BART_obsolete_backup_scheduler_repeat.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/EDB_audit_config_probe.png b/product_docs/docs/pem/7.16/pem_online_help/images/EDB_audit_config_probe.png new file mode 100755 index 00000000000..f998d926b51 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/EDB_audit_config_probe.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/EDB_logo.png b/product_docs/docs/pem/7.16/pem_online_help/images/EDB_logo.png new file mode 100644 index 00000000000..56aa6750797 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/EDB_logo.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/EPAS_instance.png b/product_docs/docs/pem/7.16/pem_online_help/images/EPAS_instance.png new file mode 100755 index 00000000000..6cce93d59b6 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/EPAS_instance.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/add_restore_point.png b/product_docs/docs/pem/7.16/pem_online_help/images/add_restore_point.png new file mode 100644 index 00000000000..7516be8c68b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/add_restore_point.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/aggregate_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/aggregate_icon.png new file mode 100644 index 00000000000..0c9e93840e4 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/aggregate_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/alert_copy.png b/product_docs/docs/pem/7.16/pem_online_help/images/alert_copy.png new file mode 100755 index 00000000000..a3d0afb15b9 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/alert_copy.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/alert_details.png b/product_docs/docs/pem/7.16/pem_online_help/images/alert_details.png new file mode 100755 index 00000000000..d4778b72195 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/alert_details.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/alert_errors_table.png b/product_docs/docs/pem/7.16/pem_online_help/images/alert_errors_table.png new file mode 100644 index 00000000000..284ab434cc3 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/alert_errors_table.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/alert_templates_tab.png b/product_docs/docs/pem/7.16/pem_online_help/images/alert_templates_tab.png new file mode 100755 index 00000000000..7eb57f8cd69 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/alert_templates_tab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/alerting_define_new_alert.png b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_define_new_alert.png new file mode 100755 index 00000000000..c63ee93bda7 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_define_new_alert.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/alerting_define_notification.png b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_define_notification.png new file mode 100644 index 00000000000..9dcae41afbd Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_define_notification.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/alerting_define_notification_nagios.png b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_define_notification_nagios.png new file mode 100644 index 00000000000..1e5cd545faf Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_define_notification_nagios.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/alerting_define_notification_snmp.png b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_define_notification_snmp.png new file mode 100644 index 00000000000..dc742dfb629 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_define_notification_snmp.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/alerting_define_notification_webhook.png b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_define_notification_webhook.png new file mode 100644 index 00000000000..d79a355036f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_define_notification_webhook.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/alerting_define_script_execution.png b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_define_script_execution.png new file mode 100644 index 00000000000..8e7f4377f73 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_define_script_execution.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/alerting_example_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_example_general.png new file mode 100644 index 00000000000..348ffdc3bff Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_example_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/alerting_example_notification.png b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_example_notification.png new file mode 100644 index 00000000000..f40b0b1ff73 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_example_notification.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/alerting_example_script_execution.png b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_example_script_execution.png new file mode 100644 index 00000000000..7fa01c62808 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_example_script_execution.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/alerting_manage_alerts.png b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_manage_alerts.png new file mode 100644 index 00000000000..9b3a56f92d3 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_manage_alerts.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/alerting_manage_alerts_delete.png b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_manage_alerts_delete.png new file mode 100755 index 00000000000..3452ea514b5 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_manage_alerts_delete.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/alerting_manage_alerts_table.png b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_manage_alerts_table.png new file mode 100755 index 00000000000..745c97e0dbe Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/alerting_manage_alerts_table.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/alerts_customize_chart.png b/product_docs/docs/pem/7.16/pem_online_help/images/alerts_customize_chart.png new file mode 100644 index 00000000000..18b0b033347 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/alerts_customize_chart.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/alerts_customize_table.png b/product_docs/docs/pem/7.16/pem_online_help/images/alerts_customize_table.png new file mode 100644 index 00000000000..4f645ab809a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/alerts_customize_table.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/alerts_dashboard.png b/product_docs/docs/pem/7.16/pem_online_help/images/alerts_dashboard.png new file mode 100755 index 00000000000..08bfe1e0e65 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/alerts_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/alerts_status_table.png b/product_docs/docs/pem/7.16/pem_online_help/images/alerts_status_table.png new file mode 100755 index 00000000000..b7fc87666df Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/alerts_status_table.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/anti_join_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/anti_join_icon.png new file mode 100644 index 00000000000..3dae5dd521f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/anti_join_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/append_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/append_icon.png new file mode 100644 index 00000000000..e08b0f83abd Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/append_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/ark_connect_connection.png b/product_docs/docs/pem/7.16/pem_online_help/images/ark_connect_connection.png new file mode 100644 index 00000000000..347076ea1c9 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/ark_connect_connection.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/ark_connect_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/ark_connect_general.png new file mode 100644 index 00000000000..83e9f999e2f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/ark_connect_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/audit_log_analysis_dashboard.png b/product_docs/docs/pem/7.16/pem_online_help/images/audit_log_analysis_dashboard.png new file mode 100755 index 00000000000..29e623ac40b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/audit_log_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/audit_log_analysis_filter.png b/product_docs/docs/pem/7.16/pem_online_help/images/audit_log_analysis_filter.png new file mode 100755 index 00000000000..cd744ba5c95 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/audit_log_analysis_filter.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/audit_manager_config1.png b/product_docs/docs/pem/7.16/pem_online_help/images/audit_manager_config1.png new file mode 100755 index 00000000000..f8e48ea6e91 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/audit_manager_config1.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/audit_manager_config2.png b/product_docs/docs/pem/7.16/pem_online_help/images/audit_manager_config2.png new file mode 100755 index 00000000000..1755b4a46ad Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/audit_manager_config2.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/audit_manager_finish.png b/product_docs/docs/pem/7.16/pem_online_help/images/audit_manager_finish.png new file mode 100755 index 00000000000..e452d7f1f74 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/audit_manager_finish.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/audit_manager_intro.png b/product_docs/docs/pem/7.16/pem_online_help/images/audit_manager_intro.png new file mode 100755 index 00000000000..6a3f3126912 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/audit_manager_intro.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/audit_manager_servers.png b/product_docs/docs/pem/7.16/pem_online_help/images/audit_manager_servers.png new file mode 100755 index 00000000000..b624309cfc8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/audit_manager_servers.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/auto_discovery.png b/product_docs/docs/pem/7.16/pem_online_help/images/auto_discovery.png new file mode 100755 index 00000000000..b9d3c20e6b3 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/auto_discovery.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/auto_discovery_example.png b/product_docs/docs/pem/7.16/pem_online_help/images/auto_discovery_example.png new file mode 100644 index 00000000000..2e97701e748 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/auto_discovery_example.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/backup_disable.png b/product_docs/docs/pem/7.16/pem_online_help/images/backup_disable.png new file mode 100644 index 00000000000..0ed6d253021 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/backup_disable.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/backup_do_not_save.png b/product_docs/docs/pem/7.16/pem_online_help/images/backup_do_not_save.png new file mode 100644 index 00000000000..fa011b6f990 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/backup_do_not_save.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/backup_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/backup_general.png new file mode 100644 index 00000000000..fdf3dc9da34 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/backup_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/backup_globals_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/backup_globals_general.png new file mode 100644 index 00000000000..5c6fbe7e00f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/backup_globals_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/backup_globals_messages.png b/product_docs/docs/pem/7.16/pem_online_help/images/backup_globals_messages.png new file mode 100644 index 00000000000..c976dd6434f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/backup_globals_messages.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/backup_globals_process_watcher.png b/product_docs/docs/pem/7.16/pem_online_help/images/backup_globals_process_watcher.png new file mode 100644 index 00000000000..2003cc4a805 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/backup_globals_process_watcher.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/backup_messages.png b/product_docs/docs/pem/7.16/pem_online_help/images/backup_messages.png new file mode 100644 index 00000000000..a6b08ed6815 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/backup_messages.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/backup_miscellaneous.png b/product_docs/docs/pem/7.16/pem_online_help/images/backup_miscellaneous.png new file mode 100644 index 00000000000..957fe6ed826 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/backup_miscellaneous.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/backup_objects.png b/product_docs/docs/pem/7.16/pem_online_help/images/backup_objects.png new file mode 100644 index 00000000000..77d477c782c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/backup_objects.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/backup_process_watcher.png b/product_docs/docs/pem/7.16/pem_online_help/images/backup_process_watcher.png new file mode 100644 index 00000000000..027b3cf9397 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/backup_process_watcher.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/backup_queries.png b/product_docs/docs/pem/7.16/pem_online_help/images/backup_queries.png new file mode 100644 index 00000000000..e00e4ac00be Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/backup_queries.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/backup_sections.png b/product_docs/docs/pem/7.16/pem_online_help/images/backup_sections.png new file mode 100644 index 00000000000..b9cc431be18 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/backup_sections.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_disable.png b/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_disable.png new file mode 100644 index 00000000000..fc909fbb3d6 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_disable.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_do_not_save.png b/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_do_not_save.png new file mode 100644 index 00000000000..58623bcdf72 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_do_not_save.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_general.png new file mode 100644 index 00000000000..83949f03a83 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_messages.png b/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_messages.png new file mode 100644 index 00000000000..226c3a627bb Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_messages.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_miscellaneous.png b/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_miscellaneous.png new file mode 100644 index 00000000000..8055bc0ddb1 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_miscellaneous.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_objects.png b/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_objects.png new file mode 100644 index 00000000000..292c18a2544 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_objects.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_process_watcher.png b/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_process_watcher.png new file mode 100644 index 00000000000..a77ee4bf080 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_process_watcher.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_queries.png b/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_queries.png new file mode 100644 index 00000000000..c9f935c3968 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/backup_server_queries.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/bart_backup_dashboard.png b/product_docs/docs/pem/7.16/pem_online_help/images/bart_backup_dashboard.png new file mode 100644 index 00000000000..88f37e2317a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/bart_backup_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/bart_backup_dialog_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/bart_backup_dialog_general.png new file mode 100644 index 00000000000..f7cd2875858 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/bart_backup_dialog_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/bart_backup_dialog_notifications.png b/product_docs/docs/pem/7.16/pem_online_help/images/bart_backup_dialog_notifications.png new file mode 100644 index 00000000000..a09abd2b8bf Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/bart_backup_dialog_notifications.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/bitmap_heap_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/bitmap_heap_icon.png new file mode 100644 index 00000000000..45877f8f7de Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/bitmap_heap_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/bitmap_index_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/bitmap_index_icon.png new file mode 100644 index 00000000000..9f5d3aac39f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/bitmap_index_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/capacity_manager_add_metric.png b/product_docs/docs/pem/7.16/pem_online_help/images/capacity_manager_add_metric.png new file mode 100644 index 00000000000..ed2ceb6ba3c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/capacity_manager_add_metric.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/capacity_manager_metrics.png b/product_docs/docs/pem/7.16/pem_online_help/images/capacity_manager_metrics.png new file mode 100755 index 00000000000..5cd344e107c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/capacity_manager_metrics.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/capacity_manager_opens.png b/product_docs/docs/pem/7.16/pem_online_help/images/capacity_manager_opens.png new file mode 100755 index 00000000000..d0441ce14db Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/capacity_manager_opens.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/capacity_manager_options.png b/product_docs/docs/pem/7.16/pem_online_help/images/capacity_manager_options.png new file mode 100755 index 00000000000..024e25b4695 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/capacity_manager_options.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/capacity_manager_report.png b/product_docs/docs/pem/7.16/pem_online_help/images/capacity_manager_report.png new file mode 100755 index 00000000000..142ad1274c4 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/capacity_manager_report.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/cast_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/cast_definition.png new file mode 100644 index 00000000000..33450261a85 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/cast_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/cast_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/cast_general.png new file mode 100644 index 00000000000..e41ed38c251 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/cast_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/cast_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/cast_sql.png new file mode 100644 index 00000000000..607fdec0d28 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/cast_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/ce_error_hba.png b/product_docs/docs/pem/7.16/pem_online_help/images/ce_error_hba.png new file mode 100644 index 00000000000..a448646c8a2 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/ce_error_hba.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/ce_not_running.png b/product_docs/docs/pem/7.16/pem_online_help/images/ce_not_running.png new file mode 100644 index 00000000000..fee92b036f4 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/ce_not_running.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/ce_password_failed.png b/product_docs/docs/pem/7.16/pem_online_help/images/ce_password_failed.png new file mode 100644 index 00000000000..112e67ab5af Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/ce_password_failed.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/ce_timeout.png b/product_docs/docs/pem/7.16/pem_online_help/images/ce_timeout.png new file mode 100644 index 00000000000..b0facbdd9c9 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/ce_timeout.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/chart_icons.png b/product_docs/docs/pem/7.16/pem_online_help/images/chart_icons.png new file mode 100755 index 00000000000..ea5b6ed8e41 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/chart_icons.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/check_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/check_definition.png new file mode 100644 index 00000000000..ae7bc9544df Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/check_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/check_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/check_general.png new file mode 100644 index 00000000000..b99d2727071 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/check_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/check_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/check_sql.png new file mode 100644 index 00000000000..30adc5d16a4 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/check_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/collation_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/collation_definition.png new file mode 100644 index 00000000000..33917464b69 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/collation_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/collation_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/collation_general.png new file mode 100644 index 00000000000..97c58dc2464 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/collation_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/collation_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/collation_sql.png new file mode 100644 index 00000000000..bc83e84c2fb Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/collation_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/column_constraint_generated.png b/product_docs/docs/pem/7.16/pem_online_help/images/column_constraint_generated.png new file mode 100644 index 00000000000..ad09cb644f8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/column_constraint_generated.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/column_constraint_identity.png b/product_docs/docs/pem/7.16/pem_online_help/images/column_constraint_identity.png new file mode 100644 index 00000000000..02b123ce9c8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/column_constraint_identity.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/column_constraints.png b/product_docs/docs/pem/7.16/pem_online_help/images/column_constraints.png new file mode 100644 index 00000000000..708a80fc2af Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/column_constraints.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/column_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/column_definition.png new file mode 100644 index 00000000000..d936d32fc0f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/column_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/column_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/column_general.png new file mode 100644 index 00000000000..b7f84dd3142 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/column_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/column_security.png b/product_docs/docs/pem/7.16/pem_online_help/images/column_security.png new file mode 100644 index 00000000000..403eba7829b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/column_security.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/column_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/column_sql.png new file mode 100644 index 00000000000..b434cf5fcba Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/column_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/column_variables.png b/product_docs/docs/pem/7.16/pem_online_help/images/column_variables.png new file mode 100644 index 00000000000..6d25f0f6944 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/column_variables.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/compound_trigger_code.png b/product_docs/docs/pem/7.16/pem_online_help/images/compound_trigger_code.png new file mode 100644 index 00000000000..d34da26c774 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/compound_trigger_code.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/compound_trigger_events.png b/product_docs/docs/pem/7.16/pem_online_help/images/compound_trigger_events.png new file mode 100644 index 00000000000..cca71b7881d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/compound_trigger_events.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/compound_trigger_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/compound_trigger_general.png new file mode 100644 index 00000000000..5323076d72f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/compound_trigger_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/compound_trigger_general_enabled.png b/product_docs/docs/pem/7.16/pem_online_help/images/compound_trigger_general_enabled.png new file mode 100644 index 00000000000..d6c42508268 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/compound_trigger_general_enabled.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/compound_trigger_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/compound_trigger_sql.png new file mode 100644 index 00000000000..618a2009af1 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/compound_trigger_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/connect_pem_agent.png b/product_docs/docs/pem/7.16/pem_online_help/images/connect_pem_agent.png new file mode 100644 index 00000000000..6592d6456b0 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/connect_pem_agent.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/connect_to_server.png b/product_docs/docs/pem/7.16/pem_online_help/images/connect_to_server.png new file mode 100644 index 00000000000..3ee68c7dc04 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/connect_to_server.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/copy_probe_config.png b/product_docs/docs/pem/7.16/pem_online_help/images/copy_probe_config.png new file mode 100755 index 00000000000..a12891c71f8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/copy_probe_config.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/core_usage_report.png b/product_docs/docs/pem/7.16/pem_online_help/images/core_usage_report.png new file mode 100755 index 00000000000..f70e406ef57 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/core_usage_report.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/create_BART_server_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/create_BART_server_general.png new file mode 100755 index 00000000000..27c2db395d7 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/create_BART_server_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/create_BART_server_misc.png b/product_docs/docs/pem/7.16/pem_online_help/images/create_BART_server_misc.png new file mode 100644 index 00000000000..15aa959f0d8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/create_BART_server_misc.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/create_group.png b/product_docs/docs/pem/7.16/pem_online_help/images/create_group.png new file mode 100644 index 00000000000..a4eb003665c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/create_group.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_general.png new file mode 100755 index 00000000000..5cd368de766 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_notifications.png b/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_notifications.png new file mode 100755 index 00000000000..3f2bf509cc1 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_notifications.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_schedules.png b/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_schedules.png new file mode 100755 index 00000000000..94941f233bb Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_schedules.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_schedules_exceptions.png b/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_schedules_exceptions.png new file mode 100755 index 00000000000..64ebdf754ab Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_schedules_exceptions.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_schedules_repeat.png b/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_schedules_repeat.png new file mode 100755 index 00000000000..0fd128f2703 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_schedules_repeat.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_sql.png new file mode 100755 index 00000000000..c530ff90585 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_steps.png b/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_steps.png new file mode 100755 index 00000000000..bffc53d6a4b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_steps.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_steps_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_steps_definition.png new file mode 100755 index 00000000000..2a441eb84c6 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_steps_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_steps_definition_code.png b/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_steps_definition_code.png new file mode 100755 index 00000000000..ec714c49463 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/create_pem_jobs_steps_definition_code.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/create_server_advanced_tab.png b/product_docs/docs/pem/7.16/pem_online_help/images/create_server_advanced_tab.png new file mode 100755 index 00000000000..a125a491bd1 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/create_server_advanced_tab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/create_server_bart_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/create_server_bart_general.png new file mode 100755 index 00000000000..ec46565841d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/create_server_bart_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/create_server_bart_misc.png b/product_docs/docs/pem/7.16/pem_online_help/images/create_server_bart_misc.png new file mode 100755 index 00000000000..3fcd4e5b838 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/create_server_bart_misc.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/create_server_bart_tab.png b/product_docs/docs/pem/7.16/pem_online_help/images/create_server_bart_tab.png new file mode 100755 index 00000000000..4e9d37c54da Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/create_server_bart_tab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/create_server_connection_tab.png b/product_docs/docs/pem/7.16/pem_online_help/images/create_server_connection_tab.png new file mode 100755 index 00000000000..32c1858f5c2 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/create_server_connection_tab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/create_server_general_tab.png b/product_docs/docs/pem/7.16/pem_online_help/images/create_server_general_tab.png new file mode 100755 index 00000000000..5e1b472a6e7 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/create_server_general_tab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/create_server_pem_agent_tab.png b/product_docs/docs/pem/7.16/pem_online_help/images/create_server_pem_agent_tab.png new file mode 100755 index 00000000000..4f3473db0d4 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/create_server_pem_agent_tab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/create_server_pem_agent_tab_remote_monitoring.png b/product_docs/docs/pem/7.16/pem_online_help/images/create_server_pem_agent_tab_remote_monitoring.png new file mode 100644 index 00000000000..2d0b957ecd5 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/create_server_pem_agent_tab_remote_monitoring.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/create_server_ssh_tunnel_tab.png b/product_docs/docs/pem/7.16/pem_online_help/images/create_server_ssh_tunnel_tab.png new file mode 100755 index 00000000000..666bbec0658 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/create_server_ssh_tunnel_tab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/create_server_ssl_tab.png b/product_docs/docs/pem/7.16/pem_online_help/images/create_server_ssl_tab.png new file mode 100755 index 00000000000..98dc12ad55b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/create_server_ssl_tab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/cte_scan_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/cte_scan_icon.png new file mode 100644 index 00000000000..663635cc39d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/cte_scan_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/custom_dashboard_add_chart.png b/product_docs/docs/pem/7.16/pem_online_help/images/custom_dashboard_add_chart.png new file mode 100644 index 00000000000..6b22d0b4c41 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/custom_dashboard_add_chart.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/custom_probes.png b/product_docs/docs/pem/7.16/pem_online_help/images/custom_probes.png new file mode 100755 index 00000000000..e8f7fffebe8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/custom_probes.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/custom_probes_alt_code.png b/product_docs/docs/pem/7.16/pem_online_help/images/custom_probes_alt_code.png new file mode 100755 index 00000000000..f7a60000689 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/custom_probes_alt_code.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/custom_probes_code.png b/product_docs/docs/pem/7.16/pem_online_help/images/custom_probes_code.png new file mode 100755 index 00000000000..4d9a0e79b9b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/custom_probes_code.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/custom_probes_columns.png b/product_docs/docs/pem/7.16/pem_online_help/images/custom_probes_columns.png new file mode 100755 index 00000000000..b2ebe7a7e2e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/custom_probes_columns.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/custom_probes_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/custom_probes_general.png new file mode 100755 index 00000000000..51e92e5f26c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/custom_probes_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/dashboard_alert_configure_dialogue.png b/product_docs/docs/pem/7.16/pem_online_help/images/dashboard_alert_configure_dialogue.png new file mode 100644 index 00000000000..5cb9f31d37b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/dashboard_alert_configure_dialogue.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/dashboard_configuration.png b/product_docs/docs/pem/7.16/pem_online_help/images/dashboard_configuration.png new file mode 100755 index 00000000000..1aa76732f39 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/dashboard_configuration.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/database_advanced.png b/product_docs/docs/pem/7.16/pem_online_help/images/database_advanced.png new file mode 100644 index 00000000000..ef4d4e2e0b5 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/database_advanced.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/database_analysis_dashboard.png b/product_docs/docs/pem/7.16/pem_online_help/images/database_analysis_dashboard.png new file mode 100644 index 00000000000..d3d20d3382e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/database_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/database_analysis_table.png b/product_docs/docs/pem/7.16/pem_online_help/images/database_analysis_table.png new file mode 100644 index 00000000000..66602738f0a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/database_analysis_table.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/database_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/database_definition.png new file mode 100644 index 00000000000..53257019789 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/database_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/database_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/database_general.png new file mode 100644 index 00000000000..2d9c7305f9d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/database_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/database_io_analysis.png b/product_docs/docs/pem/7.16/pem_online_help/images/database_io_analysis.png new file mode 100644 index 00000000000..a9aaefaba1e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/database_io_analysis.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/database_parameters.png b/product_docs/docs/pem/7.16/pem_online_help/images/database_parameters.png new file mode 100644 index 00000000000..56d4610272c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/database_parameters.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/database_security.png b/product_docs/docs/pem/7.16/pem_online_help/images/database_security.png new file mode 100644 index 00000000000..7d1f759a30e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/database_security.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/database_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/database_sql.png new file mode 100644 index 00000000000..ee9a5c70086 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/database_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/debug_error_message.png b/product_docs/docs/pem/7.16/pem_online_help/images/debug_error_message.png new file mode 100644 index 00000000000..0e293a4e563 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/debug_error_message.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/debug_ic_step_in.png b/product_docs/docs/pem/7.16/pem_online_help/images/debug_ic_step_in.png new file mode 100644 index 00000000000..efd9ad47cbf Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/debug_ic_step_in.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/debug_main.png b/product_docs/docs/pem/7.16/pem_online_help/images/debug_main.png new file mode 100644 index 00000000000..1849389e61d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/debug_main.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/debug_params.png b/product_docs/docs/pem/7.16/pem_online_help/images/debug_params.png new file mode 100644 index 00000000000..befb119e03d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/debug_params.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/debug_set_breakpoint.png b/product_docs/docs/pem/7.16/pem_online_help/images/debug_set_breakpoint.png new file mode 100644 index 00000000000..58f5d618a35 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/debug_set_breakpoint.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/debug_stack.png b/product_docs/docs/pem/7.16/pem_online_help/images/debug_stack.png new file mode 100644 index 00000000000..68eddfd44db Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/debug_stack.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/debug_step_in.png b/product_docs/docs/pem/7.16/pem_online_help/images/debug_step_in.png new file mode 100644 index 00000000000..27a8ba04f9b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/debug_step_in.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/debug_toolbar.png b/product_docs/docs/pem/7.16/pem_online_help/images/debug_toolbar.png new file mode 100644 index 00000000000..2b2883e3846 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/debug_toolbar.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/debug_variables.png b/product_docs/docs/pem/7.16/pem_online_help/images/debug_variables.png new file mode 100644 index 00000000000..11ae80c41cf Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/debug_variables.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/define_ops_dashboard.png b/product_docs/docs/pem/7.16/pem_online_help/images/define_ops_dashboard.png new file mode 100755 index 00000000000..dc54c495544 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/define_ops_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/delete.png b/product_docs/docs/pem/7.16/pem_online_help/images/delete.png new file mode 100644 index 00000000000..e5936e8278a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/delete.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/delete_system_probe.png b/product_docs/docs/pem/7.16/pem_online_help/images/delete_system_probe.png new file mode 100755 index 00000000000..2f0cf0131c8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/delete_system_probe.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/disconnect_server.png b/product_docs/docs/pem/7.16/pem_online_help/images/disconnect_server.png new file mode 100644 index 00000000000..5fb79ee9a61 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/disconnect_server.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/domain_constraint_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/domain_constraint_definition.png new file mode 100644 index 00000000000..905a7387eb2 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/domain_constraint_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/domain_constraint_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/domain_constraint_general.png new file mode 100644 index 00000000000..a5eedec4ecc Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/domain_constraint_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/domain_constraint_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/domain_constraint_sql.png new file mode 100644 index 00000000000..8443cbf4495 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/domain_constraint_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/domain_constraints.png b/product_docs/docs/pem/7.16/pem_online_help/images/domain_constraints.png new file mode 100644 index 00000000000..087168b9ee6 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/domain_constraints.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/domain_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/domain_definition.png new file mode 100644 index 00000000000..005cc08bbb8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/domain_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/domain_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/domain_general.png new file mode 100644 index 00000000000..3c9372b6642 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/domain_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/domain_security.png b/product_docs/docs/pem/7.16/pem_online_help/images/domain_security.png new file mode 100644 index 00000000000..bce71f9a947 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/domain_security.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/domain_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/domain_sql.png new file mode 100644 index 00000000000..f7161da57ea Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/domain_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/download.png b/product_docs/docs/pem/7.16/pem_online_help/images/download.png new file mode 100644 index 00000000000..b3efacc7460 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/download.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/edb_logo.svg b/product_docs/docs/pem/7.16/pem_online_help/images/edb_logo.svg new file mode 100644 index 00000000000..f24d1dfefee --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/images/edb_logo.svg @@ -0,0 +1,19 @@ + + + edb-logo-disc-dark + + + + \ No newline at end of file diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/edit.png b/product_docs/docs/pem/7.16/pem_online_help/images/edit.png new file mode 100644 index 00000000000..a52560bbf3e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/edit.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/editgrid.png b/product_docs/docs/pem/7.16/pem_online_help/images/editgrid.png new file mode 100644 index 00000000000..83a61aa7325 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/editgrid.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/editgrid_filter_dialog.png b/product_docs/docs/pem/7.16/pem_online_help/images/editgrid_filter_dialog.png new file mode 100644 index 00000000000..13ab5734ce5 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/editgrid_filter_dialog.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/editgrid_toolbar.png b/product_docs/docs/pem/7.16/pem_online_help/images/editgrid_toolbar.png new file mode 100644 index 00000000000..fea4b6f5102 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/editgrid_toolbar.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/email_group_add.png b/product_docs/docs/pem/7.16/pem_online_help/images/email_group_add.png new file mode 100755 index 00000000000..1b0080d0e4c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/email_group_add.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/email_group_delete.png b/product_docs/docs/pem/7.16/pem_online_help/images/email_group_delete.png new file mode 100755 index 00000000000..7b4c980856a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/email_group_delete.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/email_groups_tab.png b/product_docs/docs/pem/7.16/pem_online_help/images/email_groups_tab.png new file mode 100755 index 00000000000..95878829049 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/email_groups_tab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/event_trigger_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/event_trigger_definition.png new file mode 100644 index 00000000000..f662adeffed Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/event_trigger_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/event_trigger_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/event_trigger_general.png new file mode 100644 index 00000000000..4bd5741e705 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/event_trigger_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/event_trigger_security.png b/product_docs/docs/pem/7.16/pem_online_help/images/event_trigger_security.png new file mode 100644 index 00000000000..9466d144398 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/event_trigger_security.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/event_trigger_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/event_trigger_sql.png new file mode 100644 index 00000000000..0ddf4dd3c8c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/event_trigger_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/exclusion_constraint_columns.png b/product_docs/docs/pem/7.16/pem_online_help/images/exclusion_constraint_columns.png new file mode 100644 index 00000000000..453cc815c7a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/exclusion_constraint_columns.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/exclusion_constraint_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/exclusion_constraint_definition.png new file mode 100644 index 00000000000..cffaa9d8a0d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/exclusion_constraint_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/exclusion_constraint_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/exclusion_constraint_general.png new file mode 100644 index 00000000000..ef6012d0a24 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/exclusion_constraint_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/exclusion_constraint_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/exclusion_constraint_sql.png new file mode 100644 index 00000000000..b770048e28f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/exclusion_constraint_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/extension_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/extension_definition.png new file mode 100644 index 00000000000..e01e9990913 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/extension_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/extension_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/extension_general.png new file mode 100644 index 00000000000..c842b56507d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/extension_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/extension_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/extension_sql.png new file mode 100644 index 00000000000..134e16eb3c7 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/extension_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/favicon32.ico b/product_docs/docs/pem/7.16/pem_online_help/images/favicon32.ico new file mode 100644 index 00000000000..27871dc418f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/favicon32.ico differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/fm_cluster_status.png b/product_docs/docs/pem/7.16/pem_online_help/images/fm_cluster_status.png new file mode 100644 index 00000000000..94cea98a084 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/fm_cluster_status.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/fm_job_result.png b/product_docs/docs/pem/7.16/pem_online_help/images/fm_job_result.png new file mode 100755 index 00000000000..48db55c0f81 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/fm_job_result.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/fm_replace_primary.png b/product_docs/docs/pem/7.16/pem_online_help/images/fm_replace_primary.png new file mode 100644 index 00000000000..54b364efaca Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/fm_replace_primary.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/fm_switchover_cluster.png b/product_docs/docs/pem/7.16/pem_online_help/images/fm_switchover_cluster.png new file mode 100644 index 00000000000..a914ef34a0d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/fm_switchover_cluster.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/fm_switchover_job_result.png b/product_docs/docs/pem/7.16/pem_online_help/images/fm_switchover_job_result.png new file mode 100755 index 00000000000..f8708c9b2ff Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/fm_switchover_job_result.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/folder.png b/product_docs/docs/pem/7.16/pem_online_help/images/folder.png new file mode 100644 index 00000000000..473632c4631 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/folder.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/foreign_data_wrapper_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_data_wrapper_definition.png new file mode 100644 index 00000000000..ec5482fd1fd Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_data_wrapper_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/foreign_data_wrapper_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_data_wrapper_general.png new file mode 100644 index 00000000000..bcccabb51e6 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_data_wrapper_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/foreign_data_wrapper_options.png b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_data_wrapper_options.png new file mode 100644 index 00000000000..eef9b3c8383 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_data_wrapper_options.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/foreign_data_wrapper_security.png b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_data_wrapper_security.png new file mode 100644 index 00000000000..711e7dfda58 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_data_wrapper_security.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/foreign_data_wrapper_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_data_wrapper_sql.png new file mode 100644 index 00000000000..55fb41bdc20 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_data_wrapper_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/foreign_key_action.png b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_key_action.png new file mode 100644 index 00000000000..d64875b99f0 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_key_action.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/foreign_key_columns.png b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_key_columns.png new file mode 100644 index 00000000000..0ce3763e614 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_key_columns.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/foreign_key_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_key_definition.png new file mode 100644 index 00000000000..bddd1f7ef27 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_key_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/foreign_key_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_key_general.png new file mode 100644 index 00000000000..a5b6bd43214 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_key_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/foreign_key_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_key_sql.png new file mode 100644 index 00000000000..4ba03d7d0e3 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_key_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/foreign_server_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_server_definition.png new file mode 100644 index 00000000000..c06c7435db4 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_server_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/foreign_server_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_server_general.png new file mode 100644 index 00000000000..30f448d3d03 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_server_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/foreign_server_options.png b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_server_options.png new file mode 100644 index 00000000000..bf193e709bc Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_server_options.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/foreign_server_security.png b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_server_security.png new file mode 100644 index 00000000000..4ec0fe17b57 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_server_security.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/foreign_server_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_server_sql.png new file mode 100644 index 00000000000..03c78aacb70 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_server_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/foreign_table_columns.png b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_table_columns.png new file mode 100644 index 00000000000..eae14e1604b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_table_columns.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/foreign_table_constraints.png b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_table_constraints.png new file mode 100644 index 00000000000..992c769ff56 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_table_constraints.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/foreign_table_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_table_definition.png new file mode 100644 index 00000000000..6d0182acde8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_table_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/foreign_table_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_table_general.png new file mode 100644 index 00000000000..5e85b60a0b2 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_table_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/foreign_table_options.png b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_table_options.png new file mode 100644 index 00000000000..37b5e4b7b36 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_table_options.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/foreign_table_security.png b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_table_security.png new file mode 100644 index 00000000000..ac7809658ef Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_table_security.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/foreign_table_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_table_sql.png new file mode 100644 index 00000000000..e916f49e251 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/foreign_table_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/fts_configuration_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/fts_configuration_definition.png new file mode 100644 index 00000000000..e524e63012e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/fts_configuration_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/fts_configuration_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/fts_configuration_general.png new file mode 100644 index 00000000000..f5cf4ee9c38 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/fts_configuration_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/fts_configuration_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/fts_configuration_sql.png new file mode 100644 index 00000000000..eea6facd6a5 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/fts_configuration_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/fts_configuration_tokens.png b/product_docs/docs/pem/7.16/pem_online_help/images/fts_configuration_tokens.png new file mode 100644 index 00000000000..79fd0bb3375 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/fts_configuration_tokens.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/fts_dictionary_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/fts_dictionary_definition.png new file mode 100644 index 00000000000..47b572ca1df Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/fts_dictionary_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/fts_dictionary_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/fts_dictionary_general.png new file mode 100644 index 00000000000..cae7b6f8485 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/fts_dictionary_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/fts_dictionary_options.png b/product_docs/docs/pem/7.16/pem_online_help/images/fts_dictionary_options.png new file mode 100644 index 00000000000..b0ca8381adf Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/fts_dictionary_options.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/fts_dictionary_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/fts_dictionary_sql.png new file mode 100644 index 00000000000..5895913a50a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/fts_dictionary_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/fts_parser_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/fts_parser_definition.png new file mode 100644 index 00000000000..b056c1c090c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/fts_parser_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/fts_parser_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/fts_parser_general.png new file mode 100644 index 00000000000..133f3283262 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/fts_parser_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/fts_parser_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/fts_parser_sql.png new file mode 100644 index 00000000000..42f4bd95d1b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/fts_parser_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/fts_template_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/fts_template_definition.png new file mode 100644 index 00000000000..79fbe50d230 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/fts_template_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/fts_template_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/fts_template_general.png new file mode 100644 index 00000000000..c625b6c9802 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/fts_template_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/fts_template_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/fts_template_sql.png new file mode 100644 index 00000000000..e4bfe1b7dd8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/fts_template_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/function_arguments.png b/product_docs/docs/pem/7.16/pem_online_help/images/function_arguments.png new file mode 100644 index 00000000000..299c84ab124 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/function_arguments.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/function_code.png b/product_docs/docs/pem/7.16/pem_online_help/images/function_code.png new file mode 100644 index 00000000000..d3d37819da2 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/function_code.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/function_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/function_definition.png new file mode 100644 index 00000000000..a78c6dc5e40 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/function_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/function_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/function_general.png new file mode 100644 index 00000000000..7a3a6e156dd Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/function_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/function_options.png b/product_docs/docs/pem/7.16/pem_online_help/images/function_options.png new file mode 100644 index 00000000000..a85ccb4609c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/function_options.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/function_parameters.png b/product_docs/docs/pem/7.16/pem_online_help/images/function_parameters.png new file mode 100644 index 00000000000..651cff36dfc Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/function_parameters.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/function_security.png b/product_docs/docs/pem/7.16/pem_online_help/images/function_security.png new file mode 100644 index 00000000000..56440ad3349 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/function_security.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/function_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/function_sql.png new file mode 100644 index 00000000000..ea275144bcf Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/function_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/geometry_viewer.png b/product_docs/docs/pem/7.16/pem_online_help/images/geometry_viewer.png new file mode 100644 index 00000000000..1a06cfff0cf Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/geometry_viewer.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/geometry_viewer_property_table.png b/product_docs/docs/pem/7.16/pem_online_help/images/geometry_viewer_property_table.png new file mode 100644 index 00000000000..279e18f327c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/geometry_viewer_property_table.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/global_overview.png b/product_docs/docs/pem/7.16/pem_online_help/images/global_overview.png new file mode 100755 index 00000000000..1878087fa6a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/global_overview.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/grant_wizard_step1.png b/product_docs/docs/pem/7.16/pem_online_help/images/grant_wizard_step1.png new file mode 100644 index 00000000000..2db39b97ee8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/grant_wizard_step1.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/grant_wizard_step2.png b/product_docs/docs/pem/7.16/pem_online_help/images/grant_wizard_step2.png new file mode 100644 index 00000000000..7149ad84981 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/grant_wizard_step2.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/grant_wizard_step3.png b/product_docs/docs/pem/7.16/pem_online_help/images/grant_wizard_step3.png new file mode 100644 index 00000000000..d93808fa158 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/grant_wizard_step3.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/graphical_explain.png b/product_docs/docs/pem/7.16/pem_online_help/images/graphical_explain.png new file mode 100644 index 00000000000..e643a8b8495 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/graphical_explain.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/graphical_explain_details.png b/product_docs/docs/pem/7.16/pem_online_help/images/graphical_explain_details.png new file mode 100644 index 00000000000..8eb02b501e0 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/graphical_explain_details.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/gridview.png b/product_docs/docs/pem/7.16/pem_online_help/images/gridview.png new file mode 100644 index 00000000000..41edbac36fa Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/gridview.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/group_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/group_icon.png new file mode 100644 index 00000000000..bff7ce1b8e7 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/group_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/hash_anti_join_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/hash_anti_join_icon.png new file mode 100644 index 00000000000..3dae5dd521f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/hash_anti_join_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/hash_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/hash_icon.png new file mode 100644 index 00000000000..dc1e3545dd8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/hash_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/hash_semi_join_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/hash_semi_join_icon.png new file mode 100644 index 00000000000..f82cd4e7fb6 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/hash_semi_join_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/hash_set_operator_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/hash_set_operator_icon.png new file mode 100644 index 00000000000..47a7b8cce50 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/hash_set_operator_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/hash_setop_except_all_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/hash_setop_except_all_icon.png new file mode 100644 index 00000000000..092682dafeb Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/hash_setop_except_all_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/hash_setop_except_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/hash_setop_except_icon.png new file mode 100644 index 00000000000..092682dafeb Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/hash_setop_except_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/hash_setop_int_all_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/hash_setop_int_all_icon.png new file mode 100644 index 00000000000..e817608a435 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/hash_setop_int_all_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/home.png b/product_docs/docs/pem/7.16/pem_online_help/images/home.png new file mode 100644 index 00000000000..6c671548c95 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/home.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/hot_table_analysis.png b/product_docs/docs/pem/7.16/pem_online_help/images/hot_table_analysis.png new file mode 100644 index 00000000000..b1a71e9dddf Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/hot_table_analysis.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/import_export_columns.png b/product_docs/docs/pem/7.16/pem_online_help/images/import_export_columns.png new file mode 100644 index 00000000000..a7bc0ec5bcb Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/import_export_columns.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/import_export_complete.png b/product_docs/docs/pem/7.16/pem_online_help/images/import_export_complete.png new file mode 100644 index 00000000000..13c768538c6 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/import_export_complete.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/import_export_miscellaneous.png b/product_docs/docs/pem/7.16/pem_online_help/images/import_export_miscellaneous.png new file mode 100644 index 00000000000..d20b8bd482e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/import_export_miscellaneous.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/import_export_options.png b/product_docs/docs/pem/7.16/pem_online_help/images/import_export_options.png new file mode 100644 index 00000000000..87dadc747ea Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/import_export_options.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/import_export_pw.png b/product_docs/docs/pem/7.16/pem_online_help/images/import_export_pw.png new file mode 100644 index 00000000000..f5565b46e45 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/import_export_pw.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/index_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/index_definition.png new file mode 100644 index 00000000000..0321e82fbf0 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/index_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/index_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/index_general.png new file mode 100644 index 00000000000..36c518cf6d9 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/index_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/index_scan_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/index_scan_icon.png new file mode 100644 index 00000000000..d8d7c012dbe Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/index_scan_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/index_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/index_sql.png new file mode 100644 index 00000000000..3aaa38f153e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/index_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/installing_pem_sql_plugin_windows_ready_to_install.png b/product_docs/docs/pem/7.16/pem_online_help/images/installing_pem_sql_plugin_windows_ready_to_install.png new file mode 100755 index 00000000000..a450ff886a6 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/installing_pem_sql_plugin_windows_ready_to_install.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/installing_pem_sql_profiler_plugin_windows_finish.png b/product_docs/docs/pem/7.16/pem_online_help/images/installing_pem_sql_profiler_plugin_windows_finish.png new file mode 100755 index 00000000000..d5e4f6ba152 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/installing_pem_sql_profiler_plugin_windows_finish.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/installing_pem_sql_profiler_plugin_windows_in_progress.png b/product_docs/docs/pem/7.16/pem_online_help/images/installing_pem_sql_profiler_plugin_windows_in_progress.png new file mode 100755 index 00000000000..cbde3c7620b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/installing_pem_sql_profiler_plugin_windows_in_progress.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/installing_pem_sql_profiler_plugin_windows_installation_directory.png b/product_docs/docs/pem/7.16/pem_online_help/images/installing_pem_sql_profiler_plugin_windows_installation_directory.png new file mode 100755 index 00000000000..36c59897e04 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/installing_pem_sql_profiler_plugin_windows_installation_directory.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/installing_pem_sql_profiler_plugin_windows_license_agreement.png b/product_docs/docs/pem/7.16/pem_online_help/images/installing_pem_sql_profiler_plugin_windows_license_agreement.png new file mode 100755 index 00000000000..b7b173557db Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/installing_pem_sql_profiler_plugin_windows_license_agreement.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/installing_pem_sql_profiler_plugin_windows_welcome.png b/product_docs/docs/pem/7.16/pem_online_help/images/installing_pem_sql_profiler_plugin_windows_welcome.png new file mode 100755 index 00000000000..e7e6683813e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/installing_pem_sql_profiler_plugin_windows_welcome.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/io_analysis.png b/product_docs/docs/pem/7.16/pem_online_help/images/io_analysis.png new file mode 100644 index 00000000000..77dfe738a6d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/io_analysis.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/io_analysis_dashboard.png b/product_docs/docs/pem/7.16/pem_online_help/images/io_analysis_dashboard.png new file mode 100644 index 00000000000..e8a83fdc486 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/io_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/job_notifications_agent_level.png b/product_docs/docs/pem/7.16/pem_online_help/images/job_notifications_agent_level.png new file mode 100755 index 00000000000..306f8ec17f7 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/job_notifications_agent_level.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/job_notifications_job_level.png b/product_docs/docs/pem/7.16/pem_online_help/images/job_notifications_job_level.png new file mode 100755 index 00000000000..3f2bf509cc1 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/job_notifications_job_level.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/job_notifications_server_level.png b/product_docs/docs/pem/7.16/pem_online_help/images/job_notifications_server_level.png new file mode 100755 index 00000000000..8d9e8a64a68 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/job_notifications_server_level.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/join_Icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/join_Icon.png new file mode 100644 index 00000000000..ef17c88f82f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/join_Icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/language_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/language_definition.png new file mode 100644 index 00000000000..0ae7fdfdb24 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/language_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/language_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/language_general.png new file mode 100644 index 00000000000..52b9ff10178 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/language_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/language_security.png b/product_docs/docs/pem/7.16/pem_online_help/images/language_security.png new file mode 100644 index 00000000000..f64d6ed5db4 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/language_security.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/language_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/language_sql.png new file mode 100644 index 00000000000..b5b8bfa20ab Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/language_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/lgdownload.png b/product_docs/docs/pem/7.16/pem_online_help/images/lgdownload.png new file mode 100755 index 00000000000..bfd54f2b4d4 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/lgdownload.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/lgfullscreen.png b/product_docs/docs/pem/7.16/pem_online_help/images/lgfullscreen.png new file mode 100755 index 00000000000..ae7925a3463 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/lgfullscreen.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/lginformation.png b/product_docs/docs/pem/7.16/pem_online_help/images/lginformation.png new file mode 100755 index 00000000000..15ba80c82cb Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/lginformation.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/lgpersonalize.png b/product_docs/docs/pem/7.16/pem_online_help/images/lgpersonalize.png new file mode 100755 index 00000000000..61bb4d95512 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/lgpersonalize.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/lgrefresh.png b/product_docs/docs/pem/7.16/pem_online_help/images/lgrefresh.png new file mode 100755 index 00000000000..63caf86f106 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/lgrefresh.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/limit_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/limit_icon.png new file mode 100644 index 00000000000..71ebe65c527 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/limit_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/lm_import_rotation.png b/product_docs/docs/pem/7.16/pem_online_help/images/lm_import_rotation.png new file mode 100755 index 00000000000..dc67c628f9f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/lm_import_rotation.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/lm_scheduling.png b/product_docs/docs/pem/7.16/pem_online_help/images/lm_scheduling.png new file mode 100755 index 00000000000..f67ca977fda Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/lm_scheduling.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/lm_server_select.png b/product_docs/docs/pem/7.16/pem_online_help/images/lm_server_select.png new file mode 100755 index 00000000000..10821d59ba5 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/lm_server_select.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/lm_welcome.png b/product_docs/docs/pem/7.16/pem_online_help/images/lm_welcome.png new file mode 100755 index 00000000000..09ba8745983 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/lm_welcome.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/lm_what_to_log.png b/product_docs/docs/pem/7.16/pem_online_help/images/lm_what_to_log.png new file mode 100755 index 00000000000..9203546a815 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/lm_what_to_log.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/lm_when_to_log.png b/product_docs/docs/pem/7.16/pem_online_help/images/lm_when_to_log.png new file mode 100755 index 00000000000..63e6f353de2 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/lm_when_to_log.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/lm_where_to_log.png b/product_docs/docs/pem/7.16/pem_online_help/images/lm_where_to_log.png new file mode 100755 index 00000000000..ea1bf059a12 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/lm_where_to_log.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/logo_base.svg b/product_docs/docs/pem/7.16/pem_online_help/images/logo_base.svg new file mode 100644 index 00000000000..67624dbbaed --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/images/logo_base.svg @@ -0,0 +1,18 @@ + + + + +logo_base + + + + + + + diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/main_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/main_sql.png new file mode 100644 index 00000000000..e1077bbefe2 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/main_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/maintenance.png b/product_docs/docs/pem/7.16/pem_online_help/images/maintenance.png new file mode 100644 index 00000000000..a3f8da489bd Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/maintenance.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/maintenance_complete.png b/product_docs/docs/pem/7.16/pem_online_help/images/maintenance_complete.png new file mode 100644 index 00000000000..d1871553d4b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/maintenance_complete.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/maintenance_pw.png b/product_docs/docs/pem/7.16/pem_online_help/images/maintenance_pw.png new file mode 100644 index 00000000000..d7b1e2e76b8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/maintenance_pw.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/manage_dashboard_tab.png b/product_docs/docs/pem/7.16/pem_online_help/images/manage_dashboard_tab.png new file mode 100755 index 00000000000..e36cc1910f0 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/manage_dashboard_tab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/materialize_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/materialize_icon.png new file mode 100644 index 00000000000..6e6df7d6282 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/materialize_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/materialized_view_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/materialized_view_definition.png new file mode 100644 index 00000000000..7d1cc7f6421 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/materialized_view_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/materialized_view_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/materialized_view_general.png new file mode 100644 index 00000000000..2c62f2c3518 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/materialized_view_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/materialized_view_parameter.png b/product_docs/docs/pem/7.16/pem_online_help/images/materialized_view_parameter.png new file mode 100644 index 00000000000..8b08816d455 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/materialized_view_parameter.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/materialized_view_security.png b/product_docs/docs/pem/7.16/pem_online_help/images/materialized_view_security.png new file mode 100644 index 00000000000..e0ae10b498a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/materialized_view_security.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/materialized_view_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/materialized_view_sql.png new file mode 100644 index 00000000000..0b83c92d340 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/materialized_view_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/materialized_view_storage.png b/product_docs/docs/pem/7.16/pem_online_help/images/materialized_view_storage.png new file mode 100644 index 00000000000..9d0c24d1935 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/materialized_view_storage.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/memory_analysis_dashboard.png b/product_docs/docs/pem/7.16/pem_online_help/images/memory_analysis_dashboard.png new file mode 100644 index 00000000000..b8c3d5b3183 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/memory_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/merge_anti_join_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/merge_anti_join_icon.png new file mode 100644 index 00000000000..2fb22ca1d3f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/merge_anti_join_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/merge_join_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/merge_join_icon.png new file mode 100644 index 00000000000..8dc6b916ec5 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/merge_join_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/merge_semi_join_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/merge_semi_join_icon.png new file mode 100644 index 00000000000..44ffaf775e0 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/merge_semi_join_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/move_objects_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/move_objects_general.png new file mode 100644 index 00000000000..57dccd0713b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/move_objects_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/move_objects_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/move_objects_sql.png new file mode 100644 index 00000000000..0d006a5edd6 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/move_objects_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/move_pem_server_agent_cfg.png b/product_docs/docs/pem/7.16/pem_online_help/images/move_pem_server_agent_cfg.png new file mode 100755 index 00000000000..3a70eae4ad5 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/move_pem_server_agent_cfg.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/move_pem_server_restart_agent.png b/product_docs/docs/pem/7.16/pem_online_help/images/move_pem_server_restart_agent.png new file mode 100755 index 00000000000..a5578c6e12f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/move_pem_server_restart_agent.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/move_pem_server_windows_registry.png b/product_docs/docs/pem/7.16/pem_online_help/images/move_pem_server_windows_registry.png new file mode 100755 index 00000000000..9a99baf3332 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/move_pem_server_windows_registry.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/move_pem_server_windows_registry_edit.png b/product_docs/docs/pem/7.16/pem_online_help/images/move_pem_server_windows_registry_edit.png new file mode 100755 index 00000000000..8f75288373d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/move_pem_server_windows_registry_edit.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/move_server_windows_permission.png b/product_docs/docs/pem/7.16/pem_online_help/images/move_server_windows_permission.png new file mode 100755 index 00000000000..f7c0ac353ee Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/move_server_windows_permission.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/nagios_alert_notification.png b/product_docs/docs/pem/7.16/pem_online_help/images/nagios_alert_notification.png new file mode 100755 index 00000000000..42ba7287eb2 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/nagios_alert_notification.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/nagios_server_configuration.png b/product_docs/docs/pem/7.16/pem_online_help/images/nagios_server_configuration.png new file mode 100755 index 00000000000..17ccfee1ca8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/nagios_server_configuration.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/nested_loop_anti_join_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/nested_loop_anti_join_icon.png new file mode 100644 index 00000000000..bba72e3ce11 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/nested_loop_anti_join_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/nested_loop_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/nested_loop_icon.png new file mode 100644 index 00000000000..d99aeafa16f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/nested_loop_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/nested_loop_semi_join_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/nested_loop_semi_join_icon.png new file mode 100644 index 00000000000..510342f0dc5 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/nested_loop_semi_join_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/new_connection_dialog.png b/product_docs/docs/pem/7.16/pem_online_help/images/new_connection_dialog.png new file mode 100644 index 00000000000..5c342214289 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/new_connection_dialog.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/new_connection_options.png b/product_docs/docs/pem/7.16/pem_online_help/images/new_connection_options.png new file mode 100644 index 00000000000..a2a9a00a322 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/new_connection_options.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/object_activity_analysis_dashboard.png b/product_docs/docs/pem/7.16/pem_online_help/images/object_activity_analysis_dashboard.png new file mode 100644 index 00000000000..7f8fb8a2774 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/object_activity_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/object_io_details_table.png b/product_docs/docs/pem/7.16/pem_online_help/images/object_io_details_table.png new file mode 100644 index 00000000000..ad4aa18dd01 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/object_io_details_table.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/object_storage_table.png b/product_docs/docs/pem/7.16/pem_online_help/images/object_storage_table.png new file mode 100644 index 00000000000..d4122e1a4fb Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/object_storage_table.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/oper_system_analysis.png b/product_docs/docs/pem/7.16/pem_online_help/images/oper_system_analysis.png new file mode 100644 index 00000000000..2b427fd7f1e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/oper_system_analysis.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/os_analysis_disk.png b/product_docs/docs/pem/7.16/pem_online_help/images/os_analysis_disk.png new file mode 100644 index 00000000000..72a56b6eef9 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/os_analysis_disk.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/os_analysis_network.png b/product_docs/docs/pem/7.16/pem_online_help/images/os_analysis_network.png new file mode 100644 index 00000000000..fb4485b79c9 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/os_analysis_network.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/package_body.png b/product_docs/docs/pem/7.16/pem_online_help/images/package_body.png new file mode 100644 index 00000000000..ad9aae1f0f4 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/package_body.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/package_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/package_general.png new file mode 100644 index 00000000000..ee24f476674 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/package_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/package_header.png b/product_docs/docs/pem/7.16/pem_online_help/images/package_header.png new file mode 100644 index 00000000000..3702ede49f3 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/package_header.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/package_security.png b/product_docs/docs/pem/7.16/pem_online_help/images/package_security.png new file mode 100644 index 00000000000..9b43ef7b847 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/package_security.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/package_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/package_sql.png new file mode 100644 index 00000000000..01880e3c813 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/package_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pe_direct_output.png b/product_docs/docs/pem/7.16/pem_online_help/images/pe_direct_output.png new file mode 100755 index 00000000000..a9f3c715853 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pe_direct_output.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pe_param_value.png b/product_docs/docs/pem/7.16/pem_online_help/images/pe_param_value.png new file mode 100755 index 00000000000..6021a4cabb1 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pe_param_value.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pe_report.png b/product_docs/docs/pem/7.16/pem_online_help/images/pe_report.png new file mode 100755 index 00000000000..5307ca0a890 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pe_report.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pe_select_rules.png b/product_docs/docs/pem/7.16/pem_online_help/images/pe_select_rules.png new file mode 100755 index 00000000000..72788323f47 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pe_select_rules.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pe_select_servers.png b/product_docs/docs/pem/7.16/pem_online_help/images/pe_select_servers.png new file mode 100755 index 00000000000..129c6401923 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pe_select_servers.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pe_welcome.png b/product_docs/docs/pem/7.16/pem_online_help/images/pe_welcome.png new file mode 100755 index 00000000000..d7a59e6333c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pe_welcome.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem-architecture.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem-architecture.png new file mode 100644 index 00000000000..e8e3fdc4dd0 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem-architecture.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_access_create_login.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_access_create_login.png new file mode 100755 index 00000000000..da3dba9ae9e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_access_create_login.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_accessing_create_server_dialog.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_accessing_create_server_dialog.png new file mode 100755 index 00000000000..8c26533355c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_accessing_create_server_dialog.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent.png new file mode 100644 index 00000000000..c35d03ac401 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_configurations_properties.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_configurations_properties.png new file mode 100755 index 00000000000..1577bb92155 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_configurations_properties.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_job_notification_properties.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_job_notification_properties.png new file mode 100755 index 00000000000..910870a81d3 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_job_notification_properties.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_pem_server_windows_installation_details.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_pem_server_windows_installation_details.png new file mode 100755 index 00000000000..d4187b939f3 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_pem_server_windows_installation_details.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_properties.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_properties.png new file mode 100755 index 00000000000..cf37c40ce08 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_properties.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_self_registration.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_self_registration.png new file mode 100644 index 00000000000..b6d99493eda Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_self_registration.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_service_account_windows_password.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_service_account_windows_password.png new file mode 100755 index 00000000000..3ad6a1f4ee3 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_service_account_windows_password.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_welcome_dialog.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_welcome_dialog.png new file mode 100644 index 00000000000..9196cedd85d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_welcome_dialog.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_windows_advanced_options_certificate_path.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_windows_advanced_options_certificate_path.png new file mode 100755 index 00000000000..093146eaf37 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_windows_advanced_options_certificate_path.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_windows_agent_details.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_windows_agent_details.png new file mode 100755 index 00000000000..fed4dfecc25 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_windows_agent_details.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_windows_installation_complete.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_windows_installation_complete.png new file mode 100644 index 00000000000..dbaf1a69aa0 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_windows_installation_complete.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_windows_installation_directory.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_windows_installation_directory.png new file mode 100755 index 00000000000..583bd14922b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_windows_installation_directory.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_windows_installation_in_progress.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_windows_installation_in_progress.png new file mode 100755 index 00000000000..454a176bb73 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_windows_installation_in_progress.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_windows_installation_ready_to_begin.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_windows_installation_ready_to_begin.png new file mode 100755 index 00000000000..2968b3706b0 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_windows_installation_ready_to_begin.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_windows_license_agreement.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_windows_license_agreement.png new file mode 100755 index 00000000000..4322c85a78b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_agent_windows_license_agreement.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_blackout_agent_tab.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_blackout_agent_tab.png new file mode 100644 index 00000000000..3522709e978 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_blackout_agent_tab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_blackout_delete_confirm.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_blackout_delete_confirm.png new file mode 100644 index 00000000000..88fb98804f9 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_blackout_delete_confirm.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_blackout_select_servers.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_blackout_select_servers.png new file mode 100644 index 00000000000..ef797f936d3 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_blackout_select_servers.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_blackout_server_tab.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_blackout_server_tab.png new file mode 100644 index 00000000000..cd470e4226a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_blackout_server_tab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_templates_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_templates_general.png new file mode 100755 index 00000000000..4aa32049bd3 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_templates_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_templates_paramtab.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_templates_paramtab.png new file mode 100755 index 00000000000..01de1a67d96 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_templates_paramtab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_templates_pdtab.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_templates_pdtab.png new file mode 100755 index 00000000000..60fd89afdaf Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_templates_pdtab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_templates_pre-def.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_templates_pre-def.png new file mode 100755 index 00000000000..4464b6a070a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_templates_pre-def.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_templates_sqltab.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_templates_sqltab.png new file mode 100755 index 00000000000..88747e33129 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_templates_sqltab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_templates_tab.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_templates_tab.png new file mode 100755 index 00000000000..956a1191792 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_alert_templates_tab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_architecture.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_architecture.png new file mode 100644 index 00000000000..f90938f1d07 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_architecture.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_dashboard_statistics.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_dashboard_statistics.png new file mode 100644 index 00000000000..0c127687a87 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_dashboard_statistics.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_dashboard_welcome.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_dashboard_welcome.png new file mode 100644 index 00000000000..0a0fbe56a6f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_dashboard_welcome.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_dependencies.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_dependencies.png new file mode 100644 index 00000000000..0c34b443e22 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_dependencies.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_dependents.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_dependents.png new file mode 100644 index 00000000000..00a41409945 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_dependents.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_monitoring.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_monitoring.png new file mode 100644 index 00000000000..4459b62f744 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_monitoring.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_properties.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_properties.png new file mode 100644 index 00000000000..1ffa565f877 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_properties.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_sql.png new file mode 100644 index 00000000000..05d22cffd59 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_statistics.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_statistics.png new file mode 100644 index 00000000000..038cfbe01d9 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_statistics.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_window.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_window.png new file mode 100644 index 00000000000..d1adfbe9764 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_browser_window.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_create_new_chart_conf_chart.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_create_new_chart_conf_chart.png new file mode 100755 index 00000000000..701bf53c6e4 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_create_new_chart_conf_chart.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_create_new_chart_select_metrics.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_create_new_chart_select_metrics.png new file mode 100755 index 00000000000..26ea5346823 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_create_new_chart_select_metrics.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_create_new_chart_set_options.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_create_new_chart_set_options.png new file mode 100755 index 00000000000..60f4f2a204a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_create_new_chart_set_options.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_custom_dashboard_add_chart.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_custom_dashboard_add_chart.png new file mode 100755 index 00000000000..f9fe25cca91 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_custom_dashboard_add_chart.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_custom_dashboard_add_section_name.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_custom_dashboard_add_section_name.png new file mode 100755 index 00000000000..fe5c3214fe5 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_custom_dashboard_add_section_name.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_custom_dashboard_chart_details.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_custom_dashboard_chart_details.png new file mode 100755 index 00000000000..81774433b88 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_custom_dashboard_chart_details.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_custom_dashboard_configure_dashboard.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_custom_dashboard_configure_dashboard.png new file mode 100755 index 00000000000..aa74a801db0 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_custom_dashboard_configure_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_dashboards_menu.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_dashboards_menu.png new file mode 100755 index 00000000000..b7e2f1abb6e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_dashboards_menu.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_database_with_pgbouncer.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_database_with_pgbouncer.png new file mode 100755 index 00000000000..9b5f265c07f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_database_with_pgbouncer.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_database_without_pgbouncer.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_database_without_pgbouncer.png new file mode 100755 index 00000000000..e5b72e5d9fe Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_database_without_pgbouncer.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_file_menu.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_file_menu.png new file mode 100755 index 00000000000..b36fac99ffc Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_file_menu.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_help_menu.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_help_menu.png new file mode 100755 index 00000000000..41a92b7920b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_help_menu.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_installation_overview.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_installation_overview.png new file mode 100755 index 00000000000..e8e3fdc4dd0 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_installation_overview.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_log_analysis_expert_report.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_log_analysis_expert_report.png new file mode 100755 index 00000000000..cbe6846a27c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_log_analysis_expert_report.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_log_analysis_expert_report_finish.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_log_analysis_expert_report_finish.png new file mode 100755 index 00000000000..6aaf6b090b2 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_log_analysis_expert_report_finish.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_log_analysis_expert_report_options.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_log_analysis_expert_report_options.png new file mode 100755 index 00000000000..66cdafa8fa1 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_log_analysis_expert_report_options.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_log_analysis_expert_select_analyzers.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_log_analysis_expert_select_analyzers.png new file mode 100755 index 00000000000..d4a2a28cda3 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_log_analysis_expert_select_analyzers.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_log_analysis_expert_select_servers.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_log_analysis_expert_select_servers.png new file mode 100755 index 00000000000..390dc60c2b8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_log_analysis_expert_select_servers.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_log_analysis_expert_welcome.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_log_analysis_expert_welcome.png new file mode 100755 index 00000000000..20c49f144dc Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_log_analysis_expert_welcome.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_log_view.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_log_view.png new file mode 100644 index 00000000000..0c74d10e786 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_log_view.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_login.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_login.png new file mode 100755 index 00000000000..efdf25cf120 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_login.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_logon.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_logon.png new file mode 100755 index 00000000000..647ef069427 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_logon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts.png new file mode 100755 index 00000000000..6729ddbe237 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts_completed.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts_completed.png new file mode 100755 index 00000000000..4e410347dc3 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts_completed.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts_custom_chart.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts_custom_chart.png new file mode 100755 index 00000000000..519fe879d8c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts_custom_chart.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts_imported_metrics.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts_imported_metrics.png new file mode 100755 index 00000000000..7eca360f919 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts_imported_metrics.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts_imported_options.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts_imported_options.png new file mode 100755 index 00000000000..13aa1a8b60a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts_imported_options.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts_imported_permissions.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts_imported_permissions.png new file mode 100755 index 00000000000..50143b49b4a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts_imported_permissions.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts_imported_template.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts_imported_template.png new file mode 100755 index 00000000000..708182569ed Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts_imported_template.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts_set_permissions.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts_set_permissions.png new file mode 100755 index 00000000000..748f8a949ec Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_charts_set_permissions.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_dashboards_tab.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_dashboards_tab.png new file mode 100644 index 00000000000..851760274e0 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_dashboards_tab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_import_charts_completed.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_import_charts_completed.png new file mode 100644 index 00000000000..b9f3ddcf805 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_import_charts_completed.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_probes_tab.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_probes_tab.png new file mode 100755 index 00000000000..defd9fe235c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_manage_probes_tab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_management_menu.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_management_menu.png new file mode 100755 index 00000000000..99a9d8d1132 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_management_menu.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_object_menu.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_object_menu.png new file mode 100755 index 00000000000..a6e6a39576a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_object_menu.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_online_help.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_online_help.png new file mode 100755 index 00000000000..97394cfdb4e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_online_help.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_pg_hba.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_pg_hba.png new file mode 100755 index 00000000000..2475302a4c8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_pg_hba.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_pgbouncer_with.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_pgbouncer_with.png new file mode 100644 index 00000000000..9698c5289ba Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_pgbouncer_with.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_pgbouncer_without.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_pgbouncer_without.png new file mode 100644 index 00000000000..780336afd19 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_pgbouncer_without.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_roles_membership_example.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_roles_membership_example.png new file mode 100644 index 00000000000..eb6175a120e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_roles_membership_example.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_rpm_installation_agent.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_rpm_installation_agent.png new file mode 100755 index 00000000000..2c20acc77df Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_rpm_installation_agent.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_scheduled_task_details.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_scheduled_task_details.png new file mode 100644 index 00000000000..1cf4977efb9 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_scheduled_task_details.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_scheduled_task_steps.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_scheduled_task_steps.png new file mode 100644 index 00000000000..a8941b20d9a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_scheduled_task_steps.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_scheduled_task_tab.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_scheduled_task_tab.png new file mode 100644 index 00000000000..8a9f14aa242 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_scheduled_task_tab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server.png new file mode 100644 index 00000000000..6161f2c9b47 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_config.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_config.png new file mode 100755 index 00000000000..6062ec6428f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_config.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_administrators_password.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_administrators_password.png new file mode 100755 index 00000000000..c9886bbae32 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_administrators_password.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_advanced_options.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_advanced_options.png new file mode 100755 index 00000000000..4a00afa8775 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_advanced_options.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_agent_details.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_agent_details.png new file mode 100755 index 00000000000..bdc33c8c679 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_agent_details.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_database_server_selection.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_database_server_selection.png new file mode 100755 index 00000000000..f55d4d900b5 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_database_server_selection.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_installation_begins.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_installation_begins.png new file mode 100755 index 00000000000..e77fab29c3e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_installation_begins.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_installation_complete.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_installation_complete.png new file mode 100644 index 00000000000..e904a6a88bf Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_installation_complete.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_installation_db_server_details.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_installation_db_server_details.png new file mode 100755 index 00000000000..aa2ccc7dfbb Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_installation_db_server_details.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_installation_directory.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_installation_directory.png new file mode 100755 index 00000000000..b5dcdf4e084 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_installation_directory.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_installation_in_progress.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_installation_in_progress.png new file mode 100755 index 00000000000..46b7aec438c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_installation_in_progress.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_license_agreement.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_license_agreement.png new file mode 100755 index 00000000000..3b224d4e9cc Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_license_agreement.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_network_details.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_network_details.png new file mode 100755 index 00000000000..794b05f5cea Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_network_details.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_pem_db_created.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_pem_db_created.png new file mode 100755 index 00000000000..8de99773e95 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_pem_db_created.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_welcome_wizard.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_welcome_wizard.png new file mode 100644 index 00000000000..f3a8e06c257 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_existing_pg_welcome_wizard.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_agent_details.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_agent_details.png new file mode 100755 index 00000000000..4d941db7d89 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_agent_details.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_db_pem_created.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_db_pem_created.png new file mode 100644 index 00000000000..89f3defa281 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_db_pem_created.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_installation_begins.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_installation_begins.png new file mode 100755 index 00000000000..312ed069ec1 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_installation_begins.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_installation_complete.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_installation_complete.png new file mode 100644 index 00000000000..e904a6a88bf Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_installation_complete.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_installation_directory.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_installation_directory.png new file mode 100755 index 00000000000..004cffe6753 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_installation_directory.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_installation_in_progress.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_installation_in_progress.png new file mode 100644 index 00000000000..32ea7e92bd9 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_installation_in_progress.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_license_agreement.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_license_agreement.png new file mode 100755 index 00000000000..613013fe1ec Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_license_agreement.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_network_details.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_network_details.png new file mode 100755 index 00000000000..16687bc48bc Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_network_details.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_pemagent_service_account_password.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_pemagent_service_account_password.png new file mode 100755 index 00000000000..e999f8fd2a7 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_pemagent_service_account_password.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_pgsql_credentials.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_pgsql_credentials.png new file mode 100644 index 00000000000..e8b03bac1b4 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_pgsql_credentials.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_prerequisites_checks.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_prerequisites_checks.png new file mode 100644 index 00000000000..1b85cac784f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_prerequisites_checks.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_welcome_wizard.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_welcome_wizard.png new file mode 100644 index 00000000000..f3a8e06c257 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_same_host_welcome_wizard.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_PEM_httpd_installation_wizard.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_PEM_httpd_installation_wizard.png new file mode 100644 index 00000000000..f6cc410edcf Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_PEM_httpd_installation_wizard.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_advanced_options_dialog_select_database.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_advanced_options_dialog_select_database.png new file mode 100755 index 00000000000..aa8435bb03e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_advanced_options_dialog_select_database.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_database_agent_details.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_database_agent_details.png new file mode 100755 index 00000000000..f8e2e4bd989 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_database_agent_details.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_database_server_installation_details.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_database_server_installation_details.png new file mode 100755 index 00000000000..6889ed260e4 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_database_server_installation_details.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_database_server_selection.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_database_server_selection.png new file mode 100755 index 00000000000..dc7bd27a557 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_database_server_selection.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_installation_begins.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_installation_begins.png new file mode 100755 index 00000000000..213c1f8e11d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_installation_begins.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_installation_complete.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_installation_complete.png new file mode 100644 index 00000000000..e904a6a88bf Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_installation_complete.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_installation_directory.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_installation_directory.png new file mode 100755 index 00000000000..b5dcdf4e084 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_installation_directory.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_installation_in_progress.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_installation_in_progress.png new file mode 100755 index 00000000000..13089c3e8be Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_installation_in_progress.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_installing_web_services_advanced_options.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_installing_web_services_advanced_options.png new file mode 100755 index 00000000000..dbb7dbbde50 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_installing_web_services_advanced_options.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_installing_web_services_installing_missing_dependency_languagepack.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_installing_web_services_installing_missing_dependency_languagepack.png new file mode 100755 index 00000000000..78c06039355 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_installing_web_services_installing_missing_dependency_languagepack.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_license_agreement.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_license_agreement.png new file mode 100755 index 00000000000..3b224d4e9cc Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_license_agreement.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_network_details.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_network_details.png new file mode 100755 index 00000000000..be79965a9bf Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_network_details.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_pem_db_created.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_pem_db_created.png new file mode 100755 index 00000000000..07d302a09f9 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_pem_db_created.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_web_services_and_database.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_web_services_and_database.png new file mode 100755 index 00000000000..a5e33604302 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_web_services_and_database.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_web_services_checking_components.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_web_services_checking_components.png new file mode 100755 index 00000000000..b4a32b653fb Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_web_services_checking_components.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_webservices_installing_database_server.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_webservices_installing_database_server.png new file mode 100755 index 00000000000..af4f3cdbe1c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_webservices_installing_database_server.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_welcome_wizard.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_welcome_wizard.png new file mode 100644 index 00000000000..f3a8e06c257 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_host_welcome_wizard.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_pem_agent_service_account.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_pem_agent_service_account.png new file mode 100755 index 00000000000..4c7e89f4df5 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_on_separate_pem_agent_service_account.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_tools_menu_queue_server.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_tools_menu_queue_server.png new file mode 100755 index 00000000000..f016eb5b5a4 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_server_tools_menu_queue_server.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_services_httpd.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_services_httpd.png new file mode 100755 index 00000000000..e1e59e77f5a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_services_httpd.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_services_windows_server_agent.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_services_windows_server_agent.png new file mode 100755 index 00000000000..4f27cd89a9f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_services_windows_server_agent.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_task_view.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_task_view.png new file mode 100644 index 00000000000..3e499ee2776 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_task_view.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_tool_menu.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_tool_menu.png new file mode 100644 index 00000000000..0b1407fa6fe Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_tool_menu.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_toolbar.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_toolbar.png new file mode 100644 index 00000000000..9cb07275afa Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_toolbar.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_agent_existing_installation.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_agent_existing_installation.png new file mode 100755 index 00000000000..a98f629f7e8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_agent_existing_installation.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_agent_finish.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_agent_finish.png new file mode 100644 index 00000000000..dbaf1a69aa0 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_agent_finish.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_agent_license.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_agent_license.png new file mode 100755 index 00000000000..eb96f0af909 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_agent_license.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_agent_pemAgent_service_account.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_agent_pemAgent_service_account.png new file mode 100755 index 00000000000..de6e089e495 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_agent_pemAgent_service_account.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_agent_ready_install.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_agent_ready_install.png new file mode 100755 index 00000000000..caef36fe263 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_agent_ready_install.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_agent_restart_pop_up.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_agent_restart_pop_up.png new file mode 100755 index 00000000000..47506b46b07 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_agent_restart_pop_up.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_agent_welcome.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_agent_welcome.png new file mode 100644 index 00000000000..9196cedd85d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_agent_welcome.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_DB_installation.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_DB_installation.png new file mode 100644 index 00000000000..1587cf45049 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_DB_installation.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_dependency_missing.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_dependency_missing.png new file mode 100644 index 00000000000..27c9c5978c2 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_dependency_missing.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_error.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_error.png new file mode 100755 index 00000000000..0264db94890 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_error.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_existing_installation.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_existing_installation.png new file mode 100644 index 00000000000..779b5112787 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_existing_installation.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_finish.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_finish.png new file mode 100644 index 00000000000..392897ca7ab Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_finish.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_installing.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_installing.png new file mode 100644 index 00000000000..e506a84b39b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_installing.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_license.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_license.png new file mode 100644 index 00000000000..a9aedf78c5f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_license.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_pemAgent_service_account.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_pemAgent_service_account.png new file mode 100644 index 00000000000..7e578a79ccd Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_pemAgent_service_account.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_pop_up.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_pop_up.png new file mode 100644 index 00000000000..ec5ab368099 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_pop_up.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_ready_install.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_ready_install.png new file mode 100644 index 00000000000..6e8694f62f8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_ready_install.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_webservice_configure.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_webservice_configure.png new file mode 100644 index 00000000000..b7263f3d27b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_webservice_configure.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_welcome.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_welcome.png new file mode 100644 index 00000000000..9a86342cad6 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_upgrade_server_welcome.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pem_web_interface.png b/product_docs/docs/pem/7.16/pem_online_help/images/pem_web_interface.png new file mode 100755 index 00000000000..b35783e3f36 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pem_web_interface.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_chart_legends.png b/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_chart_legends.png new file mode 100644 index 00000000000..f6081466e3a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_chart_legends.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_datetime_selection.png b/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_datetime_selection.png new file mode 100644 index 00000000000..b5cb3450b4f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_datetime_selection.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_error.png b/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_error.png new file mode 100644 index 00000000000..c6434b0392c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_error.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_intro.png b/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_intro.png new file mode 100644 index 00000000000..b0e90bcf5e2 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_intro.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_query_dashboard.png b/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_query_dashboard.png new file mode 100644 index 00000000000..4a34888172d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_query_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_table_filter.png b/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_table_filter.png new file mode 100644 index 00000000000..5319bd74bd3 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_table_filter.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_timeseries_selection.png b/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_timeseries_selection.png new file mode 100644 index 00000000000..14764c9a2cc Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_timeseries_selection.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_users_table.png b/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_users_table.png new file mode 100644 index 00000000000..ea8a9df9ceb Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_users_table.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_wait_events.png b/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_wait_events.png new file mode 100644 index 00000000000..48638cd63a4 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/performance_diagnostic_wait_events.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/personalize_chart.png b/product_docs/docs/pem/7.16/pem_online_help/images/personalize_chart.png new file mode 100755 index 00000000000..13fcc4fa6dc Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/personalize_chart.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_general.png new file mode 100644 index 00000000000..f5e79cb65b1 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_properties.png b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_properties.png new file mode 100644 index 00000000000..0164ccb51de Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_properties.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_schedule_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_schedule_definition.png new file mode 100644 index 00000000000..31dc5f997c2 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_schedule_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_schedule_exceptions.png b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_schedule_exceptions.png new file mode 100644 index 00000000000..c71de3206a2 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_schedule_exceptions.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_schedule_repeat.png b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_schedule_repeat.png new file mode 100644 index 00000000000..3d3148a088a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_schedule_repeat.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_scheduledetails1.png b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_scheduledetails1.png new file mode 100644 index 00000000000..c59d3aa2f9d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_scheduledetails1.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_scheduledetails2.png b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_scheduledetails2.png new file mode 100644 index 00000000000..dd8ed0ced36 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_scheduledetails2.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_scheduledetails3.png b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_scheduledetails3.png new file mode 100644 index 00000000000..b837be00fd2 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_scheduledetails3.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_scheduleproperties.png b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_scheduleproperties.png new file mode 100644 index 00000000000..0d327a8c822 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_scheduleproperties.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_schedules.png b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_schedules.png new file mode 100644 index 00000000000..80103b766a1 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_schedules.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_sql.png new file mode 100644 index 00000000000..e97f4010e30 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_step_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_step_definition.png new file mode 100644 index 00000000000..abec0be24a3 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_step_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_step_definition_code.png b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_step_definition_code.png new file mode 100644 index 00000000000..2b247e8b48f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_step_definition_code.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_stepdetails.png b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_stepdetails.png new file mode 100644 index 00000000000..df48dabcb88 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_stepdetails.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_steps.png b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_steps.png new file mode 100644 index 00000000000..974d4dcb211 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_steps.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_stepstats.png b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_stepstats.png new file mode 100644 index 00000000000..65ae3cd71a6 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/pgagent_stepstats.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_bart_servers_nodes.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_bart_servers_nodes.png new file mode 100644 index 00000000000..7a68cff0948 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_bart_servers_nodes.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_browser_display.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_browser_display.png new file mode 100644 index 00000000000..6a9adf2e5c8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_browser_display.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_browser_keyboard_shortcuts.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_browser_keyboard_shortcuts.png new file mode 100644 index 00000000000..9b120f12d9d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_browser_keyboard_shortcuts.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_browser_nodes.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_browser_nodes.png new file mode 100644 index 00000000000..97fd2daa13b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_browser_nodes.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_browser_properties.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_browser_properties.png new file mode 100644 index 00000000000..94485abe62b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_browser_properties.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_browser_tab_settings.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_browser_tab_settings.png new file mode 100644 index 00000000000..868762f272c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_browser_tab_settings.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_dashboard_display.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_dashboard_display.png new file mode 100644 index 00000000000..c4da5895397 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_dashboard_display.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_dashboard_graphs.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_dashboard_graphs.png new file mode 100644 index 00000000000..0c0a06b5185 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_dashboard_graphs.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_debugger_display.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_debugger_display.png new file mode 100644 index 00000000000..cdb15b46147 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_debugger_display.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_debugger_keyboard_shortcuts.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_debugger_keyboard_shortcuts.png new file mode 100644 index 00000000000..50fd33058ab Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_debugger_keyboard_shortcuts.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_misc_themes.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_misc_themes.png new file mode 100644 index 00000000000..901bb81cc1e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_misc_themes.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_misc_user_language.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_misc_user_language.png new file mode 100644 index 00000000000..29ec4f995ba Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_misc_user_language.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_paths_binary.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_paths_binary.png new file mode 100644 index 00000000000..8d58826ffcb Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_paths_binary.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_paths_help.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_paths_help.png new file mode 100644 index 00000000000..4b354e13942 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_paths_help.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_performance_diagnostic_display.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_performance_diagnostic_display.png new file mode 100644 index 00000000000..41053cccb18 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_performance_diagnostic_display.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_scheduled_tasks_options.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_scheduled_tasks_options.png new file mode 100644 index 00000000000..ed8708b2151 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_scheduled_tasks_options.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_schema_diff.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_schema_diff.png new file mode 100644 index 00000000000..cbd618cfc26 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_schema_diff.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_auto_completion.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_auto_completion.png new file mode 100644 index 00000000000..e5a43986a34 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_auto_completion.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_csv_output.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_csv_output.png new file mode 100644 index 00000000000..e6197c1ce9b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_csv_output.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_display.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_display.png new file mode 100644 index 00000000000..97094eba83c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_display.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_editor.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_editor.png new file mode 100644 index 00000000000..1adbbd04cae Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_editor.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_explain.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_explain.png new file mode 100644 index 00000000000..dab807cb467 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_explain.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_formatting.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_formatting.png new file mode 100644 index 00000000000..d328a80f62c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_formatting.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_keyboard_shortcuts.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_keyboard_shortcuts.png new file mode 100644 index 00000000000..e070d0f9502 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_keyboard_shortcuts.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_options.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_options.png new file mode 100644 index 00000000000..89ac8619c2e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_options.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_profiler_display.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_profiler_display.png new file mode 100644 index 00000000000..092d146fb47 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_profiler_display.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_profiler_keyboard_shortcuts.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_profiler_keyboard_shortcuts.png new file mode 100644 index 00000000000..7cd3f22034e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_profiler_keyboard_shortcuts.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_results_grid.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_results_grid.png new file mode 100644 index 00000000000..5bb03e1f8a9 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_sql_results_grid.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/preferences_storage_options.png b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_storage_options.png new file mode 100644 index 00000000000..c1548a1537a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/preferences_storage_options.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/primary_key_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/primary_key_definition.png new file mode 100644 index 00000000000..cbdfbec38b2 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/primary_key_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/primary_key_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/primary_key_general.png new file mode 100644 index 00000000000..a368b2d4aa3 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/primary_key_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/primary_key_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/primary_key_sql.png new file mode 100644 index 00000000000..5c4efa6cfa3 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/primary_key_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/probe_log_analysis.png b/product_docs/docs/pem/7.16/pem_online_help/images/probe_log_analysis.png new file mode 100644 index 00000000000..18d87bc1aab Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/probe_log_analysis.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/procedure_code.png b/product_docs/docs/pem/7.16/pem_online_help/images/procedure_code.png new file mode 100644 index 00000000000..d7a53f9d12b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/procedure_code.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/procedure_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/procedure_definition.png new file mode 100644 index 00000000000..f413f75c1dd Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/procedure_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/procedure_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/procedure_general.png new file mode 100644 index 00000000000..c236003eef1 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/procedure_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/procedure_options.png b/product_docs/docs/pem/7.16/pem_online_help/images/procedure_options.png new file mode 100644 index 00000000000..6a0f2e928af Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/procedure_options.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/procedure_parameters.png b/product_docs/docs/pem/7.16/pem_online_help/images/procedure_parameters.png new file mode 100644 index 00000000000..0b7fdb8f741 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/procedure_parameters.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/procedure_security.png b/product_docs/docs/pem/7.16/pem_online_help/images/procedure_security.png new file mode 100644 index 00000000000..69945a6c4e5 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/procedure_security.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/procedure_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/procedure_sql.png new file mode 100644 index 00000000000..084ee4c11d6 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/procedure_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/process_watcher_storage_manager.png b/product_docs/docs/pem/7.16/pem_online_help/images/process_watcher_storage_manager.png new file mode 100644 index 00000000000..76e3372a99a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/process_watcher_storage_manager.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_autocomplete.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_autocomplete.png new file mode 100644 index 00000000000..f545e445fc9 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_autocomplete.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_execute_section.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_execute_section.png new file mode 100644 index 00000000000..25c8ef98f1d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_execute_section.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_explain_analyze_statistics.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_explain_analyze_statistics.png new file mode 100644 index 00000000000..6590bee64dd Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_explain_analyze_statistics.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_explain_analyze_table.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_explain_analyze_table.png new file mode 100644 index 00000000000..6db73069c60 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_explain_analyze_table.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_output_data.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_output_data.png new file mode 100644 index 00000000000..e4cea8a85bd Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_output_data.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_output_error.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_output_error.png new file mode 100644 index 00000000000..58eaa5f1a25 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_output_error.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_output_explain_details.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_output_explain_details.png new file mode 100644 index 00000000000..d199a00c523 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_output_explain_details.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_output_history.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_output_history.png new file mode 100644 index 00000000000..babcc797d81 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_output_history.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_output_messages.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_output_messages.png new file mode 100644 index 00000000000..096bcddd059 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_output_messages.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_output_notifications.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_output_notifications.png new file mode 100755 index 00000000000..e2c7e7d6db1 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_output_notifications.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_sql_editor.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_sql_editor.png new file mode 100644 index 00000000000..940bb2130bd Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_sql_editor.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_tool.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_tool.png new file mode 100644 index 00000000000..4be16c854e1 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_tool.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_connection_status.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_connection_status.png new file mode 100755 index 00000000000..9fe06e054fa Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_connection_status.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_connection_status_error.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_connection_status_error.png new file mode 100755 index 00000000000..20875ca40de Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_connection_status_error.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_editable_columns.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_editable_columns.png new file mode 100644 index 00000000000..b5fccac38ff Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_editable_columns.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_macros_clear_all.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_macros_clear_all.png new file mode 100644 index 00000000000..91f2305e5c3 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_macros_clear_all.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_macros_clear_confirmation.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_macros_clear_confirmation.png new file mode 100644 index 00000000000..65622130c4d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_macros_clear_confirmation.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_macros_clear_row.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_macros_clear_row.png new file mode 100644 index 00000000000..bdf47f8d062 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_macros_clear_row.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_macros_execution.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_macros_execution.png new file mode 100644 index 00000000000..690e25edbe2 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_macros_execution.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_manage_macros.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_manage_macros.png new file mode 100644 index 00000000000..6ee43425099 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_manage_macros.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_manage_macros_dialog.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_manage_macros_dialog.png new file mode 100644 index 00000000000..9db055921f8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_manage_macros_dialog.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_message.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_message.png new file mode 100644 index 00000000000..e7fd4a725ff Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_tool_message.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_toolbar.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_toolbar.png new file mode 100644 index 00000000000..2be500f5712 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_toolbar.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/query_toolbar_explain.png b/product_docs/docs/pem/7.16/pem_online_help/images/query_toolbar_explain.png new file mode 100644 index 00000000000..dff4a1de8f1 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/query_toolbar_explain.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/recursive_union_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/recursive_union_icon.png new file mode 100644 index 00000000000..71d8dc6d52b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/recursive_union_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/refresh.png b/product_docs/docs/pem/7.16/pem_online_help/images/refresh.png new file mode 100644 index 00000000000..58738a14da4 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/refresh.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/resource_group_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/resource_group_general.png new file mode 100644 index 00000000000..02da6828c67 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/resource_group_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/resource_group_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/resource_group_sql.png new file mode 100644 index 00000000000..4d5f2c0a934 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/resource_group_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/restore_disable.png b/product_docs/docs/pem/7.16/pem_online_help/images/restore_disable.png new file mode 100644 index 00000000000..94fd2de00c3 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/restore_disable.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/restore_do_not_save.png b/product_docs/docs/pem/7.16/pem_online_help/images/restore_do_not_save.png new file mode 100644 index 00000000000..2b3b041489d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/restore_do_not_save.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/restore_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/restore_general.png new file mode 100644 index 00000000000..2cdaf12e8ce Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/restore_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/restore_messages.png b/product_docs/docs/pem/7.16/pem_online_help/images/restore_messages.png new file mode 100644 index 00000000000..e7d158645d7 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/restore_messages.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/restore_miscellaneous.png b/product_docs/docs/pem/7.16/pem_online_help/images/restore_miscellaneous.png new file mode 100644 index 00000000000..449c9aa98d5 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/restore_miscellaneous.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/restore_objects.png b/product_docs/docs/pem/7.16/pem_online_help/images/restore_objects.png new file mode 100644 index 00000000000..8a7301430f5 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/restore_objects.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/restore_process_watcher.png b/product_docs/docs/pem/7.16/pem_online_help/images/restore_process_watcher.png new file mode 100644 index 00000000000..4f730d72063 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/restore_process_watcher.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/restore_queries.png b/product_docs/docs/pem/7.16/pem_online_help/images/restore_queries.png new file mode 100644 index 00000000000..a23349d95d0 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/restore_queries.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/restore_sections.png b/product_docs/docs/pem/7.16/pem_online_help/images/restore_sections.png new file mode 100644 index 00000000000..e4127e1cc67 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/restore_sections.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/result_set_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/result_set_icon.png new file mode 100644 index 00000000000..95da6223a54 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/result_set_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/rls_policy_commands_tab.png b/product_docs/docs/pem/7.16/pem_online_help/images/rls_policy_commands_tab.png new file mode 100644 index 00000000000..53d544f3601 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/rls_policy_commands_tab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/rls_policy_general_tab.png b/product_docs/docs/pem/7.16/pem_online_help/images/rls_policy_general_tab.png new file mode 100644 index 00000000000..6bee9038093 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/rls_policy_general_tab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/rls_policy_sql_tab.png b/product_docs/docs/pem/7.16/pem_online_help/images/rls_policy_sql_tab.png new file mode 100644 index 00000000000..b3cb8491f57 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/rls_policy_sql_tab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/role_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/role_definition.png new file mode 100644 index 00000000000..d789971843d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/role_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/role_dialog_membership.png b/product_docs/docs/pem/7.16/pem_online_help/images/role_dialog_membership.png new file mode 100644 index 00000000000..02c006e840a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/role_dialog_membership.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/role_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/role_general.png new file mode 100755 index 00000000000..2b27ede9fcc Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/role_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/role_membership.png b/product_docs/docs/pem/7.16/pem_online_help/images/role_membership.png new file mode 100755 index 00000000000..c5adf259684 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/role_membership.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/role_parameters.png b/product_docs/docs/pem/7.16/pem_online_help/images/role_parameters.png new file mode 100644 index 00000000000..1f045137304 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/role_parameters.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/role_privileges.png b/product_docs/docs/pem/7.16/pem_online_help/images/role_privileges.png new file mode 100644 index 00000000000..2ec281e888e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/role_privileges.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/role_security.png b/product_docs/docs/pem/7.16/pem_online_help/images/role_security.png new file mode 100644 index 00000000000..c9e566b051a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/role_security.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/role_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/role_sql.png new file mode 100755 index 00000000000..cdd70ef368f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/role_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/rule_commands.png b/product_docs/docs/pem/7.16/pem_online_help/images/rule_commands.png new file mode 100644 index 00000000000..6c9c49f2aeb Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/rule_commands.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/rule_condition.png b/product_docs/docs/pem/7.16/pem_online_help/images/rule_condition.png new file mode 100644 index 00000000000..b7dbcc070d3 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/rule_condition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/rule_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/rule_definition.png new file mode 100644 index 00000000000..2c7e9734600 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/rule_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/rule_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/rule_general.png new file mode 100644 index 00000000000..9e2f6d407f3 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/rule_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/rule_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/rule_sql.png new file mode 100644 index 00000000000..1d8375e172d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/rule_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/save_capacity_manager_template.png b/product_docs/docs/pem/7.16/pem_online_help/images/save_capacity_manager_template.png new file mode 100755 index 00000000000..9b0b6a451d2 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/save_capacity_manager_template.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/schema_default_privileges.png b/product_docs/docs/pem/7.16/pem_online_help/images/schema_default_privileges.png new file mode 100644 index 00000000000..029d3be06ae Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/schema_default_privileges.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/schema_diff_DDL_comparison.png b/product_docs/docs/pem/7.16/pem_online_help/images/schema_diff_DDL_comparison.png new file mode 100755 index 00000000000..c737e46994d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/schema_diff_DDL_comparison.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/schema_diff_compare_button.png b/product_docs/docs/pem/7.16/pem_online_help/images/schema_diff_compare_button.png new file mode 100755 index 00000000000..b7000437b5d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/schema_diff_compare_button.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/schema_diff_comparison_results.png b/product_docs/docs/pem/7.16/pem_online_help/images/schema_diff_comparison_results.png new file mode 100755 index 00000000000..038a0e818e4 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/schema_diff_comparison_results.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/schema_diff_dialog.png b/product_docs/docs/pem/7.16/pem_online_help/images/schema_diff_dialog.png new file mode 100755 index 00000000000..45d16f28fcb Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/schema_diff_dialog.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/schema_diff_filter_option.png b/product_docs/docs/pem/7.16/pem_online_help/images/schema_diff_filter_option.png new file mode 100755 index 00000000000..f40a6e2697f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/schema_diff_filter_option.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/schema_diff_generate_script.png b/product_docs/docs/pem/7.16/pem_online_help/images/schema_diff_generate_script.png new file mode 100755 index 00000000000..8118e0e6178 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/schema_diff_generate_script.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/schema_diff_generate_script_query_editor.png b/product_docs/docs/pem/7.16/pem_online_help/images/schema_diff_generate_script_query_editor.png new file mode 100755 index 00000000000..315f6f30b01 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/schema_diff_generate_script_query_editor.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/schema_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/schema_general.png new file mode 100644 index 00000000000..f962afb99f6 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/schema_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/schema_security.png b/product_docs/docs/pem/7.16/pem_online_help/images/schema_security.png new file mode 100644 index 00000000000..b7302c38a7d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/schema_security.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/schema_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/schema_sql.png new file mode 100644 index 00000000000..86ed95e09d8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/schema_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/search_objects.png b/product_docs/docs/pem/7.16/pem_online_help/images/search_objects.png new file mode 100644 index 00000000000..abc47c11ce8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/search_objects.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/seek_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/seek_icon.png new file mode 100644 index 00000000000..6cfc6638a4f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/seek_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/seq_scan_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/seq_scan_icon.png new file mode 100644 index 00000000000..4a688482c70 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/seq_scan_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/sequence_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/sequence_definition.png new file mode 100644 index 00000000000..a93c25af3cf Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/sequence_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/sequence_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/sequence_general.png new file mode 100644 index 00000000000..11ced2f8105 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/sequence_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/sequence_security.png b/product_docs/docs/pem/7.16/pem_online_help/images/sequence_security.png new file mode 100644 index 00000000000..399df2453ea Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/sequence_security.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/sequence_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/sequence_sql.png new file mode 100644 index 00000000000..1c05c837d35 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/sequence_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/server_analysis.png b/product_docs/docs/pem/7.16/pem_online_help/images/server_analysis.png new file mode 100644 index 00000000000..b707c484c64 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/server_analysis.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/server_log_analysis_dashboard.png b/product_docs/docs/pem/7.16/pem_online_help/images/server_log_analysis_dashboard.png new file mode 100755 index 00000000000..19fc6cc6117 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/server_log_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/server_log_analysis_filter.png b/product_docs/docs/pem/7.16/pem_online_help/images/server_log_analysis_filter.png new file mode 100755 index 00000000000..93edcd96f07 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/server_log_analysis_filter.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/session_activity_analysis_dashboard.png b/product_docs/docs/pem/7.16/pem_online_help/images/session_activity_analysis_dashboard.png new file mode 100644 index 00000000000..36dd85bbdec Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/session_activity_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/session_waits_dashboard.png b/product_docs/docs/pem/7.16/pem_online_help/images/session_waits_dashboard.png new file mode 100644 index 00000000000..d3756f195da Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/session_waits_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/set_operator_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/set_operator_icon.png new file mode 100644 index 00000000000..d7837c85f6a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/set_operator_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/sm_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/sm_icon.png new file mode 100644 index 00000000000..13522104e7a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/sm_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/sort_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/sort_icon.png new file mode 100644 index 00000000000..9d9eded1935 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/sort_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/sp_create_new_trace.png b/product_docs/docs/pem/7.16/pem_online_help/images/sp_create_new_trace.png new file mode 100755 index 00000000000..75492502f5b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/sp_create_new_trace.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/sp_create_new_trace_executed.png b/product_docs/docs/pem/7.16/pem_online_help/images/sp_create_new_trace_executed.png new file mode 100755 index 00000000000..8e44eb8799b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/sp_create_new_trace_executed.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/sp_create_new_trace_periodic_job.png b/product_docs/docs/pem/7.16/pem_online_help/images/sp_create_new_trace_periodic_job.png new file mode 100755 index 00000000000..73a87433e70 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/sp_create_new_trace_periodic_job.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/sp_create_new_trace_schedule.png b/product_docs/docs/pem/7.16/pem_online_help/images/sp_create_new_trace_schedule.png new file mode 100755 index 00000000000..da15fa22602 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/sp_create_new_trace_schedule.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/sp_delete_trace.png b/product_docs/docs/pem/7.16/pem_online_help/images/sp_delete_trace.png new file mode 100755 index 00000000000..c4953aa77cd Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/sp_delete_trace.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/sp_open_existing_trace.png b/product_docs/docs/pem/7.16/pem_online_help/images/sp_open_existing_trace.png new file mode 100755 index 00000000000..5c7a9a7fdf1 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/sp_open_existing_trace.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/sp_scheduled_traces.png b/product_docs/docs/pem/7.16/pem_online_help/images/sp_scheduled_traces.png new file mode 100755 index 00000000000..362f291473f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/sp_scheduled_traces.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/sp_sql_profiler_tab.png b/product_docs/docs/pem/7.16/pem_online_help/images/sp_sql_profiler_tab.png new file mode 100644 index 00000000000..08fb4783960 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/sp_sql_profiler_tab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/sp_toolbar.png b/product_docs/docs/pem/7.16/pem_online_help/images/sp_toolbar.png new file mode 100644 index 00000000000..b384e779164 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/sp_toolbar.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/sp_trace_details.png b/product_docs/docs/pem/7.16/pem_online_help/images/sp_trace_details.png new file mode 100644 index 00000000000..203a734ea55 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/sp_trace_details.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/sp_trace_filter.png b/product_docs/docs/pem/7.16/pem_online_help/images/sp_trace_filter.png new file mode 100644 index 00000000000..9b9145e2147 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/sp_trace_filter.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/sqlprofiler_upgrade.png b/product_docs/docs/pem/7.16/pem_online_help/images/sqlprofiler_upgrade.png new file mode 100644 index 00000000000..74eb0be6644 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/sqlprofiler_upgrade.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/storage_analysis_dashboard.png b/product_docs/docs/pem/7.16/pem_online_help/images/storage_analysis_dashboard.png new file mode 100644 index 00000000000..3ef427f4f36 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/storage_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/storage_manager.png b/product_docs/docs/pem/7.16/pem_online_help/images/storage_manager.png new file mode 100644 index 00000000000..53e5c594a58 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/storage_manager.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/str_replication_dashboard_primary.png b/product_docs/docs/pem/7.16/pem_online_help/images/str_replication_dashboard_primary.png new file mode 100644 index 00000000000..55a234d3fe2 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/str_replication_dashboard_primary.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/str_replication_dashboard_replica.png b/product_docs/docs/pem/7.16/pem_online_help/images/str_replication_dashboard_replica.png new file mode 100644 index 00000000000..aa7f3073d01 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/str_replication_dashboard_replica.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/subplan_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/subplan_icon.png new file mode 100644 index 00000000000..e12d7ea3bf0 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/subplan_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/synonym_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/synonym_general.png new file mode 100644 index 00000000000..c35cefd5e1d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/synonym_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/synonym_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/synonym_sql.png new file mode 100644 index 00000000000..d496c3777b0 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/synonym_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/system_configuration_report_pem_agents.png b/product_docs/docs/pem/7.16/pem_online_help/images/system_configuration_report_pem_agents.png new file mode 100755 index 00000000000..380370dd8f3 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/system_configuration_report_pem_agents.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/system_configuration_report_pem_server_directory.png b/product_docs/docs/pem/7.16/pem_online_help/images/system_configuration_report_pem_server_directory.png new file mode 100755 index 00000000000..29cfc8b8483 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/system_configuration_report_pem_server_directory.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/system_configuration_report_pem_summary_and_summary.png b/product_docs/docs/pem/7.16/pem_online_help/images/system_configuration_report_pem_summary_and_summary.png new file mode 100755 index 00000000000..44a0f0b8714 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/system_configuration_report_pem_summary_and_summary.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/system_waits_dashboard.png b/product_docs/docs/pem/7.16/pem_online_help/images/system_waits_dashboard.png new file mode 100644 index 00000000000..33662a25a95 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/system_waits_dashboard.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/table_advanced.png b/product_docs/docs/pem/7.16/pem_online_help/images/table_advanced.png new file mode 100644 index 00000000000..c7b89bbb40d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/table_advanced.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/table_check_constraint_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/table_check_constraint_definition.png new file mode 100644 index 00000000000..deee34454c4 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/table_check_constraint_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/table_check_constraint_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/table_check_constraint_general.png new file mode 100644 index 00000000000..caf9bb274c8 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/table_check_constraint_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/table_columns.png b/product_docs/docs/pem/7.16/pem_online_help/images/table_columns.png new file mode 100644 index 00000000000..c4da1aa4173 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/table_columns.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/table_exclusion_constraint_columns.png b/product_docs/docs/pem/7.16/pem_online_help/images/table_exclusion_constraint_columns.png new file mode 100644 index 00000000000..c2609174715 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/table_exclusion_constraint_columns.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/table_exclusion_constraint_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/table_exclusion_constraint_definition.png new file mode 100644 index 00000000000..89f48e0f98b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/table_exclusion_constraint_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/table_exclusion_constraint_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/table_exclusion_constraint_general.png new file mode 100644 index 00000000000..c30d8e15001 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/table_exclusion_constraint_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/table_foreign_key_action.png b/product_docs/docs/pem/7.16/pem_online_help/images/table_foreign_key_action.png new file mode 100644 index 00000000000..1c35c14b2cb Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/table_foreign_key_action.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/table_foreign_key_columns.png b/product_docs/docs/pem/7.16/pem_online_help/images/table_foreign_key_columns.png new file mode 100644 index 00000000000..76d735c7ec4 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/table_foreign_key_columns.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/table_foreign_key_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/table_foreign_key_definition.png new file mode 100644 index 00000000000..c0ec4c99262 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/table_foreign_key_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/table_foreign_key_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/table_foreign_key_general.png new file mode 100644 index 00000000000..971013fbf18 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/table_foreign_key_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/table_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/table_general.png new file mode 100755 index 00000000000..2c8a03a5042 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/table_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/table_parameter.png b/product_docs/docs/pem/7.16/pem_online_help/images/table_parameter.png new file mode 100644 index 00000000000..dd4f8ee8b3f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/table_parameter.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/table_partition.png b/product_docs/docs/pem/7.16/pem_online_help/images/table_partition.png new file mode 100644 index 00000000000..69f93d4e5ce Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/table_partition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/table_partition_tree.png b/product_docs/docs/pem/7.16/pem_online_help/images/table_partition_tree.png new file mode 100644 index 00000000000..b914a61151e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/table_partition_tree.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/table_primary_constraints_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/table_primary_constraints_general.png new file mode 100644 index 00000000000..d3de2eb6c24 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/table_primary_constraints_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/table_primary_key_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/table_primary_key_definition.png new file mode 100644 index 00000000000..b0ab1de7d73 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/table_primary_key_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/table_security.png b/product_docs/docs/pem/7.16/pem_online_help/images/table_security.png new file mode 100644 index 00000000000..16057c07788 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/table_security.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/table_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/table_sql.png new file mode 100644 index 00000000000..a22411bd120 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/table_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/table_unique_constraint_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/table_unique_constraint_definition.png new file mode 100644 index 00000000000..b426efa6b8b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/table_unique_constraint_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/table_unique_constraint_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/table_unique_constraint_general.png new file mode 100644 index 00000000000..41254b81ce7 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/table_unique_constraint_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/tablespace_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/tablespace_definition.png new file mode 100644 index 00000000000..7bfb8ae150f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/tablespace_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/tablespace_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/tablespace_general.png new file mode 100644 index 00000000000..4ca7a284113 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/tablespace_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/tablespace_parameters.png b/product_docs/docs/pem/7.16/pem_online_help/images/tablespace_parameters.png new file mode 100644 index 00000000000..48fec3c4b99 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/tablespace_parameters.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/tablespace_security.png b/product_docs/docs/pem/7.16/pem_online_help/images/tablespace_security.png new file mode 100644 index 00000000000..f7935954954 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/tablespace_security.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/tablespace_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/tablespace_sql.png new file mode 100644 index 00000000000..cc61d185595 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/tablespace_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/tableview.png b/product_docs/docs/pem/7.16/pem_online_help/images/tableview.png new file mode 100644 index 00000000000..0191c4fe619 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/tableview.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/title_edb_postgress_image.png b/product_docs/docs/pem/7.16/pem_online_help/images/title_edb_postgress_image.png new file mode 100755 index 00000000000..076b80db3d5 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/title_edb_postgress_image.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/trigger_code.png b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_code.png new file mode 100644 index 00000000000..bb820a689c5 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_code.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/trigger_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_definition.png new file mode 100644 index 00000000000..45e1271ea28 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/trigger_definition_enabled.png b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_definition_enabled.png new file mode 100644 index 00000000000..50c8f4b7b2c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_definition_enabled.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/trigger_events.png b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_events.png new file mode 100644 index 00000000000..0426b901740 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_events.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/trigger_function_code.png b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_function_code.png new file mode 100644 index 00000000000..3543b8476cc Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_function_code.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/trigger_function_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_function_definition.png new file mode 100644 index 00000000000..66ef4e4bc1d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_function_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/trigger_function_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_function_general.png new file mode 100644 index 00000000000..955d80325ae Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_function_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/trigger_function_options.png b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_function_options.png new file mode 100644 index 00000000000..d388271d3b2 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_function_options.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/trigger_function_parameters.png b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_function_parameters.png new file mode 100644 index 00000000000..8782be2326f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_function_parameters.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/trigger_function_security.png b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_function_security.png new file mode 100644 index 00000000000..8361a65145d Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_function_security.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/trigger_function_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_function_sql.png new file mode 100644 index 00000000000..a9a2504f8fc Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_function_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/trigger_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_general.png new file mode 100644 index 00000000000..848ebd1451e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/trigger_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_sql.png new file mode 100644 index 00000000000..1bfde85cefc Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/trigger_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_apply_changes.png b/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_apply_changes.png new file mode 100755 index 00000000000..841d1893951 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_apply_changes.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_changes_sum.png b/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_changes_sum.png new file mode 100755 index 00000000000..f7107888cea Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_changes_sum.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_configuration.png b/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_configuration.png new file mode 100755 index 00000000000..27a768ae2c7 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_configuration.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_confirm_chg.png b/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_confirm_chg.png new file mode 100755 index 00000000000..2420acd65ee Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_confirm_chg.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_generate_report.png b/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_generate_report.png new file mode 100755 index 00000000000..7523656e401 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_generate_report.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_report.png b/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_report.png new file mode 100755 index 00000000000..0a8d16faeba Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_report.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_server_sel.png b/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_server_sel.png new file mode 100755 index 00000000000..973905645f0 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_server_sel.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_welcome.png b/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_welcome.png new file mode 100755 index 00000000000..5ba0c518e61 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/tuning_wiz_welcome.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/tuple_id_scan_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/tuple_id_scan_icon.png new file mode 100644 index 00000000000..f52a4c34c2f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/tuple_id_scan_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/type_composite.png b/product_docs/docs/pem/7.16/pem_online_help/images/type_composite.png new file mode 100644 index 00000000000..3969b62fa39 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/type_composite.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/type_enumeration.png b/product_docs/docs/pem/7.16/pem_online_help/images/type_enumeration.png new file mode 100644 index 00000000000..4e9c4c35507 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/type_enumeration.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/type_external.png b/product_docs/docs/pem/7.16/pem_online_help/images/type_external.png new file mode 100644 index 00000000000..ce082934aaf Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/type_external.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/type_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/type_general.png new file mode 100644 index 00000000000..9a8c7d2f52e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/type_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/type_range.png b/product_docs/docs/pem/7.16/pem_online_help/images/type_range.png new file mode 100644 index 00000000000..0fb03f64487 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/type_range.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/type_security.png b/product_docs/docs/pem/7.16/pem_online_help/images/type_security.png new file mode 100644 index 00000000000..c2085ee41e9 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/type_security.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/type_shell.png b/product_docs/docs/pem/7.16/pem_online_help/images/type_shell.png new file mode 100644 index 00000000000..6f709148ca2 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/type_shell.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/type_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/type_sql.png new file mode 100644 index 00000000000..129e771c70c Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/type_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/unique_constraint_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/unique_constraint_definition.png new file mode 100644 index 00000000000..9c4858ed5b1 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/unique_constraint_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/unique_constraint_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/unique_constraint_general.png new file mode 100644 index 00000000000..d0418c55605 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/unique_constraint_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/unique_constraint_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/unique_constraint_sql.png new file mode 100644 index 00000000000..fba1d841f45 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/unique_constraint_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/unique_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/unique_icon.png new file mode 100644 index 00000000000..519dcf277a0 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/unique_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/uparrow.png b/product_docs/docs/pem/7.16/pem_online_help/images/uparrow.png new file mode 100644 index 00000000000..3c4303d859e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/uparrow.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/upgrade_backendDB_permission_Windows_security.png b/product_docs/docs/pem/7.16/pem_online_help/images/upgrade_backendDB_permission_Windows_security.png new file mode 100755 index 00000000000..34b1b1f7ae7 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/upgrade_backendDB_permission_Windows_security.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/upgrade_backingDB_permission_Windows_security.png b/product_docs/docs/pem/7.16/pem_online_help/images/upgrade_backingDB_permission_Windows_security.png new file mode 100755 index 00000000000..34b1b1f7ae7 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/upgrade_backingDB_permission_Windows_security.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/upload.png b/product_docs/docs/pem/7.16/pem_online_help/images/upload.png new file mode 100644 index 00000000000..ec9d0eb80fe Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/upload.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/user_mapping_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/user_mapping_general.png new file mode 100644 index 00000000000..c0eb5378718 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/user_mapping_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/user_mapping_options.png b/product_docs/docs/pem/7.16/pem_online_help/images/user_mapping_options.png new file mode 100644 index 00000000000..8e8a4bc5b8f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/user_mapping_options.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/user_mapping_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/user_mapping_sql.png new file mode 100644 index 00000000000..a364fa2a24f Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/user_mapping_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/view_code.png b/product_docs/docs/pem/7.16/pem_online_help/images/view_code.png new file mode 100644 index 00000000000..4465b7d9a48 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/view_code.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/view_definition.png b/product_docs/docs/pem/7.16/pem_online_help/images/view_definition.png new file mode 100644 index 00000000000..bd35587a4bb Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/view_definition.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/view_general.png b/product_docs/docs/pem/7.16/pem_online_help/images/view_general.png new file mode 100644 index 00000000000..e77e699e855 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/view_general.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/view_security.png b/product_docs/docs/pem/7.16/pem_online_help/images/view_security.png new file mode 100644 index 00000000000..f8242af1784 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/view_security.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/view_sql.png b/product_docs/docs/pem/7.16/pem_online_help/images/view_sql.png new file mode 100644 index 00000000000..fe4d9b1380e Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/view_sql.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/viewdata_filter_dialog.png b/product_docs/docs/pem/7.16/pem_online_help/images/viewdata_filter_dialog.png new file mode 100644 index 00000000000..9e322f1b4b9 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/viewdata_filter_dialog.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/webhook_add.png b/product_docs/docs/pem/7.16/pem_online_help/images/webhook_add.png new file mode 100644 index 00000000000..ccfa81aaf50 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/webhook_add.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/webhook_add_headers.png b/product_docs/docs/pem/7.16/pem_online_help/images/webhook_add_headers.png new file mode 100644 index 00000000000..1667179041a Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/webhook_add_headers.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/webhook_add_notification.png b/product_docs/docs/pem/7.16/pem_online_help/images/webhook_add_notification.png new file mode 100644 index 00000000000..8bcca976628 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/webhook_add_notification.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/webhook_add_payload.png b/product_docs/docs/pem/7.16/pem_online_help/images/webhook_add_payload.png new file mode 100644 index 00000000000..060e2e7a14b Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/webhook_add_payload.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/webhook_delete.png b/product_docs/docs/pem/7.16/pem_online_help/images/webhook_delete.png new file mode 100644 index 00000000000..a9c51c0f2e7 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/webhook_delete.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/webhook_ssl_config.png b/product_docs/docs/pem/7.16/pem_online_help/images/webhook_ssl_config.png new file mode 100644 index 00000000000..802aadceebf Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/webhook_ssl_config.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/webhook_ssl_config_windows.png b/product_docs/docs/pem/7.16/pem_online_help/images/webhook_ssl_config_windows.png new file mode 100644 index 00000000000..f38b2754e27 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/webhook_ssl_config_windows.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/webhooks_tab.png b/product_docs/docs/pem/7.16/pem_online_help/images/webhooks_tab.png new file mode 100644 index 00000000000..6e3c2e5c5bd Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/webhooks_tab.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/window_aggregate_icon.png b/product_docs/docs/pem/7.16/pem_online_help/images/window_aggregate_icon.png new file mode 100644 index 00000000000..3329322e348 Binary files /dev/null and b/product_docs/docs/pem/7.16/pem_online_help/images/window_aggregate_icon.png differ diff --git a/product_docs/docs/pem/7.16/pem_online_help/index.mdx b/product_docs/docs/pem/7.16/pem_online_help/index.mdx new file mode 100644 index 00000000000..beed5cde740 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_online_help/index.mdx @@ -0,0 +1,17 @@ +--- +title: "Postgres Enterprise Manager" +--- + +Welcome to Postgres Enterprise Manager (PEM). Postgres Enterprise Manager (PEM) consists of components that provide the management and analytical functionality for your EDB Postgres Advanced Server or PostgreSQL database. PEM is based on the Open Source pgAdmin IV project. + +pgAdmin is the leading Open Source management tool for Postgres, the world's most advanced Open Source database. pgAdmin IV is a comprehensive [database](http://www.postgresql.org) design and management system. pgAdmin 4 is designed to meet the needs of both novice and experienced Postgres users alike, providing a powerful graphical interface that simplifies the creation, maintenance and use of database objects. + +Contents: + +
+ +toc_pem_getting_started toc_pem_agent toc_pem_client toc_pem_features toc_pem_management_basics toc_pem_bart_management toc_pem_sql_profiler toc_pem_developer_tools toc_pem_configure_pgbouncer pgagent appendices release_notes + +
+ +`Help` buttons in the lower-left corner of each dialog will open the online help for the dialog. You can also access help by navigating through the `Help` menu, and selecting the name of the resource that you wish to open. diff --git a/product_docs/docs/pem/7.16/pem_pgbouncer/01_the_pem_server_pem_agent_connection_management_mechanism.mdx b/product_docs/docs/pem/7.16/pem_pgbouncer/01_the_pem_server_pem_agent_connection_management_mechanism.mdx new file mode 100644 index 00000000000..cb9281d7931 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_pgbouncer/01_the_pem_server_pem_agent_connection_management_mechanism.mdx @@ -0,0 +1,18 @@ +--- +title: "The PEM Server - PEM Agent Connection Management Mechanism" +--- + +Each PEM Agent connects to the PEM database server using the SSL certificates for each individual user. For example, an Agent with `ID#1` connects to the PEM database server using the `agent1` user. + +![Connecting to the PEM database without pgBouncer](../images/pem_database_without_pgbouncer.png) + +Prior to PEM version 7.5, the following limitations disallowed the use of the connection pooler between the PEM Server and PEM Agent: + +- The PEM Agent uses an SSL Certificate to connect the PEM database server. +- It uses an individual user identifier when connecting to the PEM database server. + +EDB has modified the PEM Agent to allow the agent to use a common database user (instead of the dedicated agent users) to connect the PEM database server. + +![Connecting to pgBouncer.](../images/pem_database_with_pgbouncer.png) + +We recommend using PgBouncer versions equal to or later than version 1.9.0 as the connection pooler. Versions 1.9.0 or later support `cert` authentication; PEM Agents can connect to pgBouncer using SSL certificates. diff --git a/product_docs/docs/pem/7.16/pem_pgbouncer/02_preparing_the_pem_database_server.mdx b/product_docs/docs/pem/7.16/pem_pgbouncer/02_preparing_the_pem_database_server.mdx new file mode 100644 index 00000000000..fe90bbb67b7 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_pgbouncer/02_preparing_the_pem_database_server.mdx @@ -0,0 +1,66 @@ +--- +title: "Preparing the PEM Database Server" +--- + +You must configure the PEM database server to work with PgBouncer; the following example demonstrates the steps required to configure the PEM database server. + +1. Create a dedicated user named `pgbouncer` on the PEM database server. For example: + + ```text + pem=# CREATE USER pgbouncer PASSWORD 'ANY_PASSWORD' LOGIN; + CREATE ROLE + ``` + +2. Create a user named `pem_admin1` (a non-super user) with `pem_admin` and `pem_agent_pool role` membership on the PEM database server. For example: + + ```text + pem=# CREATE USER pem_admin1 PASSWORD 'ANY_PASSWORD' LOGIN + CREATEROLE; + CREATE ROLE + pem=# GRANT pem_admin, pem_agent_pool TO pem_admin1; + GRANT ROLE + ``` + +3. Grant `CONNECT` privileges to the `pgbouncer` user on the `pem` database. For example: + + ```text + pem=# GRANT CONNECT ON DATABASE pem TO pgbouncer ;GRANT USAGE ON + SCHEMA pem TO pgbouncer; + GRANT + ``` + +4. Grant `USAGE` privileges to the `pgbouncer` user for the `pem` schema on the pem database. For example: + + ```text + pem=# GRANT USAGE ON SCHEMA pem TO pgbouncer; + GRANT + ``` + +5. Grant `EXECUTE` privileges to the `pgbouncer` user on the `pem.get_agent_pool_auth(text)` function in the `pem` database. For example: + + ```text + pem=# GRANT EXECUTE ON FUNCTION pem.get_agent_pool_auth(text) TO + pgbouncer; + GRANT + ``` + +6. Use the `pem.create_proxy_agent_user(varchar)` function to create a user named `pem_agent_user1` on the PEM database server. For example: + + ```text + pem=# SELECT pem.create_proxy_agent_user('pem_agent_user1'); + create_proxy_agent_user + ------------------------- + (1 row) + ``` + + The function will create a user with the same name with a random password, and grant `pem_agent` and `pem_agent_pool` roles to the user. This allows pgBouncer to use a proxy user on behalf of the agent. + +7. Add the following entries to the start of the `pg_hba.conf` file of the PEM database server; this will allow pgBouncer user to connect to the pem database using the md5 authentication method. For example: + + ```text + # Allow the PEM agent proxy user (used by + # pgbouncer) to connect the to PEM server using + # md5 + + local pem pgbouncer,pem_admin1 md5 + ``` diff --git a/product_docs/docs/pem/7.16/pem_pgbouncer/03_configuring_pgBouncer.mdx b/product_docs/docs/pem/7.16/pem_pgbouncer/03_configuring_pgBouncer.mdx new file mode 100644 index 00000000000..d1ef42c44ec --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_pgbouncer/03_configuring_pgBouncer.mdx @@ -0,0 +1,120 @@ +--- +title: "Configuring PgBouncer" +--- + +You must configure PgBouncer to work with the PEM database server. In our example, we will run PgBouncer as the `enterprisedb` system user. The following steps outline the process of configuring pgBouncer (version >= 1.9). + +1. Open a terminal window and navigate into the pgBouncer directory. + +2. Change the owner of the `etc` directory for pgBouncer (where `pgbouncer.ini` resides) to `enterprisedb`, and change the directory permissions to `0700`. For example: + + ```text + $ chown enterprisedb:enterprisedb /etc/edb/pgbouncer1.9 + $ chmod 0700 /etc/edb/pgbouncer1.9 + ``` + +3. Change the contents of the `pgbouncer.ini` or `edb-pgbouncer.ini` file as follows: + + ```text + [databases] + ;; Change the pool_size according to maximum connections allowed + ;; to the PEM database server as required. + ;; 'auth_user' will be used for authenticate the db user (proxy + ;; agent user in our case) + + pem = port=5444 host=/tmp dbname=pem auth_user=pgbouncer + pool_size=80 pool_mode=transaction + * = port=5444 host=/tmp dbname=pem auth_user=pgbouncer + pool_size=10 + + [pgbouncer] + logfile = /var/log/edb/pgbouncer1.9/edb-pgbouncer-1.9.log + pidfile = /var/run/edb/pgbouncer1.9/edb-pgbouncer-1.9.pid + listen_addr = * + ;; Agent needs to use this port to connect the pem database now + listen_port = 6432 + ;; Require to support for the SSL Certificate authentications + ;; for PEM Agents + client_tls_sslmode = require + ;; These are the root.crt, server.key, server.crt files present + ;; in the present under the data directory of the PEM database + ;; server, used by the PEM Agents for connections. + client_tls_ca_file = /var/lib/edb/as11/data/root.crt + client_tls_key_file = /var/lib/edb/as11/data/server.key + client_tls_cert_file = /var/lib/edb/as11/data/server.crt + ;; Use hba file for client connections + auth_type = hba + ;; Authentication file, Reference: + ;; https://pgbouncer.github.io/config.html#auth_file + auth_file = /etc/edb/pgbouncer1.9/userlist.txt + ;; HBA file + auth_hba_file = /etc/edb/pgbouncer1.9/hba_file + ;; Use pem.get_agent_pool_auth(TEXT) function to authenticate + ;; the db user (used as a proxy agent user). + auth_query = SELECT * FROM pem.get_agent_pool_auth($1) + ;; DB User for administration of the pgbouncer + admin_users = pem_admin1 + ;; DB User for collecting the statistics of pgbouncer + stats_users = pem_admin1 + server_reset_query = DISCARD ALL + ;; Change based on the number of agents installed/required + max_client_conn = 500 + ;; Close server connection if its not been used in this time. + ;; Allows to clean unnecessary connections from pool after peak. + server_idle_timeout = 60 + ``` + +4. Use the following command to create and update the `/etc/edb/pgbouncer1.9/userlist.txt` authentication file for PgBouncer. + + ```text + pem=# COPY ( + SELECT 'pgbouncer'::TEXT, 'pgbouncer_password' + UNION ALL + SELECT 'pem_admin1'::TEXT, 'pem_admin1_password' + TO '/etc/edb/pgbouncer1.9/userlist.txt' + WITH (FORMAT CSV, DELIMITER ' ', FORCE_QUOTE *); + + COPY 2 + ``` + + !!! Note + A super user cannot invoke the PEM authentication query function `pem.get_proxy_auth(text)`. If the `pem_admin` user is a super user, you must add the password to the authentication file (`enterprisedb in the above example`). + +5. Create an HBA file `(/etc/edb/pgbouncer1.9/hba_file)` for PgBouncer that contains the following content: + + ```text + # Use authentication method md5 for the local connections to + # connect pem database & pgbouncer (virtual) database. + local pgbouncer all md5 + # Use authentication method md5 for the remote connections to + # connect to pgbouncer (virtual database) using enterprisedb + # user. + + host pgbouncer,pem pem_admin1 0.0.0.0/0 md5 + ``` + + ```text + # Use authentication method cert for the TCP/IP connections to + # connect the pem database using pem_agent_user1 + + hostssl pem pem_agent_user1 0.0.0.0/0 cert + ``` + +6. Change the owner of the HBA file `(/etc/edb/pgbouncer1.9/hba_file)` to `enterprisedb`, and change the directory permissions to `0600`. For example: + + ```text + $ chown enterprisedb:enterprisedb /etc/edb/pgbouncer1.9/hba_file + $ chmod 0600 /etc/edb/pgbouncer1.9/hba_file + ``` + +7. Enable the PgBouncer service, and start the service. For example: + + ```text + $ systemctl enable edb-pgbouncer-1.9 + + Created symlink from + /etc/systemd/system/multi-user.target.wants/edb-pgbouncer-1.9.service + to /usr/lib/systemd/system/edb-pgbouncer-1.9.service. + + $ systemctl start edb-pgbouncer-1.9 + ``` diff --git a/product_docs/docs/pem/7.16/pem_pgbouncer/04_configuring_the_pem_agent.mdx b/product_docs/docs/pem/7.16/pem_pgbouncer/04_configuring_the_pem_agent.mdx new file mode 100644 index 00000000000..e7d2ee05a2b --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_pgbouncer/04_configuring_the_pem_agent.mdx @@ -0,0 +1,98 @@ +--- +title: "Configuring the PEM Agent" +--- + +You can use an RPM package to install a PEM Agent; for detailed installation information, please see the [PEM Linux Installation Guide](https://www.enterprisedb.com/docs/pem/latest/pem_inst_guide_linux/). + +Please note that PEM Agent which is responsible for sending SNMP notifications should not be configured with pgBouncer. For example, if the default PEM Agent installed along with PEM Server is used for SNMP notifications, then it should not be configured with pgBouncer. + +## Configuring a New PEM Agent (Installed via RPM) + +After using an RPM package to install the PEM agent, you will need to configure it to work it against a particular PEM database server. Use the following command: + +```text +$ PGSSLMODE=require PEM_SERVER_PASSWORD=pem_admin1_password +/usr/edb/pem/agent/bin/pemworker --register-agent --pem-server +pem_agent_user1 --display-name "Agent Name" + +Postgres Enterprise Manager Agent registered successfully! +``` + +In above command, the `--pem-agent-user` argument instructs the agent to create an SSL certificate and key pair for the `pem_agent_user1` database user in `/root/.pem` directory. + +For example: + +```text +/root/.pem/pem_agent_user1.crt + +/root/.pem/pem_agent_user1.key +``` + +The keys will be used by the PEM agent to connect to the PEM database server as `pem_agent_user1`. It will also create an agent configuration file named `/usr/edb/pem/agent/etc/agent.cfg.` + +You will find a line mentioning the agent-user to be used in the `agent.cfg` configuration file. + +For example: + +```text +$ cat /usr/edb/pem/agent/etc/agent.cfg +[PEM/agent] +pem_host=172.16.254.22 +pem_port=6432 +agent_id=12 +agent_user=pem_agent_user1 +agent_ssl_key=/root/.pem/pem_agent_user1.key +agent_ssl_crt=/root/.pem/pem_agent_user1.crt +log_level=warning +log_location=/var/log/pem/worker.log +agent_log_location=/var/log/pem/agent.log +long_wait=30 +short_wait=10 +alert_threads=0 +enable_smtp=false +enable_snmp=false +enable_webhook=false +max_webhook_retries=3 +allow_server_restart=true +allow_package_management=false +allow_streaming_replication=false +max_connections=0 +connect_timeout=-1 +connection_lifetime=0 +allow_batch_probes=false +heartbeat_connection=false +``` + +## Configuring an Existing PEM Agent (Installed via RPM) + +If you are using an existing PEM agent, you can copy the SSL certificate and key files to the target machine, and reuse the files. You will need to modify the files, adding a new parameter and replacing some parameters in the existing `agent.cfg` file: + +Add a line for agent_user to be used for the agent. For example: + +```text +agent_user=pem_agent_user1 +``` + +Update the port to specify the pgBouncer port. For example: + +```text +pem_port=6432 +``` + +Update the certificate and key path locations. For example: + +```text +agent_ssl_key=/root/.pem/pem_agent_user1.key +agent_ssl_crt=/root/.pem/pem_agent_user1.crt +``` + +Please note: as an alternative, you can run the agent self registration script, but that will create a new agent id. If you do run the agent self-registration script, you must replace the new agent id with existing id, and disable the entry for the new agent id in the `pem.agent` table. For example: + +```text +pem=# UPDATE pem.agent SET active = false WHERE id = ; + +UPDATE 1 +``` + +!!! Note + Keep a backup of the existing SSL certificate, key file, and agent configuration file. diff --git a/product_docs/docs/pem/7.16/pem_pgbouncer/index.mdx b/product_docs/docs/pem/7.16/pem_pgbouncer/index.mdx new file mode 100644 index 00000000000..380f508d4f6 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_pgbouncer/index.mdx @@ -0,0 +1,20 @@ +--- +navTitle: pgBouncer Configuration Guide +title: "EDB Postgres Enterprise Manager Configuring pgBouncer for Use with PEM Agents" +--- + +This document provides detailed information about using pgBouncer as a connection pooler for limiting the number of connections from the PEM Agent towards the Postgres Enterprise Manager (PEM) server on non-Windows machine: + +- Preparing the PEM Database Server – provides information about preparing the PEM database server to be used with pgBouncer. +- Configuring pgBouncer – provides detailed information about configuring pgBouncer to make it work with the PEM database server. +- Configuring the PEM Agent – provides detailed information about configuring a PEM Agent to connect to pgBouncer. + +For detailed information about using the PEM web interface, please see the [PEM Administrator's Guide](https://www.enterprisedb.com/docs/pem/latest/pem_admin/). + +This document uses the term `Postgres` to mean either the PostgreSQL or the Advanced Server database. + +
+ +the_pem_server_pem_agent_connection_management_mechanism preparing_the_pem_database_server configuring_pgBouncer configuring_the_pem_agent conclusion + +
diff --git a/product_docs/docs/pem/7.16/pem_security_best_practices/01_apache_httpd_security_configuration.mdx b/product_docs/docs/pem/7.16/pem_security_best_practices/01_apache_httpd_security_configuration.mdx new file mode 100644 index 00000000000..863e22df384 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_security_best_practices/01_apache_httpd_security_configuration.mdx @@ -0,0 +1,220 @@ +--- +title: "Apache HTTPD Security Configurations" +--- + +On a Windows system, Apache HTTPD is named PEM HTTPD, and the Apache httpd configuration file (`pme.conf`) is located in the `/conf/addons` directory. The ssl configuration file (`httpd-ssl-pem.conf`) is located in the `/conf/addons` directory. + +On a Linux system, the apache httpd configuration file (`edb-pem.conf`) is located in the `/conf.d` directory and the SSL configuration file (`edb-ssl-pem.conf`) is located in the `/conf.d` directory. + +## Disable SSLv2 and SSLv3 + +You should disable SSL versions SSLv2, SSLv3, TLS 1, and TLS 1.1 as these versions are the most vulnerable and are affected by cryptographic concerns. + +To disable the versions, please add the following command to apache httpd configuration file: + +`SSLProtocol -ALL +TLSv1.2` + +You need to restart the Web Server to apply the changes to the configuration file. + +By default, PEM adds the following lines to the SSL configuration file to allow use of TLS 1.2 for security: + +`SSLProtocol -All TLSv1.2` + +`SSLProxyProtocol -All TLSv1.2` + +## Secure httpd with SSL Certificates + +EDB recommends having an additional layer of SSL security for the web application. + +By default, during PEM installation, PEM will generate and use self-signed certificates for Apache/HTTPD server. If you want to use your own SSL certificate for PEM, you must update the Apache configuration file. + +On a Linux system, you need to open the Apache httpd configuration file (`edb-ssl-pem.conf`) in a text editor as a user with write permission on the file. You must also change the server name and file names in the configuration file to match your certificate files. + +There are two SSL Directives within the PEM VirtualHost section which you need to update: + +- `SSLCertificateFile` is your DigiCert certificate file (e.g.,your_domain_name.crt). +- `SSLCertificateKeyFile` is the .key file generated when you created the CSR (e.g., your_private.key). + +For example, update: + +`SSLEngine on` + +`SSLCertificateFile /path/to/your_domain_name.crt` + +`SSLCertificateKeyFile /path/to/your_private.key` + +You can also replace the httpd self-signed SSL certificates with trusted CA-signed certificates in Postgres Enterprise Manager. Follow the link shown below for the steps: + + + +## Disable Web Server Information Exposure + +EDB recommends disabling all web server signatures as part of web server security. The web server will expose a software signature; to disable the signature, add the following parameters to the Apache httpd configuration file. By default, PEM disables exposure of the information by adding the below parameters to the Apache httpd configuration file: + +`ServerTokens Prod` + +`ServerSignature Off` + +The `ServerTokens` directive controls the server response header field, which is returned to the client. We recommend hiding the Apache server version by adding this parameter in the Apache httpd configuration file. + +The `ServerSignature` directive includes a footer for server-produced documents. The footer contains information regarding the Apache configuration, like the Apache and operating system version. To limit the display of such information, we recommend disabling this directive in the Apache httpd configuration file. + +You need to restart the web server to apply any changes to the Apache httpd configuration file. + +## Disable Directory Listing + +The directory listing can allow an attacker to view complete directory contents. By default, the web server enables this option, and an attacker can discover and view any file. This listing could lead to the attacker reverse engineering an application to obtain the source code, analyze it for possible security flaws, and discover more information about an application. + +To avoid this, you should disable the directory listing by setting the `Options` directive in the Apache httpd configuration file. By default, PEM disables the directory listing by setting the option below in the web server configuration file: + +` Options -Indexes ` + +You need to restart the web server to apply the changes made to the configuration file. + +## Restrict the Access to a Network or IP Address + +Apache provides access control based on the client hostname or IP address. To view the application by specific IP address or network, a user can modify the Apache configuration file as shown below to provide your network address within the `Allow` directive: + +`` + +`Options None` + +`AllowOverride None` + +`Order deny,allow` + +`Deny from all` + +`Allow from 192.168.0.0/24` + +`` + +PEM uses the `ALLOWED_HOSTS` configuration parameter in the application configuration file to provide the allowed hosts’ list of IP addresses. The application configuration `config_local.py` file is located in `/web`. + +By default, PEM allows all the hosts to connect with the application. + +For example: + +You can set the range of IP addresses in the configuration file as below: + +`ALLOWED_HOSTS = ['225.0.0.0/8', '226.0.0.0/7', '228.0.0.0/6']` + +You can set the IP adresses to allow a host on a subnet level in the configuration file as below: + +`ALLOWED_HOSTS = ['192.0.2.0/28', '::192.0.2.0/124']` + +You can set a specific individual host address (based on the IP address) in the configuration file as below: + +`ALLOWED_HOSTS = ['127.0.0.1', '192.168.0.1']` + +You need to restart the web server to apply the changes to the application configuration file. + +## Cross-site Tracing + +There are two HTTP methods to debug the web server connections - TRACE and TRACK. When an HTTP TRACE request is sent to a web server that supports it, that server will respond, echoing the data passed to it, including any HTTP headers. We recommend disabling these methods within the Apache Configuration. + +To disable the TRACE method for all virtual hosts, add the following line to the Apache httpd configuration file: + +`TraceEnable off` + +To disable these methods for a specific virtual host, add the following lines for each virtual host in the Apache configuration file. PEM does add the following lines to the Apache httpd configuration file: + +`RewriteEngine on` + +`RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)` + +`RewriteRule .\* - [F]` + +## Run Web Server from a Non-privileged User Account + +Running the Apache web server as a root user creates a security issue. We always recommend running the web server as a unique non-privileged user. This helps to secure other services running in the event of any security breaches. + +PEM runs as a WSGI application. To delegate the WSGI applications that are running, you can create distinct daemon processes using the `WSGIDaemonProcess` directive. + +On Linux, the Apache web server starts as the root user, but the daemon processes which PEM application runs as `pem` user. On Windows, the `WSGIDaemonProcess` directive and its features are not available. PEM HTTPD is installed as a service during the installation, and the user needs to be a member of the `Administrators` group for the service installation to succeed. + +By default the Apache services are registered to run as the system user (the `LocalSystem` account). + +## Customize Security HTTP Headers in PEM WebServer + +PEM contains its own configuration file to fix the following security issues. We recommend overriding the configuration only of `config_local.py` and not of `config.py`. The `config_local.py` is not present on the systems in most of the cases; hence users need to create it to override the application-level configurations. Please note that during a PEM upgrade, `config_local.py` will not be overwritten, but changes in `config.py` and `config_distro.py` will be overridden. Users need to remove `config_local.py` after uninstalling the PEM. + +By default, `config_local.py` is located in `/usr/edb/pem/web` on Linux, and at `C:\ProgramFiles\edb\pem\server\share\web` on Windows. + +## Host Header Injection Attacks + +HTTP host header attacks exploit vulnerable websites that handle the host header value in an unsafe way. If the server implicitly trusts the host header and fails to validate or escape it properly, an attacker may be able to use this input to inject harmful payloads that manipulate server-side behavior. The web applications typically don't know what domain they are deployed on unless specified in a configuration file during setup. When they need to know the current domain, for example, they may resort to retrieving the domain from the host header to generate an absolute URL. The host header is a potential vector for exploiting a range of other vulnerabilities, most notably web cache poisoning & SQL injections. + +### X-Frame-Options + +X-Frame-Options can be used to indicate if a browser should be allowed to render a page in an <iframe> tag. It was designed specifically to protect against clickjacking. PEM has a host validation `X_FRAME_OPTIONS` option to prevent such kind of attacks, which you can configure in the `config_local.py` file. The default is: + +`X_FRAME_OPTIONS = "SAMEORIGIN"` + +### Content-Security-Policy + +Content-Security-Policy is part of the HTML5 standard and provides a broader range of protection than the X-Frame-Options header (which it replaces). It is designed in such a way that website authors can whitelist individual domains from which resources (like scripts, stylesheets, and fonts) can be loaded, and also domains that are permitted to embed a page. + +PEM has a host validation `CONTENT_SECURITY_POLICY` option to prevent such kinds of attacks, which you can configure in the `config_local.py` file. The default is: + +`CONTENT_SECURITY_POLICY = "default-src https: data: blob: 'unsafe-inline' ‘'unsafe-eval';"` + +### Strict-Transport-Security + +The Strict-Transport-Security response header (often abbreviated as HSTS) allows a web site or web application to tell browsers that it should only be accessed using HTTPS instead of HTTP. This option allows you to prevent a man-in-the-middle attack. The default is: + +`STRICT_TRANSPORT_SECURITY = "max-age=31536000;includeSubDomains"` + +!!! Note + Adding this parameter may cause problems if config is changed. Hence it is recommended to add this only after PEM installation is complete and tested. + +### X-Content-Type-Options + +The X-Content-Type-Options response HTTP header is a marker used by the server to indicate that the MIME types advertised in Content-Type headers should not be changed and followed. This is a way to opt out of MIME type sniffing, or, in other words, to say that the MIME types are deliberately configured. The default is: + +`X_CONTENT_TYPE_OPTIONS = "nosniff"` + +### X-XSS-Protection + +Cross-site scripting (XSS) is one of the most common application-layer vulnerabilities in the web servers. XSS enables attackers to inject client-side script into web pages viewed by other users. The HTTP X-XSS-Protection response to the header is a feature of Internet Explorer, Chrome, and Safari that stops pages from loading when they detect reflected cross-site scripting (XSS) attacks. Although these protections are largely unnecessary in modern browsers when sites implement a strong Content-Security-Policy that disables the use of inline JavaScript ('unsafe-inline') can still provide protections for users of older web browsers that don't yet support CSP. The default is: + +`X_XSS_PROTECTION = "1; mode=block"` + +To avoid this, you need to add the following options to the Apache configuration file: + +`` + +`Header set X-XSS-Protection "1; mode=block"` + +`` + +A web server restart is required for configuration file changes to be applied. + +By default, PEM sets `X-XSS-Protection to "1; mode=block"` in the application configuration file which is located at `/usr/edb/pem/web/config.py`. + +This changes requires an Apache service restart in order to take effect + +For more detailed information on `config.py` file you can see [PEM Online Help](/pem/latest/pem_online_help/01_toc_pem_getting_started/03_pem_managing_configuration_settings/). + +### Cookie Security + +Cookies are small packets of data that a server can send to your browser to store configuration data. The browser automatically sends them along with all requests to the same server, so it’s important to know how to secure cookies. There are multiple configuration options provided by PEM to make cookies secure which you can refer to in `config.py` but the three that follow are most important. + +1. **SESSION_COOKIE_SECURE** - Setting the secure flag prevents the cookie from ever being sent over an unencrypted connection. It basically tells the browser to never add the cookie to any request to the server that does not use an encrypted channel. The browser will only add cookies to connections such as HTTPS. The default is: + + `SESSION_COOKIE_SECURE = True` + +2. **SESSION_COOKIE_HTTPONLY** - By default the content of cookies can be read via JavaScript. The `HTTPOnly` flag prevents scripts from reading the cookie. As the name `HTTPOnly` implies, the browser will only use the cookie in HTTP(S) requests. This prevents hackers from using XSS vulnerabilities to learn the contents of the cookie. For example, for the `sessionId` cookie it is never necessary to read the cookie with a client-side script, so for `sessionId` cookies, you can always set the `HTTPOnly` flag. The default is: + + `SESSION_COOKIE_HTTPONLY = True` + +3. **ENHANCED_COOKIE_PROTECTION -** When you set this option to `True` then a token will be generated according to the IP address and user agent. In all subsequent requests, the token will be recalculated and checked against the one computed for the first request. If the session cookie is stolen and the attacker tries to use it from another location, the generated token will be different, and in that case, the extension will clear the session and block the request. The default is: + + `ENHANCED_COOKIE_PROTECTION = True` + + !!! Note + This option can cause problems when the server is deployed in dynamic IP address hosting environments, such as Kubernetes or behind load balancers. In such cases, this option should be set to `False`. + + This changes requires an Apache service restart in order to take effect. + + For more detailed information on `config.py` file you can see [PEM Online Help](/pem/latest/pem_online_help/01_toc_pem_getting_started/03_pem_managing_configuration_settings/). diff --git a/product_docs/docs/pem/7.16/pem_security_best_practices/02_pem_application_configuration.mdx b/product_docs/docs/pem/7.16/pem_security_best_practices/02_pem_application_configuration.mdx new file mode 100644 index 00000000000..48f9e98aac6 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_security_best_practices/02_pem_application_configuration.mdx @@ -0,0 +1,111 @@ +--- +title: "PEM application Security Configurations" +--- + +## Session Timeout + +Insufficient session expiration by the web application increases the exposure of other session-based attacks, as it allows time for the attacker to be able to reuse a valid session ID and hijack the associated session. The shorter the session interval is, the lesser the time an attacker has to use the valid session ID. We recommend setting the inactivity timeout for the web application to a low value to avoid this security issue. + +Postgres Enterprise Manager provides a way to set the timeout value for a user session. When there is no user activity for a specified duration on the web console, PEM will log out the user from the web console. A PEM Administrator can set the length of time for inactivity. This value is application-wise, rather than for an individual user. To configure the timeout duration, modify the `USER_INACTIVITY_TIMEOUT` parameter in `config_local.py` file, located in the `/web` directory. By default this functionality is disabled. + +For example, to specify that an application should log out a user after 15 minutes of inactivity, set: + +`USER_INACTIVITY_TIMEOUT = 900` + +!!! Note + The timeout value is specified in seconds. + +This changes requires an Apache service restart in order to take effect. + +For more detailed information on `config.py` file you can see [PEM Online Help](/pem/latest/pem_online_help/01_toc_pem_getting_started/03_pem_managing_configuration_settings/). + +## RestAPI Header Customization + +You can customize the RestAPI token headers as per your requirements. The default values are not exposed by the `config.py` file; customize the following headers in the `config_local.py` file: + +### PEM_HEADER_SUBJECT_TOKEN_KEY + +This configuration option will allow you to change the HTTP header name to get the generated token. By default, when the user sends a request to create a token, the server response will have an ‘X-Subject-Token’ header, which will contain the value of a newly generated token. If you want to customize the header name, then you can update the `config_local.py` file as shown: + +`PEM_HEADER_SUBJECT_TOKEN_KEY = 'Pem-RestAPI-Generate-Token'` + +Which will give you the following output: + +`curl -ik -X POST -d '{"username":"enterprisedb","password":"edb"}' -H "Content-Type: application/json" https://localhost:8443/pem/api/token/` + +`HTTP/1.1 201 CREATED` + +`Date: Thu, 29 Oct 2020 11:03:48 GMT` + +`Server: Apache` + +`Content-Length: 326` + +`Pem-RestAPI-Generate-Token: 997aef95-d46d-4d84-932a-a80146eaf84f` + +### PEM_HEADER_TOKEN_KEY + +This configuration option will allow you to change the HTTP request header name through which you will send the token to the PEM server. By default, when the user sends a request to generate a token, the token header will be `X-Auth-Token`. If you want to customize the RestAPI request header name then you can update the `config_local.py` file as follows: + +`PEM_HEADER_TOKEN_KEY = 'Pem-Token'` + +Which will allow you to send the token: + +`$ curl -Lk -X GET -H "Pem-Token: gw5rzaloxydp91ttd1c97w24b5sv60clic24sxy9" https://localhost:8443/pem/api/v4/agent` + +### PEM_TOKEN_EXPIRY + +This configuration option will allow you to change the PEM RestAPI token expiry time after it is generated. By default, the token expiry time is set to 20 minutes (1200 seconds). If you want to change the token expiry time to 10 minutes then you can update the `config_local.py` file as shown: + +`PEM_TOKEN_EXPIRY = 600` + +This changes requires an Apache service restart in order to take effect. + +## Role-based Access Control in PEM + +Role-based access control (RBAC) restricts application access based on a user’s role within an organization and is one of the primary methods for access control. The roles in RBAC refer to the levels of access that users have to the application. Users are only allowed to access the information necessary to effectively perform their job duties. Roles in PEM are inheritable and additive rather than subscriptive. In simple terms, as a PEM admin you need to grant the lowest level role to the user and then grant the roles which are required for the user to perform their respective tasks. For example, to give access only to SQL profiler: + +`CREATE ROLE user_sql_profiler WITH LOGIN NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT NOREPLICATION CONNECTION LIMIT -1 PASSWORD 'xxxxxx';` + +`GRANT pem_user, pem_comp_sqlprofiler TO user_sql_profiler;` + +For more detailed information on roles, you can see [PEM Roles](/pem/latest/pem_online_help/01_toc_pem_getting_started/04_pem_roles/). + +## SQL/Protect Plugin + +Preventing a SQL injection attack is usually the responsibility of the application developer. The database administrator typically has little or no control over the potential threat. The difficulty for database administrators is that the application must have access to the data to function properly. + +`SQL/Protect` is a module that allows a database administrator to protect a database from SQL injection attacks. SQL/Protect provides a layer of security in addition to the standard database security policies by examining incoming queries for typical SQL injection profiles. + +There are several different techniques used to perpetrate SQL injection attacks. A specific signature characterizes each technique. SQL/Protect examines queries for Unauthorized Relations, Utility Commands, SQL Tautology, Unbounded DML Statements. SQL/Protect gives the control back to the database administrator by alerting the administrator to potentially dangerous queries and blocking them. + +!!! Note + This plugin works only on the EPAS server, so this is useful only when your PEM database is hosted on the EPAS server. + +For more detailed information about the SQL Profiler plugin, see the [PEM Online Help - SQL Profiler](/pem/latest/pem_online_help/07_toc_pem_sql_profiler/). + +## Password Management + +One security tip for PEM administrative users is to change your PEM login passwords to something new regularly. Changing your password avoids a number of dangers including: + +- breaches of multiple accounts +- prevents constant access +- prevents the use of saved passwords on a physically unsecured system +- limits access gained by keystroke loggers + +## Run pemAgent Jobs with a Non-root User + +In most cases, `pemAgent` is installed as a root user, and runs as a daemon process with root privileges. By default, PEM disables running the scheduled jobs/task. PEM provides support for running scheduled jobs as a non-root user by changing the pemAgent configuration file. + +To run scheduled jobs as a non-root user, modify the entry for the `batch_script_user` parameter in the `agent.cfg` file and specify the user that should be used to run the script. You can either specify a non-root user or root user identity. If you do not specify a user, or the specified user does not exist, then the script will not execute. Restart the agent after modifying the file. If a non-root user is running `pemagent`, then the value of `batch_script_user` will be ignored, and the same non-root user used for running the `pemagent` will execute the script. + +To invoke a script on a Windows system, set the registry entry for `AllowBatchJobSteps` to `true` and restart the PEM agent. PEM registry entries are located in: + +`HKEY_LOCAL_MACHINE\Software\Wow6432Node\EnterpriseDB\PEM\agent` + +## Changing the pemAgent and PEM Backend Database Server Certificates + +By default, when you install PEM, the installer will generate and use self signed certificates for the pemAgent and PEM database server. PemAgent uses these certificates when connecting to the PEM database server. To use your own SSL certificate for the pemAgent and PEM database server, follow the steps mentioned in the `Managing Certificates` section of the `PEM Administrators's Guide`: + +!!! Note + PEM does not support placing the SSL CA certificates at a custom location; you should not change the location of `ca_certificate.crt` and `ca_key.key`. diff --git a/product_docs/docs/pem/7.16/pem_security_best_practices/index.mdx b/product_docs/docs/pem/7.16/pem_security_best_practices/index.mdx new file mode 100644 index 00000000000..4b03a1ef383 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_security_best_practices/index.mdx @@ -0,0 +1,21 @@ +--- +navTitle: Security Guide +title: "PEM Security Guide" +--- + +This document provides information about security practices you should consider when configuring PEM. PEM functionality does not require you to enforce these practices; however, EDB recommends these practices to enhance the overall system’s security. + +PEM is dependent on third-party components from the vendor repository, including the Apache web server, OpenSSL, snmp++, libcurl, etc. To ensure these components are up to date, you should update your operating system and regularly apply security updates to avoid any security vulnerability. Without the most recent security patches, your system is potentially vulnerable to cyberattacks. Security patches protect your devices and their data by applying the latest updates to guard against the latest threats. + +Some of the benefits of regularly applying security patches include: + +- Reduced exposure to cyberattacks +- Avoiding lost productivity +- Data protection from malware (like ransomware) +- Avoid worm infections that use security loopholes to spread over the network + +
+ +apache_httpd_security_configuration pem_application_configuration conclusion + +
diff --git a/product_docs/docs/pem/7.16/pem_sqlprofiler/01_installing_the_sql_profiler_plugin.mdx b/product_docs/docs/pem/7.16/pem_sqlprofiler/01_installing_the_sql_profiler_plugin.mdx new file mode 100644 index 00000000000..37fad844ec1 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_sqlprofiler/01_installing_the_sql_profiler_plugin.mdx @@ -0,0 +1,113 @@ +--- +title: "Installing the SQL Profiler Plugin" +--- + +You must install the plugin on each server on which you wish to use SQL Profiler. For example, if you have a host running PostgreSQL 9.6 and PostgreSQL 10, you must install two versions of the plugin, one for each server. + +Follow the installation steps listed below to install the plugin for PostgreSQL before continuing to the `Configuration` section. If you are using Advanced Server, you can skip installation and move ahead to the `Configuration` section. + +You can use the graphical installer to install any version of SQL Profiler on the Windows platform. On Linux, use an RPM package to install the SQL Profiler. For detailed information about configuring the EDB repository for your host platform, see the [PEM Linux Installation Guide](https://www.enterprisedb.com/docs/pem/latest/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/03_installing_pem_server_on_linux/). + +## Installing SQL Profiler on Windows + +To invoke the SQL Profiler graphical installer, assume `Administrator` privileges, navigate into the directory that contains the installer, and double-click the installer icon. The SQL Profiler installer welcomes you to the Setup Wizard. + +![The SQL Profiler Installer Welcome dialog](../images/installing_pem_sql_profiler_plugin_windows_welcome.png) + +Click `Next` to continue to the `License Agreement`. + +![The SQL Profiler License Agreement](../images/installing_pem_sql_profiler_plugin_windows_license_agreement.png) + +Carefully review the license agreement before highlighting the appropriate radio button and accepting the agreement; click `Next` to continue to the `Installation Directory` dialog. + +![The PostgreSQL Installation Directory](../images/installing_pem_sql_profiler_plugin_windows_installation_directory.png) + +Specify an alternate location for the installation directory, or accept the default location and click `Next` to continue. + +![Ready to Install](../images/installing_pem_sql_plugin_windows_ready_to_install.png) + +The wizard is now ready to install the SQL Profiler plugin. Click `Next` to continue. + +![Installing the SQL Profiler plugin](../images/installing_pem_sql_profiler_plugin_windows_in_progress.png) + +The SQL Profiler plugin installer displays progress bars as it copies files to your system. + +![The SQL Profiler installation is complete](../images/installing_pem_sql_profiler_plugin_windows_finish.png) + +When the installation is complete, the SQL Profiler plugin is ready to be configured. + +## Using an RPM Package to Install SQL Profiler + +!!! Note + You may be required to add the `sslutils` package to your PostgreSQL database servers before installing SQL Profiler. + +If you have already configured the EDB repository on your system, you can use `yum` or `dnf` to install SQL Profiler: + +```text +yum install postgresql-sqlprofiler + +or + +dnf install postgresql-sqlprofiler +``` + +Where, `` is the version of your Postgres installation. + +For detailed information about configuring the EDB repository, please see the [PEM Linux Installation Guide](https://www.enterprisedb.com/docs/pem/latest/pem_inst_guide_linux/04_installing_postgres_enterprise_manager/03_installing_pem_server_on_linux/). + +## Installing SQL Profiler on Debian/Ubuntu + +!!! Note + You may be required to add the `sslutils` package to your PostgreSQL database servers before installing SQL Profiler. + +You can use an `apt` command to install SQL Profiler using DEB on Debian 9.x or Ubuntu 18; assume root privileges and enter: + +```text +apt install postgresql--sqlprofiler +``` + +Where, `` is the version of your Postgres installation. + +When the installation is complete, the SQL Profiler plugin is ready to be configured. + +## Configuring SQL Profiler + +The SQL Profiler plugin is not automatically enabled when the installation process completes. This allows you to restart the server at a convenient time, and prevents the plugin from being loaded unnecessarily on systems where it is not required on a continual basis. + +Use the following steps to enable the plugin: + +1. Edit the `postgresql.conf` file on the server you wish to profile, modifying the `shared_preload_libraries` parameter as shown below: + + ```text + shared_preload_libraries = '$libdir/sql-profiler' + ``` + +2. Restart the Postgres server. + +3. Using the `Query Tool` or the `psql` command line interface, run the `sql-profiler.sql` script in the database specified as the `Maintenance Database` on the server you wish to profile. If you are using: + + - PostgreSQL, the default maintenance database is `postgres`. + - Advanced Server, the default maintenance database is `edb`. + + To use the PEM Query Tool to run the script, highlight the name of the maintenance database in the `Browser` tree control, and navigate through the `Tools` menu to select `Query tool`. When the Query Tool opens, use the `Open` option on the `Files` menu to open a web browser and navigate to the `sql-profiler.sql` script. By default, the `sql-profiler.sql` script is located in the `contrib` folder, under your Postgres installation. + + When the script opens in the `SQL Editor` panel of the Query Tool, highlight the content of the script in the SQL Editor and select the `Execute` option from the `Query` menu (or click the `Execute` icon) to invoke the script and configure SQL Profiler. + + You can also use the psql command line to invoke the configuration script. The following command uses psql to invoke the `sql-profiler.sql` script on an Advanced Server database on a Linux system: + + ```text + $ /usr/edb/as/bin/psql -U postgres postgres < /usr/edb/as/share/contrib/sql-profiler.sql + ``` + + where <x> is the version of the Advanced Server. + + After configuring SQL Profiler, it is ready to use with all databases that reside on the server. + + ![Creating a new trace](../images/sp_create_new_trace.png) + + To access SQL Profiler functionality, highlight the name of the database in the PEM `Browser` tree control; navigate through `Server` option under `Tools` menu to the `SQL Profiler` pull-aside menu. Menu options allow you to manage your SQL traces: + + - Select `Create trace`… to define a new trace. + - Select `Open trace`… to open an existing trace. + - Select `Delete trace(s)`… to delete one or more traces. + - Select `View scheduled trace(s)`… to review a list of scheduled traces. diff --git a/product_docs/docs/pem/7.16/pem_sqlprofiler/02_using_sql_profiler.mdx b/product_docs/docs/pem/7.16/pem_sqlprofiler/02_using_sql_profiler.mdx new file mode 100644 index 00000000000..7a664c26ab2 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_sqlprofiler/02_using_sql_profiler.mdx @@ -0,0 +1,161 @@ +--- +title: "SQL Profiling and Analysis" +--- + +Most RDBMS experts agree that inefficient SQL code is the leading cause of most database performance problems. The challenge for DBAs and developers is to locate the poorly-running SQL code in large and complex systems, and then optimize that code for better performance. + +The SQL Profiler component allows a database superuser to locate and optimize poorly-running SQL code. Users of Microsoft SQL Server’s Profiler will find PEM’s SQL Profiler very similar in operation and capabilities. SQL Profiler is installed with each Advanced Server instance; if you are using PostgreSQL, you must download the SQL Profiler installer, and install the SQL Profiler product into each managed database instance you wish to profile. + +For each database monitored by SQL Profiler, you must: + +1. Edit the `postgresql.conf` file; you must include the SQL Profiler library in the shared_preload_libraries configuration parameter. + + For Linux installations, the parameter value should include: + + `$libdir/sql-profiler` + + on Windows, the parameter value should include: + + `$libdir/sql-profiler.dll` + +2. Create the functions used by SQL Profiler in your database. The SQL Profiler installation program places a SQL script (named sql-profiler.sql) in the `share/postgresql/contrib` subdirectory of the main PostgreSQL installation directory on Linux systems. On Windows systems, this script is located in the `share` subdirectory. You must invoke this script on the maintenance database specified when registering the server with PEM. + +3. Stop and re-start the server for the changes to take effect. + +Please note: if you have connected to the PEM server with the PEM client before configuring SQL Profiler, you must disconnect and reconnect with the server to enable SQL Profiler functionality. For more detailed information about installing and configuring the SQL Profiler plugin, please refer to the [PEM Installation Guides](https://www.enterprisedb.com/docs/pem/latest). + +## Creating a New SQL Trace + +SQL Profiler captures and displays a specific SQL workload for analysis in a SQL trace. You can start and review captured SQL traces immediately, or save captured traces for review at a later time. You can use SQL Profiler to create and store up to 15 named traces; use menu options to create and manage traces. + +### Creating a Trace + +You can use the `Create trace...` dialog to define a SQL Trace for any database on which SQL Profiler has been installed and configured. installed and configured. To access the dialog, highlight the name of the database in the PEM client tree control; navigate through the Management menu to the SQL Profiler pull-aside menu, and select Create trace.... + +![The Trace options tab](../images/sp_create_new_trace.png) + +Use the fields on the `Trace options` tab to specify details about the new trace: + +- Provide a name for the trace in the Name field. +- Click in the `User filter` field to specify the roles whose queries will be included the trace; optionally, check the box next to Select All to include queries from all roles. +- Click in the `Database filter` field to specify which databases to trace; optionally, check the box next to Select All to include queries against all databases. +- Specify a `trace size in the Maximum Trace File Size` field; SQL Profiler will terminate the trace when it reaches approximately the size specified. +- Specify Yes in the `Run Now` field to start the trace when you select the Create button; select No to enable fields on the Schedule tab. + +![The Create trace Schedule tab](../images/sp_create_new_trace_schedule.png) + +Use the fields on the `Schedule` tab to specify scheduling details for the new trace: + +- Use the `Start time` field to specify the starting time for the trace. +- Use the `End time` field to specify the ending time for the trace. +- Specify Yes in the `Repeat?` field to indicate that the trace should be repeated every day at the times specified; select No to enable fields on the Periodic job options tab. + +![The Create trace Periodic job options tab](../images/sp_create_new_trace_periodic_job.png) + +Fields on the `Periodic job options` tab specify scheduing details about a recurring trace. Use fields in the Days section to specify the days on which the job will execute: + +- Click in the `Week days` field to select the days of the week on which the trace will execute. +- Click in the `Month days` field to select the days of the month on which the trace will execute. +- Click in the `Months` field to select the months in which the trace will execute. + +Use fields in the `Times` section to specify a time schedule for the trace execution: + +- Click in the `Hours` field to select the hours at which the trace will execute. +- Click in the `Minutes` field to select the hours at which the trace will execute. + +When you've completed the `Create trace...` dialog, click `Create` to start the newly defined trace or to schedule the trace for a later time. + +![The SQL Profiler tab, displaying the trace results](../images/sp_create_new_trace_executed.png) + +If you elect to execute the trace immediately, the trace results will display in the PEM client. + +### Opening an Existing Trace + +To view a previous trace, highlight the name of the profiled database in the PEM client tree control; navigate through the `Management` menu to the SQL Profiler pull-aside menu, and select `Open trace....` You can also use the `SQL Profiler toolbar` menu to open a trace; select the `Open trace...` option. The Open trace... dialog opens. + +![Opening an existing trace](../images/sp_open_existing_trace.png) + +Highlight an entry in the trace list and click Open to open the selected trace. The selected trace opens in the SQL Profiler tab. + +### Filtering a Trace + +A filter is a named set of (one or more) rules, each of which can hide events from the trace view. When you apply a filter to a trace, the hidden events are not removed from the trace, but are merely excluded from the display. + +Click the Filter icon to open the `Trace Filter` dialog and create a rule (or set of rules) that define a filter. Each rule will screen the events within the current trace based on the identity of the role that invoked the event, or the query type invoked during the event. + +To open an existing filter, select the `Open` button; to define a new filter, click the `Add (+)` icon to add a row to the table displayed on the General tab and provide rule details: + +- Use the `Type` drop-down listbox to specify the trace field that the filter rule will apply to. +- Use the `Condition` drop-down listbox to specify the type of operator that SQL Profiler will apply to the Value when it filters the trace: + - Select `Matches to` filter events that contain the specified Value. + - Select `Does not match` to filter events that do not contain the specified Value. + - Select `Is equal to` to filter events that contain an exact match to the string specified in the Value field. + - Select `Is not equal` to to filter events that do not contain an exact match to the string specified in the Value field. + - Select `Starts with` to filter events that begin with the string specified in the Value field. + - Select `Does not start with` to filter events that do not begin with the string specified in the Value field. + - Select `Less than` to filter events that have a numeric value less than the number specified in the Value field. + - Select `Greater than` to filter events that have a numeric value greater than the number specified in the Value field. + - Select `Less than or equal to` to filter events that have a numeric value less than or equal to the number specified in the Value field. + - Select `Greater than or equal to` to filter events that have a numeric value greater than or equal to the number specified in the Value field. +- Use the `Value` field to specify the string, number or regular expression that SQL Profiler will search for. + +When you've finished defining a rule, click the Add (+) icon to add another rule to the filter. To delete a rule from a filter, highlight the rule and click the Delete icon. + +Click the `Save` button to save the filter definition to a file without applying the filter; to apply the filter, click `OK`. Select `Cancel` to exit the dialog and discard any changes to the filter. + +### Deleting a Trace + +To delete a trace, highlight the name of the profiled database in the PEM client tree control; navigate through the `Management` menu to the SQL Profiler pull-aside menu, and select `Delete trace(s)....` You can also use the SQL Profiler toolbar menu to delete a trace; select the `Delete trace(s)...` option. The `Delete traces` dialog opens. + +![The Delete traces… dialog](../images/sp_delete_trace.png) + +Click the icon to the left of a trace name to mark one or more traces for deletion and click `Delete`. The PEM client will acknowledge that the selected traces have been deleted. + +### Viewing Scheduled Traces + +To view a list of scheduled traces, highlight the name of the profiled database in the PEM client tree control; navigate through the `Management` menu to the SQL Profiler pull-aside menu, and select `Scheduled traces...` You can also use the SQL Profiler toolbar menu to the list; select the `Scheduled traces...` option. + +![Reviewing scheduled traces](../images/sp_scheduled_traces.png) + +The `Scheduled traces...` dialog displays a list of the traces that are awaiting execution. Click the edit button to the left of a trace name to access detailed information about the trace: + +- The `Status` field lists the status of the current trace. +- The `Enabled?` switch displays Yes if the trace is enabled; No if it is disabled. +- The `Name` field displays the name of the trace. +- The `Agent` field displays the name of the agent responsible for executing the trace. +- The `Last run` field displays the date and time of the last execution of the trace. +- The `Next run` field displays the date and time of the next scheduled trace. +- The `Created` field displays the date and time that the trace was defined. + +## Using the Index Advisor + +Index Advisor is distributed with Advanced Server 9.0 and above. Index Advisor works with SQL Profiler by examining collected SQL statements and making indexing recommendations for any underlying tables to improve SQL response time. The Index Advisor works on all DML (INSERT, UPDATE, DELETE) and SELECT statements that are invoked by a superuser. + +Diagnostic output from the Index Advisor includes: + +- Forecasted performance benefits from any recommended indexes +- The predicted size of any recommended indexes +- DDL statements you can use to create the recommended indexes + +Before using Index Advisor, you must: + +1. Modify the `postgresql.conf` file on each Advanced Server host, adding the index_advisor library to the shared_preload_libraries parameter. + +2. Install the `Index Advisor contrib` module. To install the module, use the psql client or PEM Query Tool to connect to the database, and invoke the following command: + + `\i /share/contrib/index_advisor.sql` + +3. Restart the server for your changes to take effect. + +Index Advisor can make indexing recommendations based on trace data captured by SQL Profiler. Simply highlight one or more queries in the `SQL Profiler Trace Data` pane, and click the `Index Advisor` toolbar button (or select Index Advisor from the View menu). For detailed usage information about Index Advisor, please see the EDB Postgres Advanced Server Guide. + +Please note: Index Advisor cannot analyze statements invoked by a non-superuser. If you attempt to analyze statements invoked by a non-superuser, the server log will include the following error: + +`ERROR: access to library "index_advisor" is not allowed`  + +!!! Note + It is recommended that you disable the index advisor while using the pg_dump functionality. + +For more information about configuring and using Index Advisor, please see the EDB Postgres Advanced Server Guide, available from EDB at: + +[https://www.enterprisedb.com/docs](/epas/latest/epas_guide/05_index_advisor/) diff --git a/product_docs/docs/pem/7.16/pem_sqlprofiler/03_uninstalling_sql_profiler.mdx b/product_docs/docs/pem/7.16/pem_sqlprofiler/03_uninstalling_sql_profiler.mdx new file mode 100644 index 00000000000..3747ca60fc2 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_sqlprofiler/03_uninstalling_sql_profiler.mdx @@ -0,0 +1,29 @@ +--- +title: "Uninstalling SQL Profiler" +--- + + + +The process of uninstalling SQL Profiler is platform-specific. + +## Uninstalling SQL Profiler from Windows Hosts + +If you are using SQL Profiler on a Windows host, Windows will lock any files that have been executed or loaded into memory. To release any locked files, you must stop the Postgres server before performing an uninstall. + +On Windows, you can use the `Services` dialog to control the service. To open the `Services` dialog, navigate through the `Control Panel` to the `System and Security menu`. Select `Administrative Tools`, and then double-click the `Services` icon. When the `Services` dialog opens, highlight the service name in the list, and use the option provided on the dialog to `Stop` the service. + +After stopping the Postgres Server: + +Delete the existing SQL Profiler query set on each node by invoking the `uninstall-sql-profiler.sql` script. + +By default, the script resides in the `share\contrib` directory under your Advanced Server or PostgreSQL installation. + +## Uninstalling SQL Profiler from CentOS or RHEL Hosts + +To uninstall a SQL Profiler installation that resides on a Linux host: + +Delete the existing SQL Profiler query set on each node by invoking the `uninstall-sql-profiler.sql` script. + +By default, if you are using Advanced Server on a Linux host, the script resides in the `share/contrib` directory under the Advanced Server installation. + +If you are using a PostgreSQL installation on a Linux host, the script resides in the `share/contrib` directory under the PostgreSQL installation. diff --git a/product_docs/docs/pem/7.16/pem_sqlprofiler/index.mdx b/product_docs/docs/pem/7.16/pem_sqlprofiler/index.mdx new file mode 100644 index 00000000000..63f1c3ad869 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_sqlprofiler/index.mdx @@ -0,0 +1,19 @@ +--- +title: "SQL Profiler" +--- + +Postgres Enterprise Manager (PEM) is designed to assist database administrators, system architects, and performance analysts when administering, monitoring, and tuning PostgreSQL and Advanced Server database servers. PEM has been designed to manage and monitor a single server or multiple servers from a single console, allowing complete control over monitored databases. + +The SQL Profiler Plugin works with PEM to allow you to profile a server's workload. The SQL Profiler plugin may be installed on servers with or without a PEM Agent, however traces can only be run in ad-hoc mode on unmanaged servers, and may only be scheduled on managed servers. + +This document provides step-by-step instructions to guide you through the installation and use of SQL Profiler. + +SQL Profiler is officially supported only on the EDB distributions of PostgreSQL and Advanced Server supported versions . The plugin is distributed via StackBuilder, or as operating system dependent packages in EDB's yum repositories. The plugin is also distributed and installed with the Advanced Server installations. + +Throughout this guide, the term `Postgres` refers to either a PostgreSQL or an Advanced Server installation, where either is appropriate. + +
+ +installing_the_sql_profiler_plugin using_sql_profiler uninstalling_sql_profiler conclusion + +
diff --git a/product_docs/docs/pem/7.16/pem_upgrade/01_upgrading_pem_installation/01_upgrading_pem_installation_windows.mdx b/product_docs/docs/pem/7.16/pem_upgrade/01_upgrading_pem_installation/01_upgrading_pem_installation_windows.mdx new file mode 100644 index 00000000000..257d2f7b02b --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_upgrade/01_upgrading_pem_installation/01_upgrading_pem_installation_windows.mdx @@ -0,0 +1,194 @@ +--- +title: "Upgrading a PEM Installation on Windows Host" +--- + +To upgrade PEM component software on Windows hosts, simply invoke a newer version of the PEM component installers in the following order: + +1. Invoke the PEM agent installer on each monitored node `except` the PEM Server host. +2. Invoke the PEM Server installer; this installer will upgrade `both` the PEM Server and the PEM Agent that resides on the PEM Server host. + +During an installation, the component installer will automatically detect an existing installation, and perform an upgrade. After upgrading the PEM Agent and Server, you can upgrade SQL Profiler if required; this step is platform-specific. + +The following sections will walk you through the upgrade process on a Windows host, step-by-step. + +## Upgrading a PEM Agent on a Windows Host + +To upgrade a system that is currently monitored by a PEM agent to a more-recent PEM agent, simply download and invoke a newer version of the PEM Agent installer on the system that the agent is monitoring. + +You can invoke the installer by right-clicking on the downloaded installer's icon, and selecting `Run as Administrator`. The `PEM Agent Setup Wizard` opens, welcoming you. + +![The PEM Agent Installer - Welcome Window](../../images/pem_upgrade_agent_welcome.png) + +Read and accept the `License Agreement` before clicking `Next` to continue. + +![The PEM Agent Installer - License Agreement](../../images/pem_upgrade_agent_license.png) + +The setup wizard will automatically detect an existing agent, and upgrade the installed version. Click `Next` to continue. + +![The PEM Agent Installer - Existing Installation Location](../../images/pem_upgrade_agent_existing_installation.png) + +The `pemAgent service account` dialog may prompt you for the password of the account under which the PEM Agent service runs. + +![The PEM Agent Installer - pemAgent Service Account password](../../images/pem_upgrade_agent_pemAgent_service_account.png) + +If prompted, provide the password, and click `Next` to continue. + +When the `Ready to Install` dialog informs you that the installation is about to begin, click `Next` to continue. It will upgrade your PEM Agent to the latest version. + +![The PEM Agent Installer - Ready to Install](../../images/pem_upgrade_agent_ready_install.png) + +The setup wizard displays progress bars to inform you of each component that is being installed. + +The `PEM Agent Setup Wizard` will inform you when the installation completes. Click `Finish` to exit the wizard and close the window. + +![The PEM Agent Installer - Finish](../../images/pem_upgrade_agent_finish.png) + +After the installation completes, a window pops-up to restart the machine. Click `Yes` to restart the machine and the PEM Agent. + +![The PEM Agent Installer - Restart pop-up](../../images/pem_upgrade_agent_restart_pop_up.png) + +## Upgrading the PEM Server on a Windows Host + +The PEM Server installer facilitates upgrading directly between major versions of the PEM Server; you can upgrade directly from version 5.0 to version 7.16 without first upgrading to version 6.0. + +You can invoke the installer by right-clicking on the downloaded installer's icon, and selecting `Run as Administrator`. + +![The PEM Server Installer - Welcome Window](../../images/pem_upgrade_server_welcome.png) + +The `PEM Server Setup Wizard` welcomes you, as shown in the image. Click `Next` to continue to the `License Agreement`. + +The `PEM Server setup wizard` will prompt you to accept the `License Agreement`. After reviewing the license agreement, check the radio button next to `I accept the agreement`, and click `Next` to continue to the `Existing installation dialog`. + +![The PEM Server Installer - License Agreement](../../images/pem_upgrade_server_license.png) + +The wizard will check the PEM Server host for an existing PEM Server installation; if the wizard locates an installation, it will perform an upgrade. Click `Next` to continue. + +![The PEM Server Installer - Existing PEM Server Location](../../images/pem_upgrade_server_existing_installation.png) + +Before upgrading the PEM Server, the wizard will confirm that the requirements of the new PEM Server are present. If any supporting components are missing, or are a version that will not support the new PEM installation, the PEM installation wizard will inform you that it must upgrade the dependencies, and will invoke the required installers. + +![The PEM Server Installater - Missing Dependencies](../../images/pem_upgrade_server_dependency_missing.png) + +When the installation wizards complete the dependency upgrades, then a window pops-up asking whether you want to restart the machine or not. + +![The PEM Server Installer - Restart pop-up](../../images/pem_upgrade_server_pop_up.png) + +Click on `No` to continue the upgrade process. + +The wizard then opens the `Database Server Installation Details` dialog, prompting you for connection credentials for the database superuser of the PEM backend database. Provide: + +- The name of the database superuser in the `User` field. +- The password associated with the database superuser in the `Password` field. + +Click `Next` to continue. + +![The PEM Server Installer - Database Server Installation Details](../../images/pem_upgrade_server_DB_installation.png) + +The `pemAgent service account` dialog may prompt you for the password of the account under which the PEM agent service runs. + +![The PEM Server Installer - pemAgent Service Account password](../../images/pem_upgrade_server_pemAgent_service_account.png) + +If prompted, provide the password, and click `Next` to continue. + +![The PEM Server Installer - Ready to Install](../../images/pem_upgrade_server_ready_install.png) + +The `Ready to Install` dialog will inform you that the setup wizard is ready to perform the installation. Click `Next` to start the installation. + +During the installation, progress bars will keep you informed of the progress of the update. + +![The PEM Server installation in progress](../../images/pem_upgrade_server_installing.png) + +After upgrading the PEM Server (and the agent that resides on the same host as the PEM server) and configuring the web service, the PEM setup wizard notifies you of the port on which the service is listening. Use this port number when connecting to the PEM Server with the PEM client. + +![The PEM Server Installer - the PEM Web Service configured](../../images/pem_upgrade_server_webservice_configure.png) + +Click `OK` to close the `Info` popup. The PEM server setup wizard informs you that the installation is complete. + +![The PEM Server Installer - Upgrade Completion](../../images/pem_upgrade_server_finish.png) + +If the window pops-up asking to restart the machine, then click on `Yes` to restart the machine and hence the `httpd` service. + +If you have installed the PEM backend database server and PEM-HTTPD on different hosts, then you must run the PEM Server installer twice – once on each host. Extract the language pack installer, and install it on the host of PEM-HTTPD before invoking the PEM installer. Include the following keywords when invoking the installer to extract the language pack: + +`--extract-languagepack ` + +Where `` specifies an existing path for extracting the language pack installer. + +!!! Note + By default EDB Language Pack is installed in `C:\edb\languagepack\v1`. + +If you are upgrading the PEM Server via StackBuilder Plus then you might face the error shown below; after displaying the error, PEM will say that installation is completed. Please note that the installation is not done and you will need to do the installation by invoking the installer file from the location where it is downloaded. + +![The PEM Server upgrade error](../../images/pem_upgrade_server_error.png) + +After upgrading the PEM Server, you may wish to upgrade the backend database to a more recent version; for information about upgrading the backend database, see [Upgrading the Backend Postgres Database](../02_upgrading_backend_database/#upgrading_backend_database). + +## Upgrading SQL Profiler on a Windows Host + +If you are using SQL Profiler on a Windows host, Windows will lock any files that have been executed or loaded into memory. To release any locked files, you must stop the Postgres server before performing an upgrade. + +On Windows, you can use the `Services` dialog to control the service. To open the `Services` dialog, navigate through the `Control Panel` to the `System and Security menu`. Select `Administrative Tools`, and then double-click the `Services` icon. When the `Services` dialog opens, highlight the service name in the list, and use the option provided on the dialog to `Stop` the service. + +After stopping the Postgres Server: + +1. Delete the existing SQL Profiler query set on each node by invoking the `uninstall-sql-profiler.sql` script. By default, on a Windows host the script resides in the `share\contrib` directory under your Advanced Server or PostgreSQL installation. + + You can use the following server-specific commands. + + For PostgreSQL: + + ```text + psql -f C:\Program Files\PostgreSQL\\share\contrib\uninstall-sql-profiler.sql -d postgres -U postgres + ``` + + Where, `x` is the version of PostgreSQL and `-d` specifies the name of the maintenance database. + + For Advanced Server: + + ```text + psql -f C:\Program Files\edb\as\share\contrib\uninstall-sql-profiler.sql -d edb -U enterprisedb + ``` + + Where `x` is the version of Advanced Server and `-d` specifies the name of the maintenance database. + +2. Invoke the new SQL Profiler installer on each node you wish to profile; run the installer as `Administrator`. + + For PostgreSQL: + + ```text + sqlprofiler-pg---windows-x64.exe + ``` + + Where, `x` is the version of the PostgreSQL and `y` is the version of SQL Profiler. For example: `sqlprofiler-pg-12-7.14.0-1-windows-x64.exe`. + + For Advanced Server: + + ```text + sqlprofiler-edb-as--windows-x64.exe + ``` + + Where `x` is the version of Advanced Server and `y` is the version of SQL Profiler. For example: `sqlprofiler-edb-as12-7.14.0-1-windows-x64.exe`. + + The SQL Profiler installer will detect the existing `SQL Profiler` installation and upgrade it with the latest version of SQL Profiler. + +3. Run the `sql-profiler.sql` script file in the maintenance database. + + For PostgreSQL: + + ```text + psql -f C:\Program Files\PostgreSQL\\share\contrib\sql-profiler.sql -d postgres -U postgres + ``` + + Where `x` is the version of PostgreSQL and `-d` specifies the name of the maintenance database. + + For Advanced Server: + + ```text + psql -f C:\Program Files\edb\as\share\contrib\sql-profiler.sql -d edb -U enterprisedb + ``` + + Where, `x` is the version of Advanced Server and `-d` specifies the name of the maintenance database. + +4. Then, restart the Postgres Server to resume profiling the node from a PEM client. + +After updating the PEM components, you are ready to update the backend database. diff --git a/product_docs/docs/pem/7.16/pem_upgrade/01_upgrading_pem_installation/02_upgrading_pem_installation_linux_rpm.mdx b/product_docs/docs/pem/7.16/pem_upgrade/01_upgrading_pem_installation/02_upgrading_pem_installation_linux_rpm.mdx new file mode 100644 index 00000000000..48ed8272eb4 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_upgrade/01_upgrading_pem_installation/02_upgrading_pem_installation_linux_rpm.mdx @@ -0,0 +1,244 @@ +--- +title: "Upgrading a PEM Native Package Installation on a Linux Host" +--- + +To upgrade PEM component software on Linux hosts, simply install a newer version of the PEM component native packages in the following order: + +1. Invoke the PEM agent native package installer on each monitored node `except` the PEM server host. +2. Invoke the PEM server native package installer; it will upgrade `both` the PEM server and the PEM agent that resides on the PEM server host. + +During an installation, the component installation will automatically detect an existing installation, and perform an upgrade. After upgrading the PEM agent and server, you can upgrade SQL Profiler if required; this step is platform-specific. + +!!! Note + If you have already configured or are planning to configure any shell/batch script run by a Linux agent that is upgraded from any lower version to 7.11 or later version, the user for the `batch_script_user` parameter must be specified in the `agent.cfg` file. It is strongly recommended that a non-root user is used to run the scripts. Using the root user may result in compromising the data security and operating system security. However, if you want to restore the `pemagent` to its original settings using a root user to run the scripts, then the `batch_script_user` parameter value must be set to `root`. + +The following sections will walk you through the upgrade process on a Linux host, step-by-step. + +## Prerequisites to Upgrade a PEM Installation on Linux Host + +PEM is dependent on third-party components from the vendor repository, including the python3, libboost, openssl, snmp++, libcurl, etc. To ensure these components are up to date, you should update your operating system using following platform-specific commands. Minimum version require for openssl is 1.0.2k. If you are using a version of PostgreSQL or Advanced Server older than version 10, before the upgrade you must install the `libs` package for version 10 or above on the system where the PEM server is installed. Use the following platform-specific commands to install the `libs` version 10 or above on your host: + +### Prerequisites to Upgrade a PEM Installation on a CentOS or RHEL Host + +To upgrade packages on a CentOS or RHEL 7.x host + +```text +yum upgrade +``` + +To upgrade packages on a CentOS or RHEL 8.x host + +```text +dnf upgrade +``` + +To upgrade Advanced Server libs: + +```text +yum install edb-as-server-libs +``` + +To upgrade PostgreSQL libs: + +```text +yum install postgresql-libs +``` + +Where `` is the PostgreSQL or Advanced Server version whose `libs` package you want to install. + +### Prerequisites to Upgrade a PEM Installation on a Debian or Ubuntu Host + +To upgrade packages on a Debian or Ubuntu host + +```text +apt-get update +``` + +To upgrade Advanced Server libs: + +```text +apt-get install edb-as-server-libs +``` + +To upgrade PostgreSQL libs: + +```text +apt-get install postgresql-libs +``` + +Where `` is the PostgreSQL or Advanced Server version whose `libs` package you want to install. + +### Prerequisites to Upgrade a PEM Installation on a SLES Host + +To upgrade packages on a SLES host + +```text +zypper update +``` + +To upgrade Advanced Server libs: + +```text +zypper install edb-as-server-libs +``` + +To upgrade PostgreSQL libs: + +```text +zypper install postgresql-libs +``` + +Where `` is the PostgreSQL or Advanced Server version whose `libs` package you want to install. + +## Upgrading a PEM Agent Native Package Installation + +You can use native packages to upgrade existing PEM Agents that were initially installed using native packages. The upgrade process does not update the PEM agent configuration file. After installing the new agent, you must manually copy the configuration file of the existing agent to the new installation location. + +### Upgrading the PEM Agent on a CentOS or RHEL Host + +For CentOS or RHEL 7.x or 8.x: + +To upgrade a PEM agent, use the following command: + +```text +yum upgrade edb-pem-agent +``` + +For CentOS or RHEL 8.x, you can also use the following command: + +```text +dnf upgrade edb-pem-agent +``` + +### Upgrading a PEM Agent on a Debian or Ubuntu Host + +To upgrade a PEM Agent, use the following command: + +```text +apt-get upgrade edb-pem-agent +``` + +### Upgrading a PEM Agent on a SLES Host + +To upgrade a PEM Agent, use the following command: + +```text +zypper update edb-pem-agent +``` + +## Upgrading a PEM Server Native Package Installation + +If you initially used native packages to install your PEM server, you can use native packages to upgrade your PEM server. The commands to upgrade are platform-specific; please refer to your platform's section below. + +If you wish to upgrade a PEM server that is installed on a machine in an isolated network, you need to create a PEM repository on that machine before you upgrade the PEM server. For more information about creating a PEM repository on an isolated network, see [Creating a PEM Repository on an Isolated Network](03_creating_pem_repository_in_isolated_network/#creating_pem_repository_in_isolated_network). + +### Upgrading a PEM Server on a CentOS or RHEL Host + +To use an RPM package to upgrade an existing RPM installation you must: + +You can use the `yum` package manager to upgrade the installed version of the PEM server on CentOS or RHEL 7.x or 8.x: + +```text +yum upgrade edb-pem +``` + +You can also use the `dnf` command on CentOS or RHEL 8.x: + +```text +dnf upgrade edb-pem +``` + +!!! Note + If you are doing a fresh installation of the PEM Server on CentOS or RHEL 7.x host, the installer will install the edb-python3-mod_wsgi package along with the installation as the package is a requirement of the operating system. If you are *upgrading* the PEM Server on CentOS or RHEL 7.x host, the mod_wsgi package will be replaced by the edb-python3-mod_wsgi package to meet the requirements of the operating system. + +After upgrading the PEM Server using `yum` or `dnf`, you must configure the PEM Server. For more detailed information see [Configuring the PEM Server on Linux Platforms](05_configuring_the_pem_server_on_linux_platforms/#configuring_the_pem_server_on_linux_platforms). + +### Upgrading the PEM Server on a Debian or Ubuntu Host + +You can use the `apt-get` package manager to upgrade the installed version of the PEM Server on supported versions of Debian or Ubuntu: + +```text +apt-get upgrade edb-pem +``` + +After upgrading the PEM Server with `apt-get`, you need to configure the PEM Server. For more detailed information see [Configuring the PEM Server on Linux Platforms](05_configuring_the_pem_server_on_linux_platforms/#configuring_the_pem_server_on_linux_platforms). + +### Upgrading the PEM Server on a SLES Host + +You can use the `zypper` package manager to upgrade the installed version of the PEM Server on supported versions of SLES Host: + +```text +zypper update edb-pem +``` + +After upgrading the PEM Server using `zypper`, you need to configure the PEM Server. For more detailed information see [Configuring the PEM Server on Linux platforms](05_configuring_the_pem_server_on_linux_platforms/#configuring_the_pem_server_on_linux_platforms). + +## Upgrading a SQL Profiler Native Package Installation + +To upgrade a SQL Profiler installation that resides on a Linux host: + +1. Delete the existing SQL Profiler query set on each node by invoking the `uninstall-sql-profiler.sql` script. By default, on a Linux host the script resides in the `share/contrib` directory under your Advanced Server or PostgreSQL installation. + + You can use the following server-specific command: + + For PostgreSQL: + + ```text + /usr/pgsql-/bin/psql -f /usr/pgsql-/share/contrib/uninstall-sql-profiler.sql -d postgres -U postgres + ``` + + Where, `x` is the version of PostgreSQL and `-d` specifies the name of the maintenance database. + + For Advanced Server: + + ```text + /usr/edb/as/bin/psql -f /usr/edb/as/share/contrib/uninstall-sql-profiler.sql -d edb -U enterprisedb + ``` + + Where, `x` is the version of Advanced Server and `-d` specifies the name of the maintenance database. + +2. Invoke the new SQL Profiler installer on each node you wish to profile. + + For PostgreSQL: + + ```text + yum upgrade postgresql-sqlprofiler + ``` + + Where, `x` is the version of the PostgreSQL. + + For Advanced Server: + + ```text + yum upgrade edb-as-server-sqlprofiler + ``` + + Where `x` is the version of Advanced Server. + +The installer will detect the existing `SQL Profiler` installation and upgrade with the latest version of SQL Profiler. + +Please see the following example of upgrading SQL Profiler for PostgreSQL: + +![Upgrading SQL Profiler](../../images/sqlprofiler_upgrade.png) + +3. Then, run the `sql-profiler.sql` script file in the maintenance database. + + For PostgreSQL: + + ```text + /usr/pgsql-/bin/psql -f /usr/pgsql-/share/contrib/sql-profiler.sql -d postgres -U postgres + ``` + + Where, `x` is the version of PostgreSQL and `-d` specifies the name of the maintenance database. + + For Advanced Server: + + ```text + /usr/edb/as/bin/psql -f /usr/edb/as/share/contrib/sql-profiler.sql -d edb -U enterprisedb + ``` + + Where, `x` is the version of Advanced Server and `-d` specifies the name of the maintenance database. + +4. Restart the PostgreSQL/Advanced Server to resume profiling the node from the PEM Client. + +After updating the PEM components, you are ready to update the backend database. diff --git a/product_docs/docs/pem/7.16/pem_upgrade/01_upgrading_pem_installation/03_creating_pem_repository_in_isolated_network.mdx b/product_docs/docs/pem/7.16/pem_upgrade/01_upgrading_pem_installation/03_creating_pem_repository_in_isolated_network.mdx new file mode 100644 index 00000000000..3fabff9dc84 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_upgrade/01_upgrading_pem_installation/03_creating_pem_repository_in_isolated_network.mdx @@ -0,0 +1,67 @@ +--- +title: "Creating a PEM Repository on an Isolated Network" +--- + +You can create a local repository to act as a host for the PEM RPM packages if the server on which you wish to upgrade PEM cannot directly access the EDB repository. Please note that this is a high-level overview of the steps required; you may need to modify the process for your individual network. To create and use a local repository, you must: + +1. Use the following commands on a system with Internet access to download the dependencies for PEM: + + ```text + yum install yum-plugin-downloadonly + + mkdir / + + yum install --downloadonly --downloaddir=// edb-pem + + mkdir / + + yum install --downloadonly --downloaddir=// epel-release* + ``` + + Where `` and `` are the local directories that you create for downloading the RPMs. + +2. Copy the directories `/` and `/` to the machine that is in the isolated network. + +3. Create the repositories: + + ```text + createrepo / + + createrepo / + ``` + +4. Create a repository configuration file called `/etc/yum.repos.d/pem.repo` with connection information that specifies: + + ```text + [pemrepo] + name=PEM Repository + baseurl=file:///pem7/ + enabled=1 + gpgcheck=0 + ``` + +5. Create a repository configuration file called `/etc/yum.repos.d/epel.repo` with connection information that specifies: + + ```text + [epelrepo] + name=epel Repository + baseurl=file:///pem7/ + enabled=1 + gpgcheck=0 + ``` + +6. After specifying the location and connection information for your local repository, you can use yum commands to install or upgrade PEM server: + + To install PEM server: + + ```text + yum install edb-pem + ``` + + To upgrade PEM server: + + ```text + yum upgrade edb-pem + ``` + +For more information about creating a local yum repository, visit: diff --git a/product_docs/docs/pem/7.16/pem_upgrade/01_upgrading_pem_installation/04_upgrading_pem_installation_linux_graphical.mdx b/product_docs/docs/pem/7.16/pem_upgrade/01_upgrading_pem_installation/04_upgrading_pem_installation_linux_graphical.mdx new file mode 100644 index 00000000000..914f3466b38 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_upgrade/01_upgrading_pem_installation/04_upgrading_pem_installation_linux_graphical.mdx @@ -0,0 +1,450 @@ +--- +title: "Upgrading a Graphical PEM Installation on a Linux Host" +--- + +To upgrade PEM component software on Linux hosts, simply install a newer version of the PEM component native packages in the following order: + +1. Invoke the PEM Agent native package installation on each monitored node `except` the PEM server host. +2. Invoke the PEM server native package installation; it will upgrade `both` the PEM server and the PEM Agent that resides on the PEM server host. + +During an installation, the component installation will automatically detect an existing installation, and perform an upgrade. After upgrading the PEM Agent and server, you can upgrade SQL Profiler if required; this step is platform-specific. + +The following section walks you through the process of upgrading a PEM installation that was performed via a graphical installer on a Linux host. + +## Prerequisites to Upgrade a PEM Installation on a Linux Host + +If you are using a version of Postgres or Advanced Server released older than version 10, before the upgrade you must install the `libs` package for version 10 or above on the system where the PEM server is installed. + +For Advanced Server: + +```text +yum install edb-as-server-libs +``` + +For PostgreSQL: + +```text +yum install postgresql-libs +``` + +Where `` is the Postgres or Advanced Server version whose libs package you want to install. + +## Upgrading a PEM Agent (Graphical Installation) on a CentOS or RHEL Host + +The default installation location for the PEM Agent when installed by the graphical installer is `/opt/edb/pem`. In the example that follows, substitute your server installation location for ``. + +1. Use the version specific command to stop the `pemagent` service. + + On a CentOS or RHEL 7.x 0r 8.x host: + + ```text + systemctl stop pemagent + ``` + +2. Install the supporting `epel-release` package on the host by running any one of the following commands: + + ```text + yum install epel-release + ``` + + ```text + yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-.noarch.rpm + ``` + + Where `X` is the OS version. + + !!! Note + You may need to enable the `[extras]` repository definition in the `CentOS-Base.repo` file (located in `/etc/yum.repos.d`). + + ``` + If you are a Red Hat Network user, + + - You must also enable the `rhel--server-optional-rpms` repository to use EPEL packages, where *x* specifies the version of RHEL on the host. You can make the repository accessible by enabling the `RHEL optional subchannel` for `RHN-Classic`. If you have a certificate-based subscription, then you must also enable `rhel--server-eus-optional-rpms` repository to use EPEL packages or please see the `Red Hat Subscription Management Guide` for the required repository. + - You must also enable the `rhel--server-extras-rpms` repository, where `x` specifies the version of the RHEL on the host. + ``` + + +3. Install and configure the `edb.repo` file: + + a. You must also have credentials that allow access to the EDB repository. To request credentials, visit: + + [EDB Repository Access Steps](https://info.enterprisedb.com/rs/069-ALB-339/../images/Repository%20Access%2004-09-2019.pdf). + + b. Create a repository configuration file; assume superuser privileges, and invoke the following command: + + ```text + yum -y install https://yum.enterprisedb.com/edb-repo-rpms/edb-repo-latest.noarch.rpm + ``` + + The repository configuration file is named `edb.repo`. The file resides in `/etc/yum.repos.d`. + + c. After creating the `edb.repo` file, to ensure that the value of the enabled parameter is `1`, and the `USERNAME` and `PASSWORD` placeholders in the `baseurl` specification are replaced with the name and password of a registered EDB user, run the following command: + + ```text + sed -i "s@:@USERNAME:PASSWORD@" /etc/yum.repos.d/edb.repo + ``` + + If you want to install PEM Agent on a machine that is in isolated network, you must first create PEM repository on that machine. For more information about creating PEM repository on an isolated network, see [Creating a PEM repository in an Isolated Network](03_creating_pem_repository_in_isolated_network/#creating_pem_repository_in_isolated_network). + +4. The `yum makecache` command downloads the metadata for the currently enabled repositories; when the command completes, check the available packages to confirm that the list includes the latest PEM Agent: + + On a CentOS or RHEL 7.x or 8.x: + + ```text + yum makecache + + yum list edb-pem-agent + ``` + + On a CentOS or RHEL 8.x: + + ```text + dnf makecache + + dnf list edb-pem-agent + ``` + +5. Install the PEM Agent RPM; when the installation completes, you can use the `yum info` command to confirm installation information for the PEM Agent: + + On a CentOS or RHEL 7.x or 8.x: + + ```text + yum install edb-pem-agent + + yum info edb-pem-agent + ``` + + On a CentOS or RHEL 8.x: + + ```text + dnf install edb-pem-agent + ``` + +6. After installation, copy the PEM Agent configuration file (`agent.cfg`) from the previous location to the location required by the RPM installer: + + ```text + cp /PEM_installation_path/agent/etc/agent.cfg /usr/edb/pem/agent/etc/agent.cfg + ``` + + !!! Note + The Package Mangement and Stremaing Replication features are deprecated from PEM 7.16 version. Please remove these parameters from agent.cfg file while copying the file if existing - allow_package_management and allow_streaming_replication, to avoid any warning messages in the worker log file after PEM Agent service restart. + + a. Open the agent configuration file located at: + + ```text + /usr/edb/pem/agent/etc/agent.cfg + ``` + + Then set the value of the `ca_file` parameter: + + ```text + ca_file=/usr/libexec/libcurl-pem/share/certs/ca-bundle.crt + ``` + + b. Take a backup of the service file and agent certificates: + + On CentOS or RHEL 7.x or 8.x, use the following command to back up the service file: + + ```text + cp /usr/lib/systemd/system/pemagent.service /usr/lib/systemd/system/pemagent.service_bkp + ``` + + Then, copy the agent certificates; in the following commands, `` should specify the agent identifier (for example, agent2 or agent3): + + ```text + mv /root/.pem/.key /root/.pem/.key.bkp + + mv /root/.pem/.crt /root/.pem/.crt.bkp + ``` + + c. Uninstall the PEM agent using bitrock uninstaller: + + ```text + /PEM_installation_path/agent/uninstall-pemagent + ``` + + d. Use version specific commands to restore the service file backup and agent certificates to original location. For example: + + On a RHEL or CentOS 7.x or 8.x host: + + ```text + cp /usr/lib/systemd/system/pemagent.service_bkp /usr/lib/systemd/system/pemagent.service + ``` + + Then, move the agent certificate files; in the following commands, `` should specify the agent identifier (for example, agent2 or agent3): + + ```text + mv /root/.pem/.key.bkp /root/.pem/.key + + mv /root/.pem/.crt.bkp /root/.pem/.crt + ``` + +7. Enable the `pemagent` service, and start `pemagent` and `httpd`. + + On a RHEL or CentOS 7.x or 8.x host, use the commands: + + ```text + systemctl enable pemagent + + systemctl start pemagent + ``` + +At this point, the PEM agent should be up and running; you can use the PEM web interface to check the agent version and status. + +## Upgrading a PEM Server that was Installed with a Graphical Installer + +The default installation location for the PEM server when installed by the graphical installer is `/opt/edb/pem`. In the example that follows, substitute your server installation location for ``. + +### Upgrading a PEM Server that was Installed with a Graphical Installer on a CentOS or RHEL Host + +1. Logout from PEM. + +2. Stop the PEMHTTPD service on PEM server. In case PEM server and web server are on two different systems, run the command on the web server: + + On a CentOS or RHEL 7.x 0r 8.x host: + + ```text + systemctl stop PEMHTTPD + systemctl stop pemagent + ``` + +3. Install the supporting `epel-release` package on the host by running any one of the following commands: + + ```text + yum install epel-release + ``` + + ```text + yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-.noarch.rpm + ``` + + Where `` is the OS version. + + !!! Note + You may need to enable the `[extras]` repository definition in the `CentOS-Base.repo` file (located in `/etc/yum.repos.d`). + + If you are a Red Hat Network user, + + - You must also enable the `rhel--server-optional-rpms` repository to use EPEL packages, where *x* specifies the version of RHEL on the host. You can make the repository accessible by enabling the `RHEL optional subchannel` for `RHN-Classic`. If you have a certificate-based subscription, then you must also enable `rhel--server-eus-optional-rpms` repository to use EPEL packages or please see the `Red Hat Subscription Management Guide` for the required repository. + - You must also enable the `rhel--server-extras-rpms` repository, where `x` specifies the version of the RHEL on the host. + +4. Install and configure edb.repo file: + + a. You must also have credentials that allow access to the EDB repository. To request credentials, visit: + + [EDB Repository Access Steps](https://info.enterprisedb.com/rs/069-ALB-339/../images/Repository%20Access%2004-09-2019.pdf). + + b. Create a repository configuration file; assume superuser privileges, and invoke the following command: + + ```text + yum -y install https://yum.enterprisedb.com/edb-repo-rpms/edb-repo-latest.noarch.rpm + ``` + + The repository configuration file is named `edb.repo`. The file resides in `/etc/yum.repos.d`. + + c. After creating the `edb.repo` file, to ensure that the value of the enabled parameter is `1`, and the `username` + and `password` placeholders in the `baseurl` specification are replaced with the name and password of a registered EDB user, run the following command:. + + ```text + sed -i "s@:@USERNAME:PASSWORD@" /etc/yum.repos.d/edb.repo + ``` + + If you want to install PEM Agent on a machine that is in isolated network, you must first create PEM repository on that machine. For more information about creating PEM repository on an isolated network, see [Creating a PEM repository in an Isolated Network](03_creating_pem_repository_in_isolated_network/#creating_pem_repository_in_isolated_network). + +5. The `yum makecache` command downloads the metadata for the currently enabled repositories; when the command completes, check the available packages to confirm that the list includes the latest PEM Server: + + On a CentOS or RHEL 7.x or 8.x: + + ```text + yum makecache + + yum list edb-pem + ``` + + On a CentOS or RHEL 8.x: + + ```text + dnf makecache + + dnf list edb-pem + ``` + +6. Install the PEM Server RPM; when the installation completes, you can use the `yum info` command to confirm installation information for the PEM Server: + + On a CentOS or RHEL 7.x or 8.x: + + ```text + yum install edb-pem + + yum info edb-pem + ``` + + On a CentOS or RHEL 8.x: + + ```text + dnf install edb-pem + ``` + +7. After installation, copy the `agent.cfg` file from the current location (the location required by the graphical installer) to the location required by the RPM package: + + ```text + cp //agent/etc/agent.cfg /usr/edb/pem/agent/etc/agent.cfg + ``` + +8. Open the agent configuration file located at: + + ```text + /usr/edb/pem/agent/etc/agent.cfg + ``` + + Then, set the value of the `ca_file` parameter: + + ```text + ca_file=/usr/libexec/libcurl-pem/share/certs/ca-bundle.crt + ``` + +9. Copy the `pem.db` file (and other required files) to the RPM installation location and change the file ownership. In case PEM server and web server are on two different systems, run the below commands on the web server: + + ```text + cp -r //server/share/pemhome/.pem/* /var/lib/pemhome/.pem/ + + chown -R pem:pem /var/lib/pemhome/.pem/ + ``` + +10. Change the home directory in the `passwd` file from the location identified by the graphical installer to the RPM location. In case PEM server and web server are on two different systems, run the commands on PEM server as well as web server: + + ```text + usermod -m -d /var/lib/pemhome pem + + cat /etc/passwd | grep pem + ``` + +11. Take a backup of the PEM service file and agent certificates: + + ```text + cp /usr/lib/systemd/system/pemagent.service /usr/lib/systemd/system/pemagent.service_bkp + + mv /root/.pem/agent1.key /root/.pem/agent1.key.bkp + + mv /root/.pem/agent1.crt /root/.pem/agent1.crt.bkp + ``` + +12. Uninstall the PEM server using the graphical uninstaller from PEM server and web server machines: + + ```text + / /server/uninstall-pemserver + ``` + +13. Restore the service file backup and agent certificates to original location on PEM server. + + ```text + cp /usr/lib/systemd/system/pemagent.service_bkp /usr/lib/systemd/system/pemagent.service + + mv /root/.pem/agent1.crt.bkp /root/.pem/agent1.crt + + mv /root/.pem/agent1.key.bkp /root/.pem/agent1.key + ``` + +14. Install the sslutils through RPM or Installer (In case of Windows, you may want to stop the database server before installation as installer may not be able to overwrite the file otherwise it would require system restart) + + Restart the database server (Restarting the database server is required as shared object of the extension has been upgraded) + + Refer section [Install sslutils](../02_upgrading_backend_database/#upgrading_backend_database) + + Use "ALTER EXTENSION" statement to upgrade the version + + ```text + ALTER EXTENSION sslutils UPDATE [ TO new_version ] + ``` + +15. Execute the PEM RPM configuration script on PEM server and web server; when prompted, provide the backend database details: the script should run without generating errors: + + ```text + /usr/edb/pem/bin/configure-pem-server.sh + ``` + +16. Enable the `pemagent` service on PEM server and web server. Start the `pemagent` and `httpd` services on the web server. + + On a CentOS or RHEL 7.x 0r 8.x host: + + ```text + systemctl enable pemagent + + systemctl start pemagent + + systemctl start httpd + ``` + +17. Launch the PEM web interface. Check the server and agent to confirm the PEM version, server status, and schema version. At this point, everything should be up and running. + +18. You can now uninstall the PEMHTTD service from your web server, as it is no longer in use. + + ```text + /opt/edb/pem/httpd/uninstall-pemhttpd + ``` + +## Upgrading a SQL Profiler Installation with a Graphical Installer + +SQL Profiler graphical installers are available for PostgreSQL and Advanced Server versions prior to 11.x (i.e. 10.x, 9.6). + +To upgrade a SQL Profiler installation on a Linux host: + +1. Delete the existing SQL Profiler query set on each node by invoking the `uninstall-sql-profiler.sql` script. By default, if you are using PostgreSQL on a Linux host that was installed with a graphical installer, the script resides in the `share/postgresql/contrib` directory under the PostgreSQL installation; for Advanced Server, the script resides in the `share/contrib` directory under the Advanced Server installation. You can use the following server-specific commands. + + For PostgreSQL: + + ```text + /opt/PostgreSQL//bin/psql -f /opt/PostgreSQL//share/postgresql/contrib/uninstall-sql-profiler.sql -d postgres -U postgres + ``` + + Where, `x` is the version of PostgreSQL and `-d` specifies the name of the maintenance database. + + For Advanced Server: + + ```text + /opt/edb/as/bin/psql -f /opt/edb/as/share/contrib/uninstall-sql-profiler.sql -d edb -U enterprisedb + ``` + + Where, `x` is the version of Advanced Server and `-d` specifies the name of the maintenance database. + +2. Then, invoke the new SQL Profiler installer on each node you wish to profile. Run the installer as Administrator: + + For a PostgreSQL host: + + ```text + sqlprofiler-pg---linux.exe + ``` + + Where `x` is the version of the PostgreSQL and `y` is the version of SQL Profiler. For example: `sqlprofiler-pg-12-7.14.0-1-linux.exe`. + + For Advanced Server: + + ```text + sqlprofiler-edb-as--linux.exe + ``` + + Where `x` is the version of Advanced Server and `y` is the version of SQL Profiler. For example: `sqlprofiler-edb-as12-7.14.0-1-linux.exe`. + + The SQL Profiler installer will detect the existing `SQL Profiler` installation and upgrade it with the latest version of SQL Profiler. + +3. Run the `sql-profiler.sql` script file in the maintenance database. + + For PostgreSQL: + + ```text + /opt/PostgreSQL//bin/psql -f /opt/PostgreSQL//share/postgresql/contrib/sql-profiler.sql -d postgres -U postgres + ``` + + Where, `x` is the version of PostgreSQL and `-d` specifies the name of the maintenance database. + + For Advanced Server: + + ```text + /opt/edb/as/bin/psql -f /opt/edb/as/share/contrib/sql-profiler.sql -d edb -U enterprisedb + ``` + + Where, `x` is the version of Advanced Server and `-d` specifies the name of the maintenance database. + +4. Restart the PostgreSQL/Advanced Server to resume profiling the node from the PEM Client. + +After updating the PEM components, you are ready to update the backend database. diff --git a/product_docs/docs/pem/7.16/pem_upgrade/01_upgrading_pem_installation/05_configuring_the_pem_server_on_linux_platforms.mdx b/product_docs/docs/pem/7.16/pem_upgrade/01_upgrading_pem_installation/05_configuring_the_pem_server_on_linux_platforms.mdx new file mode 100644 index 00000000000..a97d493d5ef --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_upgrade/01_upgrading_pem_installation/05_configuring_the_pem_server_on_linux_platforms.mdx @@ -0,0 +1,36 @@ +--- +title: "Configuring a PEM Server on a Linux Host" +--- + +After upgrading the PEM Server you can use the following command to configure the PEM Server: + +```text +/usr/edb/pem/bin/configure-pem-server.sh +``` + +When invoking the configuration script, you can include command line options to specify configuration properties; the script will prompt you for values that you omit on the command line. The accepted options are: + +| **Option** | **Description** | +| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `-acp` | Defines PEM Agent certificate path. The default is /root/.pem. | +| `-ci` | CIDR formatted network address range that Agents will connect to the server from, to be added to the server's pg_hba.conf file. For example, 192.168.1.0/24. The default is 0.0.0.0/0. | +| `-dbi` | The directory for the database server installation. For example, /usr/edb/as11 for Advanced Server or /usr/pgsql-11 for PostgreSQL. | +| `-ds` | The unit file name of the PEM database server. For Advanced Server, the default file name is edb-as-11; for PostgreSQL, it is postgresql-11. | +| `-ho` | The host address of the PEM database server. | +| `-p` | The port number of the PEM database server. | +| `-ps` | The service name of the pemagent; the default value is pemagent. | +| `-sp` | The superuser password of the PEM database server. This value is required. | +| `-su` | The superuser name of the PEM database server. | +| `-t` | The installation type: Specify 1 if the configuration is for web services and backend database, 2 if you are configuring web services, or 3 if you are configuring the backend database. If you specify 3, please note that the database must reside on the local host. | +| `-un` | To unregister the PEM server. | +| `-h` | Displays help. | + +If you do not provide configuration properties on the command line, you will be prompted for values by the script. To view script-related help, use the command: + +```text +/usr/edb/pem/bin/configure-pem-server.sh --help +``` + +After executing the PEM server configuration file, use your version-specific service control command to restart the `httpd` service. + +For detailed information about using an RPM package to install or configure the PEM server or PEM Agent, please see the [PEM Linux Installation Guide](https://www.enterprisedb.com/docs/pem/latest/). diff --git a/product_docs/docs/pem/7.16/pem_upgrade/01_upgrading_pem_installation/index.mdx b/product_docs/docs/pem/7.16/pem_upgrade/01_upgrading_pem_installation/index.mdx new file mode 100644 index 00000000000..360690ac9ac --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_upgrade/01_upgrading_pem_installation/index.mdx @@ -0,0 +1,13 @@ +--- +title: "Upgrading a PEM Installation" +--- + +The process of upgrading a PEM installation is platform-specific. You can update a PEM Agent or Server on a Windows host by using the PEM graphical installer available for Windows. Prior to PEM 7.8 release, PEM Agent or Server could be installed on Linux either by using the graphical installer or by using the RPMs. From PEM version 7.8 onwards, PEM graphical installers for Linux are discontinued. To update a PEM Agent or Server on a Linux host from any lower version to PEM 7.9 or higher versions, you must use native packages. + +Links to PEM and SQL Profiler installers and RPMs are available at the [EDB website](https://www.enterprisedb.com/downloads/edb-postgres-enterprise-manager). + +
+ +upgrading_pem_installation_windows upgrading_pem_installation_linux_rpm creating_pem_repository_in_isolated_network upgrading_pem_installation_linux_graphical configuring_the_pem_server_on_linux_platforms + +
diff --git a/product_docs/docs/pem/7.16/pem_upgrade/02_upgrading_backend_database.mdx b/product_docs/docs/pem/7.16/pem_upgrade/02_upgrading_backend_database.mdx new file mode 100644 index 00000000000..051ed317956 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_upgrade/02_upgrading_backend_database.mdx @@ -0,0 +1,423 @@ +--- +title: "Upgrading the PEM Backend Postgres Database" +--- + +If you are updating both PEM components and the PEM backend database, you should perform PEM component updates (the server and Agent) before updating the backend database. For more information about updating PEM component software, see [Upgrading a PEM Installation](01_upgrading_pem_installation/#upgrading_pem_installation). + +!!! Note + From PEM 8.0 onwards, the PostgreSQL or EPAS version 11 or higher are only supported as backend database server. Hence if your backend database server is lower than version 11 then first you need to upgrade your backend database server and then upgrade the PEM components. + +The update process described in this section uses the `pg_upgrade` utility to migrate from one version of the backend server to a more recent version. `pg_upgrade` facilitates migration between any supported version of Postgres, and any subsequent release of Postgres that is supported on the same platform. + +!!! Note + If the source PEM Server is lower than the 7.16 version, then you need to replace the following functions before you run `pg_upgrade`: + + - The `abstime`, `reltime`, and `tinterval` datatypes are deprecated from Postgres version 12 or later, hence to replace those dataypes with `timestamptz` data type use below command: + + ```text + DO + $$ + DECLARE + rec record; + cnt integer; + BEGIN + -- Check for the deprecated type in our user info probe + SELECT count(*) INTO cnt + FROM pem.probe_column + WHERE sql_data_type = ‘abstime’ AND internal_name = ‘valuntil’; + IF cnt = 0 THEN + RETURN; + END IF; + ALTER TABLE pemdata.user_info + ALTER COLUMN valuntil SET DATA TYPE timestamptz; + ALTER TABLE pemhistory.user_info + ALTER COLUMN valuntil SET DATA TYPE timestamptz; + -- Now update the pem.probe_column itself + UPDATE pem.probe_column + SET sql_data_type = ‘timestamptz’ + WHERE sql_data_type = ‘abstime’ AND internal_name = ‘valuntil’; + END; + $$ LANGUAGE ‘plpgsql’; + ``` + + - Replace the below function to avoid any alert errors: + + ```text + CREATE OR REPLACE FUNCTION pem.check_alert_params_array_size( + template_id pem.alert_template.id%type, params text[] + ) + RETURNS bool AS $FUNC$ + DECLARE + res bool := TRUE; + BEGIN + /* + * During restoring the pem database, it does not maintain the order while + * inserting data in the table, and uses the sort table based on the + * names. + * Hence - we need to check the foreign key constraint is present before + * validating these values. + */ + IF EXISTS( + SELECT 1 FROM information_schema.table_constraints + WHERE constraint_name='alert_template_id_fkey' AND + table_name='alert' AND table_schema='pem' + ) THEN + /* + * Need to use the IS TRUE construct outside the main query, because + * otherwise if there's no template by that ID then the query would return + * 0 rows and the result of the function would be undefined and CHECK + * constraint would succeed. + * Probably this is being over-cautious, because pem.alert.template_id + * references pem.alert_template.id. But the SQL standard (probably) does + * not define the order in which the CHECK or the FOREIGN KEY constraints + * should be validated; in case CHECK is validated first, we want it to + * fail. + */ + EXECUTE $SQL$ + SELECT ( + SELECT pem.check_array_size_equal(t.param_names, $2) + FROM pem.alert_template AS t + WHERE id = $1 + ) IS TRUE + $SQL$ INTO res USING template_id, params; + END IF; + RETURN res; + END + $FUNC$ LANGUAGE 'plpgsql'; + ``` + +`pg_upgrade` supports a transfer of data between servers of the same type. For example, you can use `pg_upgrade` to move data from a PostgreSQL 9.6 backend database to a PostgreSQL 11 backend database, but not to an Advanced Server 11 backend database. If you wish to migrate to a different type of backend database (i.e from a PostgreSQL server to Advanced Server), see [Moving the Postgres Enterprise Manager Server](03_moving_pem_server). + +You can find more information about using pg_upgrade at: + + + +1. Download and invoke the updated installer; installers for PostgreSQL and Advanced Server are available through the EDB website: + + + + After downloading the installer for the server version to which you will be upgrading, invoke the installer on the host of the PEM server. Follow the onscreen instructions of the installation wizard to configure and install the Postgres server. + + You can optionally use a custom-built PostgreSQL server as a host of the PEM backend database. Note that if you are upgrading from a PostgreSQL backend database listening on port `5432`, the new server must be configured to listen on a different port. + +2. Configure SSL utilities on the new server. The new backend database must be running the same version of `sslutils` that the current backend database is running; you can download the SSL Utils package that is used in EDB installers at: + + + + You are *not* required to manually add the `sslutils` extension when using the Advanced Server as the new backend database. The process of configuring `sslutils` is platform-specific. + + **On Linux** + + - On an Advanced Server backend database, the sslutils extension is installed by default. + + - If you are using a PostgreSQL as PEM backend database, ensure you have access to the PostgreSQL community repository, and use the command: + + ```text + yum install sslutils_ + ``` + + Where `` is the server version. + + - If you are using a EDB one-click installer of PostgreSQL as PEM backend database + + ```text + yum install gcc openssl-devel + ``` + + Set the value of PATH so it can locate the pg_config program + + ```text + export PATH=$PATH:/opt/postgres_inst_dir//bin/ + ``` + + Move into the sslutils folder, and enter + + ```text + make USE_PGXS=1 + make USE_PGXS=1 install + ``` + + Use psql to create the sslutils extension + + ```text + CREATE EXTENSION sslutils + ``` + + Please note that Debian 10 and Ubuntu 20 has increased the requirements to accept the certificates due to security reason. If a user wants to install the PEM Agent on any of the machines, they must upgrade `ssltuils` to 1.3 where 4096 bit RSA key and sha256 signature algorithm support has added.If the user does not upgrade `sslutils` to 1.3, then PEM Agent may fail to connect to the PEM backend database server, and it might log the error `ca md too weak`. + + **On Windows** + + - `sslutils` must be compiled on the new backend database with the same compiler that was used to compile `sslutils` on the original backend database. If you are moving to a Postgres database that was installed using a PostgreSQL one-click installer (from EDB) or an Advanced Server installer, use Visual Studio to build `sslutils`. If you are upgrading to PostgreSQL 9.6 or later, use Visual Studio 2010. + + For detailed information about building a specific version of Postgres on Windows, please consult the core documentation for that version. Core documentation is available at the PostgreSQL project website at: + + + + - While specific details of the process will vary by platform and compiler, the basic steps on each platform are the same. The example that follows demonstrates compiling OpenSSL support for PostgreSQL on a 32-bit Windows system. + + Before compiling the OpenSSL extension, you must locate and install OpenSSL for your version of Windows. Before invoking the OpenSSL installer you may be required to download and install a pre-requisite redistributable (such as `vcredist_x86.exe`). + + After installing OpenSSL, download and unpack the `sslutils` utility package available at: + + + + - Copy the unpacked `sslutils` folder to the Postgres installation directory (i.e. `C:\ProgramFiles\PostgreSQL\`) + + - Open the Visual Studio command line, and navigate into the `sslutils` directory. Use the following commands to build `sslutils`: + + ```text + SET USE_PGXS=1 + + SET GETTEXTPATH=\ + + SET OPENSSLPATH=\ + + SET PGPATH=\ + + SET ARCH=x86 + + msbuild sslutils.proj /p:Configuration=Release + ``` + + Where: + + - `path_to_gettext` specifies the location of the `GETTEXT` library and header files. + + - `path_to_openssl` specifies the location of the openssl library and header files. + + - `path_to_pg_installation_dir` specifies the location of the Postgres installation. + + - For example, the following set of commands builds OpenSSL support into the PostgreSQL 11 server: + + ```text + SET USE_PGXS=1 + + SET OPENSSLPATH=C:\OpenSSL-Win32 + + SET GETTEXTPATH="C:\Program Files\PostgreSQL\11" + + SET PGPATH="C:\Program Files\PostgreSQL\11" + + SET ARCH=x86 + + msbuild sslutils.proj /p:Configuration=Release + ``` + + - When the build completes, the `sslutils` directory will contain the following files: + + `sslutils--1.3.sql` + + `sslutils--unpackaged--1.3.sql` + + `sslutils--pemagent.sql.in` + + `sslutils.dll` + + - Copy the compiled sslutils files to the appropriate directory for your installation; for example: + + ```text + COPY sslutils*.sql "%PGPATH%\share\extension\" + + COPY sslutils.dll "%PGPATH%\lib\" + + COPY sslutils.control "%PGPATH%\share\extension\" + ``` + +3. Stop the services of both the old backend database and the new backend database. + + On RHEL or CentOS 7.x or 8.x, open a command line and assume the identity of a superuser. Enter the command: + + ```text + systemctl stop + ``` + + Where `` specifies the name of the Postgres service. + + On Windows, you can use the `Services` dialog to control the service. To open the `Services` dialog, navigate through the `Control Panel` to the `System and Security` menu. Select `Administrative Tools`, and then double-click the `Services` icon. When the `Services` dialog opens, highlight the service name in the list, and use the option provided on the dialog to stop the service. + +4. Use the `pg_upgrade` utility to perform an in-place transfer of existing data between the old backend database and the new backend database. If your server is configured to enforce `md5` authentication, you may need to add an entry to the `.pgpass` file that specifies the connection properties (and password) for the database superuser, or modify the `pg_hba.conf` file to allow trust connections before invoking `pg_upgrade`. For more information about creating an entry in the `.pgpass` file, please see the PostgreSQL core documentation, available at: + + + + During the upgrade process, pg_upgrade will write a series of log files. The cluster owner must invoke `pg_upgrade` from a directory in which they have write privileges. If the upgrade completes successfully, `pg_upgrade` will remove the log files when the upgrade completes. To instruct `pg_upgrade` to not delete the upgrade log files, include the `--retain` keyword when invoking `pg_upgrade`. + + To invoke `pg_upgrade`, assume the identity of the cluster owner, navigate into a directory in which the cluster owner has write privileges, and execute the command: + + ```text + pg_upgrade + + -d + + -D + + -b -B + + -p -P + + -u + ``` + + Where: + + - `path_to_pg_upgrade` specifies the location of the pg_upgrade utility. By default, pg_upgrade is installed in the `bin` directory under your Postgres directory. + - `old_data_dir_path` specifies the complete path to the data directory of the old backend database. + - `new_data_dir_path` specifies the complete path to the data directory of the new backend database. + - `old_bin_dir_path` specifies the complete path to the bin directory of the old backend database. + - `new_bin_dir_path` specifies the complete path to the bin directory of the old backend database. + - `old_port` specifies the port on which the old server is listening. + - `new_port` specifies the port on which the new server is listening. + - `user_name` specifies the name of the cluster owner. + + For example, the following command: + + ```text + C:\>"C:\Program Files\PostgreSQL\11\bin\pg_upgrade.exe" + + -d "C:\Program Files\PostgreSQL\9.6\data" + + -D "C:\Program Files\PostgreSQL\11\data" + + -b "C:\Program Files\PostgreSQL\9.6\bin" + + -B "C:\Program Files\PostgreSQL\11\bin" + + -p 5432 -P 5433 + + -U postgres + ``` + + Instructs `pg_upgrade` to migrate the PEM database from PostgreSQL 9.6 to PostgreSQL 11 on a Windows system (if the backend databases are installed in their default locations). + + Once invoked, `pg_upgrade` will perform consistency checks before moving the data to the new backend database. When the upgrade is finished, `pg_upgrade` will notify you that the upgrade is complete. + + For detailed information about using `pg_upgrade` options, or troubleshooting the upgrade process, please see: + + + +5. Copy the following certificate files from the `data` directory of the old backend database to the `data` directory of the new backend database: + + `ca_certificate.crt` + + `ca_key.key` + + `root.crt` + + `root.crl` + + `server.key` + + `server.crt` + + Once in place on the target server, the files should have the (platform-specific) permissions described below: + + **Permissions and Ownership on Linux** + + | **File Name** | **Owner** | **Permissions** | + | ------------------ | --------- | --------------- | + | ca_certificate.crt | postgres | -rw------- | + | ca_key.key | postgres | -rw------- | + | root.crt | postgres | -rw------- | + | root.crl | postgres | -rw------- | + | server.key | postgres | -rw------- | + | server.crt | postgres | -rw-r--r-- | + + On Linux, the certificate files must be owned by `postgres`. You can use the following command at the command line to modify the ownership of the files: + + ```text + chown postgres + ``` + + Where `file_name` specifies the name of the certificate file. + + The `server.crt` file may only be modified by the owner of the file, but may be read by any user. You can use the following command to set the file permissions for the `server.crt` file: + + ```text + chmod 644 server.crt + ``` + + The other certificate files may only be modified or read by the owner of the file. You can use the following command to set the file permissions: + + ```text + chmod 600 + ``` + + Where `file_name` specifies the name of the file. + + **Permissions and Ownership on Windows** + + On Windows, the certificate files moved from the source host must be owned by the service account that performed the PEM server and backend database installation on the target host. If you invoked the PEM server and Postgres installer using the `Run as Administrator` option (selected from the context menu of the installer), the owner of the certificate files will be `Administrators`. + + To review and modify file permissions on Windows, right-click on the file name, and select `Properties`. + + ![The Security tab](../images/upgrade_backendDB_permission_Windows_security.png) + ** The Security tab ** + + Navigate to the `Security` tab and highlight a `Group or user name` to view the assigned permissions. Select `Edit` or `Advanced` to access dialogs that allow you to modify the permissions associated with the selected user. + + +6. The `postgresql.conf` file contains parameter settings that specify server behavior. You will need to modify the `postgresql.conf` file on the new server to match the configuration specified in the `postgresql.conf` file of the old server. + + By default, the `postgresql.conf` file is located: + + - For Postgres version lower than 10 on Linux, in `/opt/PostgreSQL//data` + - For Postgres version 10 or higher when installed with graphical installers on Linux, in `/opt/PostgreSQL//data` + - For Postgres version 10 or higher when installed with an RPM on Linux, in `/usr/pgsql//data` + - For any Postgres version on Windows, in `C:\Program Files\PostgreSQL\\data` + + Where, `` is the version of Postgres on your system. + + Use your choice of editor to update the `postgresql.conf` file of the new server. Modify the following parameters: + + - The `port` parameter to listen on the port monitored by your original backend database (typically, `5432`). + - The `ssl` parameter should be set to `on`. + + You must also ensure that the following parameters are enabled. If the parameters are commented out, remove the pound sign from in front of each `postgresql.conf` file entry: + + - `ssl_cert_file = 'server.crt' # (change requires restart)` + - `ssl_key_file = 'server.key' # (change requires restart)` + - `ssl_ca_file = 'root.crt' # (change requires restart)` + - `ssl_crl_file = 'root.crl'` + + Your installation may have other parameter settings that require modification to ensure that the new backend database behaves in a manner comparable to the old backend database. Review the `postgresql.conf` files carefully to ensure that the configuration of the new server matches the configuration of the old server. + +7. The `pg_hba.conf` file contains parameter settings that specify how the server will enforce host-based authentication. When you install the PEM server, the installer modifies the `pg_hba.conf` file, adding entries to the top of the file: + + `# Adding entries for PEM Agens and admins to connect to PEM server` + + `hostssl pem +pem_user 192.168.2.0/24 md5` + + `hostssl pem +pem_agent 192.168.2.0/24 cert` + + `# Adding entries (localhost) for PEM Agens and admins to connect to PEM server` + + `hostssl pem +pem_user 127.0.0.1/32 md5` + + `hostssl postgres +pem_user 127.0.0.1/32 md5` + + `hostssl pem +pem_user 127.0.0.1/32 md5` + + `hostssl pem +pem_agent 127.0.0.1/32 cert` + + By default, the `pg_hba.conf` file is located at the following location: + + - For Postgres version lower than 10 on Linux, in `/opt/PostgreSQL//data` + - For Postgres version 10 or higher when installed with graphical installers on Linux, in `/Opt/PostgreSQL//data` + - For Postgres version 10 or higher when installed with RPMs on Linux, in `/var/lib/pgsql//data` + - For Advanced Server version 10 or higher when installed with RPMs on Linux, in `/var/lib/edb/as/data` + - For any Postgres version on Windows, in `C:\Program Files\PostgreSQL\\data` + + Where, `` is the version of Postgres on your system. + + Using your editor of choice, copy the entries from the `pg_hba.conf` file of the old server to the `pg_hba.conf` file for the new server. + +8. Restart the service of the new backend database. + + On RHEL or CentOS 7.x or 8.x, open a command line and assume the identity of a superuser. Enter the command: + + ```text + systemctl stop + ``` + + Where `service_name` is the name of the backend database server. + + If you are using Windows, you can use the `Services` dialog to control the service. To open the `Services` dialog, navigate through the `Control Panel` to the `System and Security` menu. Select `Administrative Tools`, and then double-click the `Services` icon. When the `Services` dialog opens, highlight the service name in the list, and use the option provided on the dialog to start the service. diff --git a/product_docs/docs/pem/7.16/pem_upgrade/03_moving_pem_server.mdx b/product_docs/docs/pem/7.16/pem_upgrade/03_moving_pem_server.mdx new file mode 100644 index 00000000000..fc0d1734201 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_upgrade/03_moving_pem_server.mdx @@ -0,0 +1,385 @@ +--- +title: "Moving the Postgres Enterprise Manager Server" +--- + +The steps in this section describe how to move a PEM server from one host machine to a new host machine. The PEM server on the new host (the target) must be installed with the same version of the PEM server installer as the original host (the source). Please note that if you do not use the same installer version, you may encounter a schema-mismatch error. + +The backend database of the target server (either PostgreSQL or Advanced Server) may be of the same type and version, or a different type and version than the backend database of the source PEM server. A PEM server that resides on a PostgreSQL host can be migrated to an Advanced Server host, or vice versa. + +Before starting the server migration, you should ensure that the firewalls between the source host, the target host, and the host of any PEM Agent will allow connections between the services. + +1. Prepare the Target Host + + Invoke the installer for the PEM server on the target host. Please note that you must use the same version of the PEM server installer that you used when installing the source PEM server. + + The backend database of the target server may be a different version or type than the backend database of the source. If the new PEM server does *not* reside on the same type of backend database as the original server, you must ensure that the same version of the `sslutils` extension is installed on the new server host. The version of `sslutils` that is distributed with the PEM installers is freely available for download from the EDB website at: + + + + For information about installing the PEM server or the `sslutils` extension, please refer to the `PEM Installation Guides`, available at: + + [https://www.enterprisedb.com/docs/p/edb-postgres-enterprise-manager](/pem/latest/) + +2. Drop Existing Schemas from the New PEM Server + + The migration process re-creates the `pem`, `pemdata`, and `pemhistory` schemas from the source PEM server on the target PEM server. In preparation for the move, use the `psql` client to delete these schemas from the `pem` database on the target host. You can open the `psql` client at the command line, or by selecting `SQL Shell (psql)` from the `Postgres Enterprise Manager` menu. + + When the `psql` client opens, connect to the `pem` backend database as the database superuser. After connecting to the `pem` database on the target host, use the following commands to drop the schemas: + + ```text + DROP SCHEMA pem CASCADE; + + DROP SCHEMA pemdata CASCADE; + + DROP SCHEMA pemhistory CASCADE; + ``` + + When dropping the schemas, you must include the `CASCADE` keyword, instructing the server to delete all dependent objects. When executing the command, the `psql` client displays a list of the dependent objects; the client confirms each the schema is removed by displaying `DROP SCHEMA`. + +3. Prepare the PEM Agents on the New PEM Server + + Before moving the PEM server, you must identify the number of Agents that are monitored by the source PEM server, and create identities for that number of Agents (less one) on the target server. To discover the total number of `PEM` Agents monitored by the PEM server, connect to the pem database on the source host with the `psql` client, and query the `pem.agent` table. + + ```text + SELECT id FROM pem.agent WHERE active = true; + ``` + + You must manually create the number of Agents that reside on the original PEM server, less one; the PEM server installer has already created one Agent on the target host. For example, if the source server contains three Agents, you must manually create two additional Agents. Open a `psql` session with the `pem` database on the target server, and create the required Agents. Use the command: + + ```text + CREATE USER agent; + ``` + + Where `` specifies an Agent number. Remember, `agent1` is created on the target host by the PEM Server installer. + + Then, use the `GRANT` command to assign each Agent that resides on the target PEM Server `pem_agent` permissions: + + ```text + GRANT pem_agent TO agent; + ``` + + Where `` specifies an agent number. + +4. Generate a Backup Script of the Source PEM Server + + You can use the `pg_dump` utility to generate a script that contains the commands required to recreate the `pem` database on the target host. By default, `pg_dump` is installed in the `bin` directory under your Postgres installation. To invoke `pg_dump`, open a command line, navigate to the `bin` directory, and enter: + + ```text + pg_dump -U > + ``` + + Where: + + - `` specifies the name of the database superuser for the PEM backend database. + - `` specifies the name of the PEM backend database. + - `` specifies the name of the script generated by pg_dump. + + When prompted, provide the password associated with the user specified. + + The command shown instructs `pg_dump` to generate a script that (when executed) will re-create the `pem` database. The script will be named `backup.sql`, and will be created in the `tmp` directory. `pg_dump` is connecting to the server using the credentials of the user, `postgres`. + + Note that invoking the `pg_dump` utility will not interrupt current database users. + + !!! Note + If the source PEM Server is lower than the 7.16 version, then you need to replace the following functions before you run `pg_dump` to take backup: + + + - The ``abstime``, ``reltime``, and ``tinterval`` datatypes are deprecated from Postgres version 12 or later, hence to replace those dataypes with ``timestamptz`` data type use below command: + + ```text + DO + $$ + DECLARE + rec record; + cnt integer; + BEGIN + -- Check for the deprecated type in our user info probe + SELECT count(*) INTO cnt + FROM pem.probe_column + WHERE sql_data_type = ‘abstime’ AND internal_name = ‘valuntil’; + IF cnt = 0 THEN + RETURN; + END IF; + ALTER TABLE pemdata.user_info + ALTER COLUMN valuntil SET DATA TYPE timestamptz; + ALTER TABLE pemhistory.user_info + ALTER COLUMN valuntil SET DATA TYPE timestamptz; + -- Now update the pem.probe_column itself + UPDATE pem.probe_column + SET sql_data_type = ‘timestamptz’ + WHERE sql_data_type = ‘abstime’ AND internal_name = ‘valuntil’; + END; + $$ LANGUAGE ‘plpgsql’; + ``` + + - Replace the below function to avoid any alert errors: + + ```text + CREATE OR REPLACE FUNCTION pem.check_alert_params_array_size( + template_id pem.alert_template.id%type, params text[] + ) + RETURNS bool AS $FUNC$ + DECLARE + res bool := TRUE; + BEGIN + /* + * During restoring the pem database, it does not maintain the order while + * inserting data in the table, and uses the sort table based on the + * names. + * Hence - we need to check the foreign key constraint is present before + * validating these values. + */ + IF EXISTS( + SELECT 1 FROM information_schema.table_constraints + WHERE constraint_name='alert_template_id_fkey' AND + table_name='alert' AND table_schema='pem' + ) THEN + /* + * Need to use the IS TRUE construct outside the main query, because + * otherwise if there's no template by that ID then the query would return + * 0 rows and the result of the function would be undefined and CHECK + * constraint would succeed. + * Probably this is being over-cautious, because pem.alert.template_id + * references pem.alert_template.id. But the SQL standard (probably) does + * not define the order in which the CHECK or the FOREIGN KEY constraints + * should be validated; in case CHECK is validated first, we want it to + * fail. + */ + EXECUTE $SQL$ + SELECT ( + SELECT pem.check_array_size_equal(t.param_names, $2) + FROM pem.alert_template AS t + WHERE id = $1 + ) IS TRUE + $SQL$ INTO res USING template_id, params; + END IF; + RETURN res; + END + $FUNC$ LANGUAGE 'plpgsql'; + ``` + + +5. Move the Backup to the Target Host + + Move the script generated by the `pg_dump` utility to the target host of the PEM server. + +6. Restore the Backup on the Target Host + + Open a command line on the target host and navigate into the `bin` directory (under the Postgres backend database installation directory). Start `psql`, executing the script generated by the `pg_dump` utility: + + ```text + psql -U -d pem -f + ``` + + Where: + + - `` specifies the name of the database superuser. The user specified must have connection privileges for the backend database. + - `` specifies the complete path to the backup script generated by pg_dump. + + When prompted, provide the password associated with the database superuser. + + The example shown uses the `psql` client to invoke a script named `backup.sql` to recreate the `pem` database. The script is invoked using the privileges associated with the database superuser, `postgres`. + +7. Stop the Database Server on the Target Host + + To stop the PEM Server on CentOS or RHEL 7.x or 8.x, use the command: + + ```text + systemctl stop + ``` + + Where, `` specifies the name of the backend database server. For a PostgreSQL backend database, the service name is `postgresql-`, and for an Advanced Server backend database, the service name is `edb-as-`, where `` specifies the version number. + + If you are using Windows, you can use the `Services` dialog to control the service. To open the `Services` dialog, navigate through the `Control Panel` to the `System and Security` menu. Select `Administrative Tools`, and then double-click the `Services` icon. When the `Services` dialog opens, highlight the service name in the list, and use the option provided on the dialog to Stop the service. + +8. Copy the Certificate Files to the Target Host + + You must replace the certificate files that are created when the target host is installed with the certificate files of the source host. Copy the following files from the source PEM server to the target PEM server: + + - `ca_certificate.crt` + - `ca_key.key` + - `root.crt` + - `root.crl` + - `server.key` + - `server.crt` + + Copy the files to the `data` directory under the Postgres installation that provides the backend database for the target cluster. + + On Linux, the files reside in: + + ```text + /var/lib/pgsql//data/ + ``` + + On Windows, the files reside in: + + ```text + C:\Program Files\PostgreSQL\\data + ``` + + Where: + + `` specifies the version of PostgresSQL on your system. + + The files will already exist on the target cluster; delete the existing files before performing the copy, or overwrite the existing files with the files from the source server. Once in place on the target server, the files should have the (platform-specific) permissions described in the sections that follow. + + **Permissions and Ownership on Linux** + + | **File Name** | **Owner** | **Permissions** | + | ------------------ | --------- | --------------- | + | ca_certificate.crt | postgres | -rw------- | + | ca_key.key | postgres | -rw------- | + | root.crt | postgres | -rw------- | + | root.crl | postgres | -rw------- | + | server.key | postgres | -rw------- | + | server.crt | postgres | -rw-r--r-- | + + On Linux, the certificate files must be owned by postgres. You can use the following command at the command line to modify the ownership of the files: + + ```text + chown postgres + ``` + + Where `file_name` specifies the name of the certificate file. + + The server.crt file may only be modified by the owner of the file, but may be read by any user. You can use the following command to set the file permissions for the server.crt file: + + ```text + chmod 644 server.crt + ``` + + The other certificate files may only be modified or read by the owner of the file. You can use the following command to set the file permissions: + + ```text + chmod 600 + ``` + + Where `file_name` specifies the name of the file. + + Permissions and Ownership on Windows + + On Windows, the certificate files moved from the source host must be owned by the service account that performed the PEM server and backend database installation on the target host. If you invoked the PEM server and Postgres installer using the `Run as Administrator` option (selected from the context menu of the installer), the owner of the certificate files will be `Administrators`. + + To review and modify file permissions on Windows, right-click on the file name, and select `Properties`. + + ![The Permissions tab](../images/move_server_windows_permission.png) + ** The Permissions tab ** + + Navigate to the `Security` tab and highlight a `Group or user name` to view the assigned permissions. Select `Edit` or `Advanced` to access dialogs that allow you to modify the permissions associated with the selected user. + + +9. Move the PEM Agent Certificate Files to the PEM Server Host + + You must move the certificate files used by the PEM Agent of the source PEM server to the target host. This step is platform-specific. + + **On Linux** + + Copy the `agent1.key` and `agent1.crt` files from the source host to the target host. By default, on Linux, the files are installed in `/root/.pem`; copy the files to the same directory on the target host. + + File ownership and permissions of the files must be set to: + + | **File Name** | **Owner** | **Permissions** | + | ------------- | --------- | --------------- | + | agent1.key | root | -rw------- | + | agent1.crt | root | -rw-r--r-- | + + If necessary, navigate to `/root/.pem`, and use the following commands to modify the permissions and ownership of the `agent1.key` file: + + ```text + chmod 600 agent1.key + + chown root agent1.key + ``` + + Use the following commands to modify the permissions and ownership of the `agent1.crt` file: + + ```text + chmod 644 agent1.crt + + chown root agent1.crt + ``` + + **On Windows** + + Copy the `agent1.key` and `agent1.crt` files from the source host to the target host. On Windows, the files are located in: + + ```text + C:\Users\\AppData\Roaming\pem + ``` + + Where `user_name` is the name of the user that invoked the PEM installer. + + The ownership and permissions associated with the certificate files on the target machine should match the ownership and permissions of the certificate files on the source machine. If you invoked the PEM server and Postgres installer using the `Run as Administrator` option (selected from the context menu of the installer), the owner of the Agent certificate files will be `Administrators`. + + To review and modify file permissions on Windows, right-click on the file name, and select `Properties`. Navigate to the `Security` tab and highlight a `Group or user name` to view the assigned permissions. Select `Edit` or `Advanced` to access dialogs that allow you to modify the permissions associated with the selected user. + +10. Update the `pg_hba.conf` Files on the Target Host + + Modify the `pg_hba.conf` file on the target host to allow connections from each PEM Agent. By default, the `pg_hba.conf` file is located in the data directory under your Postgres installation. + +11. Start the Server on the Target Host + + After modifying the `pg_hba.conf` file, you must restart the server for the changes to take effect. + + To restart the database server on Linux, use the command: + + ```text + /etc/init.d/ start + ``` + + Where `service_name` is the name of the backend database server. + + If you are using Windows, you can use the `Services` dialog to control the service. To open the `Services` dialog, navigate through the `Control Panel` to the `System and Security` menu. Select `Administrative Tools`, and then double-click the `Services` icon. When the `Services` dialog opens, highlight the service name in the list, and use the option provided on the dialog to Start the service. + +12. Connecting Monitored Agents to the New PEM Server Host + + To instruct existing PEM Agents to connect to the new PEM server host, you must: + + - Ensure that the PEM Agent host can connect to the new PEM server host. + - Modify the registry (on each Windows host with a PEM Agent) or the Agent configuration files (on each Linux host with a PEM Agent), specifying the IP address and port of the new PEM server. + - Restart the PEM Agent's service. These steps are platform-specific: + - [On Linux](#if_the_pem_agent_resides_on_linux) + - [On Windows](#if_the_pem_agent_resides_on_windows) + + **If the PEM Agent Resides on Linux** + + Use your choice of editor to modify the `agent.cfg` file, specifying the new IP address and port number of the PEM server in the `pem_host` and `pem_port` parameters. + + By default, the `agent.cfg` file is located in: + + `/usr/edb/pem/agent/etc/agent.cfg` + + ![The agent.cfg file](../images/move_pem_server_agent_cfg.png) + + After modifying the `agent.cfg` file, you must restart the PEM Agent service; you can use the `pemagent` service script on the Linux command line to restart the service: + + ```text + /etc/init.d/pemagent restart + ``` + + **If the PEM Agent Resides on Windows** + + Before modifying the Windows registry on the monitored node, confirm that the firewall on the host of the PEM Agent will allow connections to the PEM server. After confirming that the PEM Agent host can connect to the PEM server host, you can use the Windows `Registry Editor` to review and edit the `PEM_HOST` and `PEM_PORT` entries to ensure that they correctly identify the host and port used by the PEM server. To open the `Registry Editor`, enter `regedit` in the Windows `Run` dialog or in the Windows start menu search box. Navigate through the registry tree control to view or modify registry entries. + + On 64-bit Windows, the PEM Agent registry entries are located: + + `HKEY_LOCAL_MACHINE SOFTWARE wow6432Mode EnterpriseDB PEM Agent` + + On 32-bit Windows, the PEM Agent registry entries are located: + + `HKEY_LOCAL_MACHINE SOFTWARE EnterpriseDB PEM Agent` + + ![The Windows Registry Editor](../images/move_pem_server_windows_registry.png) + + The `PEM_HOST` and `PEM_PORT` entries must specify the address and port number of the new PEM server on the target host. To modify a registry entry, right click on the entry `Name`, and select `Modify` from the context menu to open the `Edit String` dialog. + + ![The Windows Registry Editor](../images/move_pem_server_windows_registry_edit.png) + + Use the `Edit String` dialog to make any changes to the value of the entry. When you're finished, click `OK` to save your changes, or `Cancel` to exit without saving. + + After modifying the registry, you must restart the PEM Agent's service; you can use the `Services` dialog (accessed through the Windows `Control Panel`) to restart the `Postgres Enterprise Manager - pemagent` service . + + ![Restarting the PEM Agent service](../images/move_pem_server_restart_agent.png) + ** Restarting the PEM Agent service ** + + After moving the server, change the connection properties in any installed PEM clients to connect to the new host of the PEM server, Agents, and monitored servers. diff --git a/product_docs/docs/pem/7.16/pem_upgrade/04_troubleshooting.mdx b/product_docs/docs/pem/7.16/pem_upgrade/04_troubleshooting.mdx new file mode 100644 index 00000000000..e524e4d96d8 --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_upgrade/04_troubleshooting.mdx @@ -0,0 +1,45 @@ +--- +title: "Troubleshooting" +--- + + + +## Reconfiguring the PEM Server + +In some situations you may need to uninstall the PEM server, install it again, and then reconfigure the server. Use the following commands in the given sequence: + +1. Use the following command to remove the PEM server configuration and uninstall: + + ```text + /usr/edb/pem/bin/configure-pem-server.sh –un + ``` + +2. Use the following command to remove the PEM packages: + + ```text + yum erase edb-pem-server + ``` + +3. Use the following command to drop the `pem` database: + + ```text + DROP DATABASE pem + ``` + +4. Move the certificates from `/root/.pem/` to another location: + + ```text + mv /root/.pem/* + ``` + +5. Move the `agent.cfg` file from `/usr/edb/pem/agent/etc/agent.cfg` to another location: + + ```text + mv /usr/edb/pem/agent/etc/agent.cfg + ``` + +6. Then, use the following command to configure the PEM server again: + + ```text + /usr/edb/pem/bin/configure-pem-server.sh + ``` diff --git a/product_docs/docs/pem/7.16/pem_upgrade/index.mdx b/product_docs/docs/pem/7.16/pem_upgrade/index.mdx new file mode 100644 index 00000000000..0663f5f1deb --- /dev/null +++ b/product_docs/docs/pem/7.16/pem_upgrade/index.mdx @@ -0,0 +1,18 @@ +--- +title: "PEM Upgrade and Migration" +--- + +This guide provides detailed information about upgrading the Postgres Enterprise Manager (PEM) Components: + +- **Upgrading a PEM Installation** - This section provides information about upgrading your PEM Server, PEM Agent and SQL Profiler from one major version to another (i.e. from 6.0 to 7.14). +- **Upgrading the Backend Database** - This section provides detailed information about upgrading the backend database, while maintaining the same version of the PEM Server. +- **Moving a PEM Server** –This section provides detailed information about moving the PEM Server from one host to another host. +- **Troubleshooting** –This section provides detailed information about troubleshooting the errors that you may encounter during PEM upgrade. + +This document uses the term `Postgres` to mean either the PostgreSQL or the Advanced Server database. + +
+ +upgrading_pem_installation upgrading_backend_database moving_pem_server troubleshooting conclusion + +
diff --git a/product_docs/docs/pem/8.0/images/BART_backup_restore_advanced.png b/product_docs/docs/pem/8.0/images/BART_backup_restore_advanced.png new file mode 100644 index 00000000000..0ec9f6453a7 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/BART_backup_restore_advanced.png differ diff --git a/product_docs/docs/pem/8.0/images/BART_backup_restore_general.png b/product_docs/docs/pem/8.0/images/BART_backup_restore_general.png new file mode 100644 index 00000000000..018304908ac Binary files /dev/null and b/product_docs/docs/pem/8.0/images/BART_backup_restore_general.png differ diff --git a/product_docs/docs/pem/8.0/images/BART_backup_restore_notifications.png b/product_docs/docs/pem/8.0/images/BART_backup_restore_notifications.png new file mode 100644 index 00000000000..a1ff81c6535 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/BART_backup_restore_notifications.png differ diff --git a/product_docs/docs/pem/8.0/images/BART_backup_scheduler_general.png b/product_docs/docs/pem/8.0/images/BART_backup_scheduler_general.png new file mode 100644 index 00000000000..d6b79a16f59 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/BART_backup_scheduler_general.png differ diff --git a/product_docs/docs/pem/8.0/images/BART_backup_scheduler_schedule_general.png b/product_docs/docs/pem/8.0/images/BART_backup_scheduler_schedule_general.png new file mode 100755 index 00000000000..feba53b372d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/BART_backup_scheduler_schedule_general.png differ diff --git a/product_docs/docs/pem/8.0/images/BART_backup_scheduler_schedule_notifications.png b/product_docs/docs/pem/8.0/images/BART_backup_scheduler_schedule_notifications.png new file mode 100755 index 00000000000..d83ad744046 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/BART_backup_scheduler_schedule_notifications.png differ diff --git a/product_docs/docs/pem/8.0/images/BART_backup_scheduler_schedule_repeat.png b/product_docs/docs/pem/8.0/images/BART_backup_scheduler_schedule_repeat.png new file mode 100755 index 00000000000..ed43ce38872 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/BART_backup_scheduler_schedule_repeat.png differ diff --git a/product_docs/docs/pem/8.0/images/BART_obsolete_backup_scheduler_general.png b/product_docs/docs/pem/8.0/images/BART_obsolete_backup_scheduler_general.png new file mode 100644 index 00000000000..819554efc3d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/BART_obsolete_backup_scheduler_general.png differ diff --git a/product_docs/docs/pem/8.0/images/BART_obsolete_backup_scheduler_repeat.png b/product_docs/docs/pem/8.0/images/BART_obsolete_backup_scheduler_repeat.png new file mode 100644 index 00000000000..4dd4f8ff46f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/BART_obsolete_backup_scheduler_repeat.png differ diff --git a/product_docs/docs/pem/8.0/images/EDB_audit_config_probe.png b/product_docs/docs/pem/8.0/images/EDB_audit_config_probe.png new file mode 100755 index 00000000000..f998d926b51 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/EDB_audit_config_probe.png differ diff --git a/product_docs/docs/pem/8.0/images/EDB_logo.png b/product_docs/docs/pem/8.0/images/EDB_logo.png new file mode 100644 index 00000000000..56aa6750797 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/EDB_logo.png differ diff --git a/product_docs/docs/pem/8.0/images/EPAS_instance.png b/product_docs/docs/pem/8.0/images/EPAS_instance.png new file mode 100755 index 00000000000..6cce93d59b6 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/EPAS_instance.png differ diff --git a/product_docs/docs/pem/8.0/images/add_restore_point.png b/product_docs/docs/pem/8.0/images/add_restore_point.png new file mode 100644 index 00000000000..7516be8c68b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/add_restore_point.png differ diff --git a/product_docs/docs/pem/8.0/images/aggregate_icon.png b/product_docs/docs/pem/8.0/images/aggregate_icon.png new file mode 100644 index 00000000000..0c9e93840e4 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/aggregate_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/alert_copy.png b/product_docs/docs/pem/8.0/images/alert_copy.png new file mode 100755 index 00000000000..a3d0afb15b9 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/alert_copy.png differ diff --git a/product_docs/docs/pem/8.0/images/alert_details.png b/product_docs/docs/pem/8.0/images/alert_details.png new file mode 100755 index 00000000000..d4778b72195 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/alert_details.png differ diff --git a/product_docs/docs/pem/8.0/images/alert_errors_table.png b/product_docs/docs/pem/8.0/images/alert_errors_table.png new file mode 100644 index 00000000000..284ab434cc3 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/alert_errors_table.png differ diff --git a/product_docs/docs/pem/8.0/images/alert_templates_tab.png b/product_docs/docs/pem/8.0/images/alert_templates_tab.png new file mode 100755 index 00000000000..7eb57f8cd69 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/alert_templates_tab.png differ diff --git a/product_docs/docs/pem/8.0/images/alerting_define_new_alert.png b/product_docs/docs/pem/8.0/images/alerting_define_new_alert.png new file mode 100755 index 00000000000..c63ee93bda7 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/alerting_define_new_alert.png differ diff --git a/product_docs/docs/pem/8.0/images/alerting_define_notification.png b/product_docs/docs/pem/8.0/images/alerting_define_notification.png new file mode 100644 index 00000000000..9dcae41afbd Binary files /dev/null and b/product_docs/docs/pem/8.0/images/alerting_define_notification.png differ diff --git a/product_docs/docs/pem/8.0/images/alerting_example_general.png b/product_docs/docs/pem/8.0/images/alerting_example_general.png new file mode 100644 index 00000000000..348ffdc3bff Binary files /dev/null and b/product_docs/docs/pem/8.0/images/alerting_example_general.png differ diff --git a/product_docs/docs/pem/8.0/images/alerting_example_notification.png b/product_docs/docs/pem/8.0/images/alerting_example_notification.png new file mode 100644 index 00000000000..f40b0b1ff73 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/alerting_example_notification.png differ diff --git a/product_docs/docs/pem/8.0/images/alerting_example_script_execution.png b/product_docs/docs/pem/8.0/images/alerting_example_script_execution.png new file mode 100644 index 00000000000..7fa01c62808 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/alerting_example_script_execution.png differ diff --git a/product_docs/docs/pem/8.0/images/alerting_manage_alerts.png b/product_docs/docs/pem/8.0/images/alerting_manage_alerts.png new file mode 100644 index 00000000000..9b3a56f92d3 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/alerting_manage_alerts.png differ diff --git a/product_docs/docs/pem/8.0/images/alerting_manage_alerts_delete.png b/product_docs/docs/pem/8.0/images/alerting_manage_alerts_delete.png new file mode 100755 index 00000000000..3452ea514b5 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/alerting_manage_alerts_delete.png differ diff --git a/product_docs/docs/pem/8.0/images/alerting_manage_alerts_table.png b/product_docs/docs/pem/8.0/images/alerting_manage_alerts_table.png new file mode 100755 index 00000000000..745c97e0dbe Binary files /dev/null and b/product_docs/docs/pem/8.0/images/alerting_manage_alerts_table.png differ diff --git a/product_docs/docs/pem/8.0/images/alerts_customize_chart.png b/product_docs/docs/pem/8.0/images/alerts_customize_chart.png new file mode 100644 index 00000000000..18b0b033347 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/alerts_customize_chart.png differ diff --git a/product_docs/docs/pem/8.0/images/alerts_customize_table.png b/product_docs/docs/pem/8.0/images/alerts_customize_table.png new file mode 100644 index 00000000000..4f645ab809a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/alerts_customize_table.png differ diff --git a/product_docs/docs/pem/8.0/images/alerts_dashboard.png b/product_docs/docs/pem/8.0/images/alerts_dashboard.png new file mode 100755 index 00000000000..08bfe1e0e65 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/alerts_dashboard.png differ diff --git a/product_docs/docs/pem/8.0/images/alerts_status_table.png b/product_docs/docs/pem/8.0/images/alerts_status_table.png new file mode 100755 index 00000000000..b7fc87666df Binary files /dev/null and b/product_docs/docs/pem/8.0/images/alerts_status_table.png differ diff --git a/product_docs/docs/pem/8.0/images/anti_join_icon.png b/product_docs/docs/pem/8.0/images/anti_join_icon.png new file mode 100644 index 00000000000..3dae5dd521f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/anti_join_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/append_icon.png b/product_docs/docs/pem/8.0/images/append_icon.png new file mode 100644 index 00000000000..e08b0f83abd Binary files /dev/null and b/product_docs/docs/pem/8.0/images/append_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/ark_connect_connection.png b/product_docs/docs/pem/8.0/images/ark_connect_connection.png new file mode 100644 index 00000000000..347076ea1c9 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/ark_connect_connection.png differ diff --git a/product_docs/docs/pem/8.0/images/ark_connect_general.png b/product_docs/docs/pem/8.0/images/ark_connect_general.png new file mode 100644 index 00000000000..83e9f999e2f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/ark_connect_general.png differ diff --git a/product_docs/docs/pem/8.0/images/audit_log_analysis_dashboard.png b/product_docs/docs/pem/8.0/images/audit_log_analysis_dashboard.png new file mode 100755 index 00000000000..29e623ac40b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/audit_log_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/8.0/images/audit_log_analysis_filter.png b/product_docs/docs/pem/8.0/images/audit_log_analysis_filter.png new file mode 100755 index 00000000000..cd744ba5c95 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/audit_log_analysis_filter.png differ diff --git a/product_docs/docs/pem/8.0/images/audit_manager_config1.png b/product_docs/docs/pem/8.0/images/audit_manager_config1.png new file mode 100755 index 00000000000..f8e48ea6e91 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/audit_manager_config1.png differ diff --git a/product_docs/docs/pem/8.0/images/audit_manager_config2.png b/product_docs/docs/pem/8.0/images/audit_manager_config2.png new file mode 100755 index 00000000000..1755b4a46ad Binary files /dev/null and b/product_docs/docs/pem/8.0/images/audit_manager_config2.png differ diff --git a/product_docs/docs/pem/8.0/images/audit_manager_finish.png b/product_docs/docs/pem/8.0/images/audit_manager_finish.png new file mode 100755 index 00000000000..e452d7f1f74 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/audit_manager_finish.png differ diff --git a/product_docs/docs/pem/8.0/images/audit_manager_intro.png b/product_docs/docs/pem/8.0/images/audit_manager_intro.png new file mode 100755 index 00000000000..6a3f3126912 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/audit_manager_intro.png differ diff --git a/product_docs/docs/pem/8.0/images/audit_manager_servers.png b/product_docs/docs/pem/8.0/images/audit_manager_servers.png new file mode 100755 index 00000000000..b624309cfc8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/audit_manager_servers.png differ diff --git a/product_docs/docs/pem/8.0/images/auto_discovery.png b/product_docs/docs/pem/8.0/images/auto_discovery.png new file mode 100755 index 00000000000..b9d3c20e6b3 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/auto_discovery.png differ diff --git a/product_docs/docs/pem/8.0/images/auto_discovery_example.png b/product_docs/docs/pem/8.0/images/auto_discovery_example.png new file mode 100644 index 00000000000..2e97701e748 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/auto_discovery_example.png differ diff --git a/product_docs/docs/pem/8.0/images/backup_disable.png b/product_docs/docs/pem/8.0/images/backup_disable.png new file mode 100644 index 00000000000..0ed6d253021 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/backup_disable.png differ diff --git a/product_docs/docs/pem/8.0/images/backup_do_not_save.png b/product_docs/docs/pem/8.0/images/backup_do_not_save.png new file mode 100644 index 00000000000..fa011b6f990 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/backup_do_not_save.png differ diff --git a/product_docs/docs/pem/8.0/images/backup_general.png b/product_docs/docs/pem/8.0/images/backup_general.png new file mode 100644 index 00000000000..fdf3dc9da34 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/backup_general.png differ diff --git a/product_docs/docs/pem/8.0/images/backup_globals_general.png b/product_docs/docs/pem/8.0/images/backup_globals_general.png new file mode 100644 index 00000000000..5c6fbe7e00f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/backup_globals_general.png differ diff --git a/product_docs/docs/pem/8.0/images/backup_globals_messages.png b/product_docs/docs/pem/8.0/images/backup_globals_messages.png new file mode 100644 index 00000000000..c976dd6434f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/backup_globals_messages.png differ diff --git a/product_docs/docs/pem/8.0/images/backup_globals_process_watcher.png b/product_docs/docs/pem/8.0/images/backup_globals_process_watcher.png new file mode 100644 index 00000000000..2003cc4a805 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/backup_globals_process_watcher.png differ diff --git a/product_docs/docs/pem/8.0/images/backup_messages.png b/product_docs/docs/pem/8.0/images/backup_messages.png new file mode 100644 index 00000000000..a6b08ed6815 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/backup_messages.png differ diff --git a/product_docs/docs/pem/8.0/images/backup_miscellaneous.png b/product_docs/docs/pem/8.0/images/backup_miscellaneous.png new file mode 100644 index 00000000000..957fe6ed826 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/backup_miscellaneous.png differ diff --git a/product_docs/docs/pem/8.0/images/backup_objects.png b/product_docs/docs/pem/8.0/images/backup_objects.png new file mode 100644 index 00000000000..77d477c782c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/backup_objects.png differ diff --git a/product_docs/docs/pem/8.0/images/backup_process_watcher.png b/product_docs/docs/pem/8.0/images/backup_process_watcher.png new file mode 100644 index 00000000000..027b3cf9397 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/backup_process_watcher.png differ diff --git a/product_docs/docs/pem/8.0/images/backup_queries.png b/product_docs/docs/pem/8.0/images/backup_queries.png new file mode 100644 index 00000000000..e00e4ac00be Binary files /dev/null and b/product_docs/docs/pem/8.0/images/backup_queries.png differ diff --git a/product_docs/docs/pem/8.0/images/backup_sections.png b/product_docs/docs/pem/8.0/images/backup_sections.png new file mode 100644 index 00000000000..b9cc431be18 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/backup_sections.png differ diff --git a/product_docs/docs/pem/8.0/images/backup_server_disable.png b/product_docs/docs/pem/8.0/images/backup_server_disable.png new file mode 100644 index 00000000000..fc909fbb3d6 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/backup_server_disable.png differ diff --git a/product_docs/docs/pem/8.0/images/backup_server_do_not_save.png b/product_docs/docs/pem/8.0/images/backup_server_do_not_save.png new file mode 100644 index 00000000000..58623bcdf72 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/backup_server_do_not_save.png differ diff --git a/product_docs/docs/pem/8.0/images/backup_server_general.png b/product_docs/docs/pem/8.0/images/backup_server_general.png new file mode 100644 index 00000000000..83949f03a83 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/backup_server_general.png differ diff --git a/product_docs/docs/pem/8.0/images/backup_server_messages.png b/product_docs/docs/pem/8.0/images/backup_server_messages.png new file mode 100644 index 00000000000..226c3a627bb Binary files /dev/null and b/product_docs/docs/pem/8.0/images/backup_server_messages.png differ diff --git a/product_docs/docs/pem/8.0/images/backup_server_miscellaneous.png b/product_docs/docs/pem/8.0/images/backup_server_miscellaneous.png new file mode 100644 index 00000000000..8055bc0ddb1 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/backup_server_miscellaneous.png differ diff --git a/product_docs/docs/pem/8.0/images/backup_server_objects.png b/product_docs/docs/pem/8.0/images/backup_server_objects.png new file mode 100644 index 00000000000..292c18a2544 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/backup_server_objects.png differ diff --git a/product_docs/docs/pem/8.0/images/backup_server_process_watcher.png b/product_docs/docs/pem/8.0/images/backup_server_process_watcher.png new file mode 100644 index 00000000000..a77ee4bf080 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/backup_server_process_watcher.png differ diff --git a/product_docs/docs/pem/8.0/images/backup_server_queries.png b/product_docs/docs/pem/8.0/images/backup_server_queries.png new file mode 100644 index 00000000000..c9f935c3968 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/backup_server_queries.png differ diff --git a/product_docs/docs/pem/8.0/images/bart_backup_dashboard.png b/product_docs/docs/pem/8.0/images/bart_backup_dashboard.png new file mode 100644 index 00000000000..88f37e2317a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/bart_backup_dashboard.png differ diff --git a/product_docs/docs/pem/8.0/images/bart_backup_dialog_general.png b/product_docs/docs/pem/8.0/images/bart_backup_dialog_general.png new file mode 100644 index 00000000000..f7cd2875858 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/bart_backup_dialog_general.png differ diff --git a/product_docs/docs/pem/8.0/images/bart_backup_dialog_notifications.png b/product_docs/docs/pem/8.0/images/bart_backup_dialog_notifications.png new file mode 100644 index 00000000000..a09abd2b8bf Binary files /dev/null and b/product_docs/docs/pem/8.0/images/bart_backup_dialog_notifications.png differ diff --git a/product_docs/docs/pem/8.0/images/bitmap_heap_icon.png b/product_docs/docs/pem/8.0/images/bitmap_heap_icon.png new file mode 100644 index 00000000000..45877f8f7de Binary files /dev/null and b/product_docs/docs/pem/8.0/images/bitmap_heap_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/bitmap_index_icon.png b/product_docs/docs/pem/8.0/images/bitmap_index_icon.png new file mode 100644 index 00000000000..9f5d3aac39f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/bitmap_index_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/capacity_manager_add_metric.png b/product_docs/docs/pem/8.0/images/capacity_manager_add_metric.png new file mode 100644 index 00000000000..ed2ceb6ba3c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/capacity_manager_add_metric.png differ diff --git a/product_docs/docs/pem/8.0/images/capacity_manager_metrics.png b/product_docs/docs/pem/8.0/images/capacity_manager_metrics.png new file mode 100755 index 00000000000..5cd344e107c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/capacity_manager_metrics.png differ diff --git a/product_docs/docs/pem/8.0/images/capacity_manager_opens.png b/product_docs/docs/pem/8.0/images/capacity_manager_opens.png new file mode 100755 index 00000000000..d0441ce14db Binary files /dev/null and b/product_docs/docs/pem/8.0/images/capacity_manager_opens.png differ diff --git a/product_docs/docs/pem/8.0/images/capacity_manager_options.png b/product_docs/docs/pem/8.0/images/capacity_manager_options.png new file mode 100755 index 00000000000..024e25b4695 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/capacity_manager_options.png differ diff --git a/product_docs/docs/pem/8.0/images/capacity_manager_report.png b/product_docs/docs/pem/8.0/images/capacity_manager_report.png new file mode 100755 index 00000000000..142ad1274c4 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/capacity_manager_report.png differ diff --git a/product_docs/docs/pem/8.0/images/cast_definition.png b/product_docs/docs/pem/8.0/images/cast_definition.png new file mode 100644 index 00000000000..33450261a85 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/cast_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/cast_general.png b/product_docs/docs/pem/8.0/images/cast_general.png new file mode 100644 index 00000000000..e41ed38c251 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/cast_general.png differ diff --git a/product_docs/docs/pem/8.0/images/cast_sql.png b/product_docs/docs/pem/8.0/images/cast_sql.png new file mode 100644 index 00000000000..607fdec0d28 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/cast_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/ce_error_hba.png b/product_docs/docs/pem/8.0/images/ce_error_hba.png new file mode 100644 index 00000000000..a448646c8a2 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/ce_error_hba.png differ diff --git a/product_docs/docs/pem/8.0/images/ce_not_running.png b/product_docs/docs/pem/8.0/images/ce_not_running.png new file mode 100644 index 00000000000..fee92b036f4 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/ce_not_running.png differ diff --git a/product_docs/docs/pem/8.0/images/ce_password_failed.png b/product_docs/docs/pem/8.0/images/ce_password_failed.png new file mode 100644 index 00000000000..112e67ab5af Binary files /dev/null and b/product_docs/docs/pem/8.0/images/ce_password_failed.png differ diff --git a/product_docs/docs/pem/8.0/images/ce_timeout.png b/product_docs/docs/pem/8.0/images/ce_timeout.png new file mode 100644 index 00000000000..b0facbdd9c9 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/ce_timeout.png differ diff --git a/product_docs/docs/pem/8.0/images/chart_icons.png b/product_docs/docs/pem/8.0/images/chart_icons.png new file mode 100755 index 00000000000..ea5b6ed8e41 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/chart_icons.png differ diff --git a/product_docs/docs/pem/8.0/images/check_definition.png b/product_docs/docs/pem/8.0/images/check_definition.png new file mode 100644 index 00000000000..ae7bc9544df Binary files /dev/null and b/product_docs/docs/pem/8.0/images/check_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/check_general.png b/product_docs/docs/pem/8.0/images/check_general.png new file mode 100644 index 00000000000..b99d2727071 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/check_general.png differ diff --git a/product_docs/docs/pem/8.0/images/check_sql.png b/product_docs/docs/pem/8.0/images/check_sql.png new file mode 100644 index 00000000000..30adc5d16a4 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/check_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/collation_definition.png b/product_docs/docs/pem/8.0/images/collation_definition.png new file mode 100644 index 00000000000..33917464b69 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/collation_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/collation_general.png b/product_docs/docs/pem/8.0/images/collation_general.png new file mode 100644 index 00000000000..97c58dc2464 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/collation_general.png differ diff --git a/product_docs/docs/pem/8.0/images/collation_sql.png b/product_docs/docs/pem/8.0/images/collation_sql.png new file mode 100644 index 00000000000..bc83e84c2fb Binary files /dev/null and b/product_docs/docs/pem/8.0/images/collation_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/column_constraint_generated.png b/product_docs/docs/pem/8.0/images/column_constraint_generated.png new file mode 100644 index 00000000000..ad09cb644f8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/column_constraint_generated.png differ diff --git a/product_docs/docs/pem/8.0/images/column_constraint_identity.png b/product_docs/docs/pem/8.0/images/column_constraint_identity.png new file mode 100644 index 00000000000..02b123ce9c8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/column_constraint_identity.png differ diff --git a/product_docs/docs/pem/8.0/images/column_constraints.png b/product_docs/docs/pem/8.0/images/column_constraints.png new file mode 100644 index 00000000000..708a80fc2af Binary files /dev/null and b/product_docs/docs/pem/8.0/images/column_constraints.png differ diff --git a/product_docs/docs/pem/8.0/images/column_definition.png b/product_docs/docs/pem/8.0/images/column_definition.png new file mode 100644 index 00000000000..d936d32fc0f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/column_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/column_general.png b/product_docs/docs/pem/8.0/images/column_general.png new file mode 100644 index 00000000000..b7f84dd3142 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/column_general.png differ diff --git a/product_docs/docs/pem/8.0/images/column_security.png b/product_docs/docs/pem/8.0/images/column_security.png new file mode 100644 index 00000000000..403eba7829b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/column_security.png differ diff --git a/product_docs/docs/pem/8.0/images/column_sql.png b/product_docs/docs/pem/8.0/images/column_sql.png new file mode 100644 index 00000000000..b434cf5fcba Binary files /dev/null and b/product_docs/docs/pem/8.0/images/column_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/column_variables.png b/product_docs/docs/pem/8.0/images/column_variables.png new file mode 100644 index 00000000000..6d25f0f6944 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/column_variables.png differ diff --git a/product_docs/docs/pem/8.0/images/compound_trigger_code.png b/product_docs/docs/pem/8.0/images/compound_trigger_code.png new file mode 100644 index 00000000000..d34da26c774 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/compound_trigger_code.png differ diff --git a/product_docs/docs/pem/8.0/images/compound_trigger_events.png b/product_docs/docs/pem/8.0/images/compound_trigger_events.png new file mode 100644 index 00000000000..cca71b7881d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/compound_trigger_events.png differ diff --git a/product_docs/docs/pem/8.0/images/compound_trigger_general.png b/product_docs/docs/pem/8.0/images/compound_trigger_general.png new file mode 100644 index 00000000000..5323076d72f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/compound_trigger_general.png differ diff --git a/product_docs/docs/pem/8.0/images/compound_trigger_general_enabled.png b/product_docs/docs/pem/8.0/images/compound_trigger_general_enabled.png new file mode 100644 index 00000000000..d6c42508268 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/compound_trigger_general_enabled.png differ diff --git a/product_docs/docs/pem/8.0/images/compound_trigger_sql.png b/product_docs/docs/pem/8.0/images/compound_trigger_sql.png new file mode 100644 index 00000000000..618a2009af1 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/compound_trigger_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/connect_pem_agent.png b/product_docs/docs/pem/8.0/images/connect_pem_agent.png new file mode 100644 index 00000000000..6592d6456b0 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/connect_pem_agent.png differ diff --git a/product_docs/docs/pem/8.0/images/connect_to_server.png b/product_docs/docs/pem/8.0/images/connect_to_server.png new file mode 100644 index 00000000000..3ee68c7dc04 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/connect_to_server.png differ diff --git a/product_docs/docs/pem/8.0/images/copy_probe_config.png b/product_docs/docs/pem/8.0/images/copy_probe_config.png new file mode 100755 index 00000000000..a12891c71f8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/copy_probe_config.png differ diff --git a/product_docs/docs/pem/8.0/images/core_usage_report.png b/product_docs/docs/pem/8.0/images/core_usage_report.png new file mode 100755 index 00000000000..f70e406ef57 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/core_usage_report.png differ diff --git a/product_docs/docs/pem/8.0/images/create_BART_server_general.png b/product_docs/docs/pem/8.0/images/create_BART_server_general.png new file mode 100755 index 00000000000..27c2db395d7 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/create_BART_server_general.png differ diff --git a/product_docs/docs/pem/8.0/images/create_BART_server_misc.png b/product_docs/docs/pem/8.0/images/create_BART_server_misc.png new file mode 100644 index 00000000000..15aa959f0d8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/create_BART_server_misc.png differ diff --git a/product_docs/docs/pem/8.0/images/create_group.png b/product_docs/docs/pem/8.0/images/create_group.png new file mode 100644 index 00000000000..a4eb003665c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/create_group.png differ diff --git a/product_docs/docs/pem/8.0/images/create_pem_jobs_general.png b/product_docs/docs/pem/8.0/images/create_pem_jobs_general.png new file mode 100755 index 00000000000..5cd368de766 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/create_pem_jobs_general.png differ diff --git a/product_docs/docs/pem/8.0/images/create_pem_jobs_notifications.png b/product_docs/docs/pem/8.0/images/create_pem_jobs_notifications.png new file mode 100755 index 00000000000..3f2bf509cc1 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/create_pem_jobs_notifications.png differ diff --git a/product_docs/docs/pem/8.0/images/create_pem_jobs_schedules.png b/product_docs/docs/pem/8.0/images/create_pem_jobs_schedules.png new file mode 100755 index 00000000000..94941f233bb Binary files /dev/null and b/product_docs/docs/pem/8.0/images/create_pem_jobs_schedules.png differ diff --git a/product_docs/docs/pem/8.0/images/create_pem_jobs_schedules_exceptions.png b/product_docs/docs/pem/8.0/images/create_pem_jobs_schedules_exceptions.png new file mode 100755 index 00000000000..64ebdf754ab Binary files /dev/null and b/product_docs/docs/pem/8.0/images/create_pem_jobs_schedules_exceptions.png differ diff --git a/product_docs/docs/pem/8.0/images/create_pem_jobs_schedules_repeat.png b/product_docs/docs/pem/8.0/images/create_pem_jobs_schedules_repeat.png new file mode 100755 index 00000000000..0fd128f2703 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/create_pem_jobs_schedules_repeat.png differ diff --git a/product_docs/docs/pem/8.0/images/create_pem_jobs_sql.png b/product_docs/docs/pem/8.0/images/create_pem_jobs_sql.png new file mode 100755 index 00000000000..c530ff90585 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/create_pem_jobs_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/create_pem_jobs_steps.png b/product_docs/docs/pem/8.0/images/create_pem_jobs_steps.png new file mode 100755 index 00000000000..bffc53d6a4b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/create_pem_jobs_steps.png differ diff --git a/product_docs/docs/pem/8.0/images/create_pem_jobs_steps_definition.png b/product_docs/docs/pem/8.0/images/create_pem_jobs_steps_definition.png new file mode 100755 index 00000000000..2a441eb84c6 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/create_pem_jobs_steps_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/create_pem_jobs_steps_definition_code.png b/product_docs/docs/pem/8.0/images/create_pem_jobs_steps_definition_code.png new file mode 100755 index 00000000000..ec714c49463 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/create_pem_jobs_steps_definition_code.png differ diff --git a/product_docs/docs/pem/8.0/images/create_server_advanced_tab.png b/product_docs/docs/pem/8.0/images/create_server_advanced_tab.png new file mode 100755 index 00000000000..a125a491bd1 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/create_server_advanced_tab.png differ diff --git a/product_docs/docs/pem/8.0/images/create_server_bart_general.png b/product_docs/docs/pem/8.0/images/create_server_bart_general.png new file mode 100755 index 00000000000..ec46565841d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/create_server_bart_general.png differ diff --git a/product_docs/docs/pem/8.0/images/create_server_bart_misc.png b/product_docs/docs/pem/8.0/images/create_server_bart_misc.png new file mode 100755 index 00000000000..3fcd4e5b838 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/create_server_bart_misc.png differ diff --git a/product_docs/docs/pem/8.0/images/create_server_bart_tab.png b/product_docs/docs/pem/8.0/images/create_server_bart_tab.png new file mode 100755 index 00000000000..4e9d37c54da Binary files /dev/null and b/product_docs/docs/pem/8.0/images/create_server_bart_tab.png differ diff --git a/product_docs/docs/pem/8.0/images/create_server_connection_tab.png b/product_docs/docs/pem/8.0/images/create_server_connection_tab.png new file mode 100755 index 00000000000..32c1858f5c2 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/create_server_connection_tab.png differ diff --git a/product_docs/docs/pem/8.0/images/create_server_general_tab.png b/product_docs/docs/pem/8.0/images/create_server_general_tab.png new file mode 100755 index 00000000000..5e1b472a6e7 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/create_server_general_tab.png differ diff --git a/product_docs/docs/pem/8.0/images/create_server_pem_agent_tab.png b/product_docs/docs/pem/8.0/images/create_server_pem_agent_tab.png new file mode 100755 index 00000000000..4f3473db0d4 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/create_server_pem_agent_tab.png differ diff --git a/product_docs/docs/pem/8.0/images/create_server_pem_agent_tab_remote_monitoring.png b/product_docs/docs/pem/8.0/images/create_server_pem_agent_tab_remote_monitoring.png new file mode 100644 index 00000000000..2d0b957ecd5 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/create_server_pem_agent_tab_remote_monitoring.png differ diff --git a/product_docs/docs/pem/8.0/images/create_server_ssh_tunnel_tab.png b/product_docs/docs/pem/8.0/images/create_server_ssh_tunnel_tab.png new file mode 100755 index 00000000000..666bbec0658 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/create_server_ssh_tunnel_tab.png differ diff --git a/product_docs/docs/pem/8.0/images/create_server_ssl_tab.png b/product_docs/docs/pem/8.0/images/create_server_ssl_tab.png new file mode 100755 index 00000000000..98dc12ad55b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/create_server_ssl_tab.png differ diff --git a/product_docs/docs/pem/8.0/images/cte_scan_icon.png b/product_docs/docs/pem/8.0/images/cte_scan_icon.png new file mode 100644 index 00000000000..663635cc39d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/cte_scan_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/custom_dashboard_add_chart.png b/product_docs/docs/pem/8.0/images/custom_dashboard_add_chart.png new file mode 100644 index 00000000000..6b22d0b4c41 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/custom_dashboard_add_chart.png differ diff --git a/product_docs/docs/pem/8.0/images/custom_probes.png b/product_docs/docs/pem/8.0/images/custom_probes.png new file mode 100755 index 00000000000..e8f7fffebe8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/custom_probes.png differ diff --git a/product_docs/docs/pem/8.0/images/custom_probes_alt_code.png b/product_docs/docs/pem/8.0/images/custom_probes_alt_code.png new file mode 100755 index 00000000000..f7a60000689 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/custom_probes_alt_code.png differ diff --git a/product_docs/docs/pem/8.0/images/custom_probes_code.png b/product_docs/docs/pem/8.0/images/custom_probes_code.png new file mode 100755 index 00000000000..4d9a0e79b9b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/custom_probes_code.png differ diff --git a/product_docs/docs/pem/8.0/images/custom_probes_columns.png b/product_docs/docs/pem/8.0/images/custom_probes_columns.png new file mode 100755 index 00000000000..b2ebe7a7e2e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/custom_probes_columns.png differ diff --git a/product_docs/docs/pem/8.0/images/custom_probes_general.png b/product_docs/docs/pem/8.0/images/custom_probes_general.png new file mode 100755 index 00000000000..51e92e5f26c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/custom_probes_general.png differ diff --git a/product_docs/docs/pem/8.0/images/dashboard_alert_configure_dialogue.png b/product_docs/docs/pem/8.0/images/dashboard_alert_configure_dialogue.png new file mode 100644 index 00000000000..5cb9f31d37b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/dashboard_alert_configure_dialogue.png differ diff --git a/product_docs/docs/pem/8.0/images/dashboard_configuration.png b/product_docs/docs/pem/8.0/images/dashboard_configuration.png new file mode 100755 index 00000000000..1aa76732f39 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/dashboard_configuration.png differ diff --git a/product_docs/docs/pem/8.0/images/database_advanced.png b/product_docs/docs/pem/8.0/images/database_advanced.png new file mode 100644 index 00000000000..ef4d4e2e0b5 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/database_advanced.png differ diff --git a/product_docs/docs/pem/8.0/images/database_analysis_dashboard.png b/product_docs/docs/pem/8.0/images/database_analysis_dashboard.png new file mode 100644 index 00000000000..d3d20d3382e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/database_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/8.0/images/database_analysis_table.png b/product_docs/docs/pem/8.0/images/database_analysis_table.png new file mode 100644 index 00000000000..66602738f0a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/database_analysis_table.png differ diff --git a/product_docs/docs/pem/8.0/images/database_definition.png b/product_docs/docs/pem/8.0/images/database_definition.png new file mode 100644 index 00000000000..53257019789 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/database_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/database_general.png b/product_docs/docs/pem/8.0/images/database_general.png new file mode 100644 index 00000000000..2d9c7305f9d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/database_general.png differ diff --git a/product_docs/docs/pem/8.0/images/database_io_analysis.png b/product_docs/docs/pem/8.0/images/database_io_analysis.png new file mode 100644 index 00000000000..a9aaefaba1e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/database_io_analysis.png differ diff --git a/product_docs/docs/pem/8.0/images/database_parameters.png b/product_docs/docs/pem/8.0/images/database_parameters.png new file mode 100644 index 00000000000..56d4610272c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/database_parameters.png differ diff --git a/product_docs/docs/pem/8.0/images/database_security.png b/product_docs/docs/pem/8.0/images/database_security.png new file mode 100644 index 00000000000..7d1f759a30e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/database_security.png differ diff --git a/product_docs/docs/pem/8.0/images/database_sql.png b/product_docs/docs/pem/8.0/images/database_sql.png new file mode 100644 index 00000000000..ee9a5c70086 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/database_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/debug_error_message.png b/product_docs/docs/pem/8.0/images/debug_error_message.png new file mode 100644 index 00000000000..0e293a4e563 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/debug_error_message.png differ diff --git a/product_docs/docs/pem/8.0/images/debug_ic_step_in.png b/product_docs/docs/pem/8.0/images/debug_ic_step_in.png new file mode 100644 index 00000000000..efd9ad47cbf Binary files /dev/null and b/product_docs/docs/pem/8.0/images/debug_ic_step_in.png differ diff --git a/product_docs/docs/pem/8.0/images/debug_main.png b/product_docs/docs/pem/8.0/images/debug_main.png new file mode 100644 index 00000000000..1849389e61d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/debug_main.png differ diff --git a/product_docs/docs/pem/8.0/images/debug_params.png b/product_docs/docs/pem/8.0/images/debug_params.png new file mode 100644 index 00000000000..befb119e03d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/debug_params.png differ diff --git a/product_docs/docs/pem/8.0/images/debug_set_breakpoint.png b/product_docs/docs/pem/8.0/images/debug_set_breakpoint.png new file mode 100644 index 00000000000..58f5d618a35 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/debug_set_breakpoint.png differ diff --git a/product_docs/docs/pem/8.0/images/debug_stack.png b/product_docs/docs/pem/8.0/images/debug_stack.png new file mode 100644 index 00000000000..68eddfd44db Binary files /dev/null and b/product_docs/docs/pem/8.0/images/debug_stack.png differ diff --git a/product_docs/docs/pem/8.0/images/debug_step_in.png b/product_docs/docs/pem/8.0/images/debug_step_in.png new file mode 100644 index 00000000000..27a8ba04f9b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/debug_step_in.png differ diff --git a/product_docs/docs/pem/8.0/images/debug_toolbar.png b/product_docs/docs/pem/8.0/images/debug_toolbar.png new file mode 100644 index 00000000000..2b2883e3846 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/debug_toolbar.png differ diff --git a/product_docs/docs/pem/8.0/images/debug_variables.png b/product_docs/docs/pem/8.0/images/debug_variables.png new file mode 100644 index 00000000000..11ae80c41cf Binary files /dev/null and b/product_docs/docs/pem/8.0/images/debug_variables.png differ diff --git a/product_docs/docs/pem/8.0/images/define_ops_dashboard.png b/product_docs/docs/pem/8.0/images/define_ops_dashboard.png new file mode 100755 index 00000000000..dc54c495544 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/define_ops_dashboard.png differ diff --git a/product_docs/docs/pem/8.0/images/delete.png b/product_docs/docs/pem/8.0/images/delete.png new file mode 100644 index 00000000000..e5936e8278a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/delete.png differ diff --git a/product_docs/docs/pem/8.0/images/delete_system_probe.png b/product_docs/docs/pem/8.0/images/delete_system_probe.png new file mode 100755 index 00000000000..2f0cf0131c8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/delete_system_probe.png differ diff --git a/product_docs/docs/pem/8.0/images/disconnect_server.png b/product_docs/docs/pem/8.0/images/disconnect_server.png new file mode 100644 index 00000000000..5fb79ee9a61 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/disconnect_server.png differ diff --git a/product_docs/docs/pem/8.0/images/domain_constraint_definition.png b/product_docs/docs/pem/8.0/images/domain_constraint_definition.png new file mode 100644 index 00000000000..905a7387eb2 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/domain_constraint_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/domain_constraint_general.png b/product_docs/docs/pem/8.0/images/domain_constraint_general.png new file mode 100644 index 00000000000..a5eedec4ecc Binary files /dev/null and b/product_docs/docs/pem/8.0/images/domain_constraint_general.png differ diff --git a/product_docs/docs/pem/8.0/images/domain_constraint_sql.png b/product_docs/docs/pem/8.0/images/domain_constraint_sql.png new file mode 100644 index 00000000000..8443cbf4495 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/domain_constraint_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/domain_constraints.png b/product_docs/docs/pem/8.0/images/domain_constraints.png new file mode 100644 index 00000000000..087168b9ee6 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/domain_constraints.png differ diff --git a/product_docs/docs/pem/8.0/images/domain_definition.png b/product_docs/docs/pem/8.0/images/domain_definition.png new file mode 100644 index 00000000000..005cc08bbb8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/domain_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/domain_general.png b/product_docs/docs/pem/8.0/images/domain_general.png new file mode 100644 index 00000000000..3c9372b6642 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/domain_general.png differ diff --git a/product_docs/docs/pem/8.0/images/domain_security.png b/product_docs/docs/pem/8.0/images/domain_security.png new file mode 100644 index 00000000000..bce71f9a947 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/domain_security.png differ diff --git a/product_docs/docs/pem/8.0/images/domain_sql.png b/product_docs/docs/pem/8.0/images/domain_sql.png new file mode 100644 index 00000000000..f7161da57ea Binary files /dev/null and b/product_docs/docs/pem/8.0/images/domain_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/download.png b/product_docs/docs/pem/8.0/images/download.png new file mode 100644 index 00000000000..b3efacc7460 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/download.png differ diff --git a/product_docs/docs/pem/8.0/images/edb_logo.svg b/product_docs/docs/pem/8.0/images/edb_logo.svg new file mode 100644 index 00000000000..f24d1dfefee --- /dev/null +++ b/product_docs/docs/pem/8.0/images/edb_logo.svg @@ -0,0 +1,19 @@ + + + edb-logo-disc-dark + + + + \ No newline at end of file diff --git a/product_docs/docs/pem/8.0/images/edit.png b/product_docs/docs/pem/8.0/images/edit.png new file mode 100644 index 00000000000..a52560bbf3e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/edit.png differ diff --git a/product_docs/docs/pem/8.0/images/editgrid.png b/product_docs/docs/pem/8.0/images/editgrid.png new file mode 100644 index 00000000000..83a61aa7325 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/editgrid.png differ diff --git a/product_docs/docs/pem/8.0/images/editgrid_filter_dialog.png b/product_docs/docs/pem/8.0/images/editgrid_filter_dialog.png new file mode 100644 index 00000000000..13ab5734ce5 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/editgrid_filter_dialog.png differ diff --git a/product_docs/docs/pem/8.0/images/editgrid_toolbar.png b/product_docs/docs/pem/8.0/images/editgrid_toolbar.png new file mode 100644 index 00000000000..fea4b6f5102 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/editgrid_toolbar.png differ diff --git a/product_docs/docs/pem/8.0/images/email_group_add.png b/product_docs/docs/pem/8.0/images/email_group_add.png new file mode 100755 index 00000000000..1b0080d0e4c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/email_group_add.png differ diff --git a/product_docs/docs/pem/8.0/images/email_group_delete.png b/product_docs/docs/pem/8.0/images/email_group_delete.png new file mode 100755 index 00000000000..7b4c980856a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/email_group_delete.png differ diff --git a/product_docs/docs/pem/8.0/images/email_groups_tab.png b/product_docs/docs/pem/8.0/images/email_groups_tab.png new file mode 100755 index 00000000000..95878829049 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/email_groups_tab.png differ diff --git a/product_docs/docs/pem/8.0/images/event_trigger_definition.png b/product_docs/docs/pem/8.0/images/event_trigger_definition.png new file mode 100644 index 00000000000..f662adeffed Binary files /dev/null and b/product_docs/docs/pem/8.0/images/event_trigger_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/event_trigger_general.png b/product_docs/docs/pem/8.0/images/event_trigger_general.png new file mode 100644 index 00000000000..4bd5741e705 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/event_trigger_general.png differ diff --git a/product_docs/docs/pem/8.0/images/event_trigger_security.png b/product_docs/docs/pem/8.0/images/event_trigger_security.png new file mode 100644 index 00000000000..9466d144398 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/event_trigger_security.png differ diff --git a/product_docs/docs/pem/8.0/images/event_trigger_sql.png b/product_docs/docs/pem/8.0/images/event_trigger_sql.png new file mode 100644 index 00000000000..0ddf4dd3c8c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/event_trigger_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/exclusion_constraint_definition.png b/product_docs/docs/pem/8.0/images/exclusion_constraint_definition.png new file mode 100644 index 00000000000..cffaa9d8a0d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/exclusion_constraint_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/exclusion_constraint_general.png b/product_docs/docs/pem/8.0/images/exclusion_constraint_general.png new file mode 100644 index 00000000000..ef6012d0a24 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/exclusion_constraint_general.png differ diff --git a/product_docs/docs/pem/8.0/images/exclusion_constraint_sql.png b/product_docs/docs/pem/8.0/images/exclusion_constraint_sql.png new file mode 100644 index 00000000000..b770048e28f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/exclusion_constraint_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/extension_definition.png b/product_docs/docs/pem/8.0/images/extension_definition.png new file mode 100644 index 00000000000..e01e9990913 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/extension_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/extension_general.png b/product_docs/docs/pem/8.0/images/extension_general.png new file mode 100644 index 00000000000..c842b56507d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/extension_general.png differ diff --git a/product_docs/docs/pem/8.0/images/extension_sql.png b/product_docs/docs/pem/8.0/images/extension_sql.png new file mode 100644 index 00000000000..134e16eb3c7 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/extension_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/favicon32.ico b/product_docs/docs/pem/8.0/images/favicon32.ico new file mode 100644 index 00000000000..27871dc418f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/favicon32.ico differ diff --git a/product_docs/docs/pem/8.0/images/fm_cluster_status.png b/product_docs/docs/pem/8.0/images/fm_cluster_status.png new file mode 100644 index 00000000000..94cea98a084 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/fm_cluster_status.png differ diff --git a/product_docs/docs/pem/8.0/images/fm_job_result.png b/product_docs/docs/pem/8.0/images/fm_job_result.png new file mode 100755 index 00000000000..48db55c0f81 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/fm_job_result.png differ diff --git a/product_docs/docs/pem/8.0/images/fm_replace_primary.png b/product_docs/docs/pem/8.0/images/fm_replace_primary.png new file mode 100644 index 00000000000..54b364efaca Binary files /dev/null and b/product_docs/docs/pem/8.0/images/fm_replace_primary.png differ diff --git a/product_docs/docs/pem/8.0/images/fm_switchover_cluster.png b/product_docs/docs/pem/8.0/images/fm_switchover_cluster.png new file mode 100644 index 00000000000..a914ef34a0d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/fm_switchover_cluster.png differ diff --git a/product_docs/docs/pem/8.0/images/fm_switchover_job_result.png b/product_docs/docs/pem/8.0/images/fm_switchover_job_result.png new file mode 100755 index 00000000000..f8708c9b2ff Binary files /dev/null and b/product_docs/docs/pem/8.0/images/fm_switchover_job_result.png differ diff --git a/product_docs/docs/pem/8.0/images/folder.png b/product_docs/docs/pem/8.0/images/folder.png new file mode 100644 index 00000000000..473632c4631 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/folder.png differ diff --git a/product_docs/docs/pem/8.0/images/foreign_data_wrapper_definition.png b/product_docs/docs/pem/8.0/images/foreign_data_wrapper_definition.png new file mode 100644 index 00000000000..ec5482fd1fd Binary files /dev/null and b/product_docs/docs/pem/8.0/images/foreign_data_wrapper_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/foreign_data_wrapper_general.png b/product_docs/docs/pem/8.0/images/foreign_data_wrapper_general.png new file mode 100644 index 00000000000..bcccabb51e6 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/foreign_data_wrapper_general.png differ diff --git a/product_docs/docs/pem/8.0/images/foreign_data_wrapper_options.png b/product_docs/docs/pem/8.0/images/foreign_data_wrapper_options.png new file mode 100644 index 00000000000..eef9b3c8383 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/foreign_data_wrapper_options.png differ diff --git a/product_docs/docs/pem/8.0/images/foreign_data_wrapper_security.png b/product_docs/docs/pem/8.0/images/foreign_data_wrapper_security.png new file mode 100644 index 00000000000..711e7dfda58 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/foreign_data_wrapper_security.png differ diff --git a/product_docs/docs/pem/8.0/images/foreign_data_wrapper_sql.png b/product_docs/docs/pem/8.0/images/foreign_data_wrapper_sql.png new file mode 100644 index 00000000000..55fb41bdc20 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/foreign_data_wrapper_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/foreign_key_action.png b/product_docs/docs/pem/8.0/images/foreign_key_action.png new file mode 100644 index 00000000000..d64875b99f0 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/foreign_key_action.png differ diff --git a/product_docs/docs/pem/8.0/images/foreign_key_columns.png b/product_docs/docs/pem/8.0/images/foreign_key_columns.png new file mode 100644 index 00000000000..0ce3763e614 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/foreign_key_columns.png differ diff --git a/product_docs/docs/pem/8.0/images/foreign_key_definition.png b/product_docs/docs/pem/8.0/images/foreign_key_definition.png new file mode 100644 index 00000000000..bddd1f7ef27 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/foreign_key_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/foreign_key_general.png b/product_docs/docs/pem/8.0/images/foreign_key_general.png new file mode 100644 index 00000000000..a5b6bd43214 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/foreign_key_general.png differ diff --git a/product_docs/docs/pem/8.0/images/foreign_key_sql.png b/product_docs/docs/pem/8.0/images/foreign_key_sql.png new file mode 100644 index 00000000000..4ba03d7d0e3 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/foreign_key_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/foreign_server_definition.png b/product_docs/docs/pem/8.0/images/foreign_server_definition.png new file mode 100644 index 00000000000..c06c7435db4 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/foreign_server_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/foreign_server_general.png b/product_docs/docs/pem/8.0/images/foreign_server_general.png new file mode 100644 index 00000000000..30f448d3d03 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/foreign_server_general.png differ diff --git a/product_docs/docs/pem/8.0/images/foreign_server_options.png b/product_docs/docs/pem/8.0/images/foreign_server_options.png new file mode 100644 index 00000000000..bf193e709bc Binary files /dev/null and b/product_docs/docs/pem/8.0/images/foreign_server_options.png differ diff --git a/product_docs/docs/pem/8.0/images/foreign_server_security.png b/product_docs/docs/pem/8.0/images/foreign_server_security.png new file mode 100644 index 00000000000..4ec0fe17b57 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/foreign_server_security.png differ diff --git a/product_docs/docs/pem/8.0/images/foreign_server_sql.png b/product_docs/docs/pem/8.0/images/foreign_server_sql.png new file mode 100644 index 00000000000..03c78aacb70 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/foreign_server_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/foreign_table_columns.png b/product_docs/docs/pem/8.0/images/foreign_table_columns.png new file mode 100644 index 00000000000..eae14e1604b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/foreign_table_columns.png differ diff --git a/product_docs/docs/pem/8.0/images/foreign_table_constraints.png b/product_docs/docs/pem/8.0/images/foreign_table_constraints.png new file mode 100644 index 00000000000..992c769ff56 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/foreign_table_constraints.png differ diff --git a/product_docs/docs/pem/8.0/images/foreign_table_definition.png b/product_docs/docs/pem/8.0/images/foreign_table_definition.png new file mode 100644 index 00000000000..6d0182acde8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/foreign_table_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/foreign_table_general.png b/product_docs/docs/pem/8.0/images/foreign_table_general.png new file mode 100644 index 00000000000..5e85b60a0b2 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/foreign_table_general.png differ diff --git a/product_docs/docs/pem/8.0/images/foreign_table_options.png b/product_docs/docs/pem/8.0/images/foreign_table_options.png new file mode 100644 index 00000000000..37b5e4b7b36 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/foreign_table_options.png differ diff --git a/product_docs/docs/pem/8.0/images/foreign_table_security.png b/product_docs/docs/pem/8.0/images/foreign_table_security.png new file mode 100644 index 00000000000..ac7809658ef Binary files /dev/null and b/product_docs/docs/pem/8.0/images/foreign_table_security.png differ diff --git a/product_docs/docs/pem/8.0/images/foreign_table_sql.png b/product_docs/docs/pem/8.0/images/foreign_table_sql.png new file mode 100644 index 00000000000..e916f49e251 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/foreign_table_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/fts_configuration_definition.png b/product_docs/docs/pem/8.0/images/fts_configuration_definition.png new file mode 100644 index 00000000000..e524e63012e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/fts_configuration_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/fts_configuration_general.png b/product_docs/docs/pem/8.0/images/fts_configuration_general.png new file mode 100644 index 00000000000..f5cf4ee9c38 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/fts_configuration_general.png differ diff --git a/product_docs/docs/pem/8.0/images/fts_configuration_sql.png b/product_docs/docs/pem/8.0/images/fts_configuration_sql.png new file mode 100644 index 00000000000..eea6facd6a5 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/fts_configuration_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/fts_configuration_tokens.png b/product_docs/docs/pem/8.0/images/fts_configuration_tokens.png new file mode 100644 index 00000000000..79fd0bb3375 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/fts_configuration_tokens.png differ diff --git a/product_docs/docs/pem/8.0/images/fts_dictionary_definition.png b/product_docs/docs/pem/8.0/images/fts_dictionary_definition.png new file mode 100644 index 00000000000..47b572ca1df Binary files /dev/null and b/product_docs/docs/pem/8.0/images/fts_dictionary_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/fts_dictionary_general.png b/product_docs/docs/pem/8.0/images/fts_dictionary_general.png new file mode 100644 index 00000000000..cae7b6f8485 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/fts_dictionary_general.png differ diff --git a/product_docs/docs/pem/8.0/images/fts_dictionary_options.png b/product_docs/docs/pem/8.0/images/fts_dictionary_options.png new file mode 100644 index 00000000000..b0ca8381adf Binary files /dev/null and b/product_docs/docs/pem/8.0/images/fts_dictionary_options.png differ diff --git a/product_docs/docs/pem/8.0/images/fts_dictionary_sql.png b/product_docs/docs/pem/8.0/images/fts_dictionary_sql.png new file mode 100644 index 00000000000..5895913a50a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/fts_dictionary_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/fts_parser_definition.png b/product_docs/docs/pem/8.0/images/fts_parser_definition.png new file mode 100644 index 00000000000..b056c1c090c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/fts_parser_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/fts_parser_general.png b/product_docs/docs/pem/8.0/images/fts_parser_general.png new file mode 100644 index 00000000000..133f3283262 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/fts_parser_general.png differ diff --git a/product_docs/docs/pem/8.0/images/fts_parser_sql.png b/product_docs/docs/pem/8.0/images/fts_parser_sql.png new file mode 100644 index 00000000000..42f4bd95d1b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/fts_parser_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/fts_template_definition.png b/product_docs/docs/pem/8.0/images/fts_template_definition.png new file mode 100644 index 00000000000..79fbe50d230 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/fts_template_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/fts_template_general.png b/product_docs/docs/pem/8.0/images/fts_template_general.png new file mode 100644 index 00000000000..c625b6c9802 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/fts_template_general.png differ diff --git a/product_docs/docs/pem/8.0/images/fts_template_sql.png b/product_docs/docs/pem/8.0/images/fts_template_sql.png new file mode 100644 index 00000000000..e4bfe1b7dd8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/fts_template_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/function_arguments.png b/product_docs/docs/pem/8.0/images/function_arguments.png new file mode 100644 index 00000000000..299c84ab124 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/function_arguments.png differ diff --git a/product_docs/docs/pem/8.0/images/function_code.png b/product_docs/docs/pem/8.0/images/function_code.png new file mode 100644 index 00000000000..d3d37819da2 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/function_code.png differ diff --git a/product_docs/docs/pem/8.0/images/function_definition.png b/product_docs/docs/pem/8.0/images/function_definition.png new file mode 100644 index 00000000000..a78c6dc5e40 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/function_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/function_general.png b/product_docs/docs/pem/8.0/images/function_general.png new file mode 100644 index 00000000000..7a3a6e156dd Binary files /dev/null and b/product_docs/docs/pem/8.0/images/function_general.png differ diff --git a/product_docs/docs/pem/8.0/images/function_options.png b/product_docs/docs/pem/8.0/images/function_options.png new file mode 100644 index 00000000000..a85ccb4609c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/function_options.png differ diff --git a/product_docs/docs/pem/8.0/images/function_parameters.png b/product_docs/docs/pem/8.0/images/function_parameters.png new file mode 100644 index 00000000000..651cff36dfc Binary files /dev/null and b/product_docs/docs/pem/8.0/images/function_parameters.png differ diff --git a/product_docs/docs/pem/8.0/images/function_security.png b/product_docs/docs/pem/8.0/images/function_security.png new file mode 100644 index 00000000000..56440ad3349 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/function_security.png differ diff --git a/product_docs/docs/pem/8.0/images/function_sql.png b/product_docs/docs/pem/8.0/images/function_sql.png new file mode 100644 index 00000000000..ea275144bcf Binary files /dev/null and b/product_docs/docs/pem/8.0/images/function_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/geometry_viewer.png b/product_docs/docs/pem/8.0/images/geometry_viewer.png new file mode 100644 index 00000000000..1a06cfff0cf Binary files /dev/null and b/product_docs/docs/pem/8.0/images/geometry_viewer.png differ diff --git a/product_docs/docs/pem/8.0/images/geometry_viewer_property_table.png b/product_docs/docs/pem/8.0/images/geometry_viewer_property_table.png new file mode 100644 index 00000000000..279e18f327c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/geometry_viewer_property_table.png differ diff --git a/product_docs/docs/pem/8.0/images/global_overview.png b/product_docs/docs/pem/8.0/images/global_overview.png new file mode 100755 index 00000000000..1878087fa6a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/global_overview.png differ diff --git a/product_docs/docs/pem/8.0/images/grant_wizard_step1.png b/product_docs/docs/pem/8.0/images/grant_wizard_step1.png new file mode 100644 index 00000000000..2db39b97ee8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/grant_wizard_step1.png differ diff --git a/product_docs/docs/pem/8.0/images/grant_wizard_step2.png b/product_docs/docs/pem/8.0/images/grant_wizard_step2.png new file mode 100644 index 00000000000..7149ad84981 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/grant_wizard_step2.png differ diff --git a/product_docs/docs/pem/8.0/images/grant_wizard_step3.png b/product_docs/docs/pem/8.0/images/grant_wizard_step3.png new file mode 100644 index 00000000000..d93808fa158 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/grant_wizard_step3.png differ diff --git a/product_docs/docs/pem/8.0/images/graphical_explain.png b/product_docs/docs/pem/8.0/images/graphical_explain.png new file mode 100644 index 00000000000..e643a8b8495 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/graphical_explain.png differ diff --git a/product_docs/docs/pem/8.0/images/graphical_explain_details.png b/product_docs/docs/pem/8.0/images/graphical_explain_details.png new file mode 100644 index 00000000000..8eb02b501e0 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/graphical_explain_details.png differ diff --git a/product_docs/docs/pem/8.0/images/gridview.png b/product_docs/docs/pem/8.0/images/gridview.png new file mode 100644 index 00000000000..41edbac36fa Binary files /dev/null and b/product_docs/docs/pem/8.0/images/gridview.png differ diff --git a/product_docs/docs/pem/8.0/images/group_icon.png b/product_docs/docs/pem/8.0/images/group_icon.png new file mode 100644 index 00000000000..bff7ce1b8e7 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/group_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/hash_anti_join_icon.png b/product_docs/docs/pem/8.0/images/hash_anti_join_icon.png new file mode 100644 index 00000000000..3dae5dd521f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/hash_anti_join_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/hash_icon.png b/product_docs/docs/pem/8.0/images/hash_icon.png new file mode 100644 index 00000000000..dc1e3545dd8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/hash_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/hash_semi_join_icon.png b/product_docs/docs/pem/8.0/images/hash_semi_join_icon.png new file mode 100644 index 00000000000..f82cd4e7fb6 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/hash_semi_join_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/hash_set_operator_icon.png b/product_docs/docs/pem/8.0/images/hash_set_operator_icon.png new file mode 100644 index 00000000000..47a7b8cce50 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/hash_set_operator_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/hash_setop_except_all_icon.png b/product_docs/docs/pem/8.0/images/hash_setop_except_all_icon.png new file mode 100644 index 00000000000..092682dafeb Binary files /dev/null and b/product_docs/docs/pem/8.0/images/hash_setop_except_all_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/hash_setop_except_icon.png b/product_docs/docs/pem/8.0/images/hash_setop_except_icon.png new file mode 100644 index 00000000000..092682dafeb Binary files /dev/null and b/product_docs/docs/pem/8.0/images/hash_setop_except_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/hash_setop_int_all_icon.png b/product_docs/docs/pem/8.0/images/hash_setop_int_all_icon.png new file mode 100644 index 00000000000..e817608a435 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/hash_setop_int_all_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/home.png b/product_docs/docs/pem/8.0/images/home.png new file mode 100644 index 00000000000..6c671548c95 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/home.png differ diff --git a/product_docs/docs/pem/8.0/images/hot_table_analysis.png b/product_docs/docs/pem/8.0/images/hot_table_analysis.png new file mode 100644 index 00000000000..b1a71e9dddf Binary files /dev/null and b/product_docs/docs/pem/8.0/images/hot_table_analysis.png differ diff --git a/product_docs/docs/pem/8.0/images/import_export_columns.png b/product_docs/docs/pem/8.0/images/import_export_columns.png new file mode 100644 index 00000000000..a7bc0ec5bcb Binary files /dev/null and b/product_docs/docs/pem/8.0/images/import_export_columns.png differ diff --git a/product_docs/docs/pem/8.0/images/import_export_complete.png b/product_docs/docs/pem/8.0/images/import_export_complete.png new file mode 100644 index 00000000000..13c768538c6 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/import_export_complete.png differ diff --git a/product_docs/docs/pem/8.0/images/import_export_miscellaneous.png b/product_docs/docs/pem/8.0/images/import_export_miscellaneous.png new file mode 100644 index 00000000000..d20b8bd482e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/import_export_miscellaneous.png differ diff --git a/product_docs/docs/pem/8.0/images/import_export_options.png b/product_docs/docs/pem/8.0/images/import_export_options.png new file mode 100644 index 00000000000..87dadc747ea Binary files /dev/null and b/product_docs/docs/pem/8.0/images/import_export_options.png differ diff --git a/product_docs/docs/pem/8.0/images/import_export_pw.png b/product_docs/docs/pem/8.0/images/import_export_pw.png new file mode 100644 index 00000000000..f5565b46e45 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/import_export_pw.png differ diff --git a/product_docs/docs/pem/8.0/images/index_definition.png b/product_docs/docs/pem/8.0/images/index_definition.png new file mode 100644 index 00000000000..0321e82fbf0 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/index_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/index_general.png b/product_docs/docs/pem/8.0/images/index_general.png new file mode 100644 index 00000000000..36c518cf6d9 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/index_general.png differ diff --git a/product_docs/docs/pem/8.0/images/index_scan_icon.png b/product_docs/docs/pem/8.0/images/index_scan_icon.png new file mode 100644 index 00000000000..d8d7c012dbe Binary files /dev/null and b/product_docs/docs/pem/8.0/images/index_scan_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/index_sql.png b/product_docs/docs/pem/8.0/images/index_sql.png new file mode 100644 index 00000000000..3aaa38f153e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/index_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/installing_pem_sql_plugin_windows_ready_to_install.png b/product_docs/docs/pem/8.0/images/installing_pem_sql_plugin_windows_ready_to_install.png new file mode 100755 index 00000000000..a450ff886a6 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/installing_pem_sql_plugin_windows_ready_to_install.png differ diff --git a/product_docs/docs/pem/8.0/images/installing_pem_sql_profiler_plugin_windows_finish.png b/product_docs/docs/pem/8.0/images/installing_pem_sql_profiler_plugin_windows_finish.png new file mode 100755 index 00000000000..d5e4f6ba152 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/installing_pem_sql_profiler_plugin_windows_finish.png differ diff --git a/product_docs/docs/pem/8.0/images/installing_pem_sql_profiler_plugin_windows_in_progress.png b/product_docs/docs/pem/8.0/images/installing_pem_sql_profiler_plugin_windows_in_progress.png new file mode 100755 index 00000000000..cbde3c7620b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/installing_pem_sql_profiler_plugin_windows_in_progress.png differ diff --git a/product_docs/docs/pem/8.0/images/installing_pem_sql_profiler_plugin_windows_installation_directory.png b/product_docs/docs/pem/8.0/images/installing_pem_sql_profiler_plugin_windows_installation_directory.png new file mode 100755 index 00000000000..36c59897e04 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/installing_pem_sql_profiler_plugin_windows_installation_directory.png differ diff --git a/product_docs/docs/pem/8.0/images/installing_pem_sql_profiler_plugin_windows_license_agreement.png b/product_docs/docs/pem/8.0/images/installing_pem_sql_profiler_plugin_windows_license_agreement.png new file mode 100755 index 00000000000..b7b173557db Binary files /dev/null and b/product_docs/docs/pem/8.0/images/installing_pem_sql_profiler_plugin_windows_license_agreement.png differ diff --git a/product_docs/docs/pem/8.0/images/installing_pem_sql_profiler_plugin_windows_welcome.png b/product_docs/docs/pem/8.0/images/installing_pem_sql_profiler_plugin_windows_welcome.png new file mode 100755 index 00000000000..e7e6683813e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/installing_pem_sql_profiler_plugin_windows_welcome.png differ diff --git a/product_docs/docs/pem/8.0/images/io_analysis.png b/product_docs/docs/pem/8.0/images/io_analysis.png new file mode 100644 index 00000000000..77dfe738a6d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/io_analysis.png differ diff --git a/product_docs/docs/pem/8.0/images/io_analysis_dashboard.png b/product_docs/docs/pem/8.0/images/io_analysis_dashboard.png new file mode 100644 index 00000000000..e8a83fdc486 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/io_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/8.0/images/job_notifications_agent_level.png b/product_docs/docs/pem/8.0/images/job_notifications_agent_level.png new file mode 100755 index 00000000000..306f8ec17f7 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/job_notifications_agent_level.png differ diff --git a/product_docs/docs/pem/8.0/images/job_notifications_job_level.png b/product_docs/docs/pem/8.0/images/job_notifications_job_level.png new file mode 100755 index 00000000000..3f2bf509cc1 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/job_notifications_job_level.png differ diff --git a/product_docs/docs/pem/8.0/images/job_notifications_server_level.png b/product_docs/docs/pem/8.0/images/job_notifications_server_level.png new file mode 100755 index 00000000000..8d9e8a64a68 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/job_notifications_server_level.png differ diff --git a/product_docs/docs/pem/8.0/images/join_Icon.png b/product_docs/docs/pem/8.0/images/join_Icon.png new file mode 100644 index 00000000000..ef17c88f82f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/join_Icon.png differ diff --git a/product_docs/docs/pem/8.0/images/language_definition.png b/product_docs/docs/pem/8.0/images/language_definition.png new file mode 100644 index 00000000000..0ae7fdfdb24 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/language_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/language_general.png b/product_docs/docs/pem/8.0/images/language_general.png new file mode 100644 index 00000000000..52b9ff10178 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/language_general.png differ diff --git a/product_docs/docs/pem/8.0/images/language_security.png b/product_docs/docs/pem/8.0/images/language_security.png new file mode 100644 index 00000000000..f64d6ed5db4 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/language_security.png differ diff --git a/product_docs/docs/pem/8.0/images/language_sql.png b/product_docs/docs/pem/8.0/images/language_sql.png new file mode 100644 index 00000000000..b5b8bfa20ab Binary files /dev/null and b/product_docs/docs/pem/8.0/images/language_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/lgdownload.png b/product_docs/docs/pem/8.0/images/lgdownload.png new file mode 100755 index 00000000000..bfd54f2b4d4 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/lgdownload.png differ diff --git a/product_docs/docs/pem/8.0/images/lgfullscreen.png b/product_docs/docs/pem/8.0/images/lgfullscreen.png new file mode 100755 index 00000000000..ae7925a3463 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/lgfullscreen.png differ diff --git a/product_docs/docs/pem/8.0/images/lginformation.png b/product_docs/docs/pem/8.0/images/lginformation.png new file mode 100755 index 00000000000..15ba80c82cb Binary files /dev/null and b/product_docs/docs/pem/8.0/images/lginformation.png differ diff --git a/product_docs/docs/pem/8.0/images/lgpersonalize.png b/product_docs/docs/pem/8.0/images/lgpersonalize.png new file mode 100755 index 00000000000..61bb4d95512 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/lgpersonalize.png differ diff --git a/product_docs/docs/pem/8.0/images/lgrefresh.png b/product_docs/docs/pem/8.0/images/lgrefresh.png new file mode 100755 index 00000000000..63caf86f106 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/lgrefresh.png differ diff --git a/product_docs/docs/pem/8.0/images/limit_icon.png b/product_docs/docs/pem/8.0/images/limit_icon.png new file mode 100644 index 00000000000..71ebe65c527 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/limit_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/lm_import_rotation.png b/product_docs/docs/pem/8.0/images/lm_import_rotation.png new file mode 100755 index 00000000000..dc67c628f9f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/lm_import_rotation.png differ diff --git a/product_docs/docs/pem/8.0/images/lm_scheduling.png b/product_docs/docs/pem/8.0/images/lm_scheduling.png new file mode 100755 index 00000000000..f67ca977fda Binary files /dev/null and b/product_docs/docs/pem/8.0/images/lm_scheduling.png differ diff --git a/product_docs/docs/pem/8.0/images/lm_server_select.png b/product_docs/docs/pem/8.0/images/lm_server_select.png new file mode 100755 index 00000000000..10821d59ba5 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/lm_server_select.png differ diff --git a/product_docs/docs/pem/8.0/images/lm_welcome.png b/product_docs/docs/pem/8.0/images/lm_welcome.png new file mode 100755 index 00000000000..09ba8745983 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/lm_welcome.png differ diff --git a/product_docs/docs/pem/8.0/images/lm_what_to_log.png b/product_docs/docs/pem/8.0/images/lm_what_to_log.png new file mode 100755 index 00000000000..9203546a815 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/lm_what_to_log.png differ diff --git a/product_docs/docs/pem/8.0/images/lm_when_to_log.png b/product_docs/docs/pem/8.0/images/lm_when_to_log.png new file mode 100755 index 00000000000..63e6f353de2 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/lm_when_to_log.png differ diff --git a/product_docs/docs/pem/8.0/images/lm_where_to_log.png b/product_docs/docs/pem/8.0/images/lm_where_to_log.png new file mode 100755 index 00000000000..ea1bf059a12 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/lm_where_to_log.png differ diff --git a/product_docs/docs/pem/8.0/images/logo_base.svg b/product_docs/docs/pem/8.0/images/logo_base.svg new file mode 100644 index 00000000000..67624dbbaed --- /dev/null +++ b/product_docs/docs/pem/8.0/images/logo_base.svg @@ -0,0 +1,18 @@ + + + + +logo_base + + + + + + + diff --git a/product_docs/docs/pem/8.0/images/main_sql.png b/product_docs/docs/pem/8.0/images/main_sql.png new file mode 100644 index 00000000000..e1077bbefe2 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/main_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/maintenance.png b/product_docs/docs/pem/8.0/images/maintenance.png new file mode 100644 index 00000000000..a3f8da489bd Binary files /dev/null and b/product_docs/docs/pem/8.0/images/maintenance.png differ diff --git a/product_docs/docs/pem/8.0/images/maintenance_complete.png b/product_docs/docs/pem/8.0/images/maintenance_complete.png new file mode 100644 index 00000000000..d1871553d4b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/maintenance_complete.png differ diff --git a/product_docs/docs/pem/8.0/images/maintenance_pw.png b/product_docs/docs/pem/8.0/images/maintenance_pw.png new file mode 100644 index 00000000000..d7b1e2e76b8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/maintenance_pw.png differ diff --git a/product_docs/docs/pem/8.0/images/manage_dashboard_tab.png b/product_docs/docs/pem/8.0/images/manage_dashboard_tab.png new file mode 100755 index 00000000000..e36cc1910f0 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/manage_dashboard_tab.png differ diff --git a/product_docs/docs/pem/8.0/images/materialize_icon.png b/product_docs/docs/pem/8.0/images/materialize_icon.png new file mode 100644 index 00000000000..6e6df7d6282 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/materialize_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/materialized_view_definition.png b/product_docs/docs/pem/8.0/images/materialized_view_definition.png new file mode 100644 index 00000000000..7d1cc7f6421 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/materialized_view_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/materialized_view_general.png b/product_docs/docs/pem/8.0/images/materialized_view_general.png new file mode 100644 index 00000000000..2c62f2c3518 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/materialized_view_general.png differ diff --git a/product_docs/docs/pem/8.0/images/materialized_view_parameter.png b/product_docs/docs/pem/8.0/images/materialized_view_parameter.png new file mode 100644 index 00000000000..8b08816d455 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/materialized_view_parameter.png differ diff --git a/product_docs/docs/pem/8.0/images/materialized_view_security.png b/product_docs/docs/pem/8.0/images/materialized_view_security.png new file mode 100644 index 00000000000..e0ae10b498a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/materialized_view_security.png differ diff --git a/product_docs/docs/pem/8.0/images/materialized_view_sql.png b/product_docs/docs/pem/8.0/images/materialized_view_sql.png new file mode 100644 index 00000000000..0b83c92d340 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/materialized_view_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/materialized_view_storage.png b/product_docs/docs/pem/8.0/images/materialized_view_storage.png new file mode 100644 index 00000000000..9d0c24d1935 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/materialized_view_storage.png differ diff --git a/product_docs/docs/pem/8.0/images/memory_analysis_dashboard.png b/product_docs/docs/pem/8.0/images/memory_analysis_dashboard.png new file mode 100644 index 00000000000..b8c3d5b3183 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/memory_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/8.0/images/merge_anti_join_icon.png b/product_docs/docs/pem/8.0/images/merge_anti_join_icon.png new file mode 100644 index 00000000000..2fb22ca1d3f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/merge_anti_join_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/merge_join_icon.png b/product_docs/docs/pem/8.0/images/merge_join_icon.png new file mode 100644 index 00000000000..8dc6b916ec5 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/merge_join_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/merge_semi_join_icon.png b/product_docs/docs/pem/8.0/images/merge_semi_join_icon.png new file mode 100644 index 00000000000..44ffaf775e0 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/merge_semi_join_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/move_objects_general.png b/product_docs/docs/pem/8.0/images/move_objects_general.png new file mode 100644 index 00000000000..57dccd0713b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/move_objects_general.png differ diff --git a/product_docs/docs/pem/8.0/images/move_objects_sql.png b/product_docs/docs/pem/8.0/images/move_objects_sql.png new file mode 100644 index 00000000000..0d006a5edd6 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/move_objects_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/move_pem_server_agent_cfg.png b/product_docs/docs/pem/8.0/images/move_pem_server_agent_cfg.png new file mode 100755 index 00000000000..3a70eae4ad5 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/move_pem_server_agent_cfg.png differ diff --git a/product_docs/docs/pem/8.0/images/move_pem_server_restart_agent.png b/product_docs/docs/pem/8.0/images/move_pem_server_restart_agent.png new file mode 100755 index 00000000000..a5578c6e12f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/move_pem_server_restart_agent.png differ diff --git a/product_docs/docs/pem/8.0/images/move_pem_server_windows_registry.png b/product_docs/docs/pem/8.0/images/move_pem_server_windows_registry.png new file mode 100755 index 00000000000..9a99baf3332 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/move_pem_server_windows_registry.png differ diff --git a/product_docs/docs/pem/8.0/images/move_pem_server_windows_registry_edit.png b/product_docs/docs/pem/8.0/images/move_pem_server_windows_registry_edit.png new file mode 100755 index 00000000000..8f75288373d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/move_pem_server_windows_registry_edit.png differ diff --git a/product_docs/docs/pem/8.0/images/move_server_windows_permission.png b/product_docs/docs/pem/8.0/images/move_server_windows_permission.png new file mode 100755 index 00000000000..f7c0ac353ee Binary files /dev/null and b/product_docs/docs/pem/8.0/images/move_server_windows_permission.png differ diff --git a/product_docs/docs/pem/8.0/images/nagios_alert_notification.png b/product_docs/docs/pem/8.0/images/nagios_alert_notification.png new file mode 100755 index 00000000000..42ba7287eb2 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/nagios_alert_notification.png differ diff --git a/product_docs/docs/pem/8.0/images/nagios_server_configuration.png b/product_docs/docs/pem/8.0/images/nagios_server_configuration.png new file mode 100755 index 00000000000..17ccfee1ca8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/nagios_server_configuration.png differ diff --git a/product_docs/docs/pem/8.0/images/nested_loop_anti_join_icon.png b/product_docs/docs/pem/8.0/images/nested_loop_anti_join_icon.png new file mode 100644 index 00000000000..bba72e3ce11 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/nested_loop_anti_join_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/nested_loop_icon.png b/product_docs/docs/pem/8.0/images/nested_loop_icon.png new file mode 100644 index 00000000000..d99aeafa16f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/nested_loop_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/nested_loop_semi_join_icon.png b/product_docs/docs/pem/8.0/images/nested_loop_semi_join_icon.png new file mode 100644 index 00000000000..510342f0dc5 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/nested_loop_semi_join_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/new_connection_dialog.png b/product_docs/docs/pem/8.0/images/new_connection_dialog.png new file mode 100644 index 00000000000..5c342214289 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/new_connection_dialog.png differ diff --git a/product_docs/docs/pem/8.0/images/new_connection_options.png b/product_docs/docs/pem/8.0/images/new_connection_options.png new file mode 100644 index 00000000000..a2a9a00a322 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/new_connection_options.png differ diff --git a/product_docs/docs/pem/8.0/images/object_activity_analysis_dashboard.png b/product_docs/docs/pem/8.0/images/object_activity_analysis_dashboard.png new file mode 100644 index 00000000000..7f8fb8a2774 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/object_activity_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/8.0/images/object_io_details_table.png b/product_docs/docs/pem/8.0/images/object_io_details_table.png new file mode 100644 index 00000000000..ad4aa18dd01 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/object_io_details_table.png differ diff --git a/product_docs/docs/pem/8.0/images/object_storage_table.png b/product_docs/docs/pem/8.0/images/object_storage_table.png new file mode 100644 index 00000000000..d4122e1a4fb Binary files /dev/null and b/product_docs/docs/pem/8.0/images/object_storage_table.png differ diff --git a/product_docs/docs/pem/8.0/images/oper_system_analysis.png b/product_docs/docs/pem/8.0/images/oper_system_analysis.png new file mode 100644 index 00000000000..2b427fd7f1e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/oper_system_analysis.png differ diff --git a/product_docs/docs/pem/8.0/images/os_analysis_disk.png b/product_docs/docs/pem/8.0/images/os_analysis_disk.png new file mode 100644 index 00000000000..72a56b6eef9 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/os_analysis_disk.png differ diff --git a/product_docs/docs/pem/8.0/images/os_analysis_network.png b/product_docs/docs/pem/8.0/images/os_analysis_network.png new file mode 100644 index 00000000000..fb4485b79c9 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/os_analysis_network.png differ diff --git a/product_docs/docs/pem/8.0/images/package_body.png b/product_docs/docs/pem/8.0/images/package_body.png new file mode 100644 index 00000000000..ad9aae1f0f4 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/package_body.png differ diff --git a/product_docs/docs/pem/8.0/images/package_general.png b/product_docs/docs/pem/8.0/images/package_general.png new file mode 100644 index 00000000000..ee24f476674 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/package_general.png differ diff --git a/product_docs/docs/pem/8.0/images/package_header.png b/product_docs/docs/pem/8.0/images/package_header.png new file mode 100644 index 00000000000..3702ede49f3 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/package_header.png differ diff --git a/product_docs/docs/pem/8.0/images/package_security.png b/product_docs/docs/pem/8.0/images/package_security.png new file mode 100644 index 00000000000..9b43ef7b847 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/package_security.png differ diff --git a/product_docs/docs/pem/8.0/images/package_sql.png b/product_docs/docs/pem/8.0/images/package_sql.png new file mode 100644 index 00000000000..01880e3c813 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/package_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/pe_direct_output.png b/product_docs/docs/pem/8.0/images/pe_direct_output.png new file mode 100755 index 00000000000..a9f3c715853 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pe_direct_output.png differ diff --git a/product_docs/docs/pem/8.0/images/pe_param_value.png b/product_docs/docs/pem/8.0/images/pe_param_value.png new file mode 100755 index 00000000000..6021a4cabb1 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pe_param_value.png differ diff --git a/product_docs/docs/pem/8.0/images/pe_report.png b/product_docs/docs/pem/8.0/images/pe_report.png new file mode 100755 index 00000000000..5307ca0a890 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pe_report.png differ diff --git a/product_docs/docs/pem/8.0/images/pe_select_rules.png b/product_docs/docs/pem/8.0/images/pe_select_rules.png new file mode 100755 index 00000000000..72788323f47 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pe_select_rules.png differ diff --git a/product_docs/docs/pem/8.0/images/pe_select_servers.png b/product_docs/docs/pem/8.0/images/pe_select_servers.png new file mode 100755 index 00000000000..129c6401923 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pe_select_servers.png differ diff --git a/product_docs/docs/pem/8.0/images/pe_welcome.png b/product_docs/docs/pem/8.0/images/pe_welcome.png new file mode 100755 index 00000000000..d7a59e6333c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pe_welcome.png differ diff --git a/product_docs/docs/pem/8.0/images/pem-architecture.png b/product_docs/docs/pem/8.0/images/pem-architecture.png new file mode 100644 index 00000000000..e8e3fdc4dd0 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem-architecture.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_access_create_login.png b/product_docs/docs/pem/8.0/images/pem_access_create_login.png new file mode 100755 index 00000000000..da3dba9ae9e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_access_create_login.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_accessing_create_server_dialog.png b/product_docs/docs/pem/8.0/images/pem_accessing_create_server_dialog.png new file mode 100755 index 00000000000..8c26533355c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_accessing_create_server_dialog.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_agent.png b/product_docs/docs/pem/8.0/images/pem_agent.png new file mode 100644 index 00000000000..c35d03ac401 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_agent.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_agent_configurations_properties.png b/product_docs/docs/pem/8.0/images/pem_agent_configurations_properties.png new file mode 100755 index 00000000000..1577bb92155 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_agent_configurations_properties.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_agent_job_notification_properties.png b/product_docs/docs/pem/8.0/images/pem_agent_job_notification_properties.png new file mode 100755 index 00000000000..910870a81d3 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_agent_job_notification_properties.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_agent_pem_server_windows_installation_details.png b/product_docs/docs/pem/8.0/images/pem_agent_pem_server_windows_installation_details.png new file mode 100755 index 00000000000..d4187b939f3 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_agent_pem_server_windows_installation_details.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_agent_properties.png b/product_docs/docs/pem/8.0/images/pem_agent_properties.png new file mode 100755 index 00000000000..cf37c40ce08 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_agent_properties.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_agent_self_registration.png b/product_docs/docs/pem/8.0/images/pem_agent_self_registration.png new file mode 100644 index 00000000000..b6d99493eda Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_agent_self_registration.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_agent_service_account_windows_password.png b/product_docs/docs/pem/8.0/images/pem_agent_service_account_windows_password.png new file mode 100755 index 00000000000..3ad6a1f4ee3 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_agent_service_account_windows_password.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_agent_welcome_dialog.png b/product_docs/docs/pem/8.0/images/pem_agent_welcome_dialog.png new file mode 100644 index 00000000000..9196cedd85d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_agent_welcome_dialog.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_agent_windows_advanced_options_certificate_path.png b/product_docs/docs/pem/8.0/images/pem_agent_windows_advanced_options_certificate_path.png new file mode 100755 index 00000000000..093146eaf37 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_agent_windows_advanced_options_certificate_path.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_agent_windows_agent_details.png b/product_docs/docs/pem/8.0/images/pem_agent_windows_agent_details.png new file mode 100755 index 00000000000..fed4dfecc25 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_agent_windows_agent_details.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_agent_windows_installation_complete.png b/product_docs/docs/pem/8.0/images/pem_agent_windows_installation_complete.png new file mode 100644 index 00000000000..dbaf1a69aa0 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_agent_windows_installation_complete.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_agent_windows_installation_directory.png b/product_docs/docs/pem/8.0/images/pem_agent_windows_installation_directory.png new file mode 100755 index 00000000000..583bd14922b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_agent_windows_installation_directory.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_agent_windows_installation_in_progress.png b/product_docs/docs/pem/8.0/images/pem_agent_windows_installation_in_progress.png new file mode 100755 index 00000000000..454a176bb73 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_agent_windows_installation_in_progress.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_agent_windows_installation_ready_to_begin.png b/product_docs/docs/pem/8.0/images/pem_agent_windows_installation_ready_to_begin.png new file mode 100755 index 00000000000..2968b3706b0 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_agent_windows_installation_ready_to_begin.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_agent_windows_license_agreement.png b/product_docs/docs/pem/8.0/images/pem_agent_windows_license_agreement.png new file mode 100755 index 00000000000..4322c85a78b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_agent_windows_license_agreement.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_alert_blackout_agent_tab.png b/product_docs/docs/pem/8.0/images/pem_alert_blackout_agent_tab.png new file mode 100644 index 00000000000..3522709e978 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_alert_blackout_agent_tab.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_alert_blackout_delete_confirm.png b/product_docs/docs/pem/8.0/images/pem_alert_blackout_delete_confirm.png new file mode 100644 index 00000000000..88fb98804f9 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_alert_blackout_delete_confirm.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_alert_blackout_select_servers.png b/product_docs/docs/pem/8.0/images/pem_alert_blackout_select_servers.png new file mode 100644 index 00000000000..ef797f936d3 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_alert_blackout_select_servers.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_alert_blackout_server_tab.png b/product_docs/docs/pem/8.0/images/pem_alert_blackout_server_tab.png new file mode 100644 index 00000000000..cd470e4226a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_alert_blackout_server_tab.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_alert_templates_general.png b/product_docs/docs/pem/8.0/images/pem_alert_templates_general.png new file mode 100755 index 00000000000..4aa32049bd3 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_alert_templates_general.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_alert_templates_paramtab.png b/product_docs/docs/pem/8.0/images/pem_alert_templates_paramtab.png new file mode 100755 index 00000000000..01de1a67d96 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_alert_templates_paramtab.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_alert_templates_pdtab.png b/product_docs/docs/pem/8.0/images/pem_alert_templates_pdtab.png new file mode 100755 index 00000000000..60fd89afdaf Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_alert_templates_pdtab.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_alert_templates_pre-def.png b/product_docs/docs/pem/8.0/images/pem_alert_templates_pre-def.png new file mode 100755 index 00000000000..4464b6a070a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_alert_templates_pre-def.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_alert_templates_sqltab.png b/product_docs/docs/pem/8.0/images/pem_alert_templates_sqltab.png new file mode 100755 index 00000000000..88747e33129 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_alert_templates_sqltab.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_alert_templates_tab.png b/product_docs/docs/pem/8.0/images/pem_alert_templates_tab.png new file mode 100755 index 00000000000..956a1191792 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_alert_templates_tab.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_architecture.png b/product_docs/docs/pem/8.0/images/pem_architecture.png new file mode 100644 index 00000000000..f90938f1d07 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_architecture.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_browser_dashboard_statistics.png b/product_docs/docs/pem/8.0/images/pem_browser_dashboard_statistics.png new file mode 100644 index 00000000000..0c127687a87 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_browser_dashboard_statistics.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_browser_dashboard_welcome.png b/product_docs/docs/pem/8.0/images/pem_browser_dashboard_welcome.png new file mode 100644 index 00000000000..0a0fbe56a6f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_browser_dashboard_welcome.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_browser_dependencies.png b/product_docs/docs/pem/8.0/images/pem_browser_dependencies.png new file mode 100644 index 00000000000..0c34b443e22 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_browser_dependencies.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_browser_dependents.png b/product_docs/docs/pem/8.0/images/pem_browser_dependents.png new file mode 100644 index 00000000000..00a41409945 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_browser_dependents.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_browser_monitoring.png b/product_docs/docs/pem/8.0/images/pem_browser_monitoring.png new file mode 100644 index 00000000000..4459b62f744 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_browser_monitoring.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_browser_properties.png b/product_docs/docs/pem/8.0/images/pem_browser_properties.png new file mode 100644 index 00000000000..1ffa565f877 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_browser_properties.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_browser_sql.png b/product_docs/docs/pem/8.0/images/pem_browser_sql.png new file mode 100644 index 00000000000..05d22cffd59 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_browser_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_browser_statistics.png b/product_docs/docs/pem/8.0/images/pem_browser_statistics.png new file mode 100644 index 00000000000..038cfbe01d9 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_browser_statistics.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_browser_window.png b/product_docs/docs/pem/8.0/images/pem_browser_window.png new file mode 100644 index 00000000000..d1adfbe9764 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_browser_window.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_create_new_chart_conf_chart.png b/product_docs/docs/pem/8.0/images/pem_create_new_chart_conf_chart.png new file mode 100755 index 00000000000..701bf53c6e4 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_create_new_chart_conf_chart.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_create_new_chart_select_metrics.png b/product_docs/docs/pem/8.0/images/pem_create_new_chart_select_metrics.png new file mode 100755 index 00000000000..26ea5346823 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_create_new_chart_select_metrics.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_create_new_chart_set_options.png b/product_docs/docs/pem/8.0/images/pem_create_new_chart_set_options.png new file mode 100755 index 00000000000..60f4f2a204a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_create_new_chart_set_options.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_custom_dashboard_add_chart.png b/product_docs/docs/pem/8.0/images/pem_custom_dashboard_add_chart.png new file mode 100755 index 00000000000..f9fe25cca91 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_custom_dashboard_add_chart.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_custom_dashboard_add_section_name.png b/product_docs/docs/pem/8.0/images/pem_custom_dashboard_add_section_name.png new file mode 100755 index 00000000000..fe5c3214fe5 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_custom_dashboard_add_section_name.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_custom_dashboard_chart_details.png b/product_docs/docs/pem/8.0/images/pem_custom_dashboard_chart_details.png new file mode 100755 index 00000000000..81774433b88 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_custom_dashboard_chart_details.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_custom_dashboard_configure_dashboard.png b/product_docs/docs/pem/8.0/images/pem_custom_dashboard_configure_dashboard.png new file mode 100755 index 00000000000..aa74a801db0 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_custom_dashboard_configure_dashboard.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_dashboards_menu.png b/product_docs/docs/pem/8.0/images/pem_dashboards_menu.png new file mode 100755 index 00000000000..b7e2f1abb6e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_dashboards_menu.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_database_with_pgbouncer.png b/product_docs/docs/pem/8.0/images/pem_database_with_pgbouncer.png new file mode 100755 index 00000000000..9b5f265c07f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_database_with_pgbouncer.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_database_without_pgbouncer.png b/product_docs/docs/pem/8.0/images/pem_database_without_pgbouncer.png new file mode 100755 index 00000000000..e5b72e5d9fe Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_database_without_pgbouncer.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_file_menu.png b/product_docs/docs/pem/8.0/images/pem_file_menu.png new file mode 100755 index 00000000000..b36fac99ffc Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_file_menu.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_help_menu.png b/product_docs/docs/pem/8.0/images/pem_help_menu.png new file mode 100755 index 00000000000..41a92b7920b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_help_menu.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_installation_overview.png b/product_docs/docs/pem/8.0/images/pem_installation_overview.png new file mode 100755 index 00000000000..e8e3fdc4dd0 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_installation_overview.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_log_analysis_expert_report.png b/product_docs/docs/pem/8.0/images/pem_log_analysis_expert_report.png new file mode 100755 index 00000000000..cbe6846a27c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_log_analysis_expert_report.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_log_analysis_expert_report_finish.png b/product_docs/docs/pem/8.0/images/pem_log_analysis_expert_report_finish.png new file mode 100755 index 00000000000..6aaf6b090b2 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_log_analysis_expert_report_finish.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_log_analysis_expert_report_options.png b/product_docs/docs/pem/8.0/images/pem_log_analysis_expert_report_options.png new file mode 100755 index 00000000000..66cdafa8fa1 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_log_analysis_expert_report_options.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_log_analysis_expert_select_analyzers.png b/product_docs/docs/pem/8.0/images/pem_log_analysis_expert_select_analyzers.png new file mode 100755 index 00000000000..d4a2a28cda3 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_log_analysis_expert_select_analyzers.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_log_analysis_expert_select_servers.png b/product_docs/docs/pem/8.0/images/pem_log_analysis_expert_select_servers.png new file mode 100755 index 00000000000..390dc60c2b8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_log_analysis_expert_select_servers.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_log_analysis_expert_welcome.png b/product_docs/docs/pem/8.0/images/pem_log_analysis_expert_welcome.png new file mode 100755 index 00000000000..20c49f144dc Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_log_analysis_expert_welcome.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_log_view.png b/product_docs/docs/pem/8.0/images/pem_log_view.png new file mode 100644 index 00000000000..0c74d10e786 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_log_view.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_login.png b/product_docs/docs/pem/8.0/images/pem_login.png new file mode 100755 index 00000000000..efdf25cf120 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_login.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_logon.png b/product_docs/docs/pem/8.0/images/pem_logon.png new file mode 100755 index 00000000000..647ef069427 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_logon.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_manage_charts.png b/product_docs/docs/pem/8.0/images/pem_manage_charts.png new file mode 100755 index 00000000000..6729ddbe237 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_manage_charts.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_manage_charts_completed.png b/product_docs/docs/pem/8.0/images/pem_manage_charts_completed.png new file mode 100755 index 00000000000..4e410347dc3 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_manage_charts_completed.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_manage_charts_custom_chart.png b/product_docs/docs/pem/8.0/images/pem_manage_charts_custom_chart.png new file mode 100755 index 00000000000..519fe879d8c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_manage_charts_custom_chart.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_manage_charts_imported_metrics.png b/product_docs/docs/pem/8.0/images/pem_manage_charts_imported_metrics.png new file mode 100755 index 00000000000..7eca360f919 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_manage_charts_imported_metrics.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_manage_charts_imported_options.png b/product_docs/docs/pem/8.0/images/pem_manage_charts_imported_options.png new file mode 100755 index 00000000000..13aa1a8b60a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_manage_charts_imported_options.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_manage_charts_imported_permissions.png b/product_docs/docs/pem/8.0/images/pem_manage_charts_imported_permissions.png new file mode 100755 index 00000000000..50143b49b4a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_manage_charts_imported_permissions.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_manage_charts_imported_template.png b/product_docs/docs/pem/8.0/images/pem_manage_charts_imported_template.png new file mode 100755 index 00000000000..708182569ed Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_manage_charts_imported_template.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_manage_charts_set_permissions.png b/product_docs/docs/pem/8.0/images/pem_manage_charts_set_permissions.png new file mode 100755 index 00000000000..748f8a949ec Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_manage_charts_set_permissions.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_manage_dashboards_tab.png b/product_docs/docs/pem/8.0/images/pem_manage_dashboards_tab.png new file mode 100644 index 00000000000..851760274e0 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_manage_dashboards_tab.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_manage_import_charts_completed.png b/product_docs/docs/pem/8.0/images/pem_manage_import_charts_completed.png new file mode 100644 index 00000000000..b9f3ddcf805 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_manage_import_charts_completed.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_manage_probes_tab.png b/product_docs/docs/pem/8.0/images/pem_manage_probes_tab.png new file mode 100755 index 00000000000..defd9fe235c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_manage_probes_tab.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_object_menu.png b/product_docs/docs/pem/8.0/images/pem_object_menu.png new file mode 100755 index 00000000000..a6e6a39576a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_object_menu.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_online_help.png b/product_docs/docs/pem/8.0/images/pem_online_help.png new file mode 100755 index 00000000000..97394cfdb4e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_online_help.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_pg_hba.png b/product_docs/docs/pem/8.0/images/pem_pg_hba.png new file mode 100755 index 00000000000..2475302a4c8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_pg_hba.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_pgbouncer_with.png b/product_docs/docs/pem/8.0/images/pem_pgbouncer_with.png new file mode 100644 index 00000000000..9698c5289ba Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_pgbouncer_with.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_pgbouncer_without.png b/product_docs/docs/pem/8.0/images/pem_pgbouncer_without.png new file mode 100644 index 00000000000..780336afd19 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_pgbouncer_without.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_roles_membership_example.png b/product_docs/docs/pem/8.0/images/pem_roles_membership_example.png new file mode 100644 index 00000000000..eb6175a120e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_roles_membership_example.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_rpm_installation_agent.png b/product_docs/docs/pem/8.0/images/pem_rpm_installation_agent.png new file mode 100755 index 00000000000..2c20acc77df Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_rpm_installation_agent.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_scheduled_task_details.png b/product_docs/docs/pem/8.0/images/pem_scheduled_task_details.png new file mode 100644 index 00000000000..1cf4977efb9 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_scheduled_task_details.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_scheduled_task_steps.png b/product_docs/docs/pem/8.0/images/pem_scheduled_task_steps.png new file mode 100644 index 00000000000..a8941b20d9a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_scheduled_task_steps.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_scheduled_task_tab.png b/product_docs/docs/pem/8.0/images/pem_scheduled_task_tab.png new file mode 100644 index 00000000000..8a9f14aa242 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_scheduled_task_tab.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server.png b/product_docs/docs/pem/8.0/images/pem_server.png new file mode 100644 index 00000000000..6161f2c9b47 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_config.png b/product_docs/docs/pem/8.0/images/pem_server_config.png new file mode 100755 index 00000000000..6062ec6428f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_config.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_existing_pg_administrators_password.png b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_administrators_password.png new file mode 100755 index 00000000000..c9886bbae32 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_administrators_password.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_existing_pg_advanced_options.png b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_advanced_options.png new file mode 100755 index 00000000000..4a00afa8775 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_advanced_options.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_existing_pg_agent_details.png b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_agent_details.png new file mode 100755 index 00000000000..bdc33c8c679 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_agent_details.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_existing_pg_database_server_selection.png b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_database_server_selection.png new file mode 100755 index 00000000000..f55d4d900b5 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_database_server_selection.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_existing_pg_installation_begins.png b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_installation_begins.png new file mode 100755 index 00000000000..e77fab29c3e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_installation_begins.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_existing_pg_installation_complete.png b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_installation_complete.png new file mode 100644 index 00000000000..e904a6a88bf Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_installation_complete.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_existing_pg_installation_db_server_details.png b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_installation_db_server_details.png new file mode 100755 index 00000000000..aa2ccc7dfbb Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_installation_db_server_details.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_existing_pg_installation_directory.png b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_installation_directory.png new file mode 100755 index 00000000000..b5dcdf4e084 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_installation_directory.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_existing_pg_installation_in_progress.png b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_installation_in_progress.png new file mode 100755 index 00000000000..46b7aec438c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_installation_in_progress.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_existing_pg_license_agreement.png b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_license_agreement.png new file mode 100755 index 00000000000..3b224d4e9cc Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_license_agreement.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_existing_pg_network_details.png b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_network_details.png new file mode 100755 index 00000000000..794b05f5cea Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_network_details.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_existing_pg_pem_db_created.png b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_pem_db_created.png new file mode 100755 index 00000000000..8de99773e95 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_pem_db_created.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_existing_pg_welcome_wizard.png b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_welcome_wizard.png new file mode 100644 index 00000000000..f3a8e06c257 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_existing_pg_welcome_wizard.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_same_host_agent_details.png b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_agent_details.png new file mode 100755 index 00000000000..4d941db7d89 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_agent_details.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_same_host_db_pem_created.png b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_db_pem_created.png new file mode 100644 index 00000000000..89f3defa281 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_db_pem_created.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_same_host_installation_begins.png b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_installation_begins.png new file mode 100755 index 00000000000..312ed069ec1 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_installation_begins.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_same_host_installation_complete.png b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_installation_complete.png new file mode 100644 index 00000000000..e904a6a88bf Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_installation_complete.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_same_host_installation_directory.png b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_installation_directory.png new file mode 100755 index 00000000000..004cffe6753 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_installation_directory.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_same_host_installation_in_progress.png b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_installation_in_progress.png new file mode 100644 index 00000000000..32ea7e92bd9 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_installation_in_progress.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_same_host_license_agreement.png b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_license_agreement.png new file mode 100755 index 00000000000..613013fe1ec Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_license_agreement.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_same_host_network_details.png b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_network_details.png new file mode 100755 index 00000000000..16687bc48bc Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_network_details.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_same_host_pemagent_service_account_password.png b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_pemagent_service_account_password.png new file mode 100755 index 00000000000..e999f8fd2a7 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_pemagent_service_account_password.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_same_host_pgsql_credentials.png b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_pgsql_credentials.png new file mode 100644 index 00000000000..e8b03bac1b4 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_pgsql_credentials.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_same_host_prerequisites_checks.png b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_prerequisites_checks.png new file mode 100644 index 00000000000..1b85cac784f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_prerequisites_checks.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_same_host_welcome_wizard.png b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_welcome_wizard.png new file mode 100644 index 00000000000..f3a8e06c257 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_same_host_welcome_wizard.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_PEM_httpd_installation_wizard.png b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_PEM_httpd_installation_wizard.png new file mode 100644 index 00000000000..f6cc410edcf Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_PEM_httpd_installation_wizard.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_advanced_options_dialog_select_database.png b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_advanced_options_dialog_select_database.png new file mode 100755 index 00000000000..aa8435bb03e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_advanced_options_dialog_select_database.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_database_agent_details.png b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_database_agent_details.png new file mode 100755 index 00000000000..f8e2e4bd989 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_database_agent_details.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_database_server_installation_details.png b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_database_server_installation_details.png new file mode 100755 index 00000000000..6889ed260e4 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_database_server_installation_details.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_database_server_selection.png b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_database_server_selection.png new file mode 100755 index 00000000000..dc7bd27a557 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_database_server_selection.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_installation_begins.png b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_installation_begins.png new file mode 100755 index 00000000000..213c1f8e11d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_installation_begins.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_installation_complete.png b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_installation_complete.png new file mode 100644 index 00000000000..e904a6a88bf Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_installation_complete.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_installation_directory.png b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_installation_directory.png new file mode 100755 index 00000000000..b5dcdf4e084 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_installation_directory.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_installation_in_progress.png b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_installation_in_progress.png new file mode 100755 index 00000000000..13089c3e8be Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_installation_in_progress.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_installing_web_services_advanced_options.png b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_installing_web_services_advanced_options.png new file mode 100755 index 00000000000..dbb7dbbde50 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_installing_web_services_advanced_options.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_installing_web_services_installing_missing_dependency_languagepack.png b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_installing_web_services_installing_missing_dependency_languagepack.png new file mode 100755 index 00000000000..78c06039355 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_installing_web_services_installing_missing_dependency_languagepack.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_license_agreement.png b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_license_agreement.png new file mode 100755 index 00000000000..3b224d4e9cc Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_license_agreement.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_network_details.png b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_network_details.png new file mode 100755 index 00000000000..be79965a9bf Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_network_details.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_pem_db_created.png b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_pem_db_created.png new file mode 100755 index 00000000000..07d302a09f9 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_pem_db_created.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_web_services_and_database.png b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_web_services_and_database.png new file mode 100755 index 00000000000..a5e33604302 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_web_services_and_database.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_web_services_checking_components.png b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_web_services_checking_components.png new file mode 100755 index 00000000000..b4a32b653fb Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_web_services_checking_components.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_webservices_installing_database_server.png b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_webservices_installing_database_server.png new file mode 100755 index 00000000000..af4f3cdbe1c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_webservices_installing_database_server.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_welcome_wizard.png b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_welcome_wizard.png new file mode 100644 index 00000000000..f3a8e06c257 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_separate_host_welcome_wizard.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_on_separate_pem_agent_service_account.png b/product_docs/docs/pem/8.0/images/pem_server_on_separate_pem_agent_service_account.png new file mode 100755 index 00000000000..4c7e89f4df5 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_on_separate_pem_agent_service_account.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_server_tools_menu_queue_server.png b/product_docs/docs/pem/8.0/images/pem_server_tools_menu_queue_server.png new file mode 100755 index 00000000000..f016eb5b5a4 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_server_tools_menu_queue_server.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_services_httpd.png b/product_docs/docs/pem/8.0/images/pem_services_httpd.png new file mode 100755 index 00000000000..e1e59e77f5a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_services_httpd.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_services_windows_server_agent.png b/product_docs/docs/pem/8.0/images/pem_services_windows_server_agent.png new file mode 100755 index 00000000000..4f27cd89a9f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_services_windows_server_agent.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_task_view.png b/product_docs/docs/pem/8.0/images/pem_task_view.png new file mode 100644 index 00000000000..3e499ee2776 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_task_view.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_tool_menu.png b/product_docs/docs/pem/8.0/images/pem_tool_menu.png new file mode 100644 index 00000000000..0b1407fa6fe Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_tool_menu.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_toolbar.png b/product_docs/docs/pem/8.0/images/pem_toolbar.png new file mode 100644 index 00000000000..9cb07275afa Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_toolbar.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_upgrade_agent_existing_installation.png b/product_docs/docs/pem/8.0/images/pem_upgrade_agent_existing_installation.png new file mode 100755 index 00000000000..a98f629f7e8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_upgrade_agent_existing_installation.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_upgrade_agent_finish.png b/product_docs/docs/pem/8.0/images/pem_upgrade_agent_finish.png new file mode 100644 index 00000000000..dbaf1a69aa0 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_upgrade_agent_finish.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_upgrade_agent_license.png b/product_docs/docs/pem/8.0/images/pem_upgrade_agent_license.png new file mode 100755 index 00000000000..eb96f0af909 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_upgrade_agent_license.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_upgrade_agent_pemAgent_service_account.png b/product_docs/docs/pem/8.0/images/pem_upgrade_agent_pemAgent_service_account.png new file mode 100755 index 00000000000..de6e089e495 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_upgrade_agent_pemAgent_service_account.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_upgrade_agent_ready_install.png b/product_docs/docs/pem/8.0/images/pem_upgrade_agent_ready_install.png new file mode 100755 index 00000000000..caef36fe263 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_upgrade_agent_ready_install.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_upgrade_agent_restart_pop_up.png b/product_docs/docs/pem/8.0/images/pem_upgrade_agent_restart_pop_up.png new file mode 100755 index 00000000000..47506b46b07 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_upgrade_agent_restart_pop_up.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_upgrade_agent_welcome.png b/product_docs/docs/pem/8.0/images/pem_upgrade_agent_welcome.png new file mode 100644 index 00000000000..9196cedd85d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_upgrade_agent_welcome.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_upgrade_server_DB_installation.png b/product_docs/docs/pem/8.0/images/pem_upgrade_server_DB_installation.png new file mode 100644 index 00000000000..1587cf45049 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_upgrade_server_DB_installation.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_upgrade_server_dependency_missing.png b/product_docs/docs/pem/8.0/images/pem_upgrade_server_dependency_missing.png new file mode 100644 index 00000000000..27c9c5978c2 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_upgrade_server_dependency_missing.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_upgrade_server_error.png b/product_docs/docs/pem/8.0/images/pem_upgrade_server_error.png new file mode 100755 index 00000000000..0264db94890 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_upgrade_server_error.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_upgrade_server_existing_installation.png b/product_docs/docs/pem/8.0/images/pem_upgrade_server_existing_installation.png new file mode 100644 index 00000000000..779b5112787 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_upgrade_server_existing_installation.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_upgrade_server_finish.png b/product_docs/docs/pem/8.0/images/pem_upgrade_server_finish.png new file mode 100644 index 00000000000..392897ca7ab Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_upgrade_server_finish.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_upgrade_server_installing.png b/product_docs/docs/pem/8.0/images/pem_upgrade_server_installing.png new file mode 100644 index 00000000000..e506a84b39b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_upgrade_server_installing.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_upgrade_server_license.png b/product_docs/docs/pem/8.0/images/pem_upgrade_server_license.png new file mode 100644 index 00000000000..a9aedf78c5f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_upgrade_server_license.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_upgrade_server_pemAgent_service_account.png b/product_docs/docs/pem/8.0/images/pem_upgrade_server_pemAgent_service_account.png new file mode 100644 index 00000000000..7e578a79ccd Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_upgrade_server_pemAgent_service_account.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_upgrade_server_pop_up.png b/product_docs/docs/pem/8.0/images/pem_upgrade_server_pop_up.png new file mode 100644 index 00000000000..ec5ab368099 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_upgrade_server_pop_up.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_upgrade_server_ready_install.png b/product_docs/docs/pem/8.0/images/pem_upgrade_server_ready_install.png new file mode 100644 index 00000000000..6e8694f62f8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_upgrade_server_ready_install.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_upgrade_server_webservice_configure.png b/product_docs/docs/pem/8.0/images/pem_upgrade_server_webservice_configure.png new file mode 100644 index 00000000000..b7263f3d27b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_upgrade_server_webservice_configure.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_upgrade_server_welcome.png b/product_docs/docs/pem/8.0/images/pem_upgrade_server_welcome.png new file mode 100644 index 00000000000..9a86342cad6 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_upgrade_server_welcome.png differ diff --git a/product_docs/docs/pem/8.0/images/pem_web_interface.png b/product_docs/docs/pem/8.0/images/pem_web_interface.png new file mode 100755 index 00000000000..b35783e3f36 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pem_web_interface.png differ diff --git a/product_docs/docs/pem/8.0/images/performance_diagnostic_chart_legends.png b/product_docs/docs/pem/8.0/images/performance_diagnostic_chart_legends.png new file mode 100644 index 00000000000..f6081466e3a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/performance_diagnostic_chart_legends.png differ diff --git a/product_docs/docs/pem/8.0/images/performance_diagnostic_datetime_selection.png b/product_docs/docs/pem/8.0/images/performance_diagnostic_datetime_selection.png new file mode 100644 index 00000000000..b5cb3450b4f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/performance_diagnostic_datetime_selection.png differ diff --git a/product_docs/docs/pem/8.0/images/performance_diagnostic_error.png b/product_docs/docs/pem/8.0/images/performance_diagnostic_error.png new file mode 100644 index 00000000000..c6434b0392c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/performance_diagnostic_error.png differ diff --git a/product_docs/docs/pem/8.0/images/performance_diagnostic_intro.png b/product_docs/docs/pem/8.0/images/performance_diagnostic_intro.png new file mode 100644 index 00000000000..b0e90bcf5e2 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/performance_diagnostic_intro.png differ diff --git a/product_docs/docs/pem/8.0/images/performance_diagnostic_query_dashboard.png b/product_docs/docs/pem/8.0/images/performance_diagnostic_query_dashboard.png new file mode 100644 index 00000000000..4a34888172d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/performance_diagnostic_query_dashboard.png differ diff --git a/product_docs/docs/pem/8.0/images/performance_diagnostic_table_filter.png b/product_docs/docs/pem/8.0/images/performance_diagnostic_table_filter.png new file mode 100644 index 00000000000..5319bd74bd3 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/performance_diagnostic_table_filter.png differ diff --git a/product_docs/docs/pem/8.0/images/performance_diagnostic_timeseries_selection.png b/product_docs/docs/pem/8.0/images/performance_diagnostic_timeseries_selection.png new file mode 100644 index 00000000000..14764c9a2cc Binary files /dev/null and b/product_docs/docs/pem/8.0/images/performance_diagnostic_timeseries_selection.png differ diff --git a/product_docs/docs/pem/8.0/images/performance_diagnostic_users_table.png b/product_docs/docs/pem/8.0/images/performance_diagnostic_users_table.png new file mode 100644 index 00000000000..ea8a9df9ceb Binary files /dev/null and b/product_docs/docs/pem/8.0/images/performance_diagnostic_users_table.png differ diff --git a/product_docs/docs/pem/8.0/images/performance_diagnostic_wait_events.png b/product_docs/docs/pem/8.0/images/performance_diagnostic_wait_events.png new file mode 100644 index 00000000000..48638cd63a4 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/performance_diagnostic_wait_events.png differ diff --git a/product_docs/docs/pem/8.0/images/personalize_chart.png b/product_docs/docs/pem/8.0/images/personalize_chart.png new file mode 100755 index 00000000000..13fcc4fa6dc Binary files /dev/null and b/product_docs/docs/pem/8.0/images/personalize_chart.png differ diff --git a/product_docs/docs/pem/8.0/images/pgagent_general.png b/product_docs/docs/pem/8.0/images/pgagent_general.png new file mode 100644 index 00000000000..f5e79cb65b1 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pgagent_general.png differ diff --git a/product_docs/docs/pem/8.0/images/pgagent_properties.png b/product_docs/docs/pem/8.0/images/pgagent_properties.png new file mode 100644 index 00000000000..0164ccb51de Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pgagent_properties.png differ diff --git a/product_docs/docs/pem/8.0/images/pgagent_schedule_definition.png b/product_docs/docs/pem/8.0/images/pgagent_schedule_definition.png new file mode 100644 index 00000000000..31dc5f997c2 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pgagent_schedule_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/pgagent_schedule_exceptions.png b/product_docs/docs/pem/8.0/images/pgagent_schedule_exceptions.png new file mode 100644 index 00000000000..c71de3206a2 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pgagent_schedule_exceptions.png differ diff --git a/product_docs/docs/pem/8.0/images/pgagent_schedule_repeat.png b/product_docs/docs/pem/8.0/images/pgagent_schedule_repeat.png new file mode 100644 index 00000000000..3d3148a088a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pgagent_schedule_repeat.png differ diff --git a/product_docs/docs/pem/8.0/images/pgagent_scheduledetails1.png b/product_docs/docs/pem/8.0/images/pgagent_scheduledetails1.png new file mode 100644 index 00000000000..c59d3aa2f9d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pgagent_scheduledetails1.png differ diff --git a/product_docs/docs/pem/8.0/images/pgagent_scheduledetails2.png b/product_docs/docs/pem/8.0/images/pgagent_scheduledetails2.png new file mode 100644 index 00000000000..dd8ed0ced36 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pgagent_scheduledetails2.png differ diff --git a/product_docs/docs/pem/8.0/images/pgagent_scheduledetails3.png b/product_docs/docs/pem/8.0/images/pgagent_scheduledetails3.png new file mode 100644 index 00000000000..b837be00fd2 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pgagent_scheduledetails3.png differ diff --git a/product_docs/docs/pem/8.0/images/pgagent_scheduleproperties.png b/product_docs/docs/pem/8.0/images/pgagent_scheduleproperties.png new file mode 100644 index 00000000000..0d327a8c822 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pgagent_scheduleproperties.png differ diff --git a/product_docs/docs/pem/8.0/images/pgagent_schedules.png b/product_docs/docs/pem/8.0/images/pgagent_schedules.png new file mode 100644 index 00000000000..80103b766a1 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pgagent_schedules.png differ diff --git a/product_docs/docs/pem/8.0/images/pgagent_sql.png b/product_docs/docs/pem/8.0/images/pgagent_sql.png new file mode 100644 index 00000000000..e97f4010e30 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pgagent_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/pgagent_step_definition.png b/product_docs/docs/pem/8.0/images/pgagent_step_definition.png new file mode 100644 index 00000000000..abec0be24a3 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pgagent_step_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/pgagent_step_definition_code.png b/product_docs/docs/pem/8.0/images/pgagent_step_definition_code.png new file mode 100644 index 00000000000..2b247e8b48f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pgagent_step_definition_code.png differ diff --git a/product_docs/docs/pem/8.0/images/pgagent_stepdetails.png b/product_docs/docs/pem/8.0/images/pgagent_stepdetails.png new file mode 100644 index 00000000000..df48dabcb88 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pgagent_stepdetails.png differ diff --git a/product_docs/docs/pem/8.0/images/pgagent_steps.png b/product_docs/docs/pem/8.0/images/pgagent_steps.png new file mode 100644 index 00000000000..974d4dcb211 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pgagent_steps.png differ diff --git a/product_docs/docs/pem/8.0/images/pgagent_stepstats.png b/product_docs/docs/pem/8.0/images/pgagent_stepstats.png new file mode 100644 index 00000000000..65ae3cd71a6 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/pgagent_stepstats.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_bart_servers_nodes.png b/product_docs/docs/pem/8.0/images/preferences_bart_servers_nodes.png new file mode 100644 index 00000000000..7a68cff0948 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_bart_servers_nodes.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_browser_display.png b/product_docs/docs/pem/8.0/images/preferences_browser_display.png new file mode 100644 index 00000000000..6a9adf2e5c8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_browser_display.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_browser_keyboard_shortcuts.png b/product_docs/docs/pem/8.0/images/preferences_browser_keyboard_shortcuts.png new file mode 100644 index 00000000000..9b120f12d9d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_browser_keyboard_shortcuts.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_browser_nodes.png b/product_docs/docs/pem/8.0/images/preferences_browser_nodes.png new file mode 100644 index 00000000000..97fd2daa13b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_browser_nodes.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_browser_properties.png b/product_docs/docs/pem/8.0/images/preferences_browser_properties.png new file mode 100644 index 00000000000..94485abe62b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_browser_properties.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_browser_tab_settings.png b/product_docs/docs/pem/8.0/images/preferences_browser_tab_settings.png new file mode 100644 index 00000000000..868762f272c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_browser_tab_settings.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_dashboard_display.png b/product_docs/docs/pem/8.0/images/preferences_dashboard_display.png new file mode 100644 index 00000000000..c4da5895397 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_dashboard_display.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_dashboard_graphs.png b/product_docs/docs/pem/8.0/images/preferences_dashboard_graphs.png new file mode 100644 index 00000000000..0c0a06b5185 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_dashboard_graphs.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_debugger_display.png b/product_docs/docs/pem/8.0/images/preferences_debugger_display.png new file mode 100644 index 00000000000..cdb15b46147 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_debugger_display.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_debugger_keyboard_shortcuts.png b/product_docs/docs/pem/8.0/images/preferences_debugger_keyboard_shortcuts.png new file mode 100644 index 00000000000..50fd33058ab Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_debugger_keyboard_shortcuts.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_misc_themes.png b/product_docs/docs/pem/8.0/images/preferences_misc_themes.png new file mode 100644 index 00000000000..901bb81cc1e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_misc_themes.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_misc_user_language.png b/product_docs/docs/pem/8.0/images/preferences_misc_user_language.png new file mode 100644 index 00000000000..29ec4f995ba Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_misc_user_language.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_paths_binary.png b/product_docs/docs/pem/8.0/images/preferences_paths_binary.png new file mode 100644 index 00000000000..8d58826ffcb Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_paths_binary.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_paths_help.png b/product_docs/docs/pem/8.0/images/preferences_paths_help.png new file mode 100644 index 00000000000..4b354e13942 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_paths_help.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_performance_diagnostic_display.png b/product_docs/docs/pem/8.0/images/preferences_performance_diagnostic_display.png new file mode 100644 index 00000000000..41053cccb18 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_performance_diagnostic_display.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_scheduled_tasks_options.png b/product_docs/docs/pem/8.0/images/preferences_scheduled_tasks_options.png new file mode 100644 index 00000000000..ed8708b2151 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_scheduled_tasks_options.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_schema_diff.png b/product_docs/docs/pem/8.0/images/preferences_schema_diff.png new file mode 100644 index 00000000000..cbd618cfc26 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_schema_diff.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_sql_auto_completion.png b/product_docs/docs/pem/8.0/images/preferences_sql_auto_completion.png new file mode 100644 index 00000000000..e5a43986a34 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_sql_auto_completion.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_sql_csv_output.png b/product_docs/docs/pem/8.0/images/preferences_sql_csv_output.png new file mode 100644 index 00000000000..e6197c1ce9b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_sql_csv_output.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_sql_display.png b/product_docs/docs/pem/8.0/images/preferences_sql_display.png new file mode 100644 index 00000000000..97094eba83c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_sql_display.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_sql_editor.png b/product_docs/docs/pem/8.0/images/preferences_sql_editor.png new file mode 100644 index 00000000000..1adbbd04cae Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_sql_editor.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_sql_explain.png b/product_docs/docs/pem/8.0/images/preferences_sql_explain.png new file mode 100644 index 00000000000..dab807cb467 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_sql_explain.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_sql_formatting.png b/product_docs/docs/pem/8.0/images/preferences_sql_formatting.png new file mode 100644 index 00000000000..d328a80f62c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_sql_formatting.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_sql_keyboard_shortcuts.png b/product_docs/docs/pem/8.0/images/preferences_sql_keyboard_shortcuts.png new file mode 100644 index 00000000000..e070d0f9502 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_sql_keyboard_shortcuts.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_sql_options.png b/product_docs/docs/pem/8.0/images/preferences_sql_options.png new file mode 100644 index 00000000000..89ac8619c2e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_sql_options.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_sql_profiler_display.png b/product_docs/docs/pem/8.0/images/preferences_sql_profiler_display.png new file mode 100644 index 00000000000..092d146fb47 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_sql_profiler_display.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_sql_profiler_keyboard_shortcuts.png b/product_docs/docs/pem/8.0/images/preferences_sql_profiler_keyboard_shortcuts.png new file mode 100644 index 00000000000..7cd3f22034e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_sql_profiler_keyboard_shortcuts.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_sql_results_grid.png b/product_docs/docs/pem/8.0/images/preferences_sql_results_grid.png new file mode 100644 index 00000000000..5bb03e1f8a9 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_sql_results_grid.png differ diff --git a/product_docs/docs/pem/8.0/images/preferences_storage_options.png b/product_docs/docs/pem/8.0/images/preferences_storage_options.png new file mode 100644 index 00000000000..c1548a1537a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/preferences_storage_options.png differ diff --git a/product_docs/docs/pem/8.0/images/primary_key_definition.png b/product_docs/docs/pem/8.0/images/primary_key_definition.png new file mode 100644 index 00000000000..cbdfbec38b2 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/primary_key_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/primary_key_general.png b/product_docs/docs/pem/8.0/images/primary_key_general.png new file mode 100644 index 00000000000..a368b2d4aa3 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/primary_key_general.png differ diff --git a/product_docs/docs/pem/8.0/images/primary_key_sql.png b/product_docs/docs/pem/8.0/images/primary_key_sql.png new file mode 100644 index 00000000000..5c4efa6cfa3 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/primary_key_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/probe_log_analysis.png b/product_docs/docs/pem/8.0/images/probe_log_analysis.png new file mode 100644 index 00000000000..18d87bc1aab Binary files /dev/null and b/product_docs/docs/pem/8.0/images/probe_log_analysis.png differ diff --git a/product_docs/docs/pem/8.0/images/procedure_code.png b/product_docs/docs/pem/8.0/images/procedure_code.png new file mode 100644 index 00000000000..d7a53f9d12b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/procedure_code.png differ diff --git a/product_docs/docs/pem/8.0/images/procedure_definition.png b/product_docs/docs/pem/8.0/images/procedure_definition.png new file mode 100644 index 00000000000..f413f75c1dd Binary files /dev/null and b/product_docs/docs/pem/8.0/images/procedure_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/procedure_general.png b/product_docs/docs/pem/8.0/images/procedure_general.png new file mode 100644 index 00000000000..c236003eef1 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/procedure_general.png differ diff --git a/product_docs/docs/pem/8.0/images/procedure_options.png b/product_docs/docs/pem/8.0/images/procedure_options.png new file mode 100644 index 00000000000..6a0f2e928af Binary files /dev/null and b/product_docs/docs/pem/8.0/images/procedure_options.png differ diff --git a/product_docs/docs/pem/8.0/images/procedure_parameters.png b/product_docs/docs/pem/8.0/images/procedure_parameters.png new file mode 100644 index 00000000000..0b7fdb8f741 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/procedure_parameters.png differ diff --git a/product_docs/docs/pem/8.0/images/procedure_security.png b/product_docs/docs/pem/8.0/images/procedure_security.png new file mode 100644 index 00000000000..69945a6c4e5 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/procedure_security.png differ diff --git a/product_docs/docs/pem/8.0/images/procedure_sql.png b/product_docs/docs/pem/8.0/images/procedure_sql.png new file mode 100644 index 00000000000..084ee4c11d6 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/procedure_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/process_watcher_storage_manager.png b/product_docs/docs/pem/8.0/images/process_watcher_storage_manager.png new file mode 100644 index 00000000000..76e3372a99a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/process_watcher_storage_manager.png differ diff --git a/product_docs/docs/pem/8.0/images/query_autocomplete.png b/product_docs/docs/pem/8.0/images/query_autocomplete.png new file mode 100644 index 00000000000..f545e445fc9 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_autocomplete.png differ diff --git a/product_docs/docs/pem/8.0/images/query_execute_section.png b/product_docs/docs/pem/8.0/images/query_execute_section.png new file mode 100644 index 00000000000..25c8ef98f1d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_execute_section.png differ diff --git a/product_docs/docs/pem/8.0/images/query_explain_analyze_statistics.png b/product_docs/docs/pem/8.0/images/query_explain_analyze_statistics.png new file mode 100644 index 00000000000..6590bee64dd Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_explain_analyze_statistics.png differ diff --git a/product_docs/docs/pem/8.0/images/query_explain_analyze_table.png b/product_docs/docs/pem/8.0/images/query_explain_analyze_table.png new file mode 100644 index 00000000000..6db73069c60 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_explain_analyze_table.png differ diff --git a/product_docs/docs/pem/8.0/images/query_output_data.png b/product_docs/docs/pem/8.0/images/query_output_data.png new file mode 100644 index 00000000000..e4cea8a85bd Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_output_data.png differ diff --git a/product_docs/docs/pem/8.0/images/query_output_error.png b/product_docs/docs/pem/8.0/images/query_output_error.png new file mode 100644 index 00000000000..58eaa5f1a25 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_output_error.png differ diff --git a/product_docs/docs/pem/8.0/images/query_output_history.png b/product_docs/docs/pem/8.0/images/query_output_history.png new file mode 100644 index 00000000000..babcc797d81 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_output_history.png differ diff --git a/product_docs/docs/pem/8.0/images/query_output_messages.png b/product_docs/docs/pem/8.0/images/query_output_messages.png new file mode 100644 index 00000000000..096bcddd059 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_output_messages.png differ diff --git a/product_docs/docs/pem/8.0/images/query_output_notifications.png b/product_docs/docs/pem/8.0/images/query_output_notifications.png new file mode 100755 index 00000000000..e2c7e7d6db1 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_output_notifications.png differ diff --git a/product_docs/docs/pem/8.0/images/query_sql_editor.png b/product_docs/docs/pem/8.0/images/query_sql_editor.png new file mode 100644 index 00000000000..940bb2130bd Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_sql_editor.png differ diff --git a/product_docs/docs/pem/8.0/images/query_tool.png b/product_docs/docs/pem/8.0/images/query_tool.png new file mode 100644 index 00000000000..4be16c854e1 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_tool.png differ diff --git a/product_docs/docs/pem/8.0/images/query_tool_connection_status.png b/product_docs/docs/pem/8.0/images/query_tool_connection_status.png new file mode 100755 index 00000000000..9fe06e054fa Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_tool_connection_status.png differ diff --git a/product_docs/docs/pem/8.0/images/query_tool_connection_status_error.png b/product_docs/docs/pem/8.0/images/query_tool_connection_status_error.png new file mode 100755 index 00000000000..20875ca40de Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_tool_connection_status_error.png differ diff --git a/product_docs/docs/pem/8.0/images/query_tool_editable_columns.png b/product_docs/docs/pem/8.0/images/query_tool_editable_columns.png new file mode 100644 index 00000000000..b5fccac38ff Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_tool_editable_columns.png differ diff --git a/product_docs/docs/pem/8.0/images/query_tool_macros_clear_all.png b/product_docs/docs/pem/8.0/images/query_tool_macros_clear_all.png new file mode 100644 index 00000000000..91f2305e5c3 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_tool_macros_clear_all.png differ diff --git a/product_docs/docs/pem/8.0/images/query_tool_macros_clear_confirmation.png b/product_docs/docs/pem/8.0/images/query_tool_macros_clear_confirmation.png new file mode 100644 index 00000000000..65622130c4d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_tool_macros_clear_confirmation.png differ diff --git a/product_docs/docs/pem/8.0/images/query_tool_macros_clear_row.png b/product_docs/docs/pem/8.0/images/query_tool_macros_clear_row.png new file mode 100644 index 00000000000..bdf47f8d062 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_tool_macros_clear_row.png differ diff --git a/product_docs/docs/pem/8.0/images/query_tool_macros_execution.png b/product_docs/docs/pem/8.0/images/query_tool_macros_execution.png new file mode 100644 index 00000000000..690e25edbe2 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_tool_macros_execution.png differ diff --git a/product_docs/docs/pem/8.0/images/query_tool_manage_macros.png b/product_docs/docs/pem/8.0/images/query_tool_manage_macros.png new file mode 100644 index 00000000000..6ee43425099 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_tool_manage_macros.png differ diff --git a/product_docs/docs/pem/8.0/images/query_tool_manage_macros_dialog.png b/product_docs/docs/pem/8.0/images/query_tool_manage_macros_dialog.png new file mode 100644 index 00000000000..9db055921f8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_tool_manage_macros_dialog.png differ diff --git a/product_docs/docs/pem/8.0/images/query_tool_message.png b/product_docs/docs/pem/8.0/images/query_tool_message.png new file mode 100644 index 00000000000..e7fd4a725ff Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_tool_message.png differ diff --git a/product_docs/docs/pem/8.0/images/query_toolbar.png b/product_docs/docs/pem/8.0/images/query_toolbar.png new file mode 100644 index 00000000000..2be500f5712 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_toolbar.png differ diff --git a/product_docs/docs/pem/8.0/images/query_toolbar_explain.png b/product_docs/docs/pem/8.0/images/query_toolbar_explain.png new file mode 100644 index 00000000000..dff4a1de8f1 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/query_toolbar_explain.png differ diff --git a/product_docs/docs/pem/8.0/images/recursive_union_icon.png b/product_docs/docs/pem/8.0/images/recursive_union_icon.png new file mode 100644 index 00000000000..71d8dc6d52b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/recursive_union_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/refresh.png b/product_docs/docs/pem/8.0/images/refresh.png new file mode 100644 index 00000000000..58738a14da4 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/refresh.png differ diff --git a/product_docs/docs/pem/8.0/images/resource_group_general.png b/product_docs/docs/pem/8.0/images/resource_group_general.png new file mode 100644 index 00000000000..02da6828c67 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/resource_group_general.png differ diff --git a/product_docs/docs/pem/8.0/images/resource_group_sql.png b/product_docs/docs/pem/8.0/images/resource_group_sql.png new file mode 100644 index 00000000000..4d5f2c0a934 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/resource_group_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/restore_disable.png b/product_docs/docs/pem/8.0/images/restore_disable.png new file mode 100644 index 00000000000..94fd2de00c3 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/restore_disable.png differ diff --git a/product_docs/docs/pem/8.0/images/restore_do_not_save.png b/product_docs/docs/pem/8.0/images/restore_do_not_save.png new file mode 100644 index 00000000000..2b3b041489d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/restore_do_not_save.png differ diff --git a/product_docs/docs/pem/8.0/images/restore_general.png b/product_docs/docs/pem/8.0/images/restore_general.png new file mode 100644 index 00000000000..2cdaf12e8ce Binary files /dev/null and b/product_docs/docs/pem/8.0/images/restore_general.png differ diff --git a/product_docs/docs/pem/8.0/images/restore_messages.png b/product_docs/docs/pem/8.0/images/restore_messages.png new file mode 100644 index 00000000000..e7d158645d7 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/restore_messages.png differ diff --git a/product_docs/docs/pem/8.0/images/restore_miscellaneous.png b/product_docs/docs/pem/8.0/images/restore_miscellaneous.png new file mode 100644 index 00000000000..449c9aa98d5 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/restore_miscellaneous.png differ diff --git a/product_docs/docs/pem/8.0/images/restore_objects.png b/product_docs/docs/pem/8.0/images/restore_objects.png new file mode 100644 index 00000000000..8a7301430f5 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/restore_objects.png differ diff --git a/product_docs/docs/pem/8.0/images/restore_process_watcher.png b/product_docs/docs/pem/8.0/images/restore_process_watcher.png new file mode 100644 index 00000000000..4f730d72063 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/restore_process_watcher.png differ diff --git a/product_docs/docs/pem/8.0/images/restore_queries.png b/product_docs/docs/pem/8.0/images/restore_queries.png new file mode 100644 index 00000000000..a23349d95d0 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/restore_queries.png differ diff --git a/product_docs/docs/pem/8.0/images/restore_sections.png b/product_docs/docs/pem/8.0/images/restore_sections.png new file mode 100644 index 00000000000..e4127e1cc67 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/restore_sections.png differ diff --git a/product_docs/docs/pem/8.0/images/result_set_icon.png b/product_docs/docs/pem/8.0/images/result_set_icon.png new file mode 100644 index 00000000000..95da6223a54 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/result_set_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/rls_policy_commands_tab.png b/product_docs/docs/pem/8.0/images/rls_policy_commands_tab.png new file mode 100644 index 00000000000..53d544f3601 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/rls_policy_commands_tab.png differ diff --git a/product_docs/docs/pem/8.0/images/rls_policy_general_tab.png b/product_docs/docs/pem/8.0/images/rls_policy_general_tab.png new file mode 100644 index 00000000000..6bee9038093 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/rls_policy_general_tab.png differ diff --git a/product_docs/docs/pem/8.0/images/rls_policy_sql_tab.png b/product_docs/docs/pem/8.0/images/rls_policy_sql_tab.png new file mode 100644 index 00000000000..b3cb8491f57 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/rls_policy_sql_tab.png differ diff --git a/product_docs/docs/pem/8.0/images/role_definition.png b/product_docs/docs/pem/8.0/images/role_definition.png new file mode 100644 index 00000000000..d789971843d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/role_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/role_dialog_membership.png b/product_docs/docs/pem/8.0/images/role_dialog_membership.png new file mode 100644 index 00000000000..02c006e840a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/role_dialog_membership.png differ diff --git a/product_docs/docs/pem/8.0/images/role_general.png b/product_docs/docs/pem/8.0/images/role_general.png new file mode 100755 index 00000000000..2b27ede9fcc Binary files /dev/null and b/product_docs/docs/pem/8.0/images/role_general.png differ diff --git a/product_docs/docs/pem/8.0/images/role_membership.png b/product_docs/docs/pem/8.0/images/role_membership.png new file mode 100755 index 00000000000..c5adf259684 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/role_membership.png differ diff --git a/product_docs/docs/pem/8.0/images/role_parameters.png b/product_docs/docs/pem/8.0/images/role_parameters.png new file mode 100644 index 00000000000..1f045137304 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/role_parameters.png differ diff --git a/product_docs/docs/pem/8.0/images/role_privileges.png b/product_docs/docs/pem/8.0/images/role_privileges.png new file mode 100644 index 00000000000..2ec281e888e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/role_privileges.png differ diff --git a/product_docs/docs/pem/8.0/images/role_security.png b/product_docs/docs/pem/8.0/images/role_security.png new file mode 100644 index 00000000000..c9e566b051a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/role_security.png differ diff --git a/product_docs/docs/pem/8.0/images/role_sql.png b/product_docs/docs/pem/8.0/images/role_sql.png new file mode 100755 index 00000000000..cdd70ef368f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/role_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/rule_commands.png b/product_docs/docs/pem/8.0/images/rule_commands.png new file mode 100644 index 00000000000..6c9c49f2aeb Binary files /dev/null and b/product_docs/docs/pem/8.0/images/rule_commands.png differ diff --git a/product_docs/docs/pem/8.0/images/rule_condition.png b/product_docs/docs/pem/8.0/images/rule_condition.png new file mode 100644 index 00000000000..b7dbcc070d3 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/rule_condition.png differ diff --git a/product_docs/docs/pem/8.0/images/rule_definition.png b/product_docs/docs/pem/8.0/images/rule_definition.png new file mode 100644 index 00000000000..2c7e9734600 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/rule_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/rule_general.png b/product_docs/docs/pem/8.0/images/rule_general.png new file mode 100644 index 00000000000..9e2f6d407f3 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/rule_general.png differ diff --git a/product_docs/docs/pem/8.0/images/rule_sql.png b/product_docs/docs/pem/8.0/images/rule_sql.png new file mode 100644 index 00000000000..1d8375e172d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/rule_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/save_capacity_manager_template.png b/product_docs/docs/pem/8.0/images/save_capacity_manager_template.png new file mode 100755 index 00000000000..9b0b6a451d2 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/save_capacity_manager_template.png differ diff --git a/product_docs/docs/pem/8.0/images/schema_default_privileges.png b/product_docs/docs/pem/8.0/images/schema_default_privileges.png new file mode 100644 index 00000000000..029d3be06ae Binary files /dev/null and b/product_docs/docs/pem/8.0/images/schema_default_privileges.png differ diff --git a/product_docs/docs/pem/8.0/images/schema_diff_DDL_comparison.png b/product_docs/docs/pem/8.0/images/schema_diff_DDL_comparison.png new file mode 100755 index 00000000000..c737e46994d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/schema_diff_DDL_comparison.png differ diff --git a/product_docs/docs/pem/8.0/images/schema_diff_compare_button.png b/product_docs/docs/pem/8.0/images/schema_diff_compare_button.png new file mode 100755 index 00000000000..b7000437b5d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/schema_diff_compare_button.png differ diff --git a/product_docs/docs/pem/8.0/images/schema_diff_comparison_results.png b/product_docs/docs/pem/8.0/images/schema_diff_comparison_results.png new file mode 100755 index 00000000000..038a0e818e4 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/schema_diff_comparison_results.png differ diff --git a/product_docs/docs/pem/8.0/images/schema_diff_dialog.png b/product_docs/docs/pem/8.0/images/schema_diff_dialog.png new file mode 100755 index 00000000000..45d16f28fcb Binary files /dev/null and b/product_docs/docs/pem/8.0/images/schema_diff_dialog.png differ diff --git a/product_docs/docs/pem/8.0/images/schema_diff_filter_option.png b/product_docs/docs/pem/8.0/images/schema_diff_filter_option.png new file mode 100755 index 00000000000..f40a6e2697f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/schema_diff_filter_option.png differ diff --git a/product_docs/docs/pem/8.0/images/schema_diff_generate_script.png b/product_docs/docs/pem/8.0/images/schema_diff_generate_script.png new file mode 100755 index 00000000000..8118e0e6178 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/schema_diff_generate_script.png differ diff --git a/product_docs/docs/pem/8.0/images/schema_diff_generate_script_query_editor.png b/product_docs/docs/pem/8.0/images/schema_diff_generate_script_query_editor.png new file mode 100755 index 00000000000..315f6f30b01 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/schema_diff_generate_script_query_editor.png differ diff --git a/product_docs/docs/pem/8.0/images/schema_general.png b/product_docs/docs/pem/8.0/images/schema_general.png new file mode 100644 index 00000000000..f962afb99f6 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/schema_general.png differ diff --git a/product_docs/docs/pem/8.0/images/schema_security.png b/product_docs/docs/pem/8.0/images/schema_security.png new file mode 100644 index 00000000000..b7302c38a7d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/schema_security.png differ diff --git a/product_docs/docs/pem/8.0/images/schema_sql.png b/product_docs/docs/pem/8.0/images/schema_sql.png new file mode 100644 index 00000000000..86ed95e09d8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/schema_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/search_objects.png b/product_docs/docs/pem/8.0/images/search_objects.png new file mode 100644 index 00000000000..abc47c11ce8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/search_objects.png differ diff --git a/product_docs/docs/pem/8.0/images/seek_icon.png b/product_docs/docs/pem/8.0/images/seek_icon.png new file mode 100644 index 00000000000..6cfc6638a4f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/seek_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/seq_scan_icon.png b/product_docs/docs/pem/8.0/images/seq_scan_icon.png new file mode 100644 index 00000000000..4a688482c70 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/seq_scan_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/sequence_definition.png b/product_docs/docs/pem/8.0/images/sequence_definition.png new file mode 100644 index 00000000000..a93c25af3cf Binary files /dev/null and b/product_docs/docs/pem/8.0/images/sequence_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/sequence_general.png b/product_docs/docs/pem/8.0/images/sequence_general.png new file mode 100644 index 00000000000..11ced2f8105 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/sequence_general.png differ diff --git a/product_docs/docs/pem/8.0/images/sequence_security.png b/product_docs/docs/pem/8.0/images/sequence_security.png new file mode 100644 index 00000000000..399df2453ea Binary files /dev/null and b/product_docs/docs/pem/8.0/images/sequence_security.png differ diff --git a/product_docs/docs/pem/8.0/images/sequence_sql.png b/product_docs/docs/pem/8.0/images/sequence_sql.png new file mode 100644 index 00000000000..1c05c837d35 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/sequence_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/server_analysis.png b/product_docs/docs/pem/8.0/images/server_analysis.png new file mode 100644 index 00000000000..b707c484c64 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/server_analysis.png differ diff --git a/product_docs/docs/pem/8.0/images/server_log_analysis_dashboard.png b/product_docs/docs/pem/8.0/images/server_log_analysis_dashboard.png new file mode 100755 index 00000000000..19fc6cc6117 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/server_log_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/8.0/images/server_log_analysis_filter.png b/product_docs/docs/pem/8.0/images/server_log_analysis_filter.png new file mode 100755 index 00000000000..93edcd96f07 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/server_log_analysis_filter.png differ diff --git a/product_docs/docs/pem/8.0/images/session_activity_analysis_dashboard.png b/product_docs/docs/pem/8.0/images/session_activity_analysis_dashboard.png new file mode 100644 index 00000000000..36dd85bbdec Binary files /dev/null and b/product_docs/docs/pem/8.0/images/session_activity_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/8.0/images/session_waits_dashboard.png b/product_docs/docs/pem/8.0/images/session_waits_dashboard.png new file mode 100644 index 00000000000..d3756f195da Binary files /dev/null and b/product_docs/docs/pem/8.0/images/session_waits_dashboard.png differ diff --git a/product_docs/docs/pem/8.0/images/set_operator_icon.png b/product_docs/docs/pem/8.0/images/set_operator_icon.png new file mode 100644 index 00000000000..d7837c85f6a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/set_operator_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/sm_icon.png b/product_docs/docs/pem/8.0/images/sm_icon.png new file mode 100644 index 00000000000..13522104e7a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/sm_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/sort_icon.png b/product_docs/docs/pem/8.0/images/sort_icon.png new file mode 100644 index 00000000000..9d9eded1935 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/sort_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/sp_create_new_trace.png b/product_docs/docs/pem/8.0/images/sp_create_new_trace.png new file mode 100755 index 00000000000..75492502f5b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/sp_create_new_trace.png differ diff --git a/product_docs/docs/pem/8.0/images/sp_create_new_trace_executed.png b/product_docs/docs/pem/8.0/images/sp_create_new_trace_executed.png new file mode 100755 index 00000000000..8e44eb8799b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/sp_create_new_trace_executed.png differ diff --git a/product_docs/docs/pem/8.0/images/sp_create_new_trace_periodic_job.png b/product_docs/docs/pem/8.0/images/sp_create_new_trace_periodic_job.png new file mode 100755 index 00000000000..73a87433e70 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/sp_create_new_trace_periodic_job.png differ diff --git a/product_docs/docs/pem/8.0/images/sp_create_new_trace_schedule.png b/product_docs/docs/pem/8.0/images/sp_create_new_trace_schedule.png new file mode 100755 index 00000000000..da15fa22602 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/sp_create_new_trace_schedule.png differ diff --git a/product_docs/docs/pem/8.0/images/sp_delete_trace.png b/product_docs/docs/pem/8.0/images/sp_delete_trace.png new file mode 100755 index 00000000000..c4953aa77cd Binary files /dev/null and b/product_docs/docs/pem/8.0/images/sp_delete_trace.png differ diff --git a/product_docs/docs/pem/8.0/images/sp_open_existing_trace.png b/product_docs/docs/pem/8.0/images/sp_open_existing_trace.png new file mode 100755 index 00000000000..5c7a9a7fdf1 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/sp_open_existing_trace.png differ diff --git a/product_docs/docs/pem/8.0/images/sp_scheduled_traces.png b/product_docs/docs/pem/8.0/images/sp_scheduled_traces.png new file mode 100755 index 00000000000..362f291473f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/sp_scheduled_traces.png differ diff --git a/product_docs/docs/pem/8.0/images/sp_sql_profiler_tab.png b/product_docs/docs/pem/8.0/images/sp_sql_profiler_tab.png new file mode 100644 index 00000000000..08fb4783960 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/sp_sql_profiler_tab.png differ diff --git a/product_docs/docs/pem/8.0/images/sp_toolbar.png b/product_docs/docs/pem/8.0/images/sp_toolbar.png new file mode 100644 index 00000000000..b384e779164 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/sp_toolbar.png differ diff --git a/product_docs/docs/pem/8.0/images/sp_trace_details.png b/product_docs/docs/pem/8.0/images/sp_trace_details.png new file mode 100644 index 00000000000..203a734ea55 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/sp_trace_details.png differ diff --git a/product_docs/docs/pem/8.0/images/sp_trace_filter.png b/product_docs/docs/pem/8.0/images/sp_trace_filter.png new file mode 100644 index 00000000000..9b9145e2147 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/sp_trace_filter.png differ diff --git a/product_docs/docs/pem/8.0/images/sqlprofiler_upgrade.png b/product_docs/docs/pem/8.0/images/sqlprofiler_upgrade.png new file mode 100644 index 00000000000..74eb0be6644 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/sqlprofiler_upgrade.png differ diff --git a/product_docs/docs/pem/8.0/images/storage_analysis_dashboard.png b/product_docs/docs/pem/8.0/images/storage_analysis_dashboard.png new file mode 100644 index 00000000000..3ef427f4f36 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/storage_analysis_dashboard.png differ diff --git a/product_docs/docs/pem/8.0/images/storage_manager.png b/product_docs/docs/pem/8.0/images/storage_manager.png new file mode 100644 index 00000000000..53e5c594a58 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/storage_manager.png differ diff --git a/product_docs/docs/pem/8.0/images/str_replication_dashboard_primary.png b/product_docs/docs/pem/8.0/images/str_replication_dashboard_primary.png new file mode 100644 index 00000000000..55a234d3fe2 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/str_replication_dashboard_primary.png differ diff --git a/product_docs/docs/pem/8.0/images/str_replication_dashboard_replica.png b/product_docs/docs/pem/8.0/images/str_replication_dashboard_replica.png new file mode 100644 index 00000000000..aa7f3073d01 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/str_replication_dashboard_replica.png differ diff --git a/product_docs/docs/pem/8.0/images/subplan_icon.png b/product_docs/docs/pem/8.0/images/subplan_icon.png new file mode 100644 index 00000000000..e12d7ea3bf0 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/subplan_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/synonym_general.png b/product_docs/docs/pem/8.0/images/synonym_general.png new file mode 100644 index 00000000000..c35cefd5e1d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/synonym_general.png differ diff --git a/product_docs/docs/pem/8.0/images/synonym_sql.png b/product_docs/docs/pem/8.0/images/synonym_sql.png new file mode 100644 index 00000000000..d496c3777b0 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/synonym_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/system_configuration_report_pem_agents.png b/product_docs/docs/pem/8.0/images/system_configuration_report_pem_agents.png new file mode 100755 index 00000000000..380370dd8f3 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/system_configuration_report_pem_agents.png differ diff --git a/product_docs/docs/pem/8.0/images/system_configuration_report_pem_server_directory.png b/product_docs/docs/pem/8.0/images/system_configuration_report_pem_server_directory.png new file mode 100755 index 00000000000..29cfc8b8483 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/system_configuration_report_pem_server_directory.png differ diff --git a/product_docs/docs/pem/8.0/images/system_configuration_report_pem_summary_and_summary.png b/product_docs/docs/pem/8.0/images/system_configuration_report_pem_summary_and_summary.png new file mode 100755 index 00000000000..44a0f0b8714 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/system_configuration_report_pem_summary_and_summary.png differ diff --git a/product_docs/docs/pem/8.0/images/system_waits_dashboard.png b/product_docs/docs/pem/8.0/images/system_waits_dashboard.png new file mode 100644 index 00000000000..33662a25a95 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/system_waits_dashboard.png differ diff --git a/product_docs/docs/pem/8.0/images/table_advanced.png b/product_docs/docs/pem/8.0/images/table_advanced.png new file mode 100644 index 00000000000..c7b89bbb40d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/table_advanced.png differ diff --git a/product_docs/docs/pem/8.0/images/table_check_constraint_definition.png b/product_docs/docs/pem/8.0/images/table_check_constraint_definition.png new file mode 100644 index 00000000000..deee34454c4 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/table_check_constraint_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/table_check_constraint_general.png b/product_docs/docs/pem/8.0/images/table_check_constraint_general.png new file mode 100644 index 00000000000..caf9bb274c8 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/table_check_constraint_general.png differ diff --git a/product_docs/docs/pem/8.0/images/table_columns.png b/product_docs/docs/pem/8.0/images/table_columns.png new file mode 100644 index 00000000000..c4da1aa4173 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/table_columns.png differ diff --git a/product_docs/docs/pem/8.0/images/table_exclusion_constraint_columns.png b/product_docs/docs/pem/8.0/images/table_exclusion_constraint_columns.png new file mode 100644 index 00000000000..c2609174715 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/table_exclusion_constraint_columns.png differ diff --git a/product_docs/docs/pem/8.0/images/table_exclusion_constraint_definition.png b/product_docs/docs/pem/8.0/images/table_exclusion_constraint_definition.png new file mode 100644 index 00000000000..89f48e0f98b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/table_exclusion_constraint_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/table_exclusion_constraint_general.png b/product_docs/docs/pem/8.0/images/table_exclusion_constraint_general.png new file mode 100644 index 00000000000..c30d8e15001 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/table_exclusion_constraint_general.png differ diff --git a/product_docs/docs/pem/8.0/images/table_foreign_key_action.png b/product_docs/docs/pem/8.0/images/table_foreign_key_action.png new file mode 100644 index 00000000000..1c35c14b2cb Binary files /dev/null and b/product_docs/docs/pem/8.0/images/table_foreign_key_action.png differ diff --git a/product_docs/docs/pem/8.0/images/table_foreign_key_columns.png b/product_docs/docs/pem/8.0/images/table_foreign_key_columns.png new file mode 100644 index 00000000000..76d735c7ec4 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/table_foreign_key_columns.png differ diff --git a/product_docs/docs/pem/8.0/images/table_foreign_key_definition.png b/product_docs/docs/pem/8.0/images/table_foreign_key_definition.png new file mode 100644 index 00000000000..c0ec4c99262 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/table_foreign_key_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/table_foreign_key_general.png b/product_docs/docs/pem/8.0/images/table_foreign_key_general.png new file mode 100644 index 00000000000..971013fbf18 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/table_foreign_key_general.png differ diff --git a/product_docs/docs/pem/8.0/images/table_general.png b/product_docs/docs/pem/8.0/images/table_general.png new file mode 100755 index 00000000000..2c8a03a5042 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/table_general.png differ diff --git a/product_docs/docs/pem/8.0/images/table_parameter.png b/product_docs/docs/pem/8.0/images/table_parameter.png new file mode 100644 index 00000000000..dd4f8ee8b3f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/table_parameter.png differ diff --git a/product_docs/docs/pem/8.0/images/table_partition.png b/product_docs/docs/pem/8.0/images/table_partition.png new file mode 100644 index 00000000000..69f93d4e5ce Binary files /dev/null and b/product_docs/docs/pem/8.0/images/table_partition.png differ diff --git a/product_docs/docs/pem/8.0/images/table_partition_tree.png b/product_docs/docs/pem/8.0/images/table_partition_tree.png new file mode 100644 index 00000000000..b914a61151e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/table_partition_tree.png differ diff --git a/product_docs/docs/pem/8.0/images/table_primary_constraints_general.png b/product_docs/docs/pem/8.0/images/table_primary_constraints_general.png new file mode 100644 index 00000000000..d3de2eb6c24 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/table_primary_constraints_general.png differ diff --git a/product_docs/docs/pem/8.0/images/table_primary_key_definition.png b/product_docs/docs/pem/8.0/images/table_primary_key_definition.png new file mode 100644 index 00000000000..b0ab1de7d73 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/table_primary_key_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/table_security.png b/product_docs/docs/pem/8.0/images/table_security.png new file mode 100644 index 00000000000..16057c07788 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/table_security.png differ diff --git a/product_docs/docs/pem/8.0/images/table_sql.png b/product_docs/docs/pem/8.0/images/table_sql.png new file mode 100644 index 00000000000..a22411bd120 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/table_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/table_unique_constraint_definition.png b/product_docs/docs/pem/8.0/images/table_unique_constraint_definition.png new file mode 100644 index 00000000000..b426efa6b8b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/table_unique_constraint_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/table_unique_constraint_general.png b/product_docs/docs/pem/8.0/images/table_unique_constraint_general.png new file mode 100644 index 00000000000..41254b81ce7 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/table_unique_constraint_general.png differ diff --git a/product_docs/docs/pem/8.0/images/tablespace_definition.png b/product_docs/docs/pem/8.0/images/tablespace_definition.png new file mode 100644 index 00000000000..7bfb8ae150f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/tablespace_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/tablespace_general.png b/product_docs/docs/pem/8.0/images/tablespace_general.png new file mode 100644 index 00000000000..4ca7a284113 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/tablespace_general.png differ diff --git a/product_docs/docs/pem/8.0/images/tablespace_parameters.png b/product_docs/docs/pem/8.0/images/tablespace_parameters.png new file mode 100644 index 00000000000..48fec3c4b99 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/tablespace_parameters.png differ diff --git a/product_docs/docs/pem/8.0/images/tablespace_security.png b/product_docs/docs/pem/8.0/images/tablespace_security.png new file mode 100644 index 00000000000..f7935954954 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/tablespace_security.png differ diff --git a/product_docs/docs/pem/8.0/images/tablespace_sql.png b/product_docs/docs/pem/8.0/images/tablespace_sql.png new file mode 100644 index 00000000000..cc61d185595 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/tablespace_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/tableview.png b/product_docs/docs/pem/8.0/images/tableview.png new file mode 100644 index 00000000000..0191c4fe619 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/tableview.png differ diff --git a/product_docs/docs/pem/8.0/images/title_edb_postgress_image.png b/product_docs/docs/pem/8.0/images/title_edb_postgress_image.png new file mode 100755 index 00000000000..076b80db3d5 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/title_edb_postgress_image.png differ diff --git a/product_docs/docs/pem/8.0/images/trigger_code.png b/product_docs/docs/pem/8.0/images/trigger_code.png new file mode 100644 index 00000000000..bb820a689c5 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/trigger_code.png differ diff --git a/product_docs/docs/pem/8.0/images/trigger_definition.png b/product_docs/docs/pem/8.0/images/trigger_definition.png new file mode 100644 index 00000000000..45e1271ea28 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/trigger_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/trigger_definition_enabled.png b/product_docs/docs/pem/8.0/images/trigger_definition_enabled.png new file mode 100644 index 00000000000..50c8f4b7b2c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/trigger_definition_enabled.png differ diff --git a/product_docs/docs/pem/8.0/images/trigger_events.png b/product_docs/docs/pem/8.0/images/trigger_events.png new file mode 100644 index 00000000000..0426b901740 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/trigger_events.png differ diff --git a/product_docs/docs/pem/8.0/images/trigger_function_code.png b/product_docs/docs/pem/8.0/images/trigger_function_code.png new file mode 100644 index 00000000000..3543b8476cc Binary files /dev/null and b/product_docs/docs/pem/8.0/images/trigger_function_code.png differ diff --git a/product_docs/docs/pem/8.0/images/trigger_function_definition.png b/product_docs/docs/pem/8.0/images/trigger_function_definition.png new file mode 100644 index 00000000000..66ef4e4bc1d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/trigger_function_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/trigger_function_general.png b/product_docs/docs/pem/8.0/images/trigger_function_general.png new file mode 100644 index 00000000000..955d80325ae Binary files /dev/null and b/product_docs/docs/pem/8.0/images/trigger_function_general.png differ diff --git a/product_docs/docs/pem/8.0/images/trigger_function_options.png b/product_docs/docs/pem/8.0/images/trigger_function_options.png new file mode 100644 index 00000000000..d388271d3b2 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/trigger_function_options.png differ diff --git a/product_docs/docs/pem/8.0/images/trigger_function_parameters.png b/product_docs/docs/pem/8.0/images/trigger_function_parameters.png new file mode 100644 index 00000000000..8782be2326f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/trigger_function_parameters.png differ diff --git a/product_docs/docs/pem/8.0/images/trigger_function_security.png b/product_docs/docs/pem/8.0/images/trigger_function_security.png new file mode 100644 index 00000000000..8361a65145d Binary files /dev/null and b/product_docs/docs/pem/8.0/images/trigger_function_security.png differ diff --git a/product_docs/docs/pem/8.0/images/trigger_function_sql.png b/product_docs/docs/pem/8.0/images/trigger_function_sql.png new file mode 100644 index 00000000000..a9a2504f8fc Binary files /dev/null and b/product_docs/docs/pem/8.0/images/trigger_function_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/trigger_general.png b/product_docs/docs/pem/8.0/images/trigger_general.png new file mode 100644 index 00000000000..848ebd1451e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/trigger_general.png differ diff --git a/product_docs/docs/pem/8.0/images/trigger_sql.png b/product_docs/docs/pem/8.0/images/trigger_sql.png new file mode 100644 index 00000000000..1bfde85cefc Binary files /dev/null and b/product_docs/docs/pem/8.0/images/trigger_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/tuning_wiz_apply_changes.png b/product_docs/docs/pem/8.0/images/tuning_wiz_apply_changes.png new file mode 100755 index 00000000000..841d1893951 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/tuning_wiz_apply_changes.png differ diff --git a/product_docs/docs/pem/8.0/images/tuning_wiz_changes_sum.png b/product_docs/docs/pem/8.0/images/tuning_wiz_changes_sum.png new file mode 100755 index 00000000000..f7107888cea Binary files /dev/null and b/product_docs/docs/pem/8.0/images/tuning_wiz_changes_sum.png differ diff --git a/product_docs/docs/pem/8.0/images/tuning_wiz_configuration.png b/product_docs/docs/pem/8.0/images/tuning_wiz_configuration.png new file mode 100755 index 00000000000..27a768ae2c7 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/tuning_wiz_configuration.png differ diff --git a/product_docs/docs/pem/8.0/images/tuning_wiz_confirm_chg.png b/product_docs/docs/pem/8.0/images/tuning_wiz_confirm_chg.png new file mode 100755 index 00000000000..2420acd65ee Binary files /dev/null and b/product_docs/docs/pem/8.0/images/tuning_wiz_confirm_chg.png differ diff --git a/product_docs/docs/pem/8.0/images/tuning_wiz_generate_report.png b/product_docs/docs/pem/8.0/images/tuning_wiz_generate_report.png new file mode 100755 index 00000000000..7523656e401 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/tuning_wiz_generate_report.png differ diff --git a/product_docs/docs/pem/8.0/images/tuning_wiz_report.png b/product_docs/docs/pem/8.0/images/tuning_wiz_report.png new file mode 100755 index 00000000000..0a8d16faeba Binary files /dev/null and b/product_docs/docs/pem/8.0/images/tuning_wiz_report.png differ diff --git a/product_docs/docs/pem/8.0/images/tuning_wiz_server_sel.png b/product_docs/docs/pem/8.0/images/tuning_wiz_server_sel.png new file mode 100755 index 00000000000..973905645f0 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/tuning_wiz_server_sel.png differ diff --git a/product_docs/docs/pem/8.0/images/tuning_wiz_welcome.png b/product_docs/docs/pem/8.0/images/tuning_wiz_welcome.png new file mode 100755 index 00000000000..5ba0c518e61 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/tuning_wiz_welcome.png differ diff --git a/product_docs/docs/pem/8.0/images/tuple_id_scan_icon.png b/product_docs/docs/pem/8.0/images/tuple_id_scan_icon.png new file mode 100644 index 00000000000..f52a4c34c2f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/tuple_id_scan_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/type_composite.png b/product_docs/docs/pem/8.0/images/type_composite.png new file mode 100644 index 00000000000..3969b62fa39 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/type_composite.png differ diff --git a/product_docs/docs/pem/8.0/images/type_enumeration.png b/product_docs/docs/pem/8.0/images/type_enumeration.png new file mode 100644 index 00000000000..4e9c4c35507 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/type_enumeration.png differ diff --git a/product_docs/docs/pem/8.0/images/type_external.png b/product_docs/docs/pem/8.0/images/type_external.png new file mode 100644 index 00000000000..ce082934aaf Binary files /dev/null and b/product_docs/docs/pem/8.0/images/type_external.png differ diff --git a/product_docs/docs/pem/8.0/images/type_general.png b/product_docs/docs/pem/8.0/images/type_general.png new file mode 100644 index 00000000000..9a8c7d2f52e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/type_general.png differ diff --git a/product_docs/docs/pem/8.0/images/type_range.png b/product_docs/docs/pem/8.0/images/type_range.png new file mode 100644 index 00000000000..0fb03f64487 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/type_range.png differ diff --git a/product_docs/docs/pem/8.0/images/type_security.png b/product_docs/docs/pem/8.0/images/type_security.png new file mode 100644 index 00000000000..c2085ee41e9 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/type_security.png differ diff --git a/product_docs/docs/pem/8.0/images/type_shell.png b/product_docs/docs/pem/8.0/images/type_shell.png new file mode 100644 index 00000000000..6f709148ca2 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/type_shell.png differ diff --git a/product_docs/docs/pem/8.0/images/type_sql.png b/product_docs/docs/pem/8.0/images/type_sql.png new file mode 100644 index 00000000000..129e771c70c Binary files /dev/null and b/product_docs/docs/pem/8.0/images/type_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/unique_constraint_definition.png b/product_docs/docs/pem/8.0/images/unique_constraint_definition.png new file mode 100644 index 00000000000..9c4858ed5b1 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/unique_constraint_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/unique_constraint_general.png b/product_docs/docs/pem/8.0/images/unique_constraint_general.png new file mode 100644 index 00000000000..d0418c55605 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/unique_constraint_general.png differ diff --git a/product_docs/docs/pem/8.0/images/unique_constraint_sql.png b/product_docs/docs/pem/8.0/images/unique_constraint_sql.png new file mode 100644 index 00000000000..fba1d841f45 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/unique_constraint_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/unique_icon.png b/product_docs/docs/pem/8.0/images/unique_icon.png new file mode 100644 index 00000000000..519dcf277a0 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/unique_icon.png differ diff --git a/product_docs/docs/pem/8.0/images/uparrow.png b/product_docs/docs/pem/8.0/images/uparrow.png new file mode 100644 index 00000000000..3c4303d859e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/uparrow.png differ diff --git a/product_docs/docs/pem/8.0/images/upgrade_backendDB_permission_Windows_security.png b/product_docs/docs/pem/8.0/images/upgrade_backendDB_permission_Windows_security.png new file mode 100755 index 00000000000..34b1b1f7ae7 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/upgrade_backendDB_permission_Windows_security.png differ diff --git a/product_docs/docs/pem/8.0/images/upgrade_backingDB_permission_Windows_security.png b/product_docs/docs/pem/8.0/images/upgrade_backingDB_permission_Windows_security.png new file mode 100755 index 00000000000..34b1b1f7ae7 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/upgrade_backingDB_permission_Windows_security.png differ diff --git a/product_docs/docs/pem/8.0/images/upload.png b/product_docs/docs/pem/8.0/images/upload.png new file mode 100644 index 00000000000..ec9d0eb80fe Binary files /dev/null and b/product_docs/docs/pem/8.0/images/upload.png differ diff --git a/product_docs/docs/pem/8.0/images/user_mapping_general.png b/product_docs/docs/pem/8.0/images/user_mapping_general.png new file mode 100644 index 00000000000..c0eb5378718 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/user_mapping_general.png differ diff --git a/product_docs/docs/pem/8.0/images/user_mapping_options.png b/product_docs/docs/pem/8.0/images/user_mapping_options.png new file mode 100644 index 00000000000..8e8a4bc5b8f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/user_mapping_options.png differ diff --git a/product_docs/docs/pem/8.0/images/user_mapping_sql.png b/product_docs/docs/pem/8.0/images/user_mapping_sql.png new file mode 100644 index 00000000000..a364fa2a24f Binary files /dev/null and b/product_docs/docs/pem/8.0/images/user_mapping_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/view_code.png b/product_docs/docs/pem/8.0/images/view_code.png new file mode 100644 index 00000000000..4465b7d9a48 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/view_code.png differ diff --git a/product_docs/docs/pem/8.0/images/view_definition.png b/product_docs/docs/pem/8.0/images/view_definition.png new file mode 100644 index 00000000000..bd35587a4bb Binary files /dev/null and b/product_docs/docs/pem/8.0/images/view_definition.png differ diff --git a/product_docs/docs/pem/8.0/images/view_general.png b/product_docs/docs/pem/8.0/images/view_general.png new file mode 100644 index 00000000000..e77e699e855 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/view_general.png differ diff --git a/product_docs/docs/pem/8.0/images/view_security.png b/product_docs/docs/pem/8.0/images/view_security.png new file mode 100644 index 00000000000..f8242af1784 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/view_security.png differ diff --git a/product_docs/docs/pem/8.0/images/view_sql.png b/product_docs/docs/pem/8.0/images/view_sql.png new file mode 100644 index 00000000000..fe4d9b1380e Binary files /dev/null and b/product_docs/docs/pem/8.0/images/view_sql.png differ diff --git a/product_docs/docs/pem/8.0/images/viewdata_filter_dialog.png b/product_docs/docs/pem/8.0/images/viewdata_filter_dialog.png new file mode 100644 index 00000000000..9e322f1b4b9 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/viewdata_filter_dialog.png differ diff --git a/product_docs/docs/pem/8.0/images/webhook_add.png b/product_docs/docs/pem/8.0/images/webhook_add.png new file mode 100644 index 00000000000..ccfa81aaf50 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/webhook_add.png differ diff --git a/product_docs/docs/pem/8.0/images/webhook_add_headers.png b/product_docs/docs/pem/8.0/images/webhook_add_headers.png new file mode 100644 index 00000000000..1667179041a Binary files /dev/null and b/product_docs/docs/pem/8.0/images/webhook_add_headers.png differ diff --git a/product_docs/docs/pem/8.0/images/webhook_add_notification.png b/product_docs/docs/pem/8.0/images/webhook_add_notification.png new file mode 100644 index 00000000000..8bcca976628 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/webhook_add_notification.png differ diff --git a/product_docs/docs/pem/8.0/images/webhook_add_payload.png b/product_docs/docs/pem/8.0/images/webhook_add_payload.png new file mode 100644 index 00000000000..060e2e7a14b Binary files /dev/null and b/product_docs/docs/pem/8.0/images/webhook_add_payload.png differ diff --git a/product_docs/docs/pem/8.0/images/webhook_delete.png b/product_docs/docs/pem/8.0/images/webhook_delete.png new file mode 100644 index 00000000000..a9c51c0f2e7 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/webhook_delete.png differ diff --git a/product_docs/docs/pem/8.0/images/webhook_ssl_config.png b/product_docs/docs/pem/8.0/images/webhook_ssl_config.png new file mode 100644 index 00000000000..802aadceebf Binary files /dev/null and b/product_docs/docs/pem/8.0/images/webhook_ssl_config.png differ diff --git a/product_docs/docs/pem/8.0/images/webhook_ssl_config_windows.png b/product_docs/docs/pem/8.0/images/webhook_ssl_config_windows.png new file mode 100644 index 00000000000..f38b2754e27 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/webhook_ssl_config_windows.png differ diff --git a/product_docs/docs/pem/8.0/images/webhooks_tab.png b/product_docs/docs/pem/8.0/images/webhooks_tab.png new file mode 100644 index 00000000000..6e3c2e5c5bd Binary files /dev/null and b/product_docs/docs/pem/8.0/images/webhooks_tab.png differ diff --git a/product_docs/docs/pem/8.0/images/window_aggregate_icon.png b/product_docs/docs/pem/8.0/images/window_aggregate_icon.png new file mode 100644 index 00000000000..3329322e348 Binary files /dev/null and b/product_docs/docs/pem/8.0/images/window_aggregate_icon.png differ diff --git a/product_docs/docs/postgis/1.0/images/advanced_server_installation_details.png b/product_docs/docs/postgis/1.0/images/advanced_server_installation_details.png new file mode 100755 index 00000000000..b64d25edda2 Binary files /dev/null and b/product_docs/docs/postgis/1.0/images/advanced_server_installation_details.png differ diff --git a/scripts/source/source_cloud_native_operator.py b/scripts/source/source_cloud_native_operator.py index 4fc88ceb4ec..0d47f0f9f9c 100644 --- a/scripts/source/source_cloud_native_operator.py +++ b/scripts/source/source_cloud_native_operator.py @@ -1,8 +1,6 @@ import os -import shutil import glob import re -from urllib.parse import urlparse STANDARD_FRONTMATTER = """--- title: '{0}' @@ -20,56 +18,64 @@ navigation: {0}""" + def rewrite_yaml_links(line): - match = re.search(r'\[.+\]\((.+)\)', line) - if match and match[1] and match[1].endswith('.yaml'): - return line.replace(match[1], match[1].replace('samples/', '../samples/')) - return line + match = re.search(r"\[.+\]\((.+)\)", line) + if match and match[1] and match[1].endswith(".yaml"): + return line.replace(match[1], match[1].replace("samples/", "../samples/")) + return line + def index_frontmatter(): nav = [] - with open('temp_kubernetes/original/mkdocs.yml') as mkdocs: + with open("temp_kubernetes/docs/mkdocs.yml") as mkdocs: readingNav = False for line in mkdocs: - if '-' not in line: + if "-" not in line: readingNav = False - if line.startswith('nav'): + if line.startswith("nav"): readingNav = True elif readingNav: - nav.append(line.replace('.md', '')) + nav.append(line.replace(".md", "")) + + return INDEX_FRONTMATTER.format("".join(nav)) - return INDEX_FRONTMATTER.format(''.join(nav)) def process_md(file_path): - new_file_path = file_path.replace('.md', '.mdx') + new_file_path = file_path.replace(".md", ".mdx") - with open(new_file_path, 'w') as new_file: - with open(file_path, 'r') as md_file: + with open(new_file_path, "w") as new_file: + with open(file_path, "r") as md_file: copying = False - previous_line_was_blank = False - gh_relative_path = file_path.replace('temp_kubernetes/build/', 'src/') + gh_relative_path = file_path.replace("temp_kubernetes/build/", "src/") for line in md_file: if copying: new_file.write(rewrite_yaml_links(line)) - if line.startswith('#') and not copying: + if line.startswith("#") and not copying: copying = True - new_file.write(STANDARD_FRONTMATTER.format( - re.sub(r'#+ ', '', line).strip(), - gh_relative_path, - index_frontmatter() if new_file_path.split('/')[-1] == 'index.mdx' else '' - )) + new_file.write( + STANDARD_FRONTMATTER.format( + re.sub(r"#+ ", "", line).strip(), + gh_relative_path, + index_frontmatter() + if new_file_path.split("/")[-1] == "index.mdx" + else "", + ) + ) os.remove(file_path) + def source_cloud_native_postgresql_docs(): - os.system('rm -r temp_kubernetes/build') - os.system('cp -r temp_kubernetes/original/src temp_kubernetes/build') + os.system("rm -r temp_kubernetes/build") + os.system("cp -r temp_kubernetes/docs/src temp_kubernetes/build") - print('Processing cloud_native_postgresql...') - files = glob.glob('temp_kubernetes/build/**/*.md', recursive=True) + print("Processing cloud_native_postgresql...") + files = glob.glob("temp_kubernetes/build/**/*.md", recursive=True) for file_path in files: process_md(file_path) -if __name__ == '__main__': + +if __name__ == "__main__": source_cloud_native_postgresql_docs() diff --git a/src/styles/_admonitions.scss b/src/styles/_admonitions.scss index 977e7c9e8c2..010fda10566 100644 --- a/src/styles/_admonitions.scss +++ b/src/styles/_admonitions.scss @@ -1,7 +1,7 @@ .admonition-important { @extend .alert-info; } -.admonition-tip { +.admonition-tip, .admonition-hint { @extend .alert-success; } .admonition-note, .admonition-seealso { diff --git a/temp_kubernetes/original/.gitignore b/temp_kubernetes/original/.gitignore deleted file mode 100644 index 00757ba76fb..00000000000 --- a/temp_kubernetes/original/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/site/ -/dist/ diff --git a/temp_kubernetes/original/README.md b/temp_kubernetes/original/README.md deleted file mode 100644 index 2f23adf8ada..00000000000 --- a/temp_kubernetes/original/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# Cloud Native PostgreSQL documentation - -The documentation is compiled using [MkDocs](https://www.mkdocs.org/) - -Run the following command to build the documentation -in the `dist` directory: - -``` bash -docker run --rm -v "$(pwd):$(pwd)" -w "$(pwd)" \ - quay.io/enterprisedb/cloud-native-docutils:mkdocs \ - mkdocs build -v -d dist -``` - -You can locally test the documentation by executing -the following command and pointing your browser -to http://127.0.0.1:8000/ - -``` bash -docker run --rm -v "$(pwd):$(pwd)" -w "$(pwd)" -p 8000:8000 \ - quay.io/enterprisedb/cloud-native-docutils:mkdocs \ - mkdocs serve -a 0.0.0.0:8000 -``` diff --git a/temp_kubernetes/original/graffle/apps-in-k8s.graffle b/temp_kubernetes/original/graffle/apps-in-k8s.graffle deleted file mode 100644 index 174a91047c4..00000000000 Binary files a/temp_kubernetes/original/graffle/apps-in-k8s.graffle and /dev/null differ diff --git a/temp_kubernetes/original/graffle/apps-outside-k8s.graffle b/temp_kubernetes/original/graffle/apps-outside-k8s.graffle deleted file mode 100644 index ea1604e2315..00000000000 Binary files a/temp_kubernetes/original/graffle/apps-outside-k8s.graffle and /dev/null differ diff --git a/temp_kubernetes/original/graffle/architecture-in-k8s.graffle b/temp_kubernetes/original/graffle/architecture-in-k8s.graffle deleted file mode 100644 index 7b7abd96c86..00000000000 Binary files a/temp_kubernetes/original/graffle/architecture-in-k8s.graffle and /dev/null differ diff --git a/temp_kubernetes/original/graffle/architecture-r.graffle b/temp_kubernetes/original/graffle/architecture-r.graffle deleted file mode 100644 index 071fd26687b..00000000000 Binary files a/temp_kubernetes/original/graffle/architecture-r.graffle and /dev/null differ diff --git a/temp_kubernetes/original/graffle/architecture-read-only.graffle b/temp_kubernetes/original/graffle/architecture-read-only.graffle deleted file mode 100644 index 571d335efb0..00000000000 Binary files a/temp_kubernetes/original/graffle/architecture-read-only.graffle and /dev/null differ diff --git a/temp_kubernetes/original/graffle/architecture-rw.graffle b/temp_kubernetes/original/graffle/architecture-rw.graffle deleted file mode 100644 index ebcdb1b4b60..00000000000 Binary files a/temp_kubernetes/original/graffle/architecture-rw.graffle and /dev/null differ diff --git a/temp_kubernetes/original/graffle/network-storage-architecture.graffle b/temp_kubernetes/original/graffle/network-storage-architecture.graffle deleted file mode 100644 index f467780625b..00000000000 Binary files a/temp_kubernetes/original/graffle/network-storage-architecture.graffle and /dev/null differ diff --git a/temp_kubernetes/original/graffle/public-cloud-architecture-storage-replication.graffle b/temp_kubernetes/original/graffle/public-cloud-architecture-storage-replication.graffle deleted file mode 100644 index 9afc17e1d51..00000000000 Binary files a/temp_kubernetes/original/graffle/public-cloud-architecture-storage-replication.graffle and /dev/null differ diff --git a/temp_kubernetes/original/graffle/public-cloud-architecture.graffle b/temp_kubernetes/original/graffle/public-cloud-architecture.graffle deleted file mode 100644 index 8258d7cc094..00000000000 Binary files a/temp_kubernetes/original/graffle/public-cloud-architecture.graffle and /dev/null differ diff --git a/temp_kubernetes/original/graffle/shared-nothing-architecture.graffle b/temp_kubernetes/original/graffle/shared-nothing-architecture.graffle deleted file mode 100644 index ff6ec0e9b5f..00000000000 Binary files a/temp_kubernetes/original/graffle/shared-nothing-architecture.graffle and /dev/null differ diff --git a/temp_kubernetes/original/mkdocs.yml b/temp_kubernetes/original/mkdocs.yml deleted file mode 100644 index 245dd2fa97e..00000000000 --- a/temp_kubernetes/original/mkdocs.yml +++ /dev/null @@ -1,39 +0,0 @@ -site_name: Cloud Native PostgreSQL -site_author: EnterpriseDB Corporation -docs_dir: src - -theme: readthedocs - -markdown_extensions: - - admonition - - def_list - -nav: - - index.md - - before_you_start.md - - evaluation.md - - use_cases.md - - architecture.md - - installation.md - - quickstart.md - - cloud_setup.md - - bootstrap.md - - resource_management.md - - security.md - - failure_modes.md - - rolling_update.md - - backup_recovery.md - - postgresql_conf.md - - storage.md - - samples.md - - monitoring.md - - expose_pg_services.md - - ssl_connections.md - - kubernetes_upgrade.md - - e2e.md - - cnp-plugin.md - - license_keys.md - - container_images.md - - operator_capability_levels.md - - api_reference.md - - credits.md diff --git a/temp_kubernetes/original/src/api_reference.md b/temp_kubernetes/original/src/api_reference.md deleted file mode 100644 index 0b31b71b1f0..00000000000 --- a/temp_kubernetes/original/src/api_reference.md +++ /dev/null @@ -1,380 +0,0 @@ -# API Reference - -Cloud Native PostgreSQL extends the Kubernetes API defining the following -custom resources: - -- [Backup](#backup) -- [Cluster](#cluster) -- [ScheduledBackup](#scheduledbackup) - -All the resources are defined in the `postgresql.k8s.enterprisedb.io/v1` -API. - -Please refer to the ["Configuration Samples" page](samples.md)" of the -documentation for examples of usage. - -Below you will find a description of the defined resources: - - - -* [Backup](#backup) -* [BackupList](#backuplist) -* [BackupSpec](#backupspec) -* [BackupStatus](#backupstatus) -* [AffinityConfiguration](#affinityconfiguration) -* [BackupConfiguration](#backupconfiguration) -* [BarmanObjectStoreConfiguration](#barmanobjectstoreconfiguration) -* [BootstrapConfiguration](#bootstrapconfiguration) -* [BootstrapInitDB](#bootstrapinitdb) -* [BootstrapRecovery](#bootstraprecovery) -* [Cluster](#cluster) -* [ClusterList](#clusterlist) -* [ClusterSpec](#clusterspec) -* [ClusterStatus](#clusterstatus) -* [DataBackupConfiguration](#databackupconfiguration) -* [MonitoringConfiguration](#monitoringconfiguration) -* [NodeMaintenanceWindow](#nodemaintenancewindow) -* [PostgresConfiguration](#postgresconfiguration) -* [RecoveryTarget](#recoverytarget) -* [RollingUpdateStatus](#rollingupdatestatus) -* [S3Credentials](#s3credentials) -* [StorageConfiguration](#storageconfiguration) -* [WalBackupConfiguration](#walbackupconfiguration) -* [ScheduledBackup](#scheduledbackup) -* [ScheduledBackupList](#scheduledbackuplist) -* [ScheduledBackupSpec](#scheduledbackupspec) -* [ScheduledBackupStatus](#scheduledbackupstatus) - -## Backup - -Backup is the Schema for the backups API - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| metadata | | [metav1.ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#objectmeta-v1-meta) | false | -| spec | Specification of the desired behavior of the backup. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | [BackupSpec](#backupspec) | false | -| status | Most recently observed status of the backup. This data may not be up to date. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | [BackupStatus](#backupstatus) | false | - - -## BackupList - -BackupList contains a list of Backup - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| metadata | Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds | [metav1.ListMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#listmeta-v1-meta) | false | -| items | List of backups | \[][Backup](#backup) | true | - - -## BackupSpec - -BackupSpec defines the desired state of Backup - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| cluster | The cluster to backup | [v1.LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#localobjectreference-v1-core) | false | - - -## BackupStatus - -BackupStatus defines the observed state of Backup - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| s3Credentials | The credentials to use to upload data to S3 | [S3Credentials](#s3credentials) | true | -| endpointURL | Endpoint to be used to upload data to the cloud, overriding the automatic endpoint discovery | string | false | -| destinationPath | The path where to store the backup (i.e. s3://bucket/path/to/folder) this path, with different destination folders, will be used for WALs and for data | string | true | -| serverName | The server name on S3, the cluster name is used if this parameter is omitted | string | false | -| encryption | Encryption method required to S3 API | string | false | -| backupId | The ID of the Barman backup | string | false | -| phase | The last backup status | BackupPhase | false | -| startedAt | When the backup was started | *metav1.Time | false | -| stoppedAt | When the backup was terminated | *metav1.Time | false | -| error | The detected error | string | false | -| commandOutput | The backup command output | string | false | -| commandError | The backup command output | string | false | - - -## AffinityConfiguration - -AffinityConfiguration contains the info we need to create the affinity rules for Pods - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| enablePodAntiAffinity | Activates anti-affinity for the pods. The operator will define pods anti-affinity unless this field is explicitly set to false | *bool | false | -| topologyKey | TopologyKey to use for anti-affinity configuration. See k8s documentation for more info on that | string | true | -| nodeSelector | NodeSelector is map of key-value pairs used to define the nodes on which the pods can run. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ | map[string]string | false | - - -## BackupConfiguration - -BackupConfiguration defines how the backup of the cluster are taken. Currently the only supported backup method is barmanObjectStore. For details and examples refer to the Backup and Recovery section of the documentation - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| barmanObjectStore | The configuration for the barman-cloud tool suite | *[BarmanObjectStoreConfiguration](#barmanobjectstoreconfiguration) | false | - - -## BarmanObjectStoreConfiguration - -BarmanObjectStoreConfiguration contains the backup configuration using Barman against an S3-compatible object storage - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| s3Credentials | The credentials to use to upload data to S3 | [S3Credentials](#s3credentials) | true | -| endpointURL | Endpoint to be used to upload data to the cloud, overriding the automatic endpoint discovery | string | false | -| destinationPath | The path where to store the backup (i.e. s3://bucket/path/to/folder) this path, with different destination folders, will be used for WALs and for data | string | true | -| serverName | The server name on S3, the cluster name is used if this parameter is omitted | string | false | -| wal | The configuration for the backup of the WAL stream. When not defined, WAL files will be stored uncompressed and may be unencrypted in the object store, according to the bucket default policy. | *[WalBackupConfiguration](#walbackupconfiguration) | false | -| data | The configuration to be used to backup the data files When not defined, base backups files will be stored uncompressed and may be unencrypted in the object store, according to the bucket default policy. | *[DataBackupConfiguration](#databackupconfiguration) | false | - - -## BootstrapConfiguration - -BootstrapConfiguration contains information about how to create the PostgreSQL cluster. Only a single bootstrap method can be defined among the supported ones. `initdb` will be used as the bootstrap method if left unspecified. Refer to the Bootstrap page of the documentation for more information. - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| initdb | Bootstrap the cluster via initdb | *[BootstrapInitDB](#bootstrapinitdb) | false | -| recovery | Bootstrap the cluster from a backup | *[BootstrapRecovery](#bootstraprecovery) | false | - - -## BootstrapInitDB - -BootstrapInitDB is the configuration of the bootstrap process when initdb is used Refer to the Bootstrap page of the documentation for more information. - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| database | Name of the database used by the application. Default: `app`. | string | true | -| owner | Name of the owner of the database in the instance to be used by applications. Defaults to the value of the `database` key. | string | true | -| secret | Name of the secret containing the initial credentials for the owner of the user database. If empty a new secret will be created from scratch | *corev1.LocalObjectReference | false | -| redwood | If we need to enable/disable Redwood compatibility. Requires EPAS and for EPAS defaults to true | *bool | false | -| options | The list of options that must be passed to initdb when creating the cluster | []string | false | - - -## BootstrapRecovery - -BootstrapRecovery contains the configuration required to restore the backup with the specified name and, after having changed the password with the one chosen for the superuser, will use it to bootstrap a full cluster cloning all the instances from the restored primary. Refer to the Bootstrap page of the documentation for more information. - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| backup | The backup we need to restore | corev1.LocalObjectReference | true | -| recoveryTarget | By default the recovery will end as soon as a consistent state is reached: in this case that means at the end of a backup. This option allows to fine tune the recovery process | *[RecoveryTarget](#recoverytarget) | false | - - -## Cluster - -Cluster is the Schema for the PostgreSQL API - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| metadata | | [metav1.ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#objectmeta-v1-meta) | false | -| spec | Specification of the desired behavior of the cluster. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | [ClusterSpec](#clusterspec) | false | -| status | Most recently observed status of the cluster. This data may not be up to date. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | [ClusterStatus](#clusterstatus) | false | - - -## ClusterList - -ClusterList contains a list of Cluster - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| metadata | Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds | [metav1.ListMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#listmeta-v1-meta) | false | -| items | List of clusters | \[][Cluster](#cluster) | true | - - -## ClusterSpec - -ClusterSpec defines the desired state of Cluster - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| description | Description of this PostgreSQL cluster | string | false | -| imageName | Name of the container image | string | false | -| postgresUID | The UID of the `postgres` user inside the image, defaults to `26` | int64 | false | -| postgresGID | The GID of the `postgres` user inside the image, defaults to `26` | int64 | false | -| instances | Number of instances required in the cluster | int32 | true | -| minSyncReplicas | Minimum number of instances required in synchronous replication with the primary. Undefined or 0 allow writes to complete when no standby is available. | int32 | false | -| maxSyncReplicas | The target value for the synchronous replication quorum, that can be decreased if the number of ready standbys is lower than this. Undefined or 0 disable synchronous replication. | int32 | false | -| postgresql | Configuration of the PostgreSQL server | [PostgresConfiguration](#postgresconfiguration) | false | -| bootstrap | Instructions to bootstrap this cluster | *[BootstrapConfiguration](#bootstrapconfiguration) | false | -| superuserSecret | The secret containing the superuser password. If not defined a new secret will be created with a randomly generated password | *corev1.LocalObjectReference | false | -| imagePullSecrets | The list of pull secrets to be used to pull the images. If the license key contains a pull secret that secret will be automatically included. | []corev1.LocalObjectReference | false | -| storage | Configuration of the storage of the instances | [StorageConfiguration](#storageconfiguration) | false | -| startDelay | The time in seconds that is allowed for a PostgreSQL instance to successfully start up (default 30) | int32 | false | -| stopDelay | The time in seconds that is allowed for a PostgreSQL instance node to gracefully shutdown (default 30) | int32 | false | -| affinity | Affinity/Anti-affinity rules for Pods | [AffinityConfiguration](#affinityconfiguration) | false | -| resources | Resources requirements of every generated Pod. Please refer to https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ for more information. | corev1.ResourceRequirements | false | -| primaryUpdateStrategy | Strategy to follow to upgrade the primary server during a rolling update procedure, after all replicas have been successfully updated: it can be automated (`unsupervised` - default) or manual (`supervised`) | PrimaryUpdateStrategy | false | -| backup | The configuration to be used for backups | *[BackupConfiguration](#backupconfiguration) | false | -| nodeMaintenanceWindow | Define a maintenance window for the Kubernetes nodes | *[NodeMaintenanceWindow](#nodemaintenancewindow) | false | -| licenseKey | The license key of the cluster. When empty, the cluster operates in trial mode and after the expiry date (default 30 days) the operator will cease any reconciliation attempt. For details, please refer to the license agreement that comes with the operator. | string | false | -| monitoring | The configuration of the monitoring infrastructure of this cluster | *[MonitoringConfiguration](#monitoringconfiguration) | false | - - -## ClusterStatus - -ClusterStatus defines the observed state of Cluster - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| instances | Total number of instances in the cluster | int32 | false | -| readyInstances | Total number of ready instances in the cluster | int32 | false | -| instancesStatus | Instances status | map[utils.PodStatus][]string | false | -| latestGeneratedNode | ID of the latest generated node (used to avoid node name clashing) | int32 | false | -| currentPrimary | Current primary instance | string | false | -| targetPrimary | Target primary instance, this is different from the previous one during a switchover or a failover | string | false | -| pvcCount | How many PVCs have been created by this cluster | int32 | false | -| jobCount | How many Jobs have been created by this cluster | int32 | false | -| danglingPVC | List of all the PVCs created by this cluster and still available which are not attached to a Pod | []string | false | -| initializingPVC | List of all the PVCs that are being initialized by this cluster | []string | false | -| licenseStatus | Status of the license | licensekey.Status | false | -| writeService | Current write pod | string | false | -| readService | Current list of read pods | string | false | -| phase | Current phase of the cluster | string | false | -| phaseReason | Reason for the current phase | string | false | - - -## DataBackupConfiguration - -DataBackupConfiguration is the configuration of the backup of the data directory - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| compression | Compress a backup file (a tar file per tablespace) while streaming it to the object store. Available options are empty string (no compression, default), `gzip` or `bzip2`. | CompressionType | false | -| encryption | Whenever to force the encryption of files (if the bucket is not already configured for that). Allowed options are empty string (use the bucket policy, default), `AES256` and `aws:kms` | EncryptionType | false | -| immediateCheckpoint | Control whether the I/O workload for the backup initial checkpoint will be limited, according to the `checkpoint_completion_target` setting on the PostgreSQL server. If set to true, an immediate checkpoint will be used, meaning PostgreSQL will complete the checkpoint as soon as possible. `false` by default. | bool | false | -| jobs | The number of parallel jobs to be used to upload the backup, defaults to 2 | *int32 | false | - - -## MonitoringConfiguration - -MonitoringConfiguration is the type containing all the monitoring configuration for a certain cluster - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| customQueriesConfigMap | The list of config maps containing the custom queries | []corev1.ConfigMapKeySelector | false | -| customQueriesSecret | The list of secrets containing the custom queries | []corev1.SecretKeySelector | false | - - -## NodeMaintenanceWindow - -NodeMaintenanceWindow contains information that the operator will use while upgrading the underlying node. - -This option is only useful when the chosen storage prevents the Pods from being freely moved across nodes. - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| inProgress | Is there a node maintenance activity in progress? | bool | true | -| reusePVC | Reuse the existing PVC (wait for the node to come up again) or not (recreate it elsewhere) | *bool | true | - - -## PostgresConfiguration - -PostgresConfiguration defines the PostgreSQL configuration - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| parameters | PostgreSQL configuration options (postgresql.conf) | map[string]string | false | -| pg_hba | PostgreSQL Host Based Authentication rules (lines to be appended to the pg_hba.conf file) | []string | false | - - -## RecoveryTarget - -RecoveryTarget allows to configure the moment where the recovery process will stop. All the target options except TargetTLI are mutually exclusive. - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| targetTLI | The target timeline (\"latest\", \"current\" or a positive integer) | string | false | -| targetXID | The target transaction ID | string | false | -| targetName | The target name (to be previously created with `pg_create_restore_point`) | string | false | -| targetLSN | The target LSN (Log Sequence Number) | string | false | -| targetTime | The target time, in any unambiguous representation allowed by PostgreSQL | string | false | -| targetImmediate | End recovery as soon as a consistent state is reached | *bool | false | -| exclusive | Set the target to be exclusive (defaults to true) | *bool | false | - - -## RollingUpdateStatus - -RollingUpdateStatus contains the information about an instance which is being updated - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| imageName | The image which we put into the Pod | string | true | -| startedAt | When the update has been started | metav1.Time | false | - - -## S3Credentials - -S3Credentials is the type for the credentials to be used to upload files to S3 - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| accessKeyId | The reference to the access key id | corev1.SecretKeySelector | true | -| secretAccessKey | The reference to the secret access key | corev1.SecretKeySelector | true | - - -## StorageConfiguration - -StorageConfiguration is the configuration of the storage of the PostgreSQL instances - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| storageClass | StorageClass to use for database data (`PGDATA`). Applied after evaluating the PVC template, if available. If not specified, generated PVCs will be satisfied by the default storage class | *string | false | -| size | Size of the storage. Required if not already specified in the PVC template. Changes to this field are automatically reapplied to the created PVCs. Size cannot be decreased. | string | true | -| resizeInUseVolumes | Resize existent PVCs, defaults to true | *bool | false | -| pvcTemplate | Template to be used to generate the Persistent Volume Claim | *corev1.PersistentVolumeClaimSpec | false | - - -## WalBackupConfiguration - -WalBackupConfiguration is the configuration of the backup of the WAL stream - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| compression | Compress a WAL file before sending it to the object store. Available options are empty string (no compression, default), `gzip` or `bzip2`. | CompressionType | false | -| encryption | Whenever to force the encryption of files (if the bucket is not already configured for that). Allowed options are empty string (use the bucket policy, default), `AES256` and `aws:kms` | EncryptionType | false | - - -## ScheduledBackup - -ScheduledBackup is the Schema for the scheduledbackups API - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| metadata | | [metav1.ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#objectmeta-v1-meta) | false | -| spec | Specification of the desired behavior of the ScheduledBackup. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | [ScheduledBackupSpec](#scheduledbackupspec) | false | -| status | Most recently observed status of the ScheduledBackup. This data may not be up to date. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status | [ScheduledBackupStatus](#scheduledbackupstatus) | false | - - -## ScheduledBackupList - -ScheduledBackupList contains a list of ScheduledBackup - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| metadata | Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds | [metav1.ListMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#listmeta-v1-meta) | false | -| items | List of clusters | \[][ScheduledBackup](#scheduledbackup) | true | - - -## ScheduledBackupSpec - -ScheduledBackupSpec defines the desired state of ScheduledBackup - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| suspend | If this backup is suspended of not | *bool | false | -| schedule | The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron. | string | true | -| cluster | The cluster to backup | [v1.LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#localobjectreference-v1-core) | false | - - -## ScheduledBackupStatus - -ScheduledBackupStatus defines the observed state of ScheduledBackup - -| Field | Description | Scheme | Required | -| -------------------- | ------------------------------ | -------------------- | -------- | -| lastCheckTime | The latest time the schedule | *metav1.Time | false | -| lastScheduleTime | Information when was the last time that backup was successfully scheduled. | *metav1.Time | false | -| nextScheduleTime | Next time we will run a backup | *metav1.Time | false | - diff --git a/temp_kubernetes/original/src/architecture.md b/temp_kubernetes/original/src/architecture.md deleted file mode 100644 index 5b27ded904b..00000000000 --- a/temp_kubernetes/original/src/architecture.md +++ /dev/null @@ -1,122 +0,0 @@ -# Architecture - -For High Availability goals, the PostgreSQL database management system provides administrators with built-in **physical replication** capabilities based on **Write Ahead Log (WAL) shipping**. - -PostgreSQL supports both asynchronous and synchronous streaming replication, as well as asynchronous file-based log shipping (normally used as a fallback option, for example, to store WAL files in an object store). Replicas are usually called *standby servers* and can also be used for read-only workloads, thanks to the *Hot Standby* feature. - -Cloud Native PostgreSQL currently supports clusters based on asynchronous and synchronous streaming replication to manage multiple hot standby replicas, with the following specifications: - -* One primary, with optional multiple hot standby replicas for High Availability -* Available services for applications: - * `-rw`: applications connect to the only primary instance of the cluster - * `-ro`: applications connect to the only hot standby replicas for read-only-workloads - * `-r`: applications connect to any of the instances for read-only workloads -* Shared-nothing architecture recommended for better resilience of the PostgreSQL cluster: - * PostgreSQL instances should reside on different Kubernetes worker nodes and share only the network - * PostgreSQL instances can reside in different availability zones in the same region - * All nodes of a PostgreSQL cluster should reside in the same region - -## Read-write workloads - -Applications can decide to connect to the PostgreSQL instance elected as *current primary* -by the Kubernetes operator, as depicted in the following diagram: - -![Applications writing to the single primary](./images/architecture-rw.png) - -Applications can use the `-rw` suffix service. - -In case of temporary or permanent unavailability of the primary, Kubernetes -will move the `-rw` to another instance of the cluster for high availability -purposes. - -## Read-only workloads - -!!! Important - Applications must be aware of the limitations that [Hot Standby](https://www.postgresql.org/docs/current/hot-standby.html) - presents and familiar with the way PostgreSQL operates when dealing with these workloads. - -Applications can access hot standby replicas through the `-ro` service made available -by the operator. This service enables the application to offload read-only queries from the -primary node. - -The following diagram shows the architecture: - -![Applications reading from hot standby replicas in round robin](./images/architecture-read-only.png) - -Applications can also access any PostgreSQL instance at any time through the `-r` service at connection time. - -## Application deployments - -Applications are supposed to work with the services created by Cloud Native PostgreSQL -in the same Kubernetes cluster: - -* `[cluster name]-rw` -* `[cluster name]-ro` -* `[cluster name]-r` - -Those services are entirely managed by the Kubernetes cluster and -implement a form of Virtual IP as described in the -["Service" page of the Kubernetes Documentation](https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies). - -!!! Hint - It is highly recommended to use those services in your applications, - and avoid connecting directly to a specific PostgreSQL instance, as the latter - can change during the cluster lifetime. - -You can use these services in your applications through: - -* DNS resolution -* environment variables - -As far as the credentials to connect to PostgreSQL are concerned, you can -use the secrets generated by the operator. - -!!! Warning - The operator will create another service, named `[cluster name]-any`. That - service is used internally to manage PostgreSQL instance discovery. - It's not supposed to be used directly by applications. - -## DNS resolution - -You can use the Kubernetes DNS service, which is required by this operator, -to point to a given server. -You can do that by just using the name of the service if the application is -deployed in the same namespace as the PostgreSQL cluster. -In case the PostgreSQL cluster resides in a different namespace, you can use the -full qualifier: `service-name.namespace-name`. - -DNS is the preferred and recommended discovery method. - -## Environment variables - -If you deploy your application in the same namespace that contains the -PostgreSQL cluster, you can also use environment variables to connect to the database. - -For example, suppose that your PostgreSQL cluster is called `pg-database`, -you can use the following environment variables in your applications: - -* `PG_DATABASE_R_SERVICE_HOST`: the IP address of the service - pointing to all the PostgreSQL instances for read-only workloads - -* `PG_DATABASE_RO_SERVICE_HOST`: the IP address of the - service pointing to all hot-standby replicas of the cluster - -* `PG_DATABASE_RW_SERVICE_HOST`: the IP address of the - service pointing to the *primary* instance of the cluster - -## Secrets - -The PostgreSQL operator will generate two secrets for every PostgreSQL cluster -it deploys: - -* `[cluster name]-superuser` -* `[cluster name]-app` - -The secrets contain the username, password, and a working -[`.pgpass file`](https://www.postgresql.org/docs/current/libpq-pgpass.html) -respectively for the `postgres` user and the *owner* of the database. - -The `-app` credentials are the ones that should be used by applications -connecting to the PostgreSQL cluster. - -The `-superuser` ones are supposed to be used only for administrative purposes. diff --git a/temp_kubernetes/original/src/backup_recovery.md b/temp_kubernetes/original/src/backup_recovery.md deleted file mode 100644 index 4491e9f1643..00000000000 --- a/temp_kubernetes/original/src/backup_recovery.md +++ /dev/null @@ -1,419 +0,0 @@ -# Backup and Recovery - -The operator can orchestrate a continuous backup infrastructure -that is based on the [Barman](https://pgbarman.org) tool. Instead -of using the classical architecture with a Barman server, which -backup many PostgreSQL instances, the operator will use the -`barman-cloud-wal-archive` and `barman-cloud-backup` tools. -As a result, base backups will be *tarballs*. Both base backups and WAL files -can be compressed and encrypted. - -For this, it is required an image with `barman-cli-cloud` installed. -You can use the image `quay.io/enterprisedb/postgresql` for this scope, -as it is composed of a community PostgreSQL image and the latest -`barman-cli-cloud` package. - -## Cloud credentials - -You can archive the backup files in any service whose API is compatible -with AWS S3. You will need the following information about your -environment: - -- `ACCESS_KEY_ID`: the ID of the access key that will be used - to upload files in S3 - -- `ACCESS_SECRET_KEY`: the secret part of the previous access key - -- `ACCESS_SESSION_TOKEN`: the optional session token in case it is required - -The access key used must have permission to upload files in -the bucket. Given that, you must create a k8s secret with the -credentials, and you can do that with the following command: - -```sh -kubectl create secret generic aws-creds \ - --from-literal=ACCESS_KEY_ID= \ - --from-literal=ACCESS_SECRET_KEY= -# --from-literal=ACCESS_SESSION_TOKEN= # if required -``` - -The credentials will be stored inside Kubernetes and will be encrypted -if encryption at rest is configured in your installation. - -## Configuring the Cluster - -### S3 - -Given that secret, you can configure your cluster like in -the following example: - -```yaml -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -[...] -spec: - backup: - barmanObjectStore: - destinationPath: "" - s3Credentials: - accessKeyId: - name: aws-creds - key: ACCESS_KEY_ID - secretAccessKey: - name: aws-creds - key: ACCESS_SECRET_KEY -``` - -The destination path can be every URL pointing to a folder where -the instance can upload the WAL files, e.g. -`s3://BUCKET_NAME/path/to/folder`. - -### Other S3-compatible Object Storages providers - -In case you're using S3-compatible object storage, like MinIO or -Linode Object Storage, you can specify an endpoint instead of using the -default S3 one. - -In this example, it will use the `bucket` bucket of Linode in the region -`us-east1`. - -```yaml -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -[...] -spec: - backup: - barmanObjectStore: - destinationPath: "" - endpointURL: bucket.us-east1.linodeobjects.com - s3Credentials: - [...] -``` - -### MinIO Gateway - -Optionally, you can use MinIO Gateway as a common interface which -relays backup objects to other cloud storage solutions, like S3, GCS or -Azure. For more information, please refer to [MinIO official documentation](https://docs.min.io/). - -Specifically, the Cloud Native PostgreSQL cluster can directly point to a local -MinIO Gateway as an endpoint, using previously created credentials and service. - -MinIO secrets will be used by both the PostgreSQL cluster and the MinIO instance. -Therefore you must create them in the same namespace: - -```sh -kubectl create secret generic minio-creds \ - --from-literal=MINIO_ACCESS_KEY= \ - --from-literal=MINIO_SECRET_KEY= -``` - -!!! NOTE "Note" - Cloud Object Storage credentials will be used only by MinIO Gateway in this case. - -!!! Important - In order to allow PostgreSQL to reach MinIO Gateway, it is necessary to create a - `ClusterIP` service on port `9000` bound to the MinIO Gateway instance. - -For example: - -```yaml -apiVersion: v1 -kind: Service -metadata: - name: minio-gateway-service -spec: - type: ClusterIP - ports: - - port: 9000 - targetPort: 9000 - protocol: TCP - selector: - app: minio -``` - -!!! Warning - At the time of writing this documentation, the official [MinIO Operator](https://github.com/minio/minio-operator/issues/71) - for Kubernetes does not support the gateway feature. As such, we will use a - `deployment` instead. - -The MinIO deployment will use cloud storage credentials to upload objects to the -remote bucket and relay backup files to different locations. - -Here is an example using AWS S3 as Cloud Object Storage: - -```yaml -apiVersion: apps/v1 -kind: Deployment -[...] - spec: - containers: - - name: minio - image: minio/minio:RELEASE.2020-06-03T22-13-49Z - args: - - gateway - - s3 - env: - # MinIO access key and secret key - - name: MINIO_ACCESS_KEY - valueFrom: - secretKeyRef: - name: minio-creds - key: MINIO_ACCESS_KEY - - name: MINIO_SECRET_KEY - valueFrom: - secretKeyRef: - name: minio-creds - key: MINIO_SECRET_KEY - # AWS credentials - - name: AWS_ACCESS_KEY_ID - valueFrom: - secretKeyRef: - name: aws-creds - key: ACCESS_KEY_ID - - name: AWS_SECRET_ACCESS_KEY - valueFrom: - secretKeyRef: - name: aws-creds - key: ACCESS_SECRET_KEY -# Uncomment the below section if session token is required -# - name: AWS_SESSION_TOKEN -# valueFrom: -# secretKeyRef: -# name: aws-creds -# key: ACCESS_SESSION_TOKEN - ports: - - containerPort: 9000 -``` - -Proceed by configuring MinIO Gateway service as the `endpointURL` in the `Cluster` -definition, then choose a bucket name to replace `BUCKET_NAME`: - -```yaml -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -[...] -spec: - backup: - barmanObjectStore: - destinationPath: s3://BUCKET_NAME/ - endpointURL: http://minio-gateway-service:9000 - s3Credentials: - accessKeyId: - name: minio-creds - key: MINIO_ACCESS_KEY - secretAccessKey: - name: minio-creds - key: MINIO_SECRET_KEY - [...] -``` - -Verify on `s3://BUCKET_NAME/` the presence of archived WAL files before -proceeding with a backup. - -## On-demand backups - -To request a new backup, you need to create a new Backup resource -like the following one: - -```yaml -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Backup -metadata: - name: backup-example -spec: - cluster: - name: pg-backup -``` - -The operator will start to orchestrate the cluster to take the -required backup using `barman-cloud-backup`. You can check -the backup status using the plain `kubectl describe backup ` -command: - -```text -Name: backup-example -Namespace: default -Labels: -Annotations: API Version: postgresql.k8s.enterprisedb.io/v1 -Kind: Backup -Metadata: - Creation Timestamp: 2020-10-26T13:57:40Z - Self Link: /apis/postgresql.k8s.enterprisedb.io/v1/namespaces/default/backups/backup-example - UID: ad5f855c-2ffd-454a-a157-900d5f1f6584 -Spec: - Cluster: - Name: pg-backup -Status: - Phase: running - Started At: 2020-10-26T13:57:40Z -Events: -``` - -When the backup has been completed, the phase will be `completed` -like in the following example: - -```text -Name: backup-example -Namespace: default -Labels: -Annotations: API Version: postgresql.k8s.enterprisedb.io/v1 -Kind: Backup -Metadata: - Creation Timestamp: 2020-10-26T13:57:40Z - Self Link: /apis/postgresql.k8s.enterprisedb.io/v1/namespaces/default/backups/backup-example - UID: ad5f855c-2ffd-454a-a157-900d5f1f6584 -Spec: - Cluster: - Name: pg-backup -Status: - Backup Id: 20201026T135740 - Destination Path: s3://backups/ - Endpoint URL: http://minio:9000 - Phase: completed - s3Credentials: - Access Key Id: - Key: ACCESS_KEY_ID - Name: minio - Secret Access Key: - Key: ACCESS_SECRET_KEY - Name: minio - Server Name: pg-backup - Started At: 2020-10-26T13:57:40Z - Stopped At: 2020-10-26T13:57:44Z -Events: -``` - -!!!Important - This feature will not backup the secrets for the superuser and the - application user. The secrets are supposed to be backed up as part of - the standard backup procedures for the Kubernetes cluster. - -## Scheduled backups - -You can also schedule your backups periodically by creating a -resource named `ScheduledBackup`. The latter is similar to a -`Backup` but with an added field, called `schedule`. - -This field is a [Cron](https://en.wikipedia.org/wiki/Cron) schedule -specification with a prepended field for seconds. This schedule format -is the same used in Kubernetes CronJobs. - -This is an example of a scheduled backup: - -```yaml -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: ScheduledBackup -metadata: - name: backup-example -spec: - schedule: "0 0 0 * * *" - cluster: - name: pg-backup -``` - -The proposed specification will schedule a backup every day at midnight. - -## WAL archiving - -WAL archiving is enabled as soon as you choose a destination path -and you configure your cloud credentials. - -If required, you can choose to compress WAL files as soon as they -are uploaded and/or encrypt them: - -```yaml -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -[...] -spec: - backup: - barmanObjectStore: - [...] - wal: - compression: gzip - encryption: AES256 -``` - -You can configure the encryption directly in your bucket, and the operator -will use it unless you override it in the cluster configuration. - -## Recovery - -You can use the data uploaded to the object storage to bootstrap a -new cluster from a backup. The operator will orchestrate the recovery -process using the `barman-cloud-restore` tool. - -When a backup is completed, the corresponding Kubernetes resource will -contain every information needed to restore it, just like in the -following example: - -```text -Name: backup-example -Namespace: default -Labels: -Annotations: API Version: postgresql.k8s.enterprisedb.io/v1 -Kind: Backup -Metadata: - Creation Timestamp: 2020-10-26T13:57:40Z - Self Link: /apis/postgresql.k8s.enterprisedb.io/v1/namespaces/default/backups/backup-example - UID: ad5f855c-2ffd-454a-a157-900d5f1f6584 -Spec: - Cluster: - Name: pg-backup -Status: - Backup Id: 20201026T135740 - Destination Path: s3://backups/ - Endpoint URL: http://minio:9000 - Phase: completed - s3Credentials: - Access Key Id: - Key: ACCESS_KEY_ID - Name: minio - Secret Access Key: - Key: ACCESS_SECRET_KEY - Name: minio - Server Name: pg-backup - Started At: 2020-10-26T13:57:40Z - Stopped At: 2020-10-26T13:57:44Z -Events: -``` - -Given the following cluster definition: - -```yaml -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: cluster-restore -spec: - instances: 3 - - storage: - size: 5Gi - - bootstrap: - recovery: - backup: - name: backup-example -``` - -The operator will inject an init container in the first instance of the -cluster and the init container will start recovering the backup from the -object storage. - -When the recovery process is completed, the operator will start the instance -to allow it to recover the transaction log files needed for the -consistency of the restored data directory. - -Once the recovery is complete, the operator will set the required -superuser password into the instance. The new primary instance will start -as usual, and the remaining instances will join the cluster as replicas. - -The process is transparent for the user and it is managed by the instance -manager running in the Pods. - -You can optionally specify a `recoveryTarget` to perform a point in time -recovery. If left unspecified, the recovery will continue up to the latest -available WAL on the default target timeline (`current` for PostgreSQL up to -11, `latest` for version 12 and above). diff --git a/temp_kubernetes/original/src/before_you_start.md b/temp_kubernetes/original/src/before_you_start.md deleted file mode 100644 index 4a43c516518..00000000000 --- a/temp_kubernetes/original/src/before_you_start.md +++ /dev/null @@ -1,45 +0,0 @@ -# Before You Start - -Before we get started, it is essential to go over some terminology that is -specific to Kubernetes and PostgreSQL. - -## Kubernetes terminology - -| Resource | Description | -|-------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [Node](https://kubernetes.io/docs/concepts/architecture/nodes/) | A *node* is a worker machine in Kubernetes, either virtual or physical, where all services necessary to run pods are managed by the control plane node(s). | -| [Pod](https://kubernetes.io/docs/concepts/workloads/pods/pod/) | A *pod* is the smallest computing unit that can be deployed in a Kubernetes cluster and is composed of one or more containers that share network and storage. | -| [Service](https://kubernetes.io/docs/concepts/services-networking/service/) | A *service* is an abstraction that exposes as a network service an application that runs on a group of pods and standardizes important features such as service discovery across applications, load balancing, failover, and so on. | -| [Secret](https://kubernetes.io/docs/concepts/configuration/secret/) | A *secret* is an object that is designed to store small amounts of sensitive data such as passwords, access keys, or tokens, and use them in pods. | -| [Storage Class](https://kubernetes.io/docs/concepts/storage/storage-classes/) | A *storage class* allows an administrator to define the classes of storage in a cluster, including provisioner (such as AWS EBS), reclaim policies, mount options, volume expansion, and so on. | -| [Persistent Volume](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) | A *persistent volume* (PV) is a resource in a Kubernetes cluster that represents storage that has been either manually provisioned by an administrator or dynamically provisioned by a *storage class* controller. A PV is associated with a pod using a *persistent volume claim* and its lifecycle is independent of any pod that uses it. Normally, a PV is a network volume, especially in the public cloud. A [*local persistent volume* (LPV)](https://kubernetes.io/docs/concepts/storage/volumes/#local) is a persistent volume that exists only on the particular node where the pod that uses it is running. | -| [Persistent Volume Claim](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims) | A *persistent volume claim* (PVC) represents a request for storage, which might include size, access mode, or a particular storage class. Similar to how a pod consumes node resources, a PVC consumes the resources of a PV. | -| [Namespace](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/) | A *namespace* is a logical and isolated subset of a Kubernetes cluster and can be seen as a *virtual cluster* within the wider physical cluster. Namespaces allow administrators to create separated environments based on projects, departments, teams, and so on. | -| [RBAC](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) | *Role Based Access Control* (RBAC), also known as *role-based security*, is a method used in computer systems security to restrict access to the network and resources of a system to authorized users only. Kubernetes has a native API to control roles at the namespace and cluster level and associate them with specific resources and individuals. | -| [CRD](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) | A *custom resource definition* (CRD) is an extension of the Kubernetes API and allows developers to create new data types and objects, *called custom resources*. | -| [Operator](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) | An *operator* is a custom resource that automates those steps that are normally performed by a human operator when managing one or more applications or given services. An operator assists Kubernetes in making sure that the resource's defined state always matches the observed one. | -| [kubectl](https://kubernetes.io/docs/reference/kubectl/overview/) | `kubectl` is the command-line tool used to manage a Kubernetes cluster. | - -Cloud Native PostgreSQL requires Kubernetes 1.16 or higher. - -## PostgreSQL terminology - -| Resource | Description | -|-------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Instance | A Postgres server process running and listening on a pair "IP address(es)" and "TCP port" (usually 5432). | -| Primary | A PostgreSQL instance that can accept both read and write operations. | -| Replica | A PostgreSQL instance replicating from the only primary instance in a cluster and is kept updated by reading a stream of Write-Ahead Log (WAL) records. A replica is also known as *standby* or *secondary* server. PostgreSQL relies on physical streaming replication (async/sync) and file-based log shipping (async). | -| Hot Standby | PostgreSQL feature that allows a *replica* to accept read-only workloads. | -| Cluster | To be intended as High Availability (HA) Cluster: a set of PostgreSQL instances made up by a single primary and an optional arbitrary number of replicas. | - -## Cloud terminology - -| Resource | Description | -|-------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Region | A *region* in the Cloud is an isolated and independent geographic area organized in *availability zones*. Zones within a region have very little round-trip network latency. | -| Zone | An *availability zone* in the Cloud (also known as *zone*) is an area in a region where resources can be deployed. Usually, an availability zone corresponds to a data center or an isolated building of the same data center. | - -## What to do next - -Now that you have familiarized with the terminology, you can decide to -[test Cloud Native PostgreSQL on your laptop using a local cluster](quickstart.md) before deploying the operator in your selected cloud environment. diff --git a/temp_kubernetes/original/src/bootstrap.md b/temp_kubernetes/original/src/bootstrap.md deleted file mode 100644 index b2bc794ff5f..00000000000 --- a/temp_kubernetes/original/src/bootstrap.md +++ /dev/null @@ -1,304 +0,0 @@ -# Bootstrap - -This section describes the options you have to create a new -PostgreSQL cluster and the design rationale behind them. - -When a PostgreSQL cluster is defined, you can configure the -*bootstrap* method using the `bootstrap` section of the cluster -specification. - -In the following example: - -```yaml -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: cluster-example-initdb -spec: - instances: 3 - - bootstrap: - initdb: - database: appdb - owner: appuser - - storage: - size: 1Gi -``` - -The `initdb` bootstrap method is used. - -We currently support the following bootstrap methods: - -- `initdb`: initialise an empty PostgreSQL cluster -- `recovery`: create a PostgreSQL cluster restoring from an existing backup - and replaying all the available WAL files. - -## initdb - -The `initdb` bootstrap method is used to create a new PostgreSQL cluster from -scratch. It is the default one unless specified differently. - -The following example contains the full structure of the `initdb` configuration: - -```yaml -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: cluster-example-initdb -spec: - instances: 3 - - superuserSecret: - name: superuser-secret - - bootstrap: - initdb: - database: appdb - owner: appuser - secret: - name: appuser-secret - - storage: - size: 1Gi -``` - -The above example of bootstrap will: - -1. create a new `PGDATA` folder using PostgreSQL's native `initdb` command -2. set a *superuser* password from the secret named `superuser-secret` -3. create an *unprivileged* user named `appuser` -4. set the password of the latter using the one in the `appuser-secret` secret -5. create a database called `appdb` owned by the `appuser` user. - -Thanks to the *convention over configuration paradigm*, you can let the -operator choose a default database name (`app`) and a default application -user name (same as the database name), as well as randomly generate a -secure password for both the superuser and the application user in -PostgreSQL. - -Alternatively, you can generate your passwords, store them as secrets, -and use them in the PostgreSQL cluster - as described in the above example. - -The supplied secrets must comply with the specifications of the -[`kubernetes.io/basic-auth` type](https://kubernetes.io/docs/concepts/configuration/secret/#basic-authentication-secret). -The operator will only use the `password` field of the secret, -ignoring the `username` one. If you plan to reuse the secret for application -connections, you can set the `username` field to the same value as the `owner`. - -The following is an example of a `basic-auth` secret: - -```yaml -apiVersion: v1 -data: - password: cGFzc3dvcmQ= -kind: Secret -metadata: - name: cluster-example-app-user -type: kubernetes.io/basic-auth -``` - -The application database is the one that should be used to store application -data. Applications should connect to the cluster with the user that owns -the application database. - -!!! Important - Future implementations of the operator might allow you to create - additional users in a declarative configuration fashion. - -The superuser and the `postgres` database are supposed to be used only -by the operator to configure the cluster. - -In case you don't supply any database name, the operator will proceed -by convention and create the `app` database, and adds it to the cluster -definition using a *defaulting webhook*. -The user that owns the database defaults to the database name instead. - -The application user is not used internally by the operator, which instead -relies on the superuser to reconcile the cluster with the desired status. - -!!! Important - For now, changes to the name of the superuser secret are not applied - to the cluster. - -The actual PostgreSQL data directory is created via an invocation of the -`initdb` PostgreSQL command. If you need to add custom options to that -command (i.e., to change the locale used for the template databases or to -add data checksums), you can add them to the `options` section like in -the following example: - -```yaml -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: cluster-example-initdb -spec: - instances: 3 - - bootstrap: - initdb: - database: appdb - owner: appuser - options: - - "-k" - - "--locale=en_US" - storage: - size: 1Gi -``` - -### Compatibility Features - -EDB Postgres Advanced adds many compatibility features to the -plain community PostgreSQL. You can find more information about that -in the [EDB Postgres Advanced](https://www.enterprisedb.com/edb-docs/p/edb-postgres-advanced-server). - -Those features are already enabled during cluster creation on EPAS and -are not supported on the community PostgreSQL image. To disable them -you can use the `redwood` flag in the `initdb` section -like in the following example: - -```yaml -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: cluster-example-initdb -spec: - instances: 3 - imageName: - licenseKey: - - bootstrap: - initdb: - database: appdb - owner: appuser - redwood: false - storage: - size: 1Gi -``` - -!!! Important - EDB Postgres Advanced requires a valid license key (trial or production) to start. - -## recovery - -The `recovery` bootstrap mode lets you create a new cluster from -an existing backup. You can find more information about the recovery -feature in the ["Backup and recovery" page](backup_recovery.md). - -The following example contains the full structure of the `recovery` -section: - -```yaml -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: cluster-example-initdb -spec: - instances: 3 - - superuserSecret: - name: superuser-secret - - bootstrap: - recovery: - backup: - name: backup-example - - storage: - size: 1Gi -``` - -This bootstrap method allows you to specify just a reference to the -backup that needs to be restored. - -The application database name and the application database user are preserved -from the backup that is being restored. The operator does not currently attempt -to backup the underlying secrets, as this is part of the usual maintenance -activity of the Kubernetes cluster itself. - -In case you don't supply any `superuserSecret`, a new one is automatically -generated with a secure and random password. The secret is then used to -reset the password for the `postgres` user of the cluster. - -By default, the recovery will continue up to the latest -available WAL on the default target timeline (`current` for PostgreSQL up to -11, `latest` for version 12 and above). -You can optionally specify a `recoveryTarget` to perform a point in time -recovery (see the ["Point in time recovery" chapter](#point-in-time-recovery)). - -### Point in time recovery - -Instead of replaying all the WALs up to the latest one, -we can ask PostgreSQL to stop replaying WALs at any given point in time. -PostgreSQL uses this technique to implement *point-in-time* recovery. -This allows you to restore the database to its state at any time after -the base backup was taken. - -The operator will generate the configuration parameters required for this -feature to work if a recovery target is specified like in the following -example: - -```yaml -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: cluster-restore-pitr -spec: - instances: 3 - - storage: - size: 5Gi - - bootstrap: - recovery: - backup: - name: backup-example - - recoveryTarget: - targetTime: "2020-11-26 15:22:00.00000+00" -``` - -Beside `targetTime`, you can use the following criteria to stop the recovery: - -- `targetXID` specify a transaction ID up to which recovery will proceed - -- `targetName` specify a restore point (created with `pg_create_restore_point` - to which recovery will proceed) - -- `targetLSN` specify the LSN of the write-ahead log location up to which - recovery will proceed - -- `targetImmediate` specify to stop as soon as a consistent state is - reached - -You can choose only a single one among the targets above in each -`recoveryTarget` configuration. - -Additionally, you can specify `targetTLI` force recovery to a specific -timeline. - -By default, the previous parameters are considered to be exclusive, stopping -just before the recovery target. You can request inclusive behavior, -stopping right after the recovery target, setting the `exclusive` parameter to -`false` like in the following example: - -```yaml -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: cluster-restore-pitr -spec: - instances: 3 - - storage: - size: 5Gi - - bootstrap: - recovery: - backup: - name: backup-example - - recoveryTarget: - targetName: "maintenance-activity" - exclusive: false -``` diff --git a/temp_kubernetes/original/src/cloud_setup.md b/temp_kubernetes/original/src/cloud_setup.md deleted file mode 100644 index 67e3021c869..00000000000 --- a/temp_kubernetes/original/src/cloud_setup.md +++ /dev/null @@ -1,110 +0,0 @@ -# Cloud Setup - -This section describes how to orchestrate the deployment and management -of a PostgreSQL High Availability cluster in a [Kubernetes](https://www.kubernetes.io/) cluster in the public cloud using -[CustomResourceDefinitions](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) -such as `Cluster`. Like any other Kubernetes application, it is deployed -using regular manifests written in YAML. - -The Cloud Native PostgreSQL Operator is systematically tested on the following public cloud environments: - -- [Microsoft Azure Kubernetes Service (AKS)](https://azure.microsoft.com/en-in/services/kubernetes-service/) -- [Amazon Elastic Kubernetes Service (EKS)](https://aws.amazon.com/eks/) -- [Google Kubernetes Engine (GKE)](https://cloud.google.com/kubernetes-engine/) - -Below you can find specific instructions for each of the above environments. -Once the steps described on this page have been completed, and your `kubectl` -can connect to the desired cluster, you can install the operator and start -creating PostgreSQL `Clusters` by following the instructions you find in the -["Installation"](installation.md) section. - -!!! Important - `kubectl` is required to proceed with setup. - -## Microsoft Azure Kubernetes Service (AKS) - -Follow the instructions contained in -["Quickstart: Deploy an Azure Kubernetes Service (AKS) cluster using the Azure portal"](https://docs.microsoft.com/bs-latn-ba/azure/aks/kubernetes-walkthrough-portal) -available on the Microsoft documentation to set up your Kubernetes cluster in AKS. - -In particular, you need to configure `kubectl` to connect to your Kubernetes cluster -(called `myAKSCluster` using resources in `myResourceGroup` group) through the -`az aks get-credentials` command. -This command downloads the credentials and configures your `kubectl` to use them: - -```sh -az aks get-credentials --resource-group myResourceGroup --name myAKSCluster -``` - -!!! Note - You can change the name of the `myAKSCluster` cluster and the resource group `myResourceGroup` - from the Azure portal. - -You can use any of the storage classes that work with Azure disks: - -- `default` -- `managed-premium` - -!!! Seealso "About AKS storage classes" - For more information and details on the available storage classes in AKS, please refer to the - ["Storage classes" section in the official documentation from Microsoft](https://docs.microsoft.com/en-us/azure/aks/concepts-storage#storage-classes). - -## Amazon Elastic Kubernetes Service (EKS) - -Follow the instructions contained in -["Creating an Amazon EKS Cluster"](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) -available on the AWS documentation to set up your Kubernetes cluster in EKS. - -!!! Important - Keep in mind that Amazon puts limitations on how many pods a node can create. - It depends on the type of instance that you choose to use when you create - your cluster. - -After the setup, `kubectl` should point to your newly created EKS cluster. - -By default, a `gp2` storage class is available after cluster creation. However, Amazon EKS offers multiple -storage types that can be leveraged to create other storage classes for `Clusters`' volumes: - -- `gp2`: general-purpose SSD volume -- `io1`: provisioned IOPS SSD -- `st1`: throughput optimized HDD -- `sc1`: cold HDD - -!!! Seealso "About EKS storage classes" - For more information and details on the available storage classes in EKS, please refer to the - ["Amazon EBS Volume Types" page](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html) - in the official documentation for AWS and the - ["AWS-EBS" page](https://kubernetes.io/docs/concepts/storage/storage-classes/#aws-ebs) - in the Kubernetes documentation. - -## Google Kubernetes Engine (GKE) - -Follow the instructions contained in -["Creating a cluster"](https://cloud.google.com/kubernetes-engine/docs/how-to/creating-a-cluster) -available on the Google Cloud documentation to set up your Kubernetes cluster in GKE. - -!!! Warning - Google Kubernetes Engine uses the deprecated `kube-dns` server instead of the - recommended [CoreDNS](https://coredns.io/). To work with Cloud Native PostgreSQL Operator, - you need to disable `kube-dns` and replace it with `coredns`. - -To replace `kube-dns` with `coredns` in your GKE cluster, follow these instructions: - -```sh -kubectl scale --replicas=0 deployment/kube-dns-autoscaler --namespace=kube-system -kubectl scale --replicas=0 deployment/kube-dns --namespace=kube-system -git clone https://github.com/coredns/deployment.git -./deployment/kubernetes/deploy.sh | kubectl apply -f - -``` - -By default, a `standard` storage class is available after cluster creation, using -standard hard disks. For other storage types, you'll need to create specific -storage classes. - -!!! Seealso "About GKE storage classes" - For more information and details on the available storage types in GKE, please refer to the - ["GCE PD" section](https://kubernetes.io/docs/concepts/storage/storage-classes/#gce-pd) - of the Kubernetes documentation and the - ["Persistent volumes with Persistent Disks" page](https://cloud.google.com/kubernetes-engine/docs/concepts/persistent-volumes) - and related ones in the official documentation for Google Cloud. - diff --git a/temp_kubernetes/original/src/cnp-plugin.md b/temp_kubernetes/original/src/cnp-plugin.md deleted file mode 100644 index 46ca9931427..00000000000 --- a/temp_kubernetes/original/src/cnp-plugin.md +++ /dev/null @@ -1,140 +0,0 @@ -# Cloud Native PostgreSQL Plugin - -Cloud Native PostgreSQL provides a plugin for `kubectl` to manage a cluster in Kubernetes. -The plugin also works with `oc` in an OpenShift environment. - -## Install - -You can install the plugin in your system with: - -```sh -curl -sSfL \ - https://github.com/EnterpriseDB/kubectl-cnp/raw/main/install.sh | \ - sudo sh -s -- -b /usr/local/bin -``` - -## Use - -Once the plugin was installed and deployed, you can start using it like this: - -```shell -kubectl cnp -``` - -### Status - -The `status` command provides a brief of the current status of your cluster. - -```shell -kubectl cnp status cluster-example -``` - -```shell -Cluster in healthy state -Name: cluster-example -Namespace: default -PostgreSQL Image: quay.io/enterprisedb/postgresql:13 -Primary instance: cluster-example-1 -Instances: 3 -Ready instances: 3 - -Instances status -Pod name Current LSN Received LSN Replay LSN System ID Primary Replicating Replay paused Pending restart --------- ----------- ------------ ---------- --------- ------- ----------- ------------- --------------- -cluster-example-1 0/6000060 6927251808674721812 ✓ ✗ ✗ ✗ -cluster-example-2 0/6000060 0/6000060 6927251808674721812 ✗ ✓ ✗ ✗ -cluster-example-3 0/6000060 0/6000060 6927251808674721812 ✗ ✓ ✗ ✗ - -``` - -You can also get a more verbose version of the status by adding `--verbose` or just `-v` - -```shell -kubectl cnp status cluster-example --verbose -``` - -```shell -Cluster in healthy state -Name: cluster-example -Namespace: default -PostgreSQL Image: quay.io/enterprisedb/postgresql:13 -Primary instance: cluster-example-1 -Instances: 3 -Ready instances: 3 - -PostgreSQL Configuration -archive_command = '/controller/manager wal-archive %p' -archive_mode = 'on' -archive_timeout = '5min' -full_page_writes = 'on' -hot_standby = 'true' -listen_addresses = '*' -logging_collector = 'off' -max_parallel_workers = '32' -max_replication_slots = '32' -max_worker_processes = '32' -port = '5432' -ssl = 'on' -ssl_ca_file = '/tmp/ca.crt' -ssl_cert_file = '/tmp/server.crt' -ssl_key_file = '/tmp/server.key' -unix_socket_directories = '/var/run/postgresql' -wal_keep_size = '512MB' -wal_level = 'logical' -wal_log_hints = 'on' - - -PostgreSQL HBA Rules -# Grant local access -local all all peer - -# Require client certificate authentication for the streaming_replica user -hostssl postgres streaming_replica all cert clientcert=1 -hostssl replication streaming_replica all cert clientcert=1 - -# Otherwise use md5 authentication -host all all all md5 - - -Instances status -Pod name Current LSN Received LSN Replay LSN System ID Primary Replicating Replay paused Pending restart --------- ----------- ------------ ---------- --------- ------- ----------- ------------- --------------- -cluster-example-1 0/6000060 6927251808674721812 ✓ ✗ ✗ ✗ -cluster-example-2 0/6000060 0/6000060 6927251808674721812 ✗ ✓ ✗ ✗ -cluster-example-3 0/6000060 0/6000060 6927251808674721812 ✗ ✓ ✗ ✗ -``` - -The command also supports output in `yaml` and `json` format. - -### Promote - -The meaning of this command is to `promote` a pod in the cluster to primary, so you -can start with maintenance work or test a switch-over situation in your cluster - -```shell -kubectl cnp promote cluster-example cluster-example-2 -``` - -### Certificates - -Clusters created using the Cloud Native PostgreSQL operator work with a CA to sign -a TLS authentication certificate. - -To get a certificate, you need to provide a name for the secret to store -the credentials, the cluster name, and a user for this certificate - -```shell -kubectl cnp certificate cluster-cert --cnp-cluster cluster-example --cnp-user appuser -``` - -After the secrete it's created, you can get it using `kubectl` - -```shell -kubectl get secret cluster-cert -``` - -And the content of the same in plain text using the following commands: - -```shell -kubectl get secret cluster-cert -o json | jq -r '.data | map(@base64d) | .[]' -``` diff --git a/temp_kubernetes/original/src/container_images.md b/temp_kubernetes/original/src/container_images.md deleted file mode 100644 index 524b69e5a1d..00000000000 --- a/temp_kubernetes/original/src/container_images.md +++ /dev/null @@ -1,53 +0,0 @@ -# Container Image Requirements - -The Cloud Native PostgreSQL operator for Kubernetes is designed to -work with any compatible container image of PostgreSQL that complies -with the following requirements: - -- PostgreSQL 10+ executables that must be in the path: - - `initdb` - - `postgres` - - `pg_ctl` - - `pg_controldata` - - `pg_basebackup` -- Barman Cloud executables that must be in the path: - - `barman-cloud-wal-archive` - - `barman-cloud-wal-restore` - - `barman-cloud-backup` - - `barman-cloud-restore` - - `barman-cloud-backup-list` -- Sensible locale settings - -No entry point and/or command is required in the image definition, as Cloud -Native PostgreSQL overrides it with its instance manager. - -!!! Warning - Application Container Images will be used by Cloud Native PostgreSQL - in a **Primary with multiple/optional Hot Standby Servers Architecture** - only. - -EnterpriseDB provides and supports public container images for Cloud Native -PostgreSQL and publishes them on [Quay.io](https://quay.io/repository/enterprisedb/postgresql). - -## Image tag requirements - -While the image name can be anything valid for Docker, the Cloud Native -PostgreSQL operator relies on the *image tag* to detect the Postgres major -version carried out by the image. - -The image tag must start with a valid PostgreSQL major version number (e.g. 9.6 -or 12) optionally followed by a dot and the patch level. - -The prefix can be followed by any valid character combination that is valid and -accepted in a Docker tag, preceded by a dot, an underscore, or a minus sign. - -Examples of accepted image tags: - -- `9.6.19-alpine` -- `12.4` -- `11_1` -- `13` -- `12.3.2.1-1` - -!!! Warning - `latest` is not considered a valid tag for the image. diff --git a/temp_kubernetes/original/src/credits.md b/temp_kubernetes/original/src/credits.md deleted file mode 100644 index 03b571bc312..00000000000 --- a/temp_kubernetes/original/src/credits.md +++ /dev/null @@ -1,19 +0,0 @@ -# Credits - -Cloud Native PostgreSQL (Operator for Kubernetes/OpenShift) has been designed, -developed, and tested by the EnterpriseDB Cloud Native team: - -- Gabriele Bartolini -- Jonathan Battiato -- Francesco Canovai -- Leonardo Cecchi -- Valerio Del Sarto -- Niccolò Fei -- Jonathan Gonzalez -- Danish Khan -- Anand Nednur -- Marco Nenciarini -- Gabriele Quaresima -- Jitendra Wadle -- Adam Wright - diff --git a/temp_kubernetes/original/src/e2e.md b/temp_kubernetes/original/src/e2e.md deleted file mode 100644 index 4627c9b5166..00000000000 --- a/temp_kubernetes/original/src/e2e.md +++ /dev/null @@ -1,52 +0,0 @@ -# End-to-End Tests - -Cloud Native PostgreSQL operator is automatically tested after each -commit via a suite of **End-to-end (E2E) tests**. It ensures that -the operator correctly deploys and manages the PostgreSQL clusters. - -Moreover, the following Kubernetes versions are tested for each commit, -ensuring failure and bugs detection at an early stage of the development -process: - -* 1.20 -* 1.19 -* 1.18 -* 1.17 -* 1.16 - -The following PostgreSQL versions are tested: - -* PostgreSQL 13 -* PostgreSQL 12 -* PostgreSQL 11 -* PostgreSQL 10 - -For each tested version of Kubernetes and PostgreSQL, a Kubernetes -cluster is created using [kind](https://kind.sigs.k8s.io/), -and the following suite of E2E tests are performed on that cluster: - -* Installation of the operator; -* Creation of a `Cluster`; -* Usage of a persistent volume for data storage; -* Connection via services, including read-only; -* Scale-up of a `Cluster`; -* Scale-down of a `Cluster`; -* Failover; -* Switchover; -* Manage PostgreSQL configuration changes; -* Rolling updates when changing PostgreSQL images; -* Backup and ScheduledBackups execution; -* Synchronous replication; -* Restore from backup; -* Pod affinity using `NodeSelector`; -* Metrics collection; -* Primary endpoint switch in case of failover in less than 10 seconds; -* Primary endpoint switch in case of switchover in less than 20 seconds; -* Recover from a degraded state in less than 60 seconds. - -The E2E tests suite is also run for OpenShift 4.6 and the latest Kubernetes -and PostgreSQL releases on clusters created on the following services: - -* Google GKE -* Amazon EKS -* Microsoft Azure AKS diff --git a/temp_kubernetes/original/src/evaluation.md b/temp_kubernetes/original/src/evaluation.md deleted file mode 100644 index e6fa9e8bf33..00000000000 --- a/temp_kubernetes/original/src/evaluation.md +++ /dev/null @@ -1,37 +0,0 @@ -# Free evaluation - -Cloud Native PostgreSQL is available for a free evaluation. -The process is different between Vanilla/Community PostgreSQL -and EDB Postgres Advanced. - -Please refer to the ["License and License keys" section](license_keys.md) -for terms and more details. - -## Evaluating PostgreSQL - -By default, Cloud Native PostgreSQL installs the latest available -version of Community PostgreSQL. The operator will automatically -generate an implicit trial license for the cluster that lasts for -30 days. - -This license is ideal for evaluation, proof of concept, integration with CI/CD pipelines, and so on. - -PostgreSQL container images are available at -[quay.io/enterprisedb/postgresql](https://quay.io/repository/enterprisedb/postgresql). - -## Evaluating EDB Postgres Advanced - -You can use Cloud Native PostgreSQL with EDB Postgres Advanced -too. You need to request a trial license key from the -[EnterpriseDB website](https://cloud-native.enterprisedb.com). - -EDB Postgres Advanced container images are available at -[quay.io/enterprisedb/edb-postgres-advanced](https://quay.io/repository/enterprisedb/edb-postgres-advanced). - -Once you have received the license key, you can use EDB Postgres Advanced -by setting in the `spec` section of the `Cluster` deployment configuration file: - -- `imageName` to point to the `quay.io/enterprisedb/edb-postgres-advanced` repository -- `licenseKey` to your license key (in the form of a string) - -Please refer to the full example in the [configuration samples](samples.md) section. diff --git a/temp_kubernetes/original/src/expose_pg_services.md b/temp_kubernetes/original/src/expose_pg_services.md deleted file mode 100644 index 73ec47ece31..00000000000 --- a/temp_kubernetes/original/src/expose_pg_services.md +++ /dev/null @@ -1,143 +0,0 @@ -# Exposing Postgres Services - -This section explains how to expose a PostgreSQL service externally, allowing access -to your PostgreSQL database **from outside your Kubernetes cluster** using -NGINX Ingress Controller. - -If you followed the [QuickStart](./quickstart.md), you should have by now -a database that can be accessed inside the cluster via the -`cluster-example-rw` (primary) and `cluster-example-r` (read-only) -services in the `default` namespace. Both services use port `5432`. - -Let's assume that you want to make the primary instance accessible from external -accesses on port `5432`. A typical use case, when moving to a Kubernetes -infrastructure, is indeed the one represented by **legacy applications** -that cannot be easily or sustainably "containerized". A sensible workaround -is to allow those applications that most likely reside in a virtual machine -or a physical server, to access a PostgreSQL database inside a Kubernetes cluster -in the same network. - -!!! Warning - Allowing access to a database from the public network could expose - your database to potential attacks from malicious users. Ensure you - secure your database before granting external access or that your - Kubernetes cluster is only reachable from a private network. - -For this example, you will use [NGINX Ingress Controller](https://kubernetes.github.io/ingress-nginx/), -since it is maintained directly by the Kubernetes project and can be set up -on every Kubernetes cluster. Many other controllers are available (see the -[Kubernetes documentation](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/) -for a comprehensive list). - -We assume that: - -* the NGINX Ingress controller has been deployed and works correctly -* it is possible to create a service of type `LoadBalancer` in your cluster - - -!!! Important - Ingresses are only required to expose HTTP and HTTPS traffic. While the NGINX - Ingress controller can, not all Ingress objects can expose arbitrary ports or - protocols. - -The first step is to create a `tcp-services` `ConfigMap` whose data field -contains info on the externally exposed port and the namespace, service and -port to point to internally. - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: tcp-services - namespace: ingress-nginx -data: - 5432: default/cluster-example-rw:5432 -``` - -Then, if you've installed NGINX Ingress Controller as suggested in their -documentation, you should have an `ingress-nginx` service. You'll have to add -the 5432 port to the `ingress-nginx` service to expose it. -The ingress will redirect incoming connections on port 5432 to your database. - -```yaml -apiVersion: v1 -kind: Service -metadata: - name: ingress-nginx - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx -spec: - type: LoadBalancer - ports: - - name: http - port: 80 - targetPort: 80 - protocol: TCP - - name: https - port: 443 - targetPort: 443 - protocol: TCP - - name: postgres - port: 5432 - targetPort: 5432 - protocol: TCP - selector: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx -``` - -You can use [`cluster-expose-service.yaml`](samples/cluster-expose-service.yaml) and apply it -using `kubectl`. - -!!! Warning - If you apply this file directly, you will overwrite any previous change - in your `ConfigMap` and `Service` of the Ingress - -Now you will be able to reach the PostgreSQL Cluster from outside your Kubernetes cluster. - -!!! Important - Make sure you configure `pg_hba` to allow connections from the Ingress. - -## Testing on Minikube - -On Minikube you can setup the ingress controller running: - -```sh -minikube addons enable ingress -``` - -Then, patch the `tcp-service` ConfigMap to redirect to the primary the -connections on port 5432 of the Ingress: - -```sh -kubectl patch configmap tcp-services -n kube-system \ - --patch '{"data":{"5432":"default/cluster-example-rw:5432"}}' -``` - -You can then patch the deployment to allow access on port 5432. -Create a file called `patch.yaml` with the following content: - -```yaml -spec: - template: - spec: - containers: - - name: nginx-ingress-controller - ports: - - containerPort: 5432 - hostPort: 5432 -``` - -and apply it to the `nginx-ingress-controller deployment`: - -```sh -kubectl patch deployment nginx-ingress-controller --patch "$(cat patch.yaml)" -n kube-system -``` - -You can access the primary from your machine running: - -```sh -psql -h $(minikube ip) -p 5432 -U postgres -``` diff --git a/temp_kubernetes/original/src/failure_modes.md b/temp_kubernetes/original/src/failure_modes.md deleted file mode 100644 index a8f2f4e8a6f..00000000000 --- a/temp_kubernetes/original/src/failure_modes.md +++ /dev/null @@ -1,152 +0,0 @@ -# Failure Modes - -This section provides an overview of the major failure scenarios that -PostgreSQL can face on a Kubernetes cluster during its lifetime. - -!!! Important - In case the failure scenario you are experiencing is not covered by this - section, please immediately contact EnterpriseDB for support and assistance. - -## Liveness and readiness probes - -Each pod of a `Cluster` has a `postgres` container with a **liveness** -and a **readiness** -[probe](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes). - -The liveness and readiness probes check if the database is up and able to accept -connections using the superuser credentials. -The two probes will report a failure if the probe command fails 3 times with a -10 seconds interval between each check. - -For now, the operator doesn't configure a `startupProbe` on the Pods, since -startup probes have been introduced only in Kubernetes 1.17. - -The liveness probe is used to detect if the PostgreSQL instance is in a -broken state and needs to be restarted. The value in `startDelay` is used -to delay the probe's execution, which is used to prevent an -instance with a long startup time from being restarted. - -## Storage space usage - -The operator will instantiate one PVC for every PostgreSQL instance to store the `PGDATA` content. - -Such storage space is set for reuse in two cases: - -- when the corresponding Pod is deleted by the user (and a new Pod will be recreated) -- when the corresponding Pod is evicted and scheduled on another node - -If you want to prevent the operator from reusing a certain PVC you need to -remove the PVC before deleting the Pod. For this purpose, you can use the -following command: - -```sh -kubectl delete -n [namespace] pvc/[cluster-name]-[serial] --wait=false -kubectl delete -n [namespace] pod/[cluster-name]-[serial] -``` - -For example: - -```sh -$ kubectl delete -n default pvc/cluster-example-1 --wait=false -persistentvolumeclaim "cluster-example-1" deleted - -$ kubectl delete -n default pod/cluster-example-1 -pod "cluster-example-1" deleted -``` - -## Failure modes - -A pod belonging to a `Cluster` can fail in the following ways: - -* the pod is explicitly deleted by the user; -* the readiness probe on its `postgres` container fails; -* the liveness probe on its `postgres` container fails; -* the Kubernetes worker node is drained; -* the Kubernetes worker node where the pod is scheduled fails. - -Each one of these failures has different effects on the `Cluster` and the -services managed by the operator. - -### Pod deleted by the user - -The operator is notified of the deletion. A new pod belonging to the -`Cluster` will be automatically created reusing the existing PVC, if available, -or starting from a physical backup of the *primary* otherwise. - -!!! Important - In case of deliberate deletion of a pod, `PodDisruptionBudget` policies - will not be enforced. - -Self-healing will happen as soon as the *apiserver* is notified. - -### Readiness probe failure - -After 3 failures, the pod will be considered *not ready*. The pod will still -be part of the `Cluster`, no new pod will be created. - -If the cause of the failure can't be fixed, it is possible to delete the pod -manually. Otherwise, the pod will resume the previous role when the failure -is solved. - -Self-healing will happen after three failures of the probe. - -### Liveness probe failure - -After 3 failures, the `postgres` container will be considered failed. The -pod will still be part of the `Cluster`, and the *kubelet* will try to restart -the container. If the cause of the failure can't be fixed, it is possible -to delete the pod manually. - -Self-healing will happen after three failures of the probe. - -### Worker node drained - -The pod will be evicted from the worker node and removed from the service. A -new pod will be created on a different worker node from a physical backup of the -*primary* if the `reusePVC` option of the `nodeMaintenanceWindow` parameter -is set to `off` (default: `on` during maintenance windows, `off` otherwise). - -The `PodDisruptionBudget` may prevent the pod from being evicted if there -is at least one node that is not ready. - -Self-healing will happen as soon as the *apiserver* is notified. - -### Worker node failure - -Since the node is failed, the *kubelet* won't execute the liveness and -the readiness probes. The pod will be marked for deletion after the -toleration seconds configured by the Kubernetes cluster administrator for -that specific failure cause. Based on how the Kubernetes cluster is configured, -the pod might be removed from the service earlier. - -A new pod will be created on a different worker node from a physical backup -of the *primary*. The default value for that parameter in a Kubernetes -cluster is 5 minutes. - -Self-healing will happen after `tolerationSeconds`. - -## Self-healing - -If the failed pod is a standby, the pod is removed from the `-r` service -and from the `-ro` service. -The pod is then restarted using its PVC if available; otherwise, a new -pod will be created from a backup of the current primary. The pod -will be added again to the `-r` service and to the `-ro` service when ready. - -If the failed pod is the primary, the operator will promote the active pod -with status ready and the lowest replication lag, then point the `-rw`service -to it. The failed pod will be removed from the `-r` service and from the -`-ro` service. -Other standbys will start replicating from the new primary. The former -primary will use `pg_rewind` to synchronize itself with the new one if its -PVC is available; otherwise, a new standby will be created from a backup of the -current primary. - -## Manual intervention - -In the case of undocumented failure, it might be necessary to intervene -to solve the problem manually. - -!!! Important - In such cases, please do not perform any manual operation without the - support and assistance of EnterpriseDB engineering team. diff --git a/temp_kubernetes/original/src/images/apps-in-k8s.png b/temp_kubernetes/original/src/images/apps-in-k8s.png deleted file mode 100644 index 7caff576b5e..00000000000 Binary files a/temp_kubernetes/original/src/images/apps-in-k8s.png and /dev/null differ diff --git a/temp_kubernetes/original/src/images/apps-outside-k8s.png b/temp_kubernetes/original/src/images/apps-outside-k8s.png deleted file mode 100644 index af7051bd473..00000000000 Binary files a/temp_kubernetes/original/src/images/apps-outside-k8s.png and /dev/null differ diff --git a/temp_kubernetes/original/src/images/architecture-in-k8s.png b/temp_kubernetes/original/src/images/architecture-in-k8s.png deleted file mode 100644 index fe256373d25..00000000000 Binary files a/temp_kubernetes/original/src/images/architecture-in-k8s.png and /dev/null differ diff --git a/temp_kubernetes/original/src/images/architecture-r.png b/temp_kubernetes/original/src/images/architecture-r.png deleted file mode 100644 index 533de16a6f0..00000000000 Binary files a/temp_kubernetes/original/src/images/architecture-r.png and /dev/null differ diff --git a/temp_kubernetes/original/src/images/architecture-read-only.png b/temp_kubernetes/original/src/images/architecture-read-only.png deleted file mode 100644 index 85a11f18568..00000000000 Binary files a/temp_kubernetes/original/src/images/architecture-read-only.png and /dev/null differ diff --git a/temp_kubernetes/original/src/images/architecture-rw.png b/temp_kubernetes/original/src/images/architecture-rw.png deleted file mode 100644 index c4d95b9826a..00000000000 Binary files a/temp_kubernetes/original/src/images/architecture-rw.png and /dev/null differ diff --git a/temp_kubernetes/original/src/images/network-storage-architecture.png b/temp_kubernetes/original/src/images/network-storage-architecture.png deleted file mode 100644 index 6acbb881ab9..00000000000 Binary files a/temp_kubernetes/original/src/images/network-storage-architecture.png and /dev/null differ diff --git a/temp_kubernetes/original/src/images/operator-capability-level.png b/temp_kubernetes/original/src/images/operator-capability-level.png deleted file mode 100644 index 45e6439c632..00000000000 Binary files a/temp_kubernetes/original/src/images/operator-capability-level.png and /dev/null differ diff --git a/temp_kubernetes/original/src/images/public-cloud-architecture-storage-replication.png b/temp_kubernetes/original/src/images/public-cloud-architecture-storage-replication.png deleted file mode 100644 index f71025ef9a6..00000000000 Binary files a/temp_kubernetes/original/src/images/public-cloud-architecture-storage-replication.png and /dev/null differ diff --git a/temp_kubernetes/original/src/images/public-cloud-architecture.png b/temp_kubernetes/original/src/images/public-cloud-architecture.png deleted file mode 100644 index 06d20eb0721..00000000000 Binary files a/temp_kubernetes/original/src/images/public-cloud-architecture.png and /dev/null differ diff --git a/temp_kubernetes/original/src/images/shared-nothing-architecture.png b/temp_kubernetes/original/src/images/shared-nothing-architecture.png deleted file mode 100644 index 1cde6413492..00000000000 Binary files a/temp_kubernetes/original/src/images/shared-nothing-architecture.png and /dev/null differ diff --git a/temp_kubernetes/original/src/index.md b/temp_kubernetes/original/src/index.md deleted file mode 100644 index 0ac8212eeb7..00000000000 --- a/temp_kubernetes/original/src/index.md +++ /dev/null @@ -1,79 +0,0 @@ -# Cloud Native PostgreSQL - -**Cloud Native PostgreSQL** is an [operator](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) -designed by [EnterpriseDB](https://www.enterprisedb.com) -to manage [PostgreSQL](https://www.postgresql.org/) workloads on any supported [Kubernetes](https://kubernetes.io) -cluster running in private, public, or hybrid cloud environments. -Cloud Native PostgreSQL adheres to DevOps principles and concepts -such as declarative configuration and immutable infrastructure. - -It defines a new Kubernetes resource called "Cluster" representing a PostgreSQL -cluster made up of a single primary and an optional number of replicas that co-exist -in a chosen Kubernetes namespace for High Availability and offloading of -read-only queries. - -Applications that reside in the same Kubernetes cluster can access the -PostgreSQL database using a service which is solely managed by the operator, -without having to worry about changes of the primary role following a failover -or a switchover. Applications that reside outside the Kubernetes cluster, need -to configure an Ingress object to expose the service via TCP. - -Cloud Native PostgreSQL works with PostgreSQL and [EDB Postgres Advanced](https://www.enterprisedb.com/products/edb-postgres-advanced-server-secure-ha-oracle-compatible) -and is available under the [EnterpriseDB Limited Use License](https://www.enterprisedb.com/limited-use-license). - -You can [evaluate Cloud Native PostgreSQL for free](evaluation.md). -You need a valid license key to use Cloud Native PostgreSQL in production. - -!!! IMPORTANT - Currently, based on the [Operator Capability Levels model](operator_capability_levels.md), - users can expect a **"Level III - Full Lifecycle"** set of capabilities from the - Cloud Native PostgreSQL Operator. - -## Requirements - -Cloud Native PostgreSQL requires Kubernetes 1.16 or higher, tested on AWS, Google, Azure (with multiple availability zones). - -Cloud Native PostgreSQL has also been certified for -[RedHat OpenShift Container Platform (OCP)](https://www.openshift.com/products/container-platform) -4.5+ and is available directly from the [RedHat Catalog](https://catalog.redhat.com/). -OpenShift Container Platform is an open-source distribution of Kubernetes which is -[maintained and commercially supported](https://access.redhat.com/support/policy/updates/openshift#ocp4) -by Red Hat. - -## Supported PostgreSQL versions - -PostgreSQL and EDB Postgres Advanced 13, 12, 11 and 10 are currently supported. - -## Main features - -* Direct integration with Kubernetes API server for High Availability, - without requiring an external tool -* Self-Healing capability, through: - * failover of the primary instance by promoting the most aligned replica - * automated recreation of a replica -* Planned switchover of the primary instance by promoting a selected replica -* Scale up/down capabilities -* Definition of an arbitrary number of instances (minimum 1 - one primary server) -* Definition of the *read-write* service, to connect your applications to the only primary server of the cluster -* Definition of the *read-only* service, to connect your applications to any of the instances for reading workloads -* Support for Local Persistent Volumes with PVC templates -* Reuse of Persistent Volumes storage in Pods -* Rolling updates for PostgreSQL minor versions and operator upgrades -* TLS connections and client certificate authentication -* Continuous backup to an S3 compatible object store -* Full recovery and Point-In-Time recovery from an S3 compatible object store backup -* Support for Synchronous Replicas -* Support for node affinity via `nodeSelector` -* Standard output logging of PostgreSQL error messages - -## About this guide - -Follow the instructions in the ["Quickstart"](quickstart.md) to test Cloud Native PostgreSQL -on a local Kubernetes cluster using Minikube or Kind. - -In case you are not familiar with some basic terminology on Kubernetes and PostgreSQL, -please consult the ["Before you start" section](before_you_start.md). - -!!! Note - Although the guide primarily addresses Kubernetes, all concepts can - be extended to OpenShift as well. diff --git a/temp_kubernetes/original/src/installation.md b/temp_kubernetes/original/src/installation.md deleted file mode 100644 index ddfa49b1e4c..00000000000 --- a/temp_kubernetes/original/src/installation.md +++ /dev/null @@ -1,90 +0,0 @@ -# Installation - -## Installation on Kubernetes - -### Directly using the operator manifest - -The operator can be installed like any other resource in Kubernetes, -through a YAML manifest applied via `kubectl`. - -You can install the [latest operator manifest](https://get.enterprisedb.io/cnp/postgresql-operator-1.2.0.yaml) -as follows: - -```sh -kubectl apply -f \ - https://get.enterprisedb.io/cnp/postgresql-operator-1.2.0.yaml -``` - -Once you have run the `kubectl` command, Cloud Native PostgreSQL will be installed in your Kubernetes cluster. - -You can verify that with: - -```sh -kubectl get deploy -n postgresql-operator-system postgresql-operator-controller-manager -``` - -### Using the Operator Lifecycle Manager (OLM) - -OperatorHub is a community-sourced index of operators available via the -[Operator Lifecycle Manager](https://github.com/operator-framework/operator-lifecycle-manager), -which is a package managing system for operators. - -You can install Cloud Native PostgreSQL using the metadata available in the -[Cloud Native PostgreSQL page](https://operatorhub.io/operator/cloud-native-postgresql) -from the [OperatorHub.io website](https://operatorhub.io), following the installation steps listed on that page. - -## Installation on Openshift - -### Via the web interface - -Log in to the console as `kubeadmin` and navigate to the `Operator → OperatorHub` page. - -Find the `Cloud Native PostgreSQL` box scrolling or using the search filter. - -Select the operator and click `Install`. Click `Install` again in the following -`Install Operator`, using the default settings. For an in-depth explanation of -those settings, see the [Openshift documentation](https://docs.openshift.com/container-platform/4.6/operators/admin/olm-adding-operators-to-cluster.html#olm-installing-from-operatorhub-using-web-console_olm-adding-operators-to-a-cluster). - -The operator will soon be available in all the namespaces. - -Depending on the security levels applied to the OpenShift cluster you may be -required to create a proper set of roles and permissions for the operator to -be used in different namespaces. -For more information on this matter see the -[Openshift documentation](https://docs.openshift.com/container-platform/4.6/operators/understanding/olm/olm-understanding-operatorgroups.html). - -### Via the `oc` command line - -You can add the [`subscription`](samples/subscription.yaml) to install the operator in all the namespaces -as follows: - -```sh -oc apply -f \ - https://docs.enterprisedb.io/cloud-native-postgresql/latest/samples/subscription.yaml -``` - -The operator will soon be available in all the namespaces. - -More information on -[how to install operators via CLI](https://docs.openshift.com/container-platform/4.6/operators/admin/olm-adding-operators-to-cluster.html#olm-installing-operator-from-operatorhub-using-cli_olm-adding-operators-to-a-cluster) -is available in the Openshift documentation. - -## Details about the deployment - -In Kubernetes, the operator is by default installed in the `postgresql-operator-system` namespace as a Kubernetes -`Deployment` called `postgresql-operator-controller-manager`. You can get more information by running: - -```sh -kubectl describe deploy -n postgresql-operator-system postgresql-operator-controller-manager -``` - -As any deployment, it sits on top of a replica set and supports rolling upgrades. -By default, we currently support only 1 replica. In future versions we plan to -support multiple replicas and leader election, as well as taints and tolerations -so to enable deployment on the Kubernetes control plane. - -In case the node where the pod is running is not reachable anymore, -the pod will be rescheduled on another node. - -As far as OpenShift is concerned, details might differ depending on the -selected installation method. diff --git a/temp_kubernetes/original/src/kubernetes_upgrade.md b/temp_kubernetes/original/src/kubernetes_upgrade.md deleted file mode 100644 index 1c8ebe67e86..00000000000 --- a/temp_kubernetes/original/src/kubernetes_upgrade.md +++ /dev/null @@ -1,86 +0,0 @@ -# Kubernetes Upgrade - -Kubernetes clusters must be kept updated. This becomes even more -important if you are self-managing your Kubernetes clusters, especially -on **bare metal**. - -Planning and executing regular updates is a way for your organization -to clean up the technical debt and reduce the business risks, despite -the introduction in your Kubernetes infrastructure of controlled -downtimes that temporarily take out a node from the cluster for -maintenance reasons (recommended reading: -["Embracing Risk"](https://landing.google.com/sre/sre-book/chapters/embracing-risk/) -from the Site Reliability Engineering book). - -For example, you might need to apply security updates on the Linux -servers where Kubernetes is installed, or to replace a malfunctioning -hardware component such as RAM, CPU, or RAID controller, or even upgrade -the cluster to the latest version of Kubernetes. - -Usually, maintenance operations in a cluster are performed one node -at a time by: - -1. evicting the workloads from the node to be updated (`drain`) -2. performing the actual operation (for example, system update) -3. re-joining the node to the cluster (`uncordon`) - -The above process requires workloads to be either stopped for the -entire duration of the upgrade or migrated on another node. - -While the latest case is the expected one in terms of service -reliability and self-healing capabilities of Kubernetes, there can -be situations where it is advised to operate with a temporarily -degraded cluster and wait for the upgraded node to be up again. - -In particular, if your PostgreSQL cluster relies on **node-local storage** -\- that is *storage which is local to the Kubernetes worker node where -the PostgreSQL database is running*. -Node-local storage (or simply *local storage*) is used to enhance performance. - -!!! Note - If your database files are on shared storage over the network, - you may not need to define a maintenance window. If the volumes currently - used by the pods can be reused by pods running on different nodes after - the drain, the default self-healing behavior of the operator will work - fine (you can then skip the rest of this section). - -When using local storage for PostgreSQL, you are advised to temporarily -put the cluster in **maintenance mode** through the `nodeMaintenanceWindow` -option to avoid standard self-healing procedures to kick in, -while, for example, enlarging the partition on the physical node or -updating the node itself. - -!!! Warning - Limit the duration of the maintenance window to the shortest - amount of time possible. In this phase, some of the expected - behaviors of Kubernetes are either disabled or running with - some limitations, including self-healing, rolling updates, - and Pod disruption budget. - -The `nodeMaintenanceWindow` option of the cluster has two further -settings: - -`inProgress`: -Boolean value that states if the maintenance window for the nodes -is currently in progress or not. By default, it is set to `off`. -During the maintenance window, the `reusePVC` option below is -evaluated by the operator. - -`reusePVC`: -Boolean value that defines if an existing PVC is reused or -not during the maintenance operation. By default, it is set to `on`. -When **enabled**, Kubernetes waits for the node to come up -again and then reuses the existing PVC; the `PodDisruptionBudget` -policy is temporarily removed. -When **disabled**, Kubernetes forces the recreation of the -Pod on a different node with a new PVC by relying on -PostgreSQL's physical streaming replication, then destroys -the old PVC together with the Pod. This scenario is generally -not recommended unless the database's size is small, and re-cloning -the new PostgreSQL instance takes shorter than waiting. - -!!! Note - When performing the `kubectl drain` command, you will need - to add the `--delete-local-data` option. - Don't be afraid: it refers to another volume internally used - by the operator - not the PostgreSQL data directory. diff --git a/temp_kubernetes/original/src/license_keys.md b/temp_kubernetes/original/src/license_keys.md deleted file mode 100644 index a495ea65d38..00000000000 --- a/temp_kubernetes/original/src/license_keys.md +++ /dev/null @@ -1,85 +0,0 @@ -# License and License Keys - -A license key is always required for the operator to work. - -The only exception is when you run the operator with Community PostgreSQL: -in this case, if the license key is unset, a cluster will be started with the default -trial license - which automatically expires after 30 days. - -!!! Important - After the license expiration, the operator will cease any reconciliation attempt - on the cluster, effectively stopping to manage its status. - The pods and the data will still be available. - -## Company level license keys - -A license key allows you to create an unlimited number of PostgreSQL -clusters in your installation. - -The license key needs to be available in a `ConfigMap` in the same -namespace where the operator is deployed. - -In Kubernetes the operator is deployed by default in -the `postgresql-operator-system` namespace. -When instead OLM is used (i.e. on OpenShift), the operator is installed -by default in the `openshift-operators` namespace. - -Given the namespace name, and the license key, you can create -the config map with the following command: - -``` -kubectl create configmap -n [NAMESPACE_NAME_HERE] \ - postgresql-operator-controller-manager-config \ - --from-literal=EDB_LICENSE_KEY=[LICENSE_KEY_HERE] -``` - -The following command can be used to reload the config map: - -``` -kubectl rollout restart deployment -n [NAMESPACE_NAME_HERE] \ - postgresql-operator-controller-manager -``` - -The validity of the license key can be checked inside the cluster status. - -```sh -kubectl get cluster cluster_example -o yaml -[...] -status: - [...] - licenseStatus: - licenseExpiration: "2021-11-06T09:36:02Z" - licenseStatus: Trial - valid: true - isImplicit: false - isTrial: true -[...] -``` - -## Cluster level license keys - -Each `Cluster` resource has a `licenseKey` parameter in its definition. -You can find the expiration date, as well as more information about the license, -in the cluster status: - -```sh -kubectl get cluster cluster_example -o yaml -[...] -status: - [...] - licenseStatus: - licenseExpiration: "2021-11-06T09:36:02Z" - licenseStatus: Trial - valid: true - isImplicit: false - isTrial: true -[...] -``` - -A cluster license key can be updated with a new one at any moment, to extend -the expiration date or move the cluster to a production license. - -Cloud Native PostgreSQL is distributed under the EnterpriseDB Limited Usage License -Agreement, available at [enterprisedb.com/limited-use-license](https://www.enterprisedb.com/limited-use-license). - -Cloud Native PostgreSQL: Copyright (C) 2019-2021 EnterpriseDB. diff --git a/temp_kubernetes/original/src/monitoring.md b/temp_kubernetes/original/src/monitoring.md deleted file mode 100644 index 357ec6f961d..00000000000 --- a/temp_kubernetes/original/src/monitoring.md +++ /dev/null @@ -1,91 +0,0 @@ -# Monitoring - -For each PostgreSQL instance, the operator provides an exporter of metrics for -[Prometheus](https://prometheus.io/) via HTTP, on port 8000. -The operator comes with a predefined set of metrics, as well as a highly -configurable and customizable system to define additional queries via one or -more `ConfigMap` objects - and, future versions, `Secret` too. - -The exporter can be accessed as follows: - -```shell -curl http://:8000/metrics -``` - -All monitoring queries are: - -- transactionally atomic (one transaction per query) -- executed with the `pg_monitor` role - -Please refer to the -["Default roles" section in PostgreSQL documentation](https://www.postgresql.org/docs/current/default-roles.html) -for details on the `pg_monitor` role. - -## User defined metrics - -Users will be able to define metrics through the available interface -that the operator provides. This interface is currently in *beta* state and -only supports definition of custom queries as `ConfigMap` and `Secret` objects -using a YAML file that is inspired by the [queries.yaml file](https://github.com/prometheus-community/postgres_exporter/blob/main/queries.yaml) -of the PostgreSQL Prometheus Exporter. - -Queries must be defined in a `ConfigMap` to be referenced in the `monitoring` -section of the `Cluster` definition, as in the following example: - -```yaml -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - instances: 3 - - storage: - size: 1Gi - - monitoring: - customQueriesConfigMap: - - name: example-monitoring - key: custom-queries -``` - -Specifically, the `monitoring` section looks for an array with the name -`customQueriesConfigMap`, which, as the name suggests, needs a list of -`ConfigMap` key references to be used as the source of custom queries. - -For example: - -```yaml ---- -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: default - name: example-monitoring -data: - custom-queries: | - pg_replication: - query: "SELECT CASE WHEN NOT pg_is_in_recovery() - THEN 0 - ELSE GREATEST (0, - EXTRACT(EPOCH FROM (now() - pg_last_xact_replay_timestamp()))) - END AS lag" - primary: true - metrics: - - lag: - usage: "GAUGE" - description: "Replication lag behind primary in seconds" -``` - -The object must have a name and be in the same namespace as the `Cluster`. -Note that the above query will be executed on the `primary` node, with the -following output. - -```text -# HELP custom_pg_replication_lag Replication lag behind primary in seconds -# TYPE custom_pg_replication_lag gauge -custom_pg_replication_lag 0 -``` - -This framework enables the definition of custom metrics to monitor the database -or the application inside the PostgreSQL cluster. diff --git a/temp_kubernetes/original/src/operator_capability_levels.md b/temp_kubernetes/original/src/operator_capability_levels.md deleted file mode 100644 index 04007a8092d..00000000000 --- a/temp_kubernetes/original/src/operator_capability_levels.md +++ /dev/null @@ -1,396 +0,0 @@ -# Operator Capability Levels - -This section provides a summary of the capabilities implemented by Cloud Native PostgreSQL, -classified using the -["Operator SDK definition of Capability Levels"](https://sdk.operatorframework.io/docs/advanced-topics/operator-capabilities/operator-capabilities/) -framework. - -![Operator Capability Levels](./images/operator-capability-level.png) - -Each capability level is associated with a certain set of management features the operator offers: - -1. Basic Install -2. Seamless Upgrades -3. Full Lifecycle -4. Deep Insights -5. Auto Pilot - -!!! Note - We consider this framework as a guide for future work and implementations in the operator. - -## Level 1 - Basic Install - -Capability level 1 involves **installation** and **configuration** of the -operator. This category includes usability and user experience -enhancements, such as improvements in how users interact with the -operator and a PostgreSQL cluster configuration. - -!!! Important - We consider **Information Security** part of this level. - -### Operator deployment via declarative configuration - -The operator is installed in a declarative way using a Kubernetes manifest -which defines 3 `CustomResourceDefinition` objects: `Cluster`, `Backup`, -`ScheduledBackup`. - -### PostgreSQL cluster deployment via declarative configuration - -A PostgreSQL cluster (operand) is defined using the `Cluster` custom resource -in a fully declarative way. The PostgreSQL version is determined by the -operand container image defined in the CR, which is automatically fetched -from the requested registry. When deploying an operand, the operator also -automatically creates the following resources: `Pod`, `Service`, `Secret`, -`ConfigMap`,`PersistentVolumeClaim`, `PodDisruptionBudget`, `ServiceAccount`, -`RoleBinding`, `Role`. - -### Override of operand images through the CRD - -The operator is designed to support any operand container image with -PostgreSQL inside. -By default, the operator uses the latest available minor -version of the latest stable major version supported by the PostgreSQL -Community and published on Quay.io by EnterpriseDB. -You can use any compatible image of PostgreSQL supporting the -primary/standby architecture directly by setting the `imageName` -attribute in the CR. The operator also supports `imagePullSecretsNames` -to access private container registries. - -### Self-contained instance manager - -Instead of relying on an external tool such as Patroni or Stolon to -coordinate PostgreSQL instances in the Kubernetes cluster pods, the operator -injects the operator executable inside each pod, in a file named -`/controller/manager`. The application is used to control the underlying -PostgreSQL instance and to reconcile the pod status with the instance itself -based on the PostgreSQL cluster topology. The instance manager also starts a -web server that is invoked by the `kubelet` for probes. Unix signals invoked -by the `kubelet` are filtered by the instance manager and, where appropriate, -forwarded to the `postgres` process for fast and controlled reactions to -external events. The instance manager is written in Go and has no external -dependencies. - -### Storage configuration - -Storage is a critical component in a database workload. Taking advantage of -Kubernetes native capabilities and resources in terms of storage, the -operator gives users enough flexibility to choose the right storage for their -workload requirements, based on what the underlying Kubernetes environment -can offer. This implies choosing a particular storage class in -a public cloud environment or fine-tuning the generated PVC through a -PVC template in the CR's `storage` parameter. - -### Replica configuration - -The operator automatically detects replicas in a cluster -through a single parameter called `instances`. If set to `1`, the cluster -comprises a single primary PostgreSQL instance with no replica. If higher -than `1`, the operator manages `instances -1` replicas, including high -availability through automated failover and rolling updates through -switchover operations. - -### Database configuration - -The operator is designed to manage a PostgreSQL cluster with a single -database. The operator transparently manages access to the database through -two Kubernetes services automatically provisioned and managed for read-write -and read-only workloads. -Using the convention over configuration approach, the operator creates a -database called `app`, by default owned by a regular Postgres user with the -same name. Both the database name and the user name can be specified if -required. -Although no configuration is required to run the cluster, users can customize -both PostgreSQL run-time configuration and PostgreSQL Host-Based -Authentication rules in the `postgresql` section of the CR. - -### Pod Security Policies - -For InfoSec requirements, the operator does not need privileged mode for the -execution of containers and access to volumes both in the operator and in the -operand. - -### License keys - -The operator comes with support for license keys, with the possibility to -programmatically define a default behavior in case of the absence of a key. -Cloud Native PostgreSQL has been programmed to create an implicit 30-day -trial license for every deployed cluster. -License keys are signed strings that the operator can verify using an -asymmetric key technique. The content is a JSON object that includes the -product, the cluster identifiers (namespace and name), the number of -instances, the expiration date, and, if required, the credentials to be used -as a secret by the operator to pull down an image from a protected container -registry. Beyond the expiration date, the operator will stop any -reconciliation process until the license key is restored. - -### Current status of the cluster - -The operator continuously updates the status section of the CR with the -observed status of the cluster. The entire PostgreSQL cluster status is -continuously monitored by the instance manager running in each pod: the -instance manager is responsible for applying the required changes to the -controlled PostgreSQL instance to converge to the required status of -the cluster (for example: if the cluster status reports that pod `-1` is the -primary, pod `-1` needs to promote itself while the other pods need to follow -pod `-1`). The same status is used by Kubernetes client applications to -provide details, including the OpenShift dashboard. - -### Operator's certification authority - -The operator automatically creates a certification authority for itself. -It creates and signs with the operator certification authority a leaf certificate -to be used by the webhook server, to ensure safe communication between the -Kubernetes API Server and the operator itself. - -### Cluster's certification authority - -The operator automatically creates a certification authority for every PostgreSQL -cluster, which is used to issue and renew TLS certificates for the authentication -of streaming replication standby servers and applications (instead of passwords). -The operator will use the Certification Authority to sign every cluster -certification authority. - -### TLS connections - -The operator transparently and natively supports TLS/SSL connections -to encrypt client/server communications for increased security using the -cluster's certification authority. - -### Certificate authentication for streaming replication - -The operator relies on TLS client certificate authentication to authorize streaming -replication connections from the standby servers, instead of relying on a password -(and therefore a secret). - -### Continuous configuration management - -The operator enables users to apply changes to the `Cluster` resource YAML -section of the PostgreSQL configuration and makes sure that all instances -are properly reloaded or restarted, depending on the configuration option. -*Current limitations:* changes with `ALTER SYSTEM` are not detected, meaning -that the cluster state is not enforced; proper restart order is not implemented -with [hot standby sensitive parameters](https://www.postgresql.org/docs/current/hot-standby.html#HOT-STANDBY-ADMIN) -such as `max_connections` and `max_wal_senders`. - -### Multiple installation methods - -The operator can be installed through a Kubernetes manifest via `kubectl -apply`, to be used in a traditional Kubernetes installation in public -and private cloud environments. Additionally, it can be deployed on OpenShift -Container Platform via OperatorHub. - -### Convention over configuration - -The operator supports the convention over configuration paradigm, deciding -standard default values while allowing users to override them and customize -them. You can specify a deployment of a PostgreSQL cluster using -the `Cluster` CRD in a couple of YAML code lines. - -## Level 2 - Seamless Upgrades - -Capability level 2 is about enabling **updates of the operator and the actual -workload**, in our case PostgreSQL servers. This includes **PostgreSQL minor -release updates** (security and bug fixes normally) as well as **major online -upgrades**. - -### Upgrade of the operator - -You can upgrade the operator seamlessly as a new deployment. A change in the -operator does not require a change in the operand - thanks to the instance -manager's injection. The operator can manage older versions of the operand. - -### Upgrade of the managed workload - -The operand can be upgraded using a declarative configuration approach as -part of changing the CR and, in particular, the `imageName` parameter. The -operator prevents major upgrades of PostgreSQL while making it possible to go -in both directions in terms of minor PostgreSQL releases within a major -version (enabling updates and rollbacks). - -In the presence of standby servers, the operator performs rolling updates -starting from the replicas by dropping the existing pod and creating a new -one with the new requested operand image that reuses the underlying storage. -Depending on the value of the `primaryUpdateStrategy`, the operator proceeds -with a switchover before updating the former primary (`unsupervised`) or waits -for the user to manually issue the switchover procedure (`supervised`). -Which setting to use depends on the business requirements as the operation -might generate some downtime for the applications, from a few seconds to -minutes based on the actual database workload. - -### Display cluster availability status during upgrade - -At any time, convey the cluster's high availability status, for example, `OK`, -`Failover in progress`, `Switchover in progress`, `Upgrade in progress`, or -`Upgrade failed`. - -## Level 3 - Full Lifecycle - -Capability level 3 requires the operator to manage aspects of **business -continuity** and **scalability**. -**Disaster recovery** is a business continuity component that requires -that both backup and recovery of a database work correctly. While as a -starting point, the goal is to achieve RPO < 5 minutes, the long term goal is -to implement RPO=0 backup solutions. **High Availability** is the other -important component of business continuity that, through PostgreSQL native -physical replication and hot standby replicas, allows the operator to perform -failover and switchover operations. This area includes enhancements in: - -- control of PostgreSQL physical replication, such as synchronous replication, - (cascading) replication clusters, and so on; -- connection pooling, to improve performance and control through a - connection pooling layer with pgBouncer. - -### PostgreSQL Backups - -The operator has been designed to provide application-level backups using -PostgreSQL’s native continuous backup technology based on -physical base backups and continuous WAL archiving. Specifically, -the operator currently supports only backups on AWS S3 or S3-compatible -object stores and gateways like MinIO. - -WAL archiving and base backups are defined at the cluster level, declaratively, -through the `backup` parameter in the cluster definition, by specifying -an S3 protocol destination URL (for example, to point to a specific folder in -an AWS S3 bucket) and, optionally, a generic endpoint URL. WAL archiving, -a prerequisite for continuous backup, does not require any further -action from the user: the operator will automatically and transparently set -the the `archive_command` to rely on `barman-cloud-wal-archive` to ship WAL -files to the defined endpoint. Users can decide the compression algorithm. - -You can define base backups in two ways: on-demand (through the `Backup` -custom resource definition) or scheduled (through the `ScheduledBackup` -customer resource definition, using a cron-like syntax). They both rely on -`barman-cloud-backup` for the job (distributed as part of the application -container image) to relay backups in the same endpoint, alongside WAL files. - -Both `barman-cloud-wal-restore` and `barman-cloud-backup` are distributed in -the application container image under GNU GPL 3 terms. - -### Full restore from a backup - -The operator enables users to bootstrap a new cluster (with its settings) -starting from an existing and accessible backup taken using -`barman-cloud-backup`. Once the bootstrap process is completed, the operator -initiates the instance in recovery mode and replays all available WAL files -from the specified archive, exiting recovery and starting as a primary. -Subsequently, the operator will clone the requested number of standby instances -from the primary. - -### Point-In-Time Recovery (PITR) from a backup - -The operator enables users to create a new PostgreSQL cluster by recovering -an existing backup to a specific point-in-time, defined with a timestamp, a -label or a transaction ID. This capability is built on top of the full restore -one and supports all the options available in -[PostgreSQL for PITR](https://www.postgresql.org/docs/13/runtime-config-wal.html#RUNTIME-CONFIG-WAL-RECOVERY-TARGET). - -### Zero Data Loss clusters through synchronous replication - -Achieve *Zero Data Loss* (RPO=0) in your local High Availability Cloud Native PostgreSQL -cluster through quorum based synchronous replication support. The operator provides -two configuration options that control the minimum and maximum number of -expected synchronous standby replicas available at any time. The operator will -react accordingly, based on the number of available and ready PostgreSQL -instances in the cluster, through the following formula: - -``` -0 <= minSyncReplicas <= maxSyncReplicas < instances -``` - -### Liveness and readiness probes - -The operator defines liveness and readiness probes for the Postgres -Containers that are then invoked by the kubelet. They are mapped respectively -to the `/healthz` and `/readyz` endpoints of the web server managed -directly by the instance manager. They both use Go to connect to the cluster -and issue a simple query (`;`) to verify that the server is ready to accept -connections. - -### Rolling deployments - -The operator supports rolling deployments to minimize the downtime and, if a -PostgreSQL cluster is exposed publicly, the Service will load-balance the -read-only traffic only to available pods during the initialization or the -update. - -### Scale up and down of replicas - -The operator allows users to scale up and down the number of instances in a -PostgreSQL cluster. New replicas are automatically started up from the -primary server and will participate in the cluster's HA infrastructure. -The CRD declares a "scale" subresource that allows the user to use the -`kubectl scale` command. - -### Maintenance window and PodDisruptionBudget for Kubernetes nodes - -The operator creates a `PodDisruptionBudget` resource to limit the number of -concurrent disruptions to one. This configuration prevents the maintenance -operation from deleting all the pods in a cluster, allowing the specified -number of instances to be created. -The PodDisruptionBudget will be applied during the node draining operation, -preventing any disruption of the cluster service. - -While this strategy is correct for Kubernetes Clusters where -storage is shared among all the worker nodes, it may not be the best solution -for clusters using Local Storage or for clusters installed in a private -cloud. The operator allows users to specify a Maintenance Window and -configure the reaction to any underlying node eviction. The `ReusePVC` option -in the maintenance window section enables to specify the strategy to be used: -allocate new storage in a different PVC for the evicted instance or wait -for the underlying node to be available again. - -### Reuse of Persistent Volumes storage in Pods - -When the operator needs to create a pod that has been deleted by the user or -has been evicted by a Kubernetes maintenance operation, it reuses the -`PersistentVolumeClaim` if available, avoiding the need -to re-clone the data from the primary. - -### CPU and memory requests and limits - -The operator allows administrators to control and manage resource usage by -the cluster's pods, through the `resources` section of the manifest. In -particular `requests` and `limits` values can be set for both CPU and RAM. - -## Level 4 - Deep Insights - -Capability level 4 is about **observability**: in particular, monitoring, -alerting, trending, log processing. This might involve the use of external tools -such as Prometheus, Grafana, Fluent Bit, as well as extensions in the -PostgreSQL engine for the output of error logs directly in JSON format. - -### Prometheus exporter infrastructure - -The instance manager provides a pluggable framework and, via its own -web server, exposes an endpoint to export metrics for the -[Prometheus](https://prometheus.io/) monitoring and alerting tool. -Currently, only basic metrics and the `pg_stat_archiver` system view -for PostgreSQL have been implemented. - -### Kubernetes events - -Record major events as expected by the Kubernetes API, such as creating resources, -removing nodes, upgrading, and so on. Events can be displayed through -the `kubectl describe` and `kubectl get events` command. - -## Level 5 - Auto Pilot - -Capability level 5 is focused on **automated scaling**, **healing** and -**tuning** - through the discovery of anomalies and insights emerged -from the observability layer. - -### Automated Failover for self-healing - -In case of detected failure on the primary, the operator will change the -status of the cluster by setting the most aligned replica as the new target -primary. As a consequence, the instance manager in each alive pod will -initiate the required procedures to align itself with the requested status of -the cluster, by either becoming the new primary or by following it. -In case the former primary comes back up, the same mechanism will avoid a -split-brain by preventing applications from reaching it, running `pg_rewind` on -the server and restarting it as a standby. - -### Automated recreation of a standby - -In case the pod hosting a standby has been removed, the operator initiates -the procedure to recreate a standby server. diff --git a/temp_kubernetes/original/src/postgresql_conf.md b/temp_kubernetes/original/src/postgresql_conf.md deleted file mode 100644 index 2ffe978cdf6..00000000000 --- a/temp_kubernetes/original/src/postgresql_conf.md +++ /dev/null @@ -1,227 +0,0 @@ -# PostgreSQL Configuration - -Users that are familiar with PostgreSQL are aware of the existence of the following two files -to configure an instance: - -- `postgresql.conf`: main run-time configuration file of PostgreSQL -- `pg_hba.conf`: clients authentication file - -Due to the concepts of declarative configuration and immutability of the PostgreSQL -containers, users are not allowed to directly touch those files. Configuration -is possible through the `postgresql` section of the `Cluster` resource definition -by defining custom `postgresql.conf` and `pg_hba.conf` settings via the -`parameters` and the `pg_hba` keys. -A reference for custom settings usage is included in the samples, see -[`cluster-example-custom.yaml`](samples/cluster-example-custom.yaml). - -These settings are the same across all instances. - -!!! Warning - **OpenShift users:** due to a current limitation of the OpenShift user interface, - it is possible to change PostgreSQL settings from the YAML pane only. - -## The `postgresql` section - -The PostgreSQL instance in the pod starts with a default `postgresql.conf` file, -to which these settings are automatically added: - -```text -listen_addresses = '*' -include custom.conf -``` - -The `custom.conf` file will contain the user-defined settings. Refer to the -PostgreSQL documentation for [more information on the available parameters](https://www.postgresql.org/docs/current/runtime-config.html). -The content of `custom.conf` is automatically generated and maintained by the -operator by applying the following sections in this order: - -- Global default parameters -- Default parameters that depend on the PostgreSQL major version -- User-provided parameters -- Fixed parameters - -The **global default parameters** are: - -```text -logging_collector = 'off' -max_parallel_workers = '32' -max_replication_slots = '32' -max_worker_processes = '32' -``` - -The **default parameters for PostgreSQL 13 or higher** are: - -```text -wal_keep_size = '512MB' -``` - -The **default parameters for PostgreSQL 10 to 12** are: - -```text -wal_keep_segments = '32' -``` - -The following parameters are **fixed** and exclusively controlled by the operator: - -```text -archive_command = '/controller/manager wal-archive %p' -archive_mode = 'on' -archive_timeout = '5min' -full_page_writes = 'on' -hot_standby = 'true' -listen_addresses = '*' -port = '5432' -ssl = 'on' -ssl_ca_file = '/tmp/ca.crt' -ssl_cert_file = '/tmp/server.crt' -ssl_key_file = '/tmp/server.key' -unix_socket_directories = '/var/run/postgresql' -wal_level = 'logical' -wal_log_hints = 'on' -``` - -Since the fixed parameters are added last, they can't be overridden by the -user via the YAML configuration. Those parameters are required for correct WAL -archiving and replication. - -### Replication settings - -The `primary_conninfo` and `recovery_target_timeline` parameters are managed -automatically by the operator according to the state of the instance in -the cluster. - -```text -primary_conninfo = 'host=cluster-example-rw user=postgres dbname=postgres' -recovery_target_timeline = 'latest' -``` - -## The `pg_hba` section - -`pg_hba` is a list of PostgreSQL Host Based Authentication rules -used to create the `pg_hba.conf` used by the pods. - -Since the first matching rule is used for authentication, the `pg_hba.conf` file -generated by the operator can be seen as composed of three sections: - -1. Fixed rules -2. User-defined rules -3. Default rules - -Fixed rules: - -```text -local all all peer - -hostssl postgres streaming_replica all cert clientcert=1 -hostssl replication streaming_replica all cert clientcert=1 -``` - -Default rules: - -```text -host all all all md5 -``` - -The resulting `pg_hba.conf` will look like this: - -```text -local all all peer - -hostssl postgres streaming_replica all cert clientcert=1 -hostssl replication streaming_replica all cert clientcert=1 - - - -host all all all md5 -``` - -Refer to the PostgreSQL documentation for [more information on `pg_hba.conf`](https://www.postgresql.org/docs/current/auth-pg-hba-conf.html). - -## Changing configuration - -You can apply configuration changes by editing the `postgresql` section of -the `Cluster` resource. - -After the change, the cluster instances will immediately reload the -configuration to apply the changes. -If the change involves a parameter requiring a restart, the operator will -perform a rolling upgrade. - -## Fixed parameters - -Some PostgreSQL configuration parameters should be managed exclusively by the -operator. The operator prevents the user from setting them using a webhook. - -Users are not allowed to set the following configuration parameters in the -`postgresql` section: - -- `allow_system_table_mods` -- `archive_cleanup_command` -- `archive_command` -- `archive_mode` -- `archive_timeout` -- `bonjour_name` -- `bonjour` -- `cluster_name` -- `config_file` -- `data_directory` -- `data_sync_retry` -- `dynamic_shared_memory_type` -- `event_source` -- `external_pid_file` -- `full_page_writes` -- `hba_file` -- `hot_standby` -- `huge_pages` -- `ident_file` -- `jit_provider` -- `listen_addresses` -- `log_destination` -- `log_directory` -- `log_file_mode` -- `log_filename` -- `log_rotation_age` -- `log_rotation_size` -- `log_truncate_on_rotation` -- `logging_collector` -- `port` -- `primary_conninfo` -- `primary_slot_name` -- `promote_trigger_file` -- `recovery_end_command` -- `recovery_min_apply_delay` -- `recovery_target_action` -- `recovery_target_inclusive` -- `recovery_target_lsn` -- `recovery_target_name` -- `recovery_target_time` -- `recovery_target_timeline` -- `recovery_target_xid` -- `recovery_target` -- `restart_after_crash` -- `restore_command` -- `shared_memory_type` -- `ssl_ca_file` -- `ssl_cert_file` -- `ssl_ciphers` -- `ssl_crl_file` -- `ssl_dh_params_file` -- `ssl_ecdh_curve` -- `ssl_key_file` -- `ssl_max_protocol_version` -- `ssl_min_protocol_version` -- `ssl_passphrase_command_supports_reload` -- `ssl_passphrase_command` -- `ssl_prefer_server_ciphers` -- `ssl` -- `stats_temp_directory` -- `synchronous_standby_names` -- `syslog_facility` -- `syslog_ident` -- `syslog_sequence_numbers` -- `syslog_split_messages` -- `unix_socket_directories` -- `unix_socket_group` -- `unix_socket_permissions` -- `wal_level` -- `wal_log_hints` diff --git a/temp_kubernetes/original/src/quickstart.md b/temp_kubernetes/original/src/quickstart.md deleted file mode 100644 index 0f04eab29f0..00000000000 --- a/temp_kubernetes/original/src/quickstart.md +++ /dev/null @@ -1,171 +0,0 @@ -# Quickstart - -This section describes how to test a PostgreSQL cluster on your laptop/computer -using Cloud Native PostgreSQL on a local Kubernetes cluster in -[Minikube](https://kubernetes.io/docs/setup/learning-environment/minikube/) or -[Kind](https://kind.sigs.k8s.io/). - -RedHat OpenShift Container Platform users can test the certified operator for -Cloud Native PostgreSQL on the [Red Hat CodeReady Containers (CRC)](https://developers.redhat.com/products/codeready-containers/overview) -for OpenShift. - -!!! Warning - The instructions contained in this section are for demonstration, - testing, and practice purposes only and must not be used in production. - -Like any other Kubernetes application, Cloud Native PostgreSQL is deployed using -regular manifests written in YAML. - -By following the instructions on this page you should be able to start a PostgreSQL -cluster on your local Kubernetes/Openshift installation and experiment with it. - -!!! Important - Make sure that you have `kubectl` installed on your machine in order - to connect to the Kubernetes cluster, or `oc` if using CRC for OpenShift. - Please follow the Kubernetes documentation on [how to install `kubectl`](https://kubernetes.io/docs/tasks/tools/install-kubectl/) - or the Openshift one on [how to install `oc`](https://docs.openshift.com/container-platform/4.6/cli_reference/openshift_cli/getting-started-cli.html). - - -!!! Note - If you are running Openshift, use `oc` every time `kubectl` is mentioned - in this documentation. `kubectl` commands are compatible with `oc` ones. - -## Part 1 - Setup the local Kubernetes/Openshift playground - -The first part is about installing Minikube, Kind, or CRC. Please spend some time -reading about the systems and decide which one to proceed with. -After setting up one of them, please proceed with part 2. - -### Minikube - -Minikube is a tool that makes it easy to run Kubernetes locally. Minikube runs a -single-node Kubernetes cluster inside a Virtual Machine (VM) on your laptop for -users looking to try out Kubernetes or develop with it day-to-day. Normally, it -is used in conjunction with VirtualBox. - -You can find more information in the official [Kubernetes documentation on how to -install Minikube](https://kubernetes.io/docs/tasks/tools/install-minikube) in your local personal environment. -When you installed it, run the following command to create a minikube cluster: - -```sh -minikube start -``` - -This will create the Kubernetes cluster, and you will be ready to use it. -Verify that it works with the following command: - -```sh -kubectl get nodes -``` - -You will see one node called `minikube`. - -### Kind - -If you do not want to use a virtual machine hypervisor, then Kind is a tool for running -local Kubernetes clusters using Docker container "nodes" (Kind stands for "Kubernetes IN Docker" indeed). - -Install `kind` on your environment following the instructions in the [Quickstart](https://kind.sigs.k8s.io/docs/user/quick-start), -then create a Kubernetes cluster with: - -```sh -kind create cluster --name pg -``` - -### CodeReady Containers (CRC) - -[Download RedHat CRC](https://developers.redhat.com/products/codeready-containers/overview) -and move the binary inside a directory in your `PATH`. - -You can then run the following commands: -``` -crc setup -crc start -``` - -The `crc start` output will explain how to proceed. You'll then need to -execute the output of the `crc oc-env` command. -After that, you can log in as `kubeadmin` with the printed `oc login` -command. You can also open the web console running `crc console`. -User and password are the same as for the `oc login` command. - -CRC doesn't come with a StorageClass, so one has to be configured. -You can follow the [Dynamic volume provisioning wiki page](https://github.com/code-ready/crc/wiki/Dynamic-volume-provisioning) -and install `rancher/local-path-provisioner`. - -## Part 2 - Install Cloud Native PostgreSQL - -Now that you have a Kubernetes or OpenShift installation up and running -on your laptop, you can proceed with Cloud Native PostgreSQL installation. - -Please refer to the ["Installation"](installation.md) section and then proceed -with the deployment of a PostgreSQL cluster. - -## Part 3 - Deploy a PostgreSQL cluster - -As with any other deployment in Kubernetes, to deploy a PostgreSQL cluster -you need to apply a configuration file that defines your desired `Cluster`. - -The [`cluster-example.yaml`](samples/cluster-example.yaml) sample file -defines a simple `Cluster` using the default storage class to allocate -disk space: - -```yaml -# Example of PostgreSQL cluster -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - instances: 3 - - # Example of rolling update strategy: - # - unsupervised: automated update of the primary once all - # replicas have been upgraded (default) - # - supervised: requires manual supervision to perform - # the switchover of the primary - primaryUpdateStrategy: unsupervised - - # Require 1Gi of space - storage: - size: 1Gi -``` - -!!! Note "There's more" - For more detailed information about the available options, please refer - to the ["API Reference" section](api_reference.md). - -In order to create the 3-node PostgreSQL cluster, you need to run the following command: - -```sh -kubectl apply -f cluster-example.yaml -``` - -You can check that the pods are being created with the `get pods` command: - -```sh -kubectl get pods -``` - -By default, the operator will install the latest available minor version -of the latest major version of PostgreSQL when the operator was released. -You can override this by setting the `imageName` key in the `spec` section of -the `Cluster` definition. For example, to install PostgreSQL 12.5: - -```yaml -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - # [...] -spec: - # [...] - imageName: quay.io/enterprisedb/postgresql:12.5 - #[...] -``` - -!!! Important - The immutable infrastructure paradigm requires that you always - point to a specific version of the container image. - Never use tags like `latest` or `13` in a production environment - as it might lead to unpredictable scenarios in terms of update - policies and version consistency in the cluster. diff --git a/temp_kubernetes/original/src/resource_management.md b/temp_kubernetes/original/src/resource_management.md deleted file mode 100644 index cf4188c181e..00000000000 --- a/temp_kubernetes/original/src/resource_management.md +++ /dev/null @@ -1,96 +0,0 @@ -# Resource management - -In a typical Kubernetes cluster, pods run with unlimited resources. By default, -they might be allowed to use as much CPU and RAM as needed. - -Cloud Native PostgreSQL allows administrators to control and manage resource usage by the pods of the cluster, -through the `resources` section of the manifest, with two knobs: - -- `requests`: initial requirement -- `limits`: maximum usage, in case of dynamic increase of resource needs - -For example, you can request an initial amount of RAM of 32MiB (scalable to 128MiB) and 50m of CPU (scalable to 100m) -as follows: - -```yaml - resources: - requests: - memory: "32Mi" - cpu: "50m" - limits: - memory: "128Mi" - cpu: "100m" -``` - -Memory requests and limits are associated with containers, but it is useful to think of a pod as having a memory request -and limit. The pod's memory request is the sum of the memory requests for all the containers in the pod. - -Pod scheduling is based on requests and not on limits. A pod is scheduled to run on a Node only if the Node has enough -available memory to satisfy the pod's memory request. - -For each resource, we divide containers into 3 Quality of Service (QoS) classes, in decreasing order of priority: - -- *Guaranteed* -- *Burstable* -- *Best-Effort* - -For more details, please refer to the ["Configure Quality of Service for Pods"](https://kubernetes.io/docs/tasks/configure-pod-container/quality-service-pod/#qos-classes) -section in the Kubernetes documentation. - -For a PostgreSQL workload it is recommended to set a "Guaranteed" QoS. - -To avoid resources related issues in Kubernetes, we can refer to the best practices for "out of resource" handling -while creating a cluster: - -- Specify your required values for memory and CPU in the resources section of the manifest file. - This way, you can avoid the `OOM Killed` (where "OOM" stands for Out Of Memory) and `CPU throttle` or any other - resources related issues on running instances. -- For your cluster's pods to get assigned to the "Guaranteed" QoS class, you must set limits and requests - for both memory and CPU to the same value. -- Specify your required PostgreSQL memory parameters consistently with the pod resources (as you would do - in a VM or physical machine scenario - see below). -- Set up database server pods on a dedicated node using nodeSelector. - See the ["nodeSelector field of the affinityconfiguration resource on the API reference page"](api_reference.md#affinityconfiguration). - -You can refer to the following example manifest: - -```yaml -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: postgresql-resources -spec: - - instances: 3 - - postgresql: - parameters: - shared_buffers: "256MB" - - resources: - requests: - memory: "1024Mi" - cpu: 1 - limits: - memory: "1024Mi" - cpu: 1 - - storage: - size: 1Gi -``` - -In the above example, we have specified `shared_buffers` parameter with a value of `256MB` - i.e., how much memory is -dedicated to the PostgreSQL server for caching data (the default value for this parameter is `128MB` in case -it's not defined). - -A reasonable starting value for `shared_buffers` is 25% of the memory in your system. -For example: if your `shared_buffers` is 256 MB, then the recommended value for your container memory size is 1 GB, -which means that within a pod all the containers will have a total of 1 GB memory that Kubernetes will always preserve, -enabling our containers to work as expected. -For more details, please refer to the ["Resource Consumption"](https://www.postgresql.org/docs/current/runtime-config-resource.html) -section in the PostgreSQL documentation. - -!!! Seealso "Managing Compute Resources for Containers" - For more details on resource management, please refer to the - ["Managing Compute Resources for Containers"](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/) - page from the Kubernetes documentation. diff --git a/temp_kubernetes/original/src/rolling_update.md b/temp_kubernetes/original/src/rolling_update.md deleted file mode 100644 index ec67e41756b..00000000000 --- a/temp_kubernetes/original/src/rolling_update.md +++ /dev/null @@ -1,42 +0,0 @@ -# Rolling Updates - -The operator allows changing the PostgreSQL version used in a cluster while -applications are running against it. - -!!! Important - Only upgrades for PostgreSQL minor releases are supported. - -Rolling upgrades are started when: - -- the user changes the `imageName` attribute of the cluster specification; - -- after the operator is updated, to ensure the Pods run the latest instance - manager; - -- when a change in the PostgreSQL configuration requires a restart to be - applied. - -The operator starts upgrading all the replicas, one Pod at a time, starting -from the one with the highest serial. - -The primary is the last node to be upgraded. This operation is configurable and -managed by the `primaryUpdateStrategy` option, accepting these two values: - -- `unsupervised`: the rolling update process is managed by Kubernetes - and is entirely automated, with the *switchover* operation - starting once all the replicas have been upgraded -- `supervised`: the rolling update process is suspended immediately - after all replicas have been upgraded and can only be completed - with a manual switchover triggered by an administrator with - `kubectl cnp promote [cluster] [pod]`. The plugin can be downloaded from the - [`kubectl-cnp` project page](https://github.com/EnterpriseDB/kubectl-cnp) - on GitHub. - -The default and recommended value is `unsupervised`. - -The upgrade keeps the Cloud Native PostgreSQL identity and does not -re-clone the data. Pods will be deleted and created again with the same PVCs. - -During the rolling update procedure, the services endpoints move to reflect -the cluster's status, so the applications ignore the node that -is updating. diff --git a/temp_kubernetes/original/src/samples.md b/temp_kubernetes/original/src/samples.md deleted file mode 100644 index 1e9a1cb4af9..00000000000 --- a/temp_kubernetes/original/src/samples.md +++ /dev/null @@ -1,18 +0,0 @@ -# Configuration Samples - -In this section, you can find some examples of configuration files to set up your PostgreSQL `Cluster`. - -* [`cluster-example.yaml`](samples/cluster-example.yaml): - a basic example of `Cluster` that uses the default storage class. For demonstration and experimentation purposes - on a personal Kubernetes cluster with Minikube or Kind as described in the ["Quickstart"](quickstart.md). -* [`cluster-example-custom.yaml`](samples/cluster-example-custom.yaml): - a basic example of `Cluster` that uses the default storage class and custom parameters for `postgresql.conf` and - `pg_hba.conf` files -* [`cluster-storage-class.yaml`](samples/cluster-storage-class.yaml): - a basic example of `Cluster` that uses a specified storage class. -* [`cluster-pvc-template.yaml`](samples/cluster-pvc-template.yaml): - a basic example of `Cluster` that uses a persistent volume claim template. -* [`cluster-example-full.yaml`](samples/cluster-example-full.yaml): - an example of `Cluster` that sets most of the available options. - -For a list of available options, please refer to the ["API Reference" page](api_reference.md). diff --git a/temp_kubernetes/original/src/samples/backup-example.yaml b/temp_kubernetes/original/src/samples/backup-example.yaml deleted file mode 100644 index 20584cc403d..00000000000 --- a/temp_kubernetes/original/src/samples/backup-example.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Backup -metadata: - name: backup-example -spec: - cluster: - name: pg-backup diff --git a/temp_kubernetes/original/src/samples/cluster-example-custom.yaml b/temp_kubernetes/original/src/samples/cluster-example-custom.yaml deleted file mode 100644 index 49223affa68..00000000000 --- a/temp_kubernetes/original/src/samples/cluster-example-custom.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: cluster-example-custom -spec: - instances: 3 - - # Parameters and pg_hba configuration will be append - # to the default ones to make the cluster work - postgresql: - parameters: - max_worker_processes: "60" - pg_hba: - # To access through TCP/IP you will need to get username - # and password from the secret cluster-example-custom-app - - host all all all md5 - - - # Example of rolling update strategy: - # - unsupervised: automated update of the primary once all - # replicas have been upgraded (default) - # - supervised: requires manual supervision to perform - # the switchover of the primary - primaryUpdateStrategy: unsupervised - - # Require 1Gi of space per instance using default storage class - storage: - size: 1Gi diff --git a/temp_kubernetes/original/src/samples/cluster-example-epas.yaml b/temp_kubernetes/original/src/samples/cluster-example-epas.yaml deleted file mode 100644 index c06d19e1b7d..00000000000 --- a/temp_kubernetes/original/src/samples/cluster-example-epas.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - instances: 3 - # imageName: docker-epas:13 - - bootstrap: - initdb: - redwood: false - - storage: - size: 1Gi diff --git a/temp_kubernetes/original/src/samples/cluster-example-full.yaml b/temp_kubernetes/original/src/samples/cluster-example-full.yaml deleted file mode 100644 index 71e497e2baf..00000000000 --- a/temp_kubernetes/original/src/samples/cluster-example-full.yaml +++ /dev/null @@ -1,104 +0,0 @@ -# Example of definition of a test cluster using all the elements available -# in the CRD. Please change values appropriately for your environment. -# Remember that you can take advantage of convention over configuration -# and normally you don't need to use all these definitions. - -apiVersion: v1 -data: - password: cGFzc3dvcmQ= -kind: Secret -metadata: - name: cluster-example-app-user -type: kubernetes.io/basic-auth ---- -apiVersion: v1 -data: - password: cGFzc3dvcmQ= -kind: Secret -metadata: - name: cluster-example-superuser -type: kubernetes.io/basic-auth ---- -apiVersion: v1 -kind: Secret -metadata: - name: backup-creds -data: - ACCESS_KEY_ID: a2V5X2lk - ACCESS_SECRET_KEY: c2VjcmV0X2tleQ== ---- -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: cluster-example-full -spec: - description: "Example of cluster" - imageName: quay.io/enterprisedb/postgresql:13.2 - # imagePullSecret is only required if the images are located in a private registry - # imagePullSecrets: - # - name: private_registry_access - instances: 3 - #licenseKey: insert_valid_license_here - startDelay: 300 - stopDelay: 300 - primaryUpdateStrategy: unsupervised - - postgresql: - parameters: - shared_buffers: 256MB - pg_hba: - - host all all 10.244.0.0/16 md5 - - bootstrap: - initdb: - database: appdb - owner: appuser - secret: - name: cluster-example-app-user - # Alternative bootstrap method: start from a backup - #recovery: - # backup: - # name: backup-example - - superuserSecret: - name: cluster-example-superuser - - storage: - storageClass: standard - size: 1Gi - - backup: - barmanObjectStore: - destinationPath: s3://cluster-example-full-backup/ - endpointURL: http://custom-endpoint:1234 - s3Credentials: - accessKeyId: - name: backup-creds - key: ACCESS_KEY_ID - secretAccessKey: - name: backup-creds - key: ACCESS_SECRET_KEY - wal: - compression: gzip - encryption: AES256 - data: - compression: gzip - encryption: AES256 - immediateCheckpoint: false - jobs: 2 - - resources: - requests: - memory: "512Mi" - cpu: "1" - limits: - memory: "1Gi" - cpu: "2" - - affinity: - enablePodAntiAffinity: true - topologyKey: failure-domain.beta.kubernetes.io/zone - - nodeMaintenanceWindow: - inProgress: false - reusePVC: false diff --git a/temp_kubernetes/original/src/samples/cluster-example-initdb.yaml b/temp_kubernetes/original/src/samples/cluster-example-initdb.yaml deleted file mode 100644 index 31a014f535e..00000000000 --- a/temp_kubernetes/original/src/samples/cluster-example-initdb.yaml +++ /dev/null @@ -1,16 +0,0 @@ -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: cluster-example-initdb -spec: - instances: 3 - - bootstrap: - initdb: - database: appdb - owner: appuser - options: - - "-k" - - "--locale=en_US" - storage: - size: 1Gi diff --git a/temp_kubernetes/original/src/samples/cluster-example-monitoring.yaml b/temp_kubernetes/original/src/samples/cluster-example-monitoring.yaml deleted file mode 100644 index 88edcf51db9..00000000000 --- a/temp_kubernetes/original/src/samples/cluster-example-monitoring.yaml +++ /dev/null @@ -1,235 +0,0 @@ -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - instances: 3 - - storage: - size: 1Gi - - monitoring: - customQueriesConfigMap: - - name: example-monitoring - key: custom-queries - customQueriesSecret: - - name: example-monitoring-secret - key: pg-database ---- -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: default - name: example-monitoring -data: - custom-queries: | - pg_replication: - query: "SELECT CASE WHEN NOT pg_is_in_recovery() THEN 0 ELSE GREATEST (0, EXTRACT(EPOCH FROM (now() - pg_last_xact_replay_timestamp()))) END AS lag" - primary: true - metrics: - - lag: - usage: "GAUGE" - description: "Replication lag behind primary in seconds" - - pg_postmaster: # wokeignore:rule=master - query: "SELECT pg_postmaster_start_time as start_time_seconds from pg_postmaster_start_time()" # wokeignore:rule=master - primary: true - metrics: - - start_time_seconds: - usage: "GAUGE" - description: "Time at which postmaster started" # wokeignore:rule=master - - pg_stat_user_tables: - query: | - SELECT - current_database() datname, - schemaname, - relname, - seq_scan, - seq_tup_read, - idx_scan, - idx_tup_fetch, - n_tup_ins, - n_tup_upd, - n_tup_del, - n_tup_hot_upd, - n_live_tup, - n_dead_tup, - n_mod_since_analyze, - COALESCE(last_vacuum, '1970-01-01Z') as last_vacuum, - COALESCE(last_autovacuum, '1970-01-01Z') as last_autovacuum, - COALESCE(last_analyze, '1970-01-01Z') as last_analyze, - COALESCE(last_autoanalyze, '1970-01-01Z') as last_autoanalyze, - vacuum_count, - autovacuum_count, - analyze_count, - autoanalyze_count - FROM - pg_stat_user_tables - metrics: - - datname: - usage: "LABEL" - description: "Name of current database" - - schemaname: - usage: "LABEL" - description: "Name of the schema that this table is in" - - relname: - usage: "LABEL" - description: "Name of this table" - - seq_scan: - usage: "COUNTER" - description: "Number of sequential scans initiated on this table" - - seq_tup_read: - usage: "COUNTER" - description: "Number of live rows fetched by sequential scans" - - idx_scan: - usage: "COUNTER" - description: "Number of index scans initiated on this table" - - idx_tup_fetch: - usage: "COUNTER" - description: "Number of live rows fetched by index scans" - - n_tup_ins: - usage: "COUNTER" - description: "Number of rows inserted" - - n_tup_upd: - usage: "COUNTER" - description: "Number of rows updated" - - n_tup_del: - usage: "COUNTER" - description: "Number of rows deleted" - - n_tup_hot_upd: - usage: "COUNTER" - description: "Number of rows HOT updated (i.e., with no separate index update required)" - - n_live_tup: - usage: "GAUGE" - description: "Estimated number of live rows" - - n_dead_tup: - usage: "GAUGE" - description: "Estimated number of dead rows" - - n_mod_since_analyze: - usage: "GAUGE" - description: "Estimated number of rows changed since last analyze" - - last_vacuum: - usage: "GAUGE" - description: "Last time at which this table was manually vacuumed (not counting VACUUM FULL)" - - last_autovacuum: - usage: "GAUGE" - description: "Last time at which this table was vacuumed by the autovacuum daemon" - - last_analyze: - usage: "GAUGE" - description: "Last time at which this table was manually analyzed" - - last_autoanalyze: - usage: "GAUGE" - description: "Last time at which this table was analyzed by the autovacuum daemon" - - vacuum_count: - usage: "COUNTER" - description: "Number of times this table has been manually vacuumed (not counting VACUUM FULL)" - - autovacuum_count: - usage: "COUNTER" - description: "Number of times this table has been vacuumed by the autovacuum daemon" - - analyze_count: - usage: "COUNTER" - description: "Number of times this table has been manually analyzed" - - autoanalyze_count: - usage: "COUNTER" - description: "Number of times this table has been analyzed by the autovacuum daemon" - - pg_statio_user_tables: - query: "SELECT current_database() datname, schemaname, relname, heap_blks_read, heap_blks_hit, idx_blks_read, idx_blks_hit, toast_blks_read, toast_blks_hit, tidx_blks_read, tidx_blks_hit FROM pg_statio_user_tables" - metrics: - - datname: - usage: "LABEL" - description: "Name of current database" - - schemaname: - usage: "LABEL" - description: "Name of the schema that this table is in" - - relname: - usage: "LABEL" - description: "Name of this table" - - heap_blks_read: - usage: "COUNTER" - description: "Number of disk blocks read from this table" - - heap_blks_hit: - usage: "COUNTER" - description: "Number of buffer hits in this table" - - idx_blks_read: - usage: "COUNTER" - description: "Number of disk blocks read from all indexes on this table" - - idx_blks_hit: - usage: "COUNTER" - description: "Number of buffer hits in all indexes on this table" - - toast_blks_read: - usage: "COUNTER" - description: "Number of disk blocks read from this table's TOAST table (if any)" - - toast_blks_hit: - usage: "COUNTER" - description: "Number of buffer hits in this table's TOAST table (if any)" - - tidx_blks_read: - usage: "COUNTER" - description: "Number of disk blocks read from this table's TOAST table indexes (if any)" - - tidx_blks_hit: - usage: "COUNTER" - description: "Number of buffer hits in this table's TOAST table indexes (if any)" - - pg_stat_activity: - query: | - WITH - metrics AS ( - SELECT - application_name, - SUM(EXTRACT(EPOCH FROM (CURRENT_TIMESTAMP - state_change))::bigint)::float AS process_idle_seconds_sum, - COUNT(*) AS process_idle_seconds_count - FROM pg_stat_activity - WHERE state = 'idle' - GROUP BY application_name - ), - buckets AS ( - SELECT - application_name, - le, - SUM( - CASE WHEN EXTRACT(EPOCH FROM (CURRENT_TIMESTAMP - state_change)) <= le - THEN 1 - ELSE 0 - END - )::bigint AS bucket - FROM - pg_stat_activity, - UNNEST(ARRAY[1, 2, 5, 15, 30, 60, 90, 120, 300]) AS le - GROUP BY application_name, le - ORDER BY application_name, le - ) - SELECT - application_name, - process_idle_seconds_sum, - process_idle_seconds_count, - ARRAY_AGG(le) AS process_idle_seconds, - ARRAY_AGG(bucket) AS process_idle_seconds_bucket - FROM metrics JOIN buckets USING (application_name) - GROUP BY 1, 2, 3 - metrics: - - application_name: - usage: "LABEL" - description: "Application Name" - - process_idle_seconds: - usage: "HISTOGRAM" - description: "Idle time of server processes" ---- -apiVersion: v1 -kind: Secret -metadata: - namespace: default - name: example-monitoring-secret -stringData: - pg-database: | - pg_database: - query: "SELECT pg_database.datname, pg_database_size(pg_database.datname) as size_bytes FROM pg_database" - primary: true - cache_seconds: 30 - metrics: - - datname: - usage: "LABEL" - description: "Name of the database" - - size_bytes: - usage: "GAUGE" - description: "Disk space used by the database" diff --git a/temp_kubernetes/original/src/samples/cluster-example-secret.yaml b/temp_kubernetes/original/src/samples/cluster-example-secret.yaml deleted file mode 100644 index 991261172d5..00000000000 --- a/temp_kubernetes/original/src/samples/cluster-example-secret.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: cluster-example-secret -spec: - instances: 3 - - bootstrap: - initdb: - database: appdb - owner: appuser - secret: - name: cluster-example-app-user - - superuserSecret: - name: cluster-example-superuser - - storage: - size: 1Gi ---- -apiVersion: v1 -data: - password: cGFzc3dvcmQ= -kind: Secret -metadata: - name: cluster-example-app-user -type: kubernetes.io/basic-auth ---- -apiVersion: v1 -data: - password: cGFzc3dvcmQ= -kind: Secret -metadata: - name: cluster-example-superuser -type: kubernetes.io/basic-auth diff --git a/temp_kubernetes/original/src/samples/cluster-example-syncreplicas.yaml b/temp_kubernetes/original/src/samples/cluster-example-syncreplicas.yaml deleted file mode 100644 index 2c0e4da2d86..00000000000 --- a/temp_kubernetes/original/src/samples/cluster-example-syncreplicas.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: cluster-example-syncreplicas -spec: - instances: 5 - - minSyncReplicas: 1 - maxSyncReplicas: 3 - - storage: - size: 1G diff --git a/temp_kubernetes/original/src/samples/cluster-example.yaml b/temp_kubernetes/original/src/samples/cluster-example.yaml deleted file mode 100644 index 230b7b5fcc5..00000000000 --- a/temp_kubernetes/original/src/samples/cluster-example.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: cluster-example -spec: - instances: 3 - - storage: - size: 1Gi diff --git a/temp_kubernetes/original/src/samples/cluster-expose-service.yaml b/temp_kubernetes/original/src/samples/cluster-expose-service.yaml deleted file mode 100644 index 201b25e1643..00000000000 --- a/temp_kubernetes/original/src/samples/cluster-expose-service.yaml +++ /dev/null @@ -1,36 +0,0 @@ ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: tcp-services - namespace: ingress-nginx -data: - 5432: default/cluster-example-rw:5432 - ---- -apiVersion: v1 -kind: Service -metadata: - name: ingress-nginx - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx -spec: - type: LoadBalancer - ports: - - name: http - port: 80 - targetPort: 80 - protocol: TCP - - name: https - port: 443 - targetPort: 443 - protocol: TCP - - name: postgres - port: 5432 - targetPort: 5432 - protocol: TCP - selector: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx diff --git a/temp_kubernetes/original/src/samples/cluster-pvc-template.yaml b/temp_kubernetes/original/src/samples/cluster-pvc-template.yaml deleted file mode 100644 index 7e608bd8bca..00000000000 --- a/temp_kubernetes/original/src/samples/cluster-pvc-template.yaml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: postgresql-pvc-template -spec: - instances: 3 - - # Example of rolling update strategy: - # - unsupervised: automated update of the primary once all - # replicas have been upgraded (default) - # - supervised: requires manual supervision to perform - # the switchover of the primary - primaryUpdateStrategy: unsupervised - - # Persistent storage configuration - storage: - pvcTemplate: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 1Gi - storageClassName: standard - volumeMode: Filesystem diff --git a/temp_kubernetes/original/src/samples/cluster-restore-pitr.yaml b/temp_kubernetes/original/src/samples/cluster-restore-pitr.yaml deleted file mode 100644 index 0fd04c6f1a4..00000000000 --- a/temp_kubernetes/original/src/samples/cluster-restore-pitr.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: cluster-restore-pitr -spec: - instances: 3 - - storage: - size: 5Gi - - bootstrap: - recovery: - backup: - name: backup-example - - recoveryTarget: - targetTime: "2020-11-26 15:22:00.00000+00" diff --git a/temp_kubernetes/original/src/samples/cluster-restore.yaml b/temp_kubernetes/original/src/samples/cluster-restore.yaml deleted file mode 100644 index ae3f0bc74a5..00000000000 --- a/temp_kubernetes/original/src/samples/cluster-restore.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: cluster-restore -spec: - instances: 3 - - storage: - size: 5Gi - - bootstrap: - recovery: - backup: - name: backup-example diff --git a/temp_kubernetes/original/src/samples/cluster-storage-class-with-backup.yaml b/temp_kubernetes/original/src/samples/cluster-storage-class-with-backup.yaml deleted file mode 100644 index a2d62d06b2f..00000000000 --- a/temp_kubernetes/original/src/samples/cluster-storage-class-with-backup.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: pg-backup -spec: - instances: 3 - - # Example of rolling update strategy: - # - unsupervised: automated update of the primary once all - # replicas have been upgraded (default) - # - supervised: requires manual supervision to perform - # the switchover of the primary - primaryUpdateStrategy: unsupervised - - # Persistent storage configuration - storage: - storageClass: standard - size: 1Gi - - # Backup properties - backup: - barmanObjectStore: - destinationPath: s3://BUCKET_NAME/path/to/folder - s3Credentials: - accessKeyId: - name: aws-creds - key: ACCESS_KEY_ID - secretAccessKey: - name: aws-creds - key: ACCESS_SECRET_KEY - wal: - compression: gzip diff --git a/temp_kubernetes/original/src/samples/cluster-storage-class.yaml b/temp_kubernetes/original/src/samples/cluster-storage-class.yaml deleted file mode 100644 index f3e614e39ee..00000000000 --- a/temp_kubernetes/original/src/samples/cluster-storage-class.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: postgresql-storage-class -spec: - instances: 3 - - # Example of rolling update strategy: - # - unsupervised: automated update of the primary once all - # replicas have been upgraded (default) - # - supervised: requires manual supervision to perform - # the switchover of the primary - primaryUpdateStrategy: unsupervised - - # Persistent storage configuration - storage: - storageClass: standard - size: 1Gi diff --git a/temp_kubernetes/original/src/samples/scheduled-backup-example.yaml b/temp_kubernetes/original/src/samples/scheduled-backup-example.yaml deleted file mode 100644 index b51ecc29deb..00000000000 --- a/temp_kubernetes/original/src/samples/scheduled-backup-example.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: ScheduledBackup -metadata: - name: backup-example -spec: - schedule: "0 0 0 * * *" - cluster: - name: pg-backup diff --git a/temp_kubernetes/original/src/samples/subscription.yaml b/temp_kubernetes/original/src/samples/subscription.yaml deleted file mode 100644 index 20ff6874ee6..00000000000 --- a/temp_kubernetes/original/src/samples/subscription.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: operators.coreos.com/v1alpha1 -kind: Subscription -metadata: - name: cloud-native-postgresql - namespace: openshift-operators -spec: - channel: stable - name: cloud-native-postgresql - source: certified-operators - sourceNamespace: openshift-marketplace diff --git a/temp_kubernetes/original/src/security.md b/temp_kubernetes/original/src/security.md deleted file mode 100644 index c2211205897..00000000000 --- a/temp_kubernetes/original/src/security.md +++ /dev/null @@ -1,115 +0,0 @@ -# Security - -This section contains information about security for Cloud Native PostgreSQL -analyzed at 3 different layers: Code, Container and Cluster. - -!!! Warning - The information contained in this page must not exonerate you from - performing regular InfoSec duties on your Kubernetes cluster. Please - familiarize with the ["Overview of Cloud Native Security"](https://kubernetes.io/docs/concepts/security/overview/) - page from the Kubernetes documentation. - -!!! Seealso "About the 4C's Security Model" - Please refer to ["The 4C’s Security Model in Kubernetes"](https://www.enterprisedb.com/blog/4cs-security-model-kubernetes) - blog article to get a better understanding and context of the approach EDB - has taken with security in Cloud Native PostgreSQL. - -## Code - -Source code of Cloud Native PostgreSQL is *systematically scanned* for static analysis purposes, -including **security problems**, using a popular open-source linter for Go called -[GolangCI-Lint](https://github.com/golangci/golangci-lint) directly in the CI/CD pipeline. -GolangCI-Lint can run several *linters* on the same source code. - -One of these is [Golang Security Checker](https://github.com/securego/gosec), or simply `gosec`, -a linter that scans the abstract syntactic tree of the source against a set of rules aimed at -the discovery of well-known vulnerabilities, threats, and weaknesses hidden in -the code such as hard-coded credentials, integer overflows and SQL injections - to name a few. - -!!! Important - A failure in the static code analysis phase of the CI/CD pipeline is a blocker - for the entire delivery of Cloud Native PostgreSQL, meaning that each commit is validated - against all the linters defined by GolangCI-Lint. - -Source code is also regularly inspected through [Coverity Scan by Synopsys](https://scan.coverity.com/) -via EnterpriseDB's internal CI/CD pipeline. - -## Container - -Every container image that is part of Cloud Native PostgreSQL is automatically built via CI/CD pipelines following every commit. -Such images include not only the operator's, but also the operands' - specifically every supported PostgreSQL and EDB Postgres Advanced version. -Within the pipelines, images are scanned with: - -- [Dockle](https://github.com/goodwithtech/dockle): for best practices in terms - of the container build process -- [Clair](https://github.com/quay/clair): for vulnerabilities found in both the - underlying operating system as well as libraries and applications that they run - -!!! Important - All operand images are automatically rebuilt once a day by our pipelines in case - of security updates at the base image and package level, providing **patch level updates** - for the container images that EDB distributes. - -The following guidelines and frameworks have been taken into account for container-level security: - -- the ["Container Image Creation and Deployment Guide"](https://dl.dod.cyber.mil/wp-content/uploads/devsecops/pdf/DevSecOps_Enterprise_Container_Image_Creation_and_Deployment_Guide_2.6-Public-Release.pdf), - developed by the Defense Information Systems Agency (DISA) of the United States Department of Defense (DoD) -- the ["CIS Benchmark for Docker"](https://www.cisecurity.org/benchmark/docker/), - developed by the Center for Internet Security (CIS) - -!!! Seealso "About the Container level security" - Please refer to ["Security and Containers in Cloud Native PostgreSQL"](https://www.enterprisedb.com/blog/security-and-containers-cloud-native-postgresql) - blog article for more information about the approach that EDB has taken on - security at container level in Cloud Native PostgreSQL. - -## Cluster - -Security at the cluster level takes into account all Kubernetes components that -form both the control plane and the nodes, as well as the applications that run in -the cluster (PostgreSQL included). - -### Pod Security Policies - -A [Pod Security Policy](https://kubernetes.io/docs/concepts/policy/pod-security-policy/) -is the Kubernetes way to define security rules and specifications that a pod needs to meet -to run in a cluster. -For InfoSec reasons, every Kubernetes platform should implement them. - -Cloud Native PostgreSQL does not require *privileged* mode for containers execution. -PostgreSQL servers run as `postgres` system user. No component whatsoever requires to run as `root`. - -Likewise, Volumes access does not require *privileges* mode or `root` privileges either. -Proper permissions must be properly assigned by the Kubernetes platform and/or administrators. - -### Network Policies - -The pods created by the `Cluster` resource can be controlled by Kubernetes -[network policies](https://kubernetes.io/docs/concepts/services-networking/network-policies/) -to enable/disable inbound and outbound network access at IP and TCP level. - -Network policies are beyond the scope of this document. -Please refer to the ["Network policies"](https://kubernetes.io/docs/concepts/services-networking/network-policies/) -section of the Kubernetes documentation for further information. - -### PostgreSQL - -The current implementation of Cloud Native PostgreSQL automatically creates -passwords and `.pgpass` files for the `postgres` superuser and the database owner. -See the ["Secrets" section in the "Architecture" page](architecture.md#secrets). - -You can use those files to configure application access to the database. - -By default, every replica is automatically configured to connect in **physical -async streaming replication** with the current primary instance, with a special -user called `streaming_replica`. The connection between nodes is **encrypted** -and authentication is via **TLS client certificates**. - -Currently, the operator allows administrators to add `pg_hba.conf` lines directly in the manifest -as part of the `pg_hba` section of the `postgresql` configuration. The lines defined in the -manifest are added to a default `pg_hba.conf`. - -For further detail on how `pg_hba.conf` is managed by the operator, see the -["PostgreSQL Configuration" page](postgresql_conf.md#the-pg_hba-section) of the documentation. - -!!! Important - Examples assume that the Kubernetes cluster runs in a private and secure network. diff --git a/temp_kubernetes/original/src/ssl_connections.md b/temp_kubernetes/original/src/ssl_connections.md deleted file mode 100644 index fe478ad5438..00000000000 --- a/temp_kubernetes/original/src/ssl_connections.md +++ /dev/null @@ -1,16 +0,0 @@ -# Client SSL Connections - -Cloud Native PostgreSQL currently creates a Certification Authority (CA) for -every cluster. This CA is used to sign the certificates to offer to clients -and create a secure connection with them. - -## Using SSL to connect to pods - -Using SSL to connect to the cluster - -```sh -psql postgresql://cluster-example-rw:5432/app?sslmode=require -``` - -This will generate a secure connection with the `rw` service of the cluster -`cluster-example`. diff --git a/temp_kubernetes/original/src/storage.md b/temp_kubernetes/original/src/storage.md deleted file mode 100644 index 30e9905113d..00000000000 --- a/temp_kubernetes/original/src/storage.md +++ /dev/null @@ -1,140 +0,0 @@ -# Storage - -Storage is a critical component in a database workload. The operator will create -a Persistent Volume Claims for each PostgreSQL instance and mount then into the Pods. - -The easier way to configure the storage for a PostgreSQL class is to just -request storage of a certain size, like in the following example: - -```yaml -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: postgresql-storage-class -spec: - instances: 3 - storage: - size: 1Gi -``` - -Using the previous configuration, the generated PVCs will be satisfied by the default storage -class. If the target Kubernetes cluster has no default storage class, or if you need your PVCs -to satisfied by a known storage class, you can set it into the custom resource: - -```yaml -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: postgresql-storage-class -spec: - instances: 3 - storage: - storageClass: standard - size: 1Gi -``` - -## Using a custom PVC template - -To further customize the generated PVCs, you can provide a PVC template inside the Custom Resource, -like in the following example: - -```yaml -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: postgresql-pvc-template -spec: - instances: 3 - - storage: - pvcTemplate: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 1Gi - storageClassName: standard - volumeMode: Filesystem -``` - -## Expanding the storage size used for the instances - -Kubernetes has an API allowing [expanding PVCs](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims) -that is enabled by default but needs to be supported by the underlying `StorageClass`. - -To check if a certain `StorageClass` supports volume expansion you can read the `allowVolumeExpansion` -field for your storage class: - -``` -$ kubectl get storageclass -o jsonpath='{$.allowVolumeExpansion}' premium-storage -true -``` - -### Using the volume expansion Kubernetes feature - -Given the storage class supports volume expansion, you can change the size requirement -of the `Cluster`, and the operator will apply the change to every PVC. - -If the `StorageClass` supports [online volume resizing](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#resizing-an-in-use-persistentvolumeclaim) -the change is immediately applied to the Pods. If the underlying Storage Class doesn't support -that, you'll need to delete the Pod to trigger the resize. - -The best way to proceed is to delete one Pod at a time, starting from replicas and waiting -for each Pod to be back up. - -### Recreating storage - -Suppose the storage class doesn't support volume expansion. In that case, you can still regenerate your cluster -on different PVCs by allocating new PVCs with increased storage and then move the -database there. This operation is feasible only when the cluster contains more than one node. - -While you do that, you need to prevent the operator from changing the existing PVC -by disabling the `resizeInUseVolumes` flag, like in the following example: - -```yaml -apiVersion: postgresql.k8s.enterprisedb.io/v1 -kind: Cluster -metadata: - name: postgresql-pvc-template -spec: - instances: 3 - - storage: - storageClass: standard - size: 1Gi - resizeInUseVolumes: False -``` - -To move the entire cluster to a different storage area, you need to recreate all the PVCs and -all the Pods. Let's suppose you have a cluster with three replicas like in the following -example: - -``` -$ kubectl get pods -NAME READY STATUS RESTARTS AGE -cluster-example-1 1/1 Running 0 2m37s -cluster-example-2 1/1 Running 0 2m22s -cluster-example-3 1/1 Running 0 2m10s -``` - -To recreate the cluster using different PVCs, you can edit the cluster definition to disable -`resizeInUseVolumes`, and then recreate every instance in a different PVC. - -As an example, to recreate the storage for `cluster-example-3` you can: - -``` -$ kubectl delete pvc cluster-example-3 --wait=false -$ kubectl delete pod cluster-example-3 --wait=false -``` - -Having done that, the operator will orchestrate the creation of another replica with a -resized PVC: - -``` -$ kubectl get pods -NAME READY STATUS RESTARTS AGE -cluster-example-1 1/1 Running 0 5m58s -cluster-example-2 1/1 Running 0 5m43s -cluster-example-4-join-v2bfg 0/1 Completed 0 17s -cluster-example-4 1/1 Running 0 10s -``` diff --git a/temp_kubernetes/original/src/use_cases.md b/temp_kubernetes/original/src/use_cases.md deleted file mode 100644 index 89bd0c36e0f..00000000000 --- a/temp_kubernetes/original/src/use_cases.md +++ /dev/null @@ -1,46 +0,0 @@ -# Use cases - -Cloud Native PostgreSQL has been designed to work with applications -that reside in the same Kubernetes cluster, for a full cloud native -experience. - -However, it might happen that, while the database can be hosted -inside a Kubernetes cluster, applications cannot be containerized -at the same time and need to run in a *traditional environment* such -as a VM. - -## Case 1: Applications inside Kubernetes - -In a typical situation, the application and the database run in the same -namespace inside a Kubernetes cluster. - -![Application and Database inside Kubernetes](./images/apps-in-k8s.png) - -The application, normally stateless, is managed as a standard `Deployment`, -with multiple replicas spread over different Kubernetes node, and internally -exposed through a `ClusterIP` service. - -The service is exposed externally to the end user through an `Ingress` and the -provider's load balancer facility, via HTTPS. - -The application uses the backend PostgreSQL database to keep track of the state -in a reliable and persistent way. The application refers to the read-write -service exposed by the `Cluster` resource defined by Cloud Native PostgreSQL, -which points to the current primary instance, through a TLS connection. The -`Cluster` resource embeds the logic of single primary and multiple standby -architecture, hiding the complexity of managing a high availability cluster in -Postgres. - -![Close-up view of application and database inside Kubernetes](./images/architecture-in-k8s.png) - -## Case 2: Applications outside Kubernetes - -Another possible use case is to manage your PostgreSQL database inside -Kubernetes, while having your applications outside of it (for example in a -virtualized environment). In this case, PostgreSQL is represented by an IP -address (or host name) and a TCP port, corresponding to the defined Ingress -resource in Kubernetes. - -The application can still benefit from a TLS connection to PostgreSQL. - -![Application outside Kubernetes](./images/apps-outside-k8s.png) diff --git a/yarn.lock b/yarn.lock index c8ce1126ff9..47bb12f7686 100644 --- a/yarn.lock +++ b/yarn.lock @@ -134,10 +134,10 @@ dependencies: "@babel/highlight" "^7.12.13" -"@babel/compat-data@^7.13.0", "@babel/compat-data@^7.13.8": - version "7.13.11" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.11.tgz#9c8fe523c206979c9a81b1e12fe50c1254f1aa35" - integrity sha512-BwKEkO+2a67DcFeS3RLl0Z3Gs2OvdXewuWjc1Hfokhb5eQWP9YRYH1/+VrVZvql2CfjOiNGqSAFOYt4lsqTHzg== +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.12", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.13.8": + version "7.13.15" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.15.tgz#7e8eea42d0b64fda2b375b22d06c605222e848f4" + integrity sha512-ltnibHKR1VnrU4ymHyQ/CXtNXI6yZC0oJThyW78Hft8XndANwi+9H+UIklBDraIjFEJzw8wmcM427oDd9KS5wA== "@babel/core@7.10.5": version "7.10.5" @@ -184,37 +184,36 @@ source-map "^0.5.0" "@babel/core@^7.12.3": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.10.tgz#07de050bbd8193fcd8a3c27918c0890613a94559" - integrity sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw== + version "7.13.15" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.15.tgz#a6d40917df027487b54312202a06812c4f7792d0" + integrity sha512-6GXmNYeNjS2Uz+uls5jalOemgIhnTMeaXo+yBUA72kC2uX/8VW6XyhVIo2L8/q0goKQA3EVKx0KOQpVKSeWadQ== dependencies: "@babel/code-frame" "^7.12.13" "@babel/generator" "^7.13.9" - "@babel/helper-compilation-targets" "^7.13.10" - "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-compilation-targets" "^7.13.13" + "@babel/helper-module-transforms" "^7.13.14" "@babel/helpers" "^7.13.10" - "@babel/parser" "^7.13.10" + "@babel/parser" "^7.13.15" "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" + "@babel/traverse" "^7.13.15" + "@babel/types" "^7.13.14" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.1.2" - lodash "^4.17.19" semver "^6.3.0" source-map "^0.5.0" "@babel/eslint-parser@^7.13.4": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.13.10.tgz#e272979914f36bb6cea144c14c32bb51632696dd" - integrity sha512-/I1HQ3jGPhIpeBFeI3wO9WwWOnBYpuR0pX0KlkdGcRQAVX9prB/FCS2HBpL7BiFbzhny1YCiBH8MTZD2jJa7Hg== + version "7.13.14" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.13.14.tgz#f80fd23bdd839537221914cb5d17720a5ea6ba3a" + integrity sha512-I0HweR36D73Ibn/FfrRDMKlMqJHFwidIUgYdMpH+aXYuQC+waq59YaJ6t9e9N36axJ82v1jR041wwqDrDXEwRA== dependencies: - eslint-scope "5.1.0" + eslint-scope "^5.1.0" eslint-visitor-keys "^1.3.0" semver "^6.3.0" -"@babel/generator@^7.10.5", "@babel/generator@^7.12.5", "@babel/generator@^7.13.0", "@babel/generator@^7.13.9": +"@babel/generator@^7.10.5", "@babel/generator@^7.12.5", "@babel/generator@^7.13.9": version "7.13.9" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39" integrity sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw== @@ -238,12 +237,12 @@ "@babel/helper-explode-assignable-expression" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.10", "@babel/helper-compilation-targets@^7.13.8": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz#1310a1678cb8427c07a753750da4f8ce442bdd0c" - integrity sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.13", "@babel/helper-compilation-targets@^7.13.8": + version "7.13.13" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz#2b2972a0926474853f41e4adbc69338f520600e5" + integrity sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ== dependencies: - "@babel/compat-data" "^7.13.8" + "@babel/compat-data" "^7.13.12" "@babel/helper-validator-option" "^7.12.17" browserslist "^4.14.5" semver "^6.3.0" @@ -267,10 +266,10 @@ "@babel/helper-annotate-as-pure" "^7.12.13" regexpu-core "^4.7.1" -"@babel/helper-define-polyfill-provider@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz#3c2f91b7971b9fc11fe779c945c014065dea340e" - integrity sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg== +"@babel/helper-define-polyfill-provider@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz#a640051772045fedaaecc6f0c6c69f02bdd34bf1" + integrity sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw== dependencies: "@babel/helper-compilation-targets" "^7.13.0" "@babel/helper-module-imports" "^7.12.13" @@ -312,34 +311,33 @@ "@babel/traverse" "^7.13.0" "@babel/types" "^7.13.0" -"@babel/helper-member-expression-to-functions@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz#6aa4bb678e0f8c22f58cdb79451d30494461b091" - integrity sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ== +"@babel/helper-member-expression-to-functions@^7.13.0", "@babel/helper-member-expression-to-functions@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72" + integrity sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw== dependencies: - "@babel/types" "^7.13.0" + "@babel/types" "^7.13.12" -"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0" - integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g== +"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977" + integrity sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA== dependencies: - "@babel/types" "^7.12.13" + "@babel/types" "^7.13.12" -"@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz#42eb4bd8eea68bab46751212c357bfed8b40f6f1" - integrity sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw== +"@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.13.14": + version "7.13.14" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz#e600652ba48ccb1641775413cb32cfa4e8b495ef" + integrity sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g== dependencies: - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-replace-supers" "^7.13.0" - "@babel/helper-simple-access" "^7.12.13" + "@babel/helper-module-imports" "^7.13.12" + "@babel/helper-replace-supers" "^7.13.12" + "@babel/helper-simple-access" "^7.13.12" "@babel/helper-split-export-declaration" "^7.12.13" "@babel/helper-validator-identifier" "^7.12.11" "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - lodash "^4.17.19" + "@babel/traverse" "^7.13.13" + "@babel/types" "^7.13.14" "@babel/helper-optimise-call-expression@^7.12.13": version "7.12.13" @@ -367,22 +365,22 @@ "@babel/helper-wrap-function" "^7.13.0" "@babel/types" "^7.13.0" -"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz#6034b7b51943094cb41627848cb219cb02be1d24" - integrity sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw== +"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.0", "@babel/helper-replace-supers@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz#6442f4c1ad912502481a564a7386de0c77ff3804" + integrity sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw== dependencies: - "@babel/helper-member-expression-to-functions" "^7.13.0" + "@babel/helper-member-expression-to-functions" "^7.13.12" "@babel/helper-optimise-call-expression" "^7.12.13" "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" + "@babel/types" "^7.13.12" -"@babel/helper-simple-access@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz#8478bcc5cacf6aa1672b251c1d2dde5ccd61a6c4" - integrity sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA== +"@babel/helper-simple-access@^7.12.13", "@babel/helper-simple-access@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz#dd6c538afb61819d205a012c31792a39c7a5eaf6" + integrity sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA== dependencies: - "@babel/types" "^7.12.13" + "@babel/types" "^7.13.12" "@babel/helper-skip-transparent-expression-wrappers@^7.12.1": version "7.12.1" @@ -436,15 +434,24 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.10.5", "@babel/parser@^7.12.13", "@babel/parser@^7.12.5", "@babel/parser@^7.12.7", "@babel/parser@^7.13.0", "@babel/parser@^7.13.10": - version "7.13.11" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.11.tgz#f93ebfc99d21c1772afbbaa153f47e7ce2f50b88" - integrity sha512-PhuoqeHoO9fc4ffMEVk4qb/w/s2iOSWohvbHxLtxui0eBg3Lg5gN1U8wp1V1u61hOWkPQJJyJzGH6Y+grwkq8Q== +"@babel/parser@^7.10.5", "@babel/parser@^7.12.13", "@babel/parser@^7.12.5", "@babel/parser@^7.12.7", "@babel/parser@^7.13.15": + version "7.13.15" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.15.tgz#8e66775fb523599acb6a289e12929fa5ab0954d8" + integrity sha512-b9COtcAlVEQljy/9fbcMHpG+UIW9ReF+gpaxDHTlZd0c6/UU9ng8zdySAW9sRTzpvcdCHn6bUcbuYUgGzLAWVQ== -"@babel/plugin-proposal-async-generator-functions@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz#87aacb574b3bc4b5603f6fe41458d72a5a2ec4b1" - integrity sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz#a3484d84d0b549f3fc916b99ee4783f26fabad2a" + integrity sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.13.12" + +"@babel/plugin-proposal-async-generator-functions@^7.13.15": + version "7.13.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz#80e549df273a3b3050431b148c892491df1bcc5b" + integrity sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA== dependencies: "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-remap-async-to-generator" "^7.13.0" @@ -543,10 +550,10 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.12.1", "@babel/plugin-proposal-optional-chaining@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.8.tgz#e39df93efe7e7e621841babc197982e140e90756" - integrity sha512-hpbBwbTgd7Cz1QryvwJZRo1U0k1q8uyBmeXOSQUjdg/A2TASkhR/rz7AyqZ/kS8kbpsNA80rOYbxySBJAqmhhQ== +"@babel/plugin-proposal-optional-chaining@^7.12.1", "@babel/plugin-proposal-optional-chaining@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz#ba9feb601d422e0adea6760c2bd6bbb7bfec4866" + integrity sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ== dependencies: "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" @@ -870,23 +877,23 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-react-jsx-development@^7.12.12": +"@babel/plugin-transform-react-jsx-development@^7.12.17": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.17.tgz#f510c0fa7cd7234153539f9a362ced41a5ca1447" integrity sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ== dependencies: "@babel/plugin-transform-react-jsx" "^7.12.17" -"@babel/plugin-transform-react-jsx@^7.12.13", "@babel/plugin-transform-react-jsx@^7.12.17", "@babel/plugin-transform-react-jsx@^7.12.5": - version "7.12.17" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.17.tgz#dd2c1299f5e26de584939892de3cfc1807a38f24" - integrity sha512-mwaVNcXV+l6qJOuRhpdTEj8sT/Z0owAVWf9QujTZ0d2ye9X/K+MTOTSizcgKOj18PGnTc/7g1I4+cIUjsKhBcw== +"@babel/plugin-transform-react-jsx@^7.12.17", "@babel/plugin-transform-react-jsx@^7.12.5", "@babel/plugin-transform-react-jsx@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.13.12.tgz#1df5dfaf0f4b784b43e96da6f28d630e775f68b3" + integrity sha512-jcEI2UqIcpCqB5U5DRxIl0tQEProI2gcu+g8VTIqxLO5Iidojb4d77q+fwGseCvd8af/lJ9masp4QWzBXFE2xA== dependencies: "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-module-imports" "^7.13.12" + "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-jsx" "^7.12.13" - "@babel/types" "^7.12.17" + "@babel/types" "^7.13.12" "@babel/plugin-transform-react-pure-annotations@^7.12.1": version "7.12.1" @@ -896,10 +903,10 @@ "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-regenerator@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz#b628bcc9c85260ac1aeb05b45bde25210194a2f5" - integrity sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA== +"@babel/plugin-transform-regenerator@^7.13.15": + version "7.13.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz#e5eb28945bf8b6563e7f818945f966a8d2997f39" + integrity sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ== dependencies: regenerator-transform "^0.14.2" @@ -911,15 +918,15 @@ "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-transform-runtime@^7.12.1": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.13.10.tgz#a1e40d22e2bf570c591c9c7e5ab42d6bf1e419e1" - integrity sha512-Y5k8ipgfvz5d/76tx7JYbKQTcgFSU6VgJ3kKQv4zGTKr+a9T/KBvfRvGtSFgKDQGt/DBykQixV0vNWKIdzWErA== + version "7.13.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.13.15.tgz#2eddf585dd066b84102517e10a577f24f76a9cd7" + integrity sha512-d+ezl76gx6Jal08XngJUkXM4lFXK/5Ikl9Mh4HKDxSfGJXmZ9xG64XT2oivBzfxb/eQ62VfvoMkaCZUKJMVrBA== dependencies: - "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-module-imports" "^7.13.12" "@babel/helper-plugin-utils" "^7.13.0" - babel-plugin-polyfill-corejs2 "^0.1.4" - babel-plugin-polyfill-corejs3 "^0.1.3" - babel-plugin-polyfill-regenerator "^0.1.2" + babel-plugin-polyfill-corejs2 "^0.2.0" + babel-plugin-polyfill-corejs3 "^0.2.0" + babel-plugin-polyfill-regenerator "^0.2.0" semver "^6.3.0" "@babel/plugin-transform-shorthand-properties@^7.12.13": @@ -983,15 +990,16 @@ "@babel/helper-plugin-utils" "^7.12.13" "@babel/preset-env@^7.12.1": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.13.10.tgz#b5cde31d5fe77ab2a6ab3d453b59041a1b3a5252" - integrity sha512-nOsTScuoRghRtUsRr/c69d042ysfPHcu+KOB4A9aAO9eJYqrkat+LF8G1yp1HD18QiwixT2CisZTr/0b3YZPXQ== + version "7.13.15" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.13.15.tgz#c8a6eb584f96ecba183d3d414a83553a599f478f" + integrity sha512-D4JAPMXcxk69PKe81jRJ21/fP/uYdcTZ3hJDF5QX2HSI9bBxxYw/dumdR6dGumhjxlprHPE4XWoPaqzZUVy2MA== dependencies: - "@babel/compat-data" "^7.13.8" - "@babel/helper-compilation-targets" "^7.13.10" + "@babel/compat-data" "^7.13.15" + "@babel/helper-compilation-targets" "^7.13.13" "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-validator-option" "^7.12.17" - "@babel/plugin-proposal-async-generator-functions" "^7.13.8" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.13.12" + "@babel/plugin-proposal-async-generator-functions" "^7.13.15" "@babel/plugin-proposal-class-properties" "^7.13.0" "@babel/plugin-proposal-dynamic-import" "^7.13.8" "@babel/plugin-proposal-export-namespace-from" "^7.12.13" @@ -1001,7 +1009,7 @@ "@babel/plugin-proposal-numeric-separator" "^7.12.13" "@babel/plugin-proposal-object-rest-spread" "^7.13.8" "@babel/plugin-proposal-optional-catch-binding" "^7.13.8" - "@babel/plugin-proposal-optional-chaining" "^7.13.8" + "@babel/plugin-proposal-optional-chaining" "^7.13.12" "@babel/plugin-proposal-private-methods" "^7.13.0" "@babel/plugin-proposal-unicode-property-regex" "^7.12.13" "@babel/plugin-syntax-async-generators" "^7.8.4" @@ -1039,7 +1047,7 @@ "@babel/plugin-transform-object-super" "^7.12.13" "@babel/plugin-transform-parameters" "^7.13.0" "@babel/plugin-transform-property-literals" "^7.12.13" - "@babel/plugin-transform-regenerator" "^7.12.13" + "@babel/plugin-transform-regenerator" "^7.13.15" "@babel/plugin-transform-reserved-words" "^7.12.13" "@babel/plugin-transform-shorthand-properties" "^7.12.13" "@babel/plugin-transform-spread" "^7.13.0" @@ -1049,10 +1057,10 @@ "@babel/plugin-transform-unicode-escapes" "^7.12.13" "@babel/plugin-transform-unicode-regex" "^7.12.13" "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.13.0" - babel-plugin-polyfill-corejs2 "^0.1.4" - babel-plugin-polyfill-corejs3 "^0.1.3" - babel-plugin-polyfill-regenerator "^0.1.2" + "@babel/types" "^7.13.14" + babel-plugin-polyfill-corejs2 "^0.2.0" + babel-plugin-polyfill-corejs3 "^0.2.0" + babel-plugin-polyfill-regenerator "^0.2.0" core-js-compat "^3.9.0" semver "^6.3.0" @@ -1068,14 +1076,15 @@ esutils "^2.0.2" "@babel/preset-react@^7.12.5": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.13.tgz#5f911b2eb24277fa686820d5bd81cad9a0602a0a" - integrity sha512-TYM0V9z6Abb6dj1K7i5NrEhA13oS5ujUYQYDfqIBXYHOc2c2VkFgc+q9kyssIyUfy4/hEwqrgSlJ/Qgv8zJLsA== + version "7.13.13" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.13.13.tgz#fa6895a96c50763fe693f9148568458d5a839761" + integrity sha512-gx+tDLIE06sRjKJkVtpZ/t3mzCDOnPG+ggHZG9lffUbX8+wC739x20YQc9V35Do6ZAxaUc/HhVHIiOzz5MvDmA== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-option" "^7.12.17" "@babel/plugin-transform-react-display-name" "^7.12.13" - "@babel/plugin-transform-react-jsx" "^7.12.13" - "@babel/plugin-transform-react-jsx-development" "^7.12.12" + "@babel/plugin-transform-react-jsx" "^7.13.12" + "@babel/plugin-transform-react-jsx-development" "^7.12.17" "@babel/plugin-transform-react-pure-annotations" "^7.12.1" "@babel/preset-typescript@^7.12.1": @@ -1103,9 +1112,9 @@ regenerator-runtime "^0.13.4" "@babel/standalone@^7.12.6": - version "7.13.11" - resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.13.11.tgz#d732c9f2780480d54ebb4d1e49c76b2466d40270" - integrity sha512-gMHUj20F9caXNNCme45IxVi7C4f6IGrlrBehK+kTHj/PoZQ5rS9LHPfBILKZZbmd5eRfr7EkZU3zNkpd06ekmw== + version "7.13.15" + resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.13.15.tgz#21d86e0bfc94bd5c43f5db5a65084337cd336c33" + integrity sha512-gKEx9cfMLJegKYYVnI1/4swITcWQa2/e0HlAU9S/+h94xGdyXtoYVQiz8gcXabQ/8MMlOwGclkRoTL3cAxplZg== "@babel/template@^7.10.4", "@babel/template@^7.12.13", "@babel/template@^7.12.7": version "7.12.13" @@ -1116,25 +1125,24 @@ "@babel/parser" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/traverse@^7.10.5", "@babel/traverse@^7.12.5", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc" - integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ== +"@babel/traverse@^7.10.5", "@babel/traverse@^7.12.5", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.13.13", "@babel/traverse@^7.13.15": + version "7.13.15" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.15.tgz#c38bf7679334ddd4028e8e1f7b3aa5019f0dada7" + integrity sha512-/mpZMNvj6bce59Qzl09fHEs8Bt8NnpEDQYleHUPZQ3wXUMvXi+HJPLars68oAbmp839fGoOkv2pSL2z9ajCIaQ== dependencies: "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.0" + "@babel/generator" "^7.13.9" "@babel/helper-function-name" "^7.12.13" "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.13.0" - "@babel/types" "^7.13.0" + "@babel/parser" "^7.13.15" + "@babel/types" "^7.13.14" debug "^4.1.0" globals "^11.1.0" - lodash "^4.17.19" -"@babel/types@^7.0.0-beta.49", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.17", "@babel/types@^7.12.6", "@babel/types@^7.12.7", "@babel/types@^7.13.0", "@babel/types@^7.4.4": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80" - integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA== +"@babel/types@^7.0.0-beta.49", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.6", "@babel/types@^7.12.7", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.14", "@babel/types@^7.4.4": + version "7.13.14" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.14.tgz#c35a4abb15c7cd45a2746d78ab328e362cbace0d" + integrity sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ== dependencies: "@babel/helper-validator-identifier" "^7.12.11" lodash "^4.17.19" @@ -1184,28 +1192,28 @@ querystring "^0.2.0" strip-ansi "^6.0.0" -"@graphql-tools/batch-execute@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-7.0.0.tgz#e79d11bd5b39f29172f6ec2eafa71103c6a6c85b" - integrity sha512-+ywPfK6N2Ddna6oOa5Qb1Mv7EA8LOwRNOAPP9dL37FEhksJM9pYqPSceUcqMqg7S9b0+Cgr78s408rgvurV3/Q== +"@graphql-tools/batch-execute@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-7.1.0.tgz#89fde91ae27c717a5f9f2fff9de8cb6efb7df956" + integrity sha512-Yb4QRpHZqDk24+T4K3ARk/KFU26Dyl30XcbYeVvIrgIKcmeON/p3DfSeiB0+MaxYlsv+liQKvlxNbeC2hD31pA== dependencies: - "@graphql-tools/utils" "^7.0.0" + "@graphql-tools/utils" "^7.7.0" dataloader "2.0.0" is-promise "4.0.0" - tslib "~2.0.1" + tslib "~2.1.0" "@graphql-tools/delegate@^7.0.1", "@graphql-tools/delegate@^7.0.7": - version "7.0.10" - resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-7.0.10.tgz#f87ac85a2dbd03b5b3aabf347f4479fabe8ceac3" - integrity sha512-6Di9ia5ohoDvrHuhj2cak1nJGhIefJmUsd3WKZcJ2nu2yZAFawWMxGvQImqv3N7iyaWKiVhrrK8Roi/JrYhdKg== + version "7.1.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-7.1.2.tgz#a04f2bf039404d81ef057f626a984ed3cac5b53f" + integrity sha512-XvmIod9ZYKMLk2vV5ulbUyo1Va4SCvvp/VNq4RTae2SEvYwNewc1xs1Klmz8khV+c2V30xKSccNWGA6BWyTTog== dependencies: "@ardatan/aggregate-error" "0.0.6" - "@graphql-tools/batch-execute" "^7.0.0" + "@graphql-tools/batch-execute" "^7.1.0" "@graphql-tools/schema" "^7.0.0" - "@graphql-tools/utils" "^7.1.6" + "@graphql-tools/utils" "^7.7.1" dataloader "2.0.0" is-promise "4.0.0" - tslib "~2.1.0" + tslib "~2.2.0" "@graphql-tools/graphql-file-loader@^6.0.0": version "6.2.7" @@ -1248,12 +1256,12 @@ valid-url "1.0.9" "@graphql-tools/merge@^6.0.0", "@graphql-tools/merge@^6.2.9": - version "6.2.10" - resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-6.2.10.tgz#cadb37b1bed786cba1b3c6f728c5476a164e153d" - integrity sha512-dM3n37PcslvhOAkCz7Cwk0BfoiSVKXGmCX+VMZkATbXk/0vlxUfNEpVfA5yF4IkP27F04SzFQSaNrbD0W2Rszw== + version "6.2.11" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-6.2.11.tgz#398f6c5fb6498fe0b5f062c65cf648c0e4a57e9c" + integrity sha512-temQABWkDTZb/qJwcIdrEbyJ5WkhaWZQeYxiuxGqZWlIOoFkYfqzfAP2qKl2Ry+ZkN+Q/Yozr1/ap//xjpwAlA== dependencies: "@graphql-tools/schema" "^7.0.0" - "@graphql-tools/utils" "^7.5.0" + "@graphql-tools/utils" "^7.7.0" tslib "~2.1.0" "@graphql-tools/schema@^7.0.0", "@graphql-tools/schema@^7.1.2": @@ -1265,27 +1273,27 @@ tslib "~2.1.0" "@graphql-tools/url-loader@^6.0.0": - version "6.8.1" - resolved "https://registry.yarnpkg.com/@graphql-tools/url-loader/-/url-loader-6.8.1.tgz#cbfbe20f1a1bdeb9a4704e37b8286026d228920b" - integrity sha512-iE/y9IAu0cZYL7o9IIDdGm5WjxacN25nGgVqjZINYlisW/wyuBxng7DMJBAp6yM6gkxkCpMno1ljA/52MXzVPQ== + version "6.8.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/url-loader/-/url-loader-6.8.2.tgz#a62b3e1988b4c49c6c488aaba66b1c7078886023" + integrity sha512-YzsXSCOwlSj8UqOMhQThPzgEChgS/MonyWV7f0WKmN9gAT/f3fPaUcYhVamsH0vGbvTkfNM4JdoZO/39amRs5Q== dependencies: "@graphql-tools/delegate" "^7.0.1" "@graphql-tools/utils" "^7.1.5" "@graphql-tools/wrap" "^7.0.4" - "@types/websocket" "1.0.1" - cross-fetch "3.0.6" - eventsource "1.0.7" + "@types/websocket" "1.0.2" + cross-fetch "3.1.1" + eventsource "1.1.0" extract-files "9.0.0" form-data "4.0.0" graphql-upload "^11.0.0" - graphql-ws "4.1.5" + graphql-ws "4.2.2" is-promise "4.0.0" isomorphic-ws "4.0.1" sse-z "0.3.0" sync-fetch "0.3.0" tslib "~2.1.0" valid-url "1.0.9" - ws "7.4.3" + ws "7.4.4" "@graphql-tools/utils@^6.0.0": version "6.2.4" @@ -1296,10 +1304,10 @@ camel-case "4.1.1" tslib "~2.0.1" -"@graphql-tools/utils@^7.0.0", "@graphql-tools/utils@^7.0.2", "@graphql-tools/utils@^7.1.2", "@graphql-tools/utils@^7.1.5", "@graphql-tools/utils@^7.1.6", "@graphql-tools/utils@^7.2.1", "@graphql-tools/utils@^7.5.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-7.6.0.tgz#ac570a2b5a9bcd5d6446995f58ba22609e01ca7d" - integrity sha512-YCZDDdhfb4Yhie0IH031eGdvQG8C73apDuNg6lqBNbauNw45OG/b8wi3+vuMiDnJTJN32GQUb1Gt9gxDKoRDKw== +"@graphql-tools/utils@^7.0.0", "@graphql-tools/utils@^7.0.2", "@graphql-tools/utils@^7.1.2", "@graphql-tools/utils@^7.1.5", "@graphql-tools/utils@^7.2.1", "@graphql-tools/utils@^7.5.0", "@graphql-tools/utils@^7.7.0", "@graphql-tools/utils@^7.7.1": + version "7.7.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-7.7.1.tgz#81f32cb4819b34b3a378d51ab2cd60935977f0b4" + integrity sha512-SFT4/dTfrwWer1wSOLU+jqgv3oa/xTR8q+MiNbE9nCH2FXyMsqIOaXKm9wHfKIWFWHozqBdcnwFkQZrdD7H2TQ== dependencies: "@ardatan/aggregate-error" "0.0.6" camel-case "4.1.2" @@ -1752,9 +1760,9 @@ source-map "^0.7.3" "@popperjs/core@^2.5.3": - version "2.9.1" - resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.9.1.tgz#7f554e7368c9ab679a11f4a042ca17149d70cf12" - integrity sha512-DvJbbn3dUgMxDnJLH+RZQPnXak1h4ZVYQ7CWiFWjQwBFkVajT4rfw2PdpHLTSTwxrYfnoEXkuBiwkDm6tPMQeA== + version "2.9.2" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.9.2.tgz#adea7b6953cbb34651766b0548468e743c6a2353" + integrity sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q== "@restart/context@^2.1.4": version "2.1.4" @@ -1810,9 +1818,9 @@ escape-string-regexp "^4.0.0" "@sindresorhus/transliterate@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@sindresorhus/transliterate/-/transliterate-0.1.1.tgz#779b31244781d3c898f185b61d58c89e7c782674" - integrity sha512-QSdIQ5keUFAZ3KLbfbsntW39ox0Ym8183RqTwBq/ZEFoN3NQAtGV+qWaNdzKpIDHgj9J2CQ2iNDRVU11Zyr7MQ== + version "0.1.2" + resolved "https://registry.yarnpkg.com/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz#ffce368271d153550e87de81486004f2637425af" + integrity sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w== dependencies: escape-string-regexp "^2.0.0" lodash.deburr "^4.1.0" @@ -1907,14 +1915,19 @@ "@types/estree" "*" "@types/eslint@*", "@types/eslint@^7.2.6": - version "7.2.7" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.7.tgz#f7ef1cf0dceab0ae6f9a976a0a9af14ab1baca26" - integrity sha512-EHXbc1z2GoQRqHaAT7+grxlTJ3WE2YNeD6jlpPoRc83cCoThRY+NUWjCUZaYmk51OICkPXn2hhphcWcWXgNW0Q== + version "7.2.8" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.8.tgz#45cd802380fcc352e5680e1781d43c50916f12ee" + integrity sha512-RTKvBsfz0T8CKOGZMfuluDNyMFHnu5lvNr4hWEsQeHXH6FcmIDIozOyWMh36nLGMwVd5UFNXC2xztA8lln22MQ== dependencies: "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^0.0.46": +"@types/estree@*": + version "0.0.47" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.47.tgz#d7a51db20f0650efec24cd04994f523d93172ed4" + integrity sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg== + +"@types/estree@^0.0.46": version "0.0.46" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe" integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg== @@ -2020,9 +2033,9 @@ "@types/unist" "*" "@types/minimatch@*", "@types/minimatch@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21" + integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA== "@types/mkdirp@^0.5.2": version "0.5.2" @@ -2032,17 +2045,17 @@ "@types/node" "*" "@types/node-fetch@2": - version "2.5.8" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.8.tgz#e199c835d234c7eb0846f6618012e558544ee2fb" - integrity sha512-fbjI6ja0N5ZA8TV53RUqzsKNkl9fv8Oj3T7zxW7FGv1GSH7gwJaNF8dzCjrqKaxKeUpTz4yT1DaJFq/omNpGfw== + version "2.5.10" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.10.tgz#9b4d4a0425562f9fcea70b12cb3fcdd946ca8132" + integrity sha512-IpkX0AasN44hgEad0gEF/V6EgR5n69VEqPEgnmoM8GsIGro3PowbWs4tR6IhxUTyPLpOn+fiGG6nrQhcmoCuIQ== dependencies: "@types/node" "*" form-data "^3.0.0" "@types/node@*", "@types/node@^14.14.10": - version "14.14.35" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.35.tgz#42c953a4e2b18ab931f72477e7012172f4ffa313" - integrity sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag== + version "14.14.37" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.37.tgz#a3dd8da4eb84a996c36e331df98d82abd76b516e" + integrity sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw== "@types/node@^8.5.7": version "8.10.66" @@ -2151,10 +2164,10 @@ resolved "https://registry.yarnpkg.com/@types/warning/-/warning-3.0.0.tgz#0d2501268ad8f9962b740d387c4654f5f8e23e52" integrity sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI= -"@types/websocket@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.1.tgz#039272c196c2c0e4868a0d8a1a27bbb86e9e9138" - integrity sha512-f5WLMpezwVxCLm1xQe/kdPpQIOmL0TXYx2O15VYfYzc7hTIdxiOoOvez+McSIw3b7z/1zGovew9YSL7+h4h7/Q== +"@types/websocket@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.2.tgz#d2855c6a312b7da73ed16ba6781815bf30c6187a" + integrity sha512-B5m9aq7cbbD/5/jThEr33nUY8WEfVi6A2YKCTOvw5Ldy7mtsOkqRvGjnzy6g7iMMDsgu7xREuCzqATLDLQVKcQ== dependencies: "@types/node" "*" @@ -2176,12 +2189,12 @@ integrity sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw== "@typescript-eslint/eslint-plugin@^4.15.2": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.18.0.tgz#50fbce93211b5b690895d20ebec6fe8db48af1f6" - integrity sha512-Lzkc/2+7EoH7+NjIWLS2lVuKKqbEmJhtXe3rmfA8cyiKnZm3IfLf51irnBcmow8Q/AptVV0XBZmBJKuUJTe6cQ== + version "4.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.21.0.tgz#3fce2bfa76d95c00ac4f33dff369cb593aab8878" + integrity sha512-FPUyCPKZbVGexmbCFI3EQHzCZdy2/5f+jv6k2EDljGdXSRc0cKvbndd2nHZkSLqCNOPk0jB6lGzwIkglXcYVsQ== dependencies: - "@typescript-eslint/experimental-utils" "4.18.0" - "@typescript-eslint/scope-manager" "4.18.0" + "@typescript-eslint/experimental-utils" "4.21.0" + "@typescript-eslint/scope-manager" "4.21.0" debug "^4.1.1" functional-red-black-tree "^1.0.1" lodash "^4.17.15" @@ -2189,60 +2202,60 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.18.0.tgz#ed6c955b940334132b17100d2917449b99a91314" - integrity sha512-92h723Kblt9JcT2RRY3QS2xefFKar4ZQFVs3GityOKWQYgtajxt/tuXIzL7sVCUlM1hgreiV5gkGYyBpdOwO6A== +"@typescript-eslint/experimental-utils@4.21.0": + version "4.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.21.0.tgz#0b0bb7c15d379140a660c003bdbafa71ae9134b6" + integrity sha512-cEbgosW/tUFvKmkg3cU7LBoZhvUs+ZPVM9alb25XvR0dal4qHL3SiUqHNrzoWSxaXA9gsifrYrS1xdDV6w/gIA== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.18.0" - "@typescript-eslint/types" "4.18.0" - "@typescript-eslint/typescript-estree" "4.18.0" + "@typescript-eslint/scope-manager" "4.21.0" + "@typescript-eslint/types" "4.21.0" + "@typescript-eslint/typescript-estree" "4.21.0" eslint-scope "^5.0.0" eslint-utils "^2.0.0" "@typescript-eslint/parser@^4.15.2": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.18.0.tgz#a211edb14a69fc5177054bec04c95b185b4dde21" - integrity sha512-W3z5S0ZbecwX3PhJEAnq4mnjK5JJXvXUDBYIYGoweCyWyuvAKfGHvzmpUzgB5L4cRBb+cTu9U/ro66dx7dIimA== + version "4.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.21.0.tgz#a227fc2af4001668c3e3f7415d4feee5093894c1" + integrity sha512-eyNf7QmE5O/l1smaQgN0Lj2M/1jOuNg2NrBm1dqqQN0sVngTLyw8tdCbih96ixlhbF1oINoN8fDCyEH9SjLeIA== dependencies: - "@typescript-eslint/scope-manager" "4.18.0" - "@typescript-eslint/types" "4.18.0" - "@typescript-eslint/typescript-estree" "4.18.0" + "@typescript-eslint/scope-manager" "4.21.0" + "@typescript-eslint/types" "4.21.0" + "@typescript-eslint/typescript-estree" "4.21.0" debug "^4.1.1" -"@typescript-eslint/scope-manager@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.18.0.tgz#d75b55234c35d2ff6ac945758d6d9e53be84a427" - integrity sha512-olX4yN6rvHR2eyFOcb6E4vmhDPsfdMyfQ3qR+oQNkAv8emKKlfxTWUXU5Mqxs2Fwe3Pf1BoPvrwZtwngxDzYzQ== +"@typescript-eslint/scope-manager@4.21.0": + version "4.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.21.0.tgz#c81b661c4b8af1ec0c010d847a8f9ab76ab95b4d" + integrity sha512-kfOjF0w1Ix7+a5T1knOw00f7uAP9Gx44+OEsNQi0PvvTPLYeXJlsCJ4tYnDj5PQEYfpcgOH5yBlw7K+UEI9Agw== dependencies: - "@typescript-eslint/types" "4.18.0" - "@typescript-eslint/visitor-keys" "4.18.0" + "@typescript-eslint/types" "4.21.0" + "@typescript-eslint/visitor-keys" "4.21.0" -"@typescript-eslint/types@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.18.0.tgz#bebe323f81f2a7e2e320fac9415e60856267584a" - integrity sha512-/BRociARpj5E+9yQ7cwCF/SNOWwXJ3qhjurMuK2hIFUbr9vTuDeu476Zpu+ptxY2kSxUHDGLLKy+qGq2sOg37A== +"@typescript-eslint/types@4.21.0": + version "4.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.21.0.tgz#abdc3463bda5d31156984fa5bc316789c960edef" + integrity sha512-+OQaupjGVVc8iXbt6M1oZMwyKQNehAfLYJJ3SdvnofK2qcjfor9pEM62rVjBknhowTkh+2HF+/KdRAc/wGBN2w== -"@typescript-eslint/typescript-estree@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.18.0.tgz#756d3e61da8c16ab99185532c44872f4cd5538cb" - integrity sha512-wt4xvF6vvJI7epz+rEqxmoNQ4ZADArGQO9gDU+cM0U5fdVv7N+IAuVoVAoZSOZxzGHBfvE3XQMLdy+scsqFfeg== +"@typescript-eslint/typescript-estree@4.21.0": + version "4.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.21.0.tgz#3817bd91857beeaeff90f69f1f112ea58d350b0a" + integrity sha512-ZD3M7yLaVGVYLw4nkkoGKumb7Rog7QID9YOWobFDMQKNl+vPxqVIW/uDk+MDeGc+OHcoG2nJ2HphwiPNajKw3w== dependencies: - "@typescript-eslint/types" "4.18.0" - "@typescript-eslint/visitor-keys" "4.18.0" + "@typescript-eslint/types" "4.21.0" + "@typescript-eslint/visitor-keys" "4.21.0" debug "^4.1.1" globby "^11.0.1" is-glob "^4.0.1" semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/visitor-keys@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.18.0.tgz#4e6fe2a175ee33418318a029610845a81e2ff7b6" - integrity sha512-Q9t90JCvfYaN0OfFUgaLqByOfz8yPeTAdotn/XYNm5q9eHax90gzdb+RJ6E9T5s97Kv/UHWKERTmqA0jTKAEHw== +"@typescript-eslint/visitor-keys@4.21.0": + version "4.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.21.0.tgz#990a9acdc124331f5863c2cf21c88ba65233cd8d" + integrity sha512-dH22dROWGi5Z6p+Igc8bLVLmwy7vEe8r+8c+raPQU0LxgogPUrRAtRGtvBWmlr9waTu3n+QLt/qrS/hWzk1x5w== dependencies: - "@typescript-eslint/types" "4.18.0" + "@typescript-eslint/types" "4.21.0" eslint-visitor-keys "^2.0.0" "@webassemblyjs/ast@1.11.0": @@ -2384,7 +2397,7 @@ accepts@^1.3.7, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-jsx@^5.3.1: +acorn-jsx@^5.0.0, acorn-jsx@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== @@ -2394,7 +2407,7 @@ acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.4: +acorn@^8.0.0, acorn@^8.0.4: version "8.1.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.1.0.tgz#52311fd7037ae119cbb134309e901aa46295b3fe" integrity sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA== @@ -2445,10 +2458,10 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^7.0.2: - version "7.2.1" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.2.1.tgz#a5ac226171912447683524fa2f1248fcf8bac83d" - integrity sha512-+nu0HDv7kNSOua9apAVc979qd932rrZeb3WOvoiD31A/p1mIE5/9bN2027pE2rOPYEdS3UHzsvof4hY+lM9/WQ== +ajv@^8.0.1: + version "8.0.5" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.0.5.tgz#f07d6fdeffcdbb80485570ce3f1bc845fcc812b9" + integrity sha512-RkiLa/AeJx7+9OvniQ/qeWu0w74A8DiPPBclQ6ji3ZQkv5KamO+QGpqmi7O4JIw3rHGUXZ6CoP9tsAkn3gyazg== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -2536,11 +2549,11 @@ ansi-escapes@^3.1.0: integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-escapes@^4.2.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: - type-fest "^0.11.0" + type-fest "^0.21.3" ansi-html@0.0.7, ansi-html@^0.0.7: version "0.0.7" @@ -2600,9 +2613,9 @@ anymatch@^2.0.0: normalize-path "^2.1.1" anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" @@ -2682,6 +2695,11 @@ array-differ@^3.0.0: resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== +array-filter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" + integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= + array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -2702,7 +2720,7 @@ array-flatten@^3.0.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-3.0.0.tgz#6428ca2ee52c7b823192ec600fa3ed2f157cd541" integrity sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA== -array-includes@^3.1.1, array-includes@^3.1.2: +array-includes@^3.1.1, array-includes@^3.1.2, array-includes@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== @@ -2749,7 +2767,7 @@ array.prototype.flat@^1.2.3: define-properties "^1.1.3" es-abstract "^1.18.0-next.1" -array.prototype.flatmap@^1.2.3: +array.prototype.flatmap@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== @@ -2845,10 +2863,17 @@ autoprefixer@^10.2.4: normalize-range "^0.1.2" postcss-value-parser "^4.1.0" +available-typed-arrays@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" + integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== + dependencies: + array-filter "^1.0.0" + axe-core@^4.0.2: - version "4.1.3" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.1.3.tgz#64a4c85509e0991f5168340edc4bedd1ceea6966" - integrity sha512-vwPpH4Aj4122EW38mxO/fxhGKtwWTMLDIJfZ1He0Edbtjcfna/R3YB67yVhezUMzqc3Jr3+Ii50KRntlENL4xQ== + version "4.1.4" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.1.4.tgz#f19cd99a84ee32a318b9c5b5bb8ed373ad94f143" + integrity sha512-Pdgfv6iP0gNx9ejRGa3zE7Xgkj/iclXqLfe7BnatdZz0QnLZ3jrRHUVH8wNSdN68w05Sk3ShGTb3ydktMTooig== axios@^0.21.0, axios@^0.21.1: version "0.21.1" @@ -2919,44 +2944,44 @@ babel-plugin-macros@^2.8.0: cosmiconfig "^6.0.0" resolve "^1.12.0" -babel-plugin-polyfill-corejs2@^0.1.4: - version "0.1.10" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz#a2c5c245f56c0cac3dbddbf0726a46b24f0f81d1" - integrity sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA== +babel-plugin-polyfill-corejs2@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz#686775bf9a5aa757e10520903675e3889caeedc4" + integrity sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg== dependencies: - "@babel/compat-data" "^7.13.0" - "@babel/helper-define-polyfill-provider" "^0.1.5" + "@babel/compat-data" "^7.13.11" + "@babel/helper-define-polyfill-provider" "^0.2.0" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.1.3: - version "0.1.7" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz#80449d9d6f2274912e05d9e182b54816904befd0" - integrity sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw== +babel-plugin-polyfill-corejs3@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz#f4b4bb7b19329827df36ff56f6e6d367026cb7a2" + integrity sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.1.5" - core-js-compat "^3.8.1" + "@babel/helper-define-polyfill-provider" "^0.2.0" + core-js-compat "^3.9.1" -babel-plugin-polyfill-regenerator@^0.1.2: - version "0.1.6" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz#0fe06a026fe0faa628ccc8ba3302da0a6ce02f3f" - integrity sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg== +babel-plugin-polyfill-regenerator@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz#853f5f5716f4691d98c84f8069c7636ea8da7ab8" + integrity sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.1.5" + "@babel/helper-define-polyfill-provider" "^0.2.0" -babel-plugin-remove-graphql-queries@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-3.1.0.tgz#03e80d40da51c0240e0e9296e7788c25cca284c0" - integrity sha512-SRQLdxRg74aO8YWi/asxE31qn9bzPzSk28mJ6tHoT7U3Y2VPWhTVCLRXALLlRZEYFyLI4RJKSMT6LdKzN9a79Q== +babel-plugin-remove-graphql-queries@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-3.2.0.tgz#63e044ee1d299679a9b8180f6b111a3769b7a79d" + integrity sha512-cjH42CKC9NjRLZbnPDUucNhnZ2Rq6gfUSLBP2UGfz9KYk/Fi+lzAVU3W+0KUV2DntyoLuV86YwC4mI2QsS3yag== babel-plugin-transform-react-remove-prop-types@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== -babel-preset-gatsby@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-1.1.0.tgz#53176fd26bb798d91b0891d9dffcde5b1a8558cd" - integrity sha512-GM21xzM1mlUvCmA4pjJxyG3Q2abcrIn1wfGgCBUfw3mwHuy/RibF0L9QzpZUcQTRWy82oAjJteA0qaTLFhOD+g== +babel-preset-gatsby@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-1.2.0.tgz#2f90fc9094ba5710d22cbe736ed62fefd292cf7a" + integrity sha512-ChqM9ahcr9ea/wO+rS3y8z9IRlX9yodxq3c+V6NmYCnZkI/SwB6qp5WEC3FCu3U4XUOrvhAQD+PK2N8r1C4lHA== dependencies: "@babel/plugin-proposal-class-properties" "^7.12.1" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" @@ -2971,8 +2996,8 @@ babel-preset-gatsby@^1.1.0: babel-plugin-dynamic-import-node "^2.3.3" babel-plugin-macros "^2.8.0" babel-plugin-transform-react-remove-prop-types "^0.4.24" - gatsby-core-utils "^2.1.0" - gatsby-legacy-polyfills "^1.1.0" + gatsby-core-utils "^2.2.0" + gatsby-legacy-polyfills "^1.2.0" backo2@~1.0.2: version "1.0.2" @@ -2990,9 +3015,9 @@ balance-text@^3.3.0: integrity sha512-UqP+MT0lQhMAdFGyHwRXrtfto6ndzelPe1Az94ZOcFsui7+RIwM9aNcQPRsIGOwHptm7h7OqeYX57CCLgWNXQA== balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== base64-arraybuffer@0.1.4: version "0.1.4" @@ -3123,12 +3148,12 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -bl@4.1.0, bl@^4.0.0, bl@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== +bl@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-5.0.0.tgz#6928804a41e9da9034868e1c50ca88f21f57aea2" + integrity sha512-8vxFNZ0pflFfi0WXA3WQXlj6CaMEwsmh63I1CNp0q+wWv8sD0ARx1KovSQd0l2GkwrMIOyedq0EF1FxI+RCZLQ== dependencies: - buffer "^5.5.0" + buffer "^6.0.3" inherits "^2.0.4" readable-stream "^3.4.0" @@ -3140,6 +3165,15 @@ bl@^1.0.0: readable-stream "^2.3.5" safe-buffer "^5.1.1" +bl@^4.0.0, bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + bluebird@^3.0.5, bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -3203,9 +3237,9 @@ boxen@^4.2.0: widest-line "^3.1.0" boxen@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.0.0.tgz#64fe9b16066af815f51057adcc800c3730120854" - integrity sha512-5bvsqw+hhgUi3oYGK0Vf4WpIkyemp60WBInn7+WNfoISzAqk/HX4L7WNROq38E6UR/y3YADpv6pEm4BfkeEAdA== + version "5.0.1" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.0.1.tgz#657528bdd3f59a772b8279b831f27ec2c744664b" + integrity sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA== dependencies: ansi-align "^3.0.0" camelcase "^6.2.0" @@ -3314,6 +3348,14 @@ buffer@^5.2.0, buffer@^5.2.1, buffer@^5.5.0, buffer@^5.7.0: base64-js "^1.3.1" ieee754 "^1.1.13" +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + busboy@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.3.1.tgz#170899274c5bf38aae27d5c62b71268cd585fd1b" @@ -3332,9 +3374,9 @@ bytes@3.1.0: integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== cacache@^15.0.5: - version "15.0.5" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" - integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== + version "15.0.6" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.6.tgz#65a8c580fda15b59150fb76bf3f3a8e45d583099" + integrity sha512-g1WYDMct/jzW+JdWEyjaX2zoBkZ6ZT9VpOyp2I/VMtDsNLffNat3kqPFfi1eDRSK9/SuKGyORDHcQMcPF8sQ/w== dependencies: "@npmcli/move-file" "^1.0.1" chownr "^2.0.0" @@ -3350,7 +3392,7 @@ cacache@^15.0.5: p-map "^4.0.0" promise-inflight "^1.0.1" rimraf "^3.0.2" - ssri "^8.0.0" + ssri "^8.0.1" tar "^6.0.2" unique-filename "^1.1.1" @@ -3520,9 +3562,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001181, caniuse-lite@^1.0.30001196: - version "1.0.30001202" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001202.tgz#4cb3bd5e8a808e8cd89e4e66c549989bc8137201" - integrity sha512-ZcijQNqrcF8JNLjzvEiXqX4JUYxoZa7Pvcsd9UD8Kz4TvhTonOSNRsK+qtvpVL4l6+T1Rh4LFtLfnNWg6BGWCQ== + version "1.0.30001208" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001208.tgz#a999014a35cebd4f98c405930a057a0d75352eb9" + integrity sha512-OE5UE4+nBOro8Dyvv0lfx+SRtfVIOM9uhKqFmJeUbGriqhhStgp1A0OyBpgy3OUF8AhYCT+PVwPC1gMl2ZcQMA== caw@^2.0.0, caw@^2.0.1: version "2.0.1" @@ -3539,7 +3581,7 @@ ccount@^1.0.0, ccount@^1.0.3: resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== -chalk@2.4.2, chalk@^2.0, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3567,7 +3609,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.1.0: +chalk@^4.0, chalk@^4.0.0, chalk@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== @@ -3737,9 +3779,9 @@ class-utils@^0.3.5: static-extend "^0.1.1" classnames@^2.2.5, classnames@^2.2.6: - version "2.2.6" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" - integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== + version "2.3.1" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" + integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== clean-stack@^2.0.0: version "2.2.0" @@ -4031,9 +4073,9 @@ content-type@^1.0.4, content-type@~1.0.4: integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== contentful-management@^7.5.1: - version "7.11.0" - resolved "https://registry.yarnpkg.com/contentful-management/-/contentful-management-7.11.0.tgz#3202c68c603e781fbcdd9286bebc3bd0c847c9d7" - integrity sha512-ewRMdKe1BpJ3ySAVBaIjOPsaVi9tP9cWd6h04foS+1u4HrAG23IKZsD3ZPl4jrArKerLDetvXAX0S446/DVd1g== + version "7.14.0" + resolved "https://registry.yarnpkg.com/contentful-management/-/contentful-management-7.14.0.tgz#d9eafef7037a53938128099bec6657b657f7191c" + integrity sha512-6i3lDp+1S+DZc7nv+dYGKqZ/GbhbiJakp4fS0zqCtuaQb+80k9+9a/DO1/M3QmS7t7urITYiwTVgQl8hvqAFFg== dependencies: axios "^0.21.0" contentful-sdk-core "^6.7.0" @@ -4107,23 +4149,23 @@ core-js-compat@3.9.0: browserslist "^4.16.3" semver "7.0.0" -core-js-compat@^3.8.1, core-js-compat@^3.9.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.9.1.tgz#4e572acfe90aff69d76d8c37759d21a5c59bb455" - integrity sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA== +core-js-compat@^3.9.0, core-js-compat@^3.9.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.10.1.tgz#62183a3a77ceeffcc420d907a3e6fc67d9b27f1c" + integrity sha512-ZHQTdTPkqvw2CeHiZC970NNJcnwzT6YIueDMASKt+p3WbZsLXOcoD392SkcWhkC0wBBHhlfhqGKKsNCQUozYtg== dependencies: browserslist "^4.16.3" semver "7.0.0" core-js-pure@^3.0.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.9.1.tgz#677b322267172bd490e4464696f790cbc355bec5" - integrity sha512-laz3Zx0avrw9a4QEIdmIblnVuJz8W51leY9iLThatCsFawWxC3sE4guASC78JbCin+DkwMpCdp1AVAuzL/GN7A== + version "3.10.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.10.1.tgz#28642697dfcf02e0fd9f4d9891bd03a22df28ecf" + integrity sha512-PeyJH2SE0KuxY5eCGNWA+W+CeDpB6M1PN3S7Am7jSv/Ttuxz2SnWbIiVQOn/TDaGaGtxo8CRWHkXwJscbUHtVw== core-js@^3.6.5, core-js@^3.9.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.9.1.tgz#cec8de593db8eb2a85ffb0dbdeb312cb6e5460ae" - integrity sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg== + version "3.10.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.10.1.tgz#e683963978b6806dcc6c0a4a8bd4ab0bdaf3f21a" + integrity sha512-pwCxEXnj27XG47mu7SXAwhLP3L5CrlvCB91ANUkIz40P27kUcvNfSdvyZJ9CLHiVoKSp+TTChMQMSKQEH/IQxA== core-util-is@~1.0.0: version "1.0.2" @@ -4177,20 +4219,20 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -create-gatsby@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/create-gatsby/-/create-gatsby-1.1.0.tgz#91a381886d5127d1f0c7ecf52eaf6fd2e1b9b169" - integrity sha512-AM9JNlbIOkTinGNiG7J8AnCCykZxJfVENlv1vF7hS3RqGsKeZlv4PADTLCdkeIUhaLcjEiEVv7HbyfK8dA2eoA== +create-gatsby@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-gatsby/-/create-gatsby-1.2.0.tgz#c3ff032cd76a16c8f7d9a10cfb960eea9acfe022" + integrity sha512-CXvs1wxGqU1m8PMGmcuJfi9x8koFZZu0JwQr+e7MNnUL33wQEnaLSdwFDBUT4cEqFVWXWAcGErBOZT7/XEgh7Q== create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cross-fetch@3.0.6: - version "3.0.6" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.6.tgz#3a4040bc8941e653e0e9cf17f29ebcd177d3365c" - integrity sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ== +cross-fetch@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.1.tgz#a7ed5a9201d46223d805c5e9ecdc23ea600219eb" + integrity sha512-eIF+IHQpRzoGd/0zPrwQmHwDC90mdvjk+hcbYhKoaRrEk4GEIDqdjs/MljmdPPoHTQudbmWS+f0hZsEpFaEvWw== dependencies: node-fetch "2.6.1" @@ -4242,9 +4284,9 @@ css-declaration-sorter@^4.0.1: timsort "^0.3.0" css-loader@^5.0.1: - version "5.1.3" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.1.3.tgz#87f6fc96816b20debe3cf682f85c7e56a963d0d1" - integrity sha512-CoPZvyh8sLiGARK3gqczpfdedbM74klGWurF2CsNZ2lhNaXdLIUks+3Mfax3WBeRuHoglU+m7KG/+7gY6G4aag== + version "5.2.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.0.tgz#a9ecda190500863673ce4434033710404efbff00" + integrity sha512-MfRo2MjEeLXMlUkeUwN71Vx5oc6EJnx5UQ4Yi9iUtYQvrPtwLUucYptz0hc6n++kdNcyF5olYBS4vPjJDAcLkw== dependencies: camelcase "^6.2.0" cssesc "^3.0.0" @@ -4259,7 +4301,7 @@ css-loader@^5.0.1: schema-utils "^3.0.0" semver "^7.3.4" -css-minimizer-webpack-plugin@^1.2.0: +css-minimizer-webpack-plugin@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-1.3.0.tgz#d867b4a54ca9920125b30263505e8cca72bc8cf1" integrity sha512-jFa0Siplmfef4ndKglpVaduY47oHQwioAOEGK0f0vAX0s+vc+SmP6cCMoc+8Adau5600RnOEld5VVdC8CQau7w== @@ -4324,9 +4366,9 @@ css-tree@1.0.0-alpha.37: source-map "^0.6.1" css-tree@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.2.tgz#9ae393b5dafd7dae8a622475caec78d3d8fbd7b5" - integrity sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ== + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== dependencies: mdn-data "2.0.14" source-map "^0.6.1" @@ -4371,10 +4413,10 @@ cssfilter@0.0.10: resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" integrity sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4= -cssnano-preset-default@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" - integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== +cssnano-preset-default@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff" + integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== dependencies: css-declaration-sorter "^4.0.1" cssnano-util-raw-cache "^4.0.1" @@ -4404,7 +4446,7 @@ cssnano-preset-default@^4.0.7: postcss-ordered-values "^4.1.2" postcss-reduce-initial "^4.0.3" postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.2" + postcss-svgo "^4.0.3" postcss-unique-selectors "^4.0.1" cssnano-util-get-arguments@^4.0.0: @@ -4430,12 +4472,12 @@ cssnano-util-same-parent@^4.0.0: integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== cssnano@^4.1.10: - version "4.1.10" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" - integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + version "4.1.11" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99" + integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== dependencies: cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.7" + cssnano-preset-default "^4.0.8" is-resolvable "^1.0.0" postcss "^7.0.0" @@ -4482,9 +4524,9 @@ dataloader@^1.4.0: integrity sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw== date-fns@^2.14.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.19.0.tgz#65193348635a28d5d916c43ec7ce6fbd145059e1" - integrity sha512-X3bf2iTPgCAQp9wvjOQytnf5vO5rESYRXlPIVcgSbtT5OTScPcsf9eZU+B/YIkKAtYr5WeCii58BgATrNitlWg== + version "2.20.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.20.0.tgz#df00ba9177fbea22d88010b5844ecc91e9e03ceb" + integrity sha512-nmA7y6aDH5+fknfJ0G77HQzUSfTPpq4ifq+c9blP9d+X9zs3kNjxC+t3pcbBMGTp262a6PJB3RVjLlxIgoMI+Q== debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: version "2.6.9" @@ -4500,7 +4542,7 @@ debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.6, debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@~4.3.1: +debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@~4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== @@ -4610,6 +4652,27 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" +deep-equal@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.5.tgz#55cd2fe326d83f9cbf7261ef0e060b3f724c5cb9" + integrity sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw== + dependencies: + call-bind "^1.0.0" + es-get-iterator "^1.1.1" + get-intrinsic "^1.0.1" + is-arguments "^1.0.4" + is-date-object "^1.0.2" + is-regex "^1.1.1" + isarray "^2.0.5" + object-is "^1.1.4" + object-keys "^1.1.1" + object.assign "^4.1.2" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.3" + which-boxed-primitive "^1.0.1" + which-collection "^1.0.1" + which-typed-array "^1.1.2" + deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -4620,7 +4683,7 @@ deep-is@^0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -deepmerge@^4.0.0: +deepmerge@^4.0, deepmerge@^4.0.0: version "4.2.2" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== @@ -4909,10 +4972,10 @@ domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== -domelementtype@^2.0.1, domelementtype@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" - integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== +domelementtype@^2.0.1, domelementtype@^2.1.0, domelementtype@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" + integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== domhandler@^2.3.0: version "2.4.2" @@ -4928,12 +4991,12 @@ domhandler@^3.0.0: dependencies: domelementtype "^2.0.1" -domhandler@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.0.0.tgz#01ea7821de996d85f69029e81fa873c21833098e" - integrity sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA== +domhandler@^4.0.0, domhandler@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.1.0.tgz#c1d8d494d5ec6db22de99e46a149c2a4d23ddd43" + integrity sha512-/6/kmsGlMY4Tup/nGVutdrK9yQi4YjWVcVeoQmixpzjOUK1U7pQkvAPHBJeUxOgxF0J8f8lwCJSlCfD0V4CMGQ== dependencies: - domelementtype "^2.1.0" + domelementtype "^2.2.0" domutils@1.5.1: version "1.5.1" @@ -4952,13 +5015,13 @@ domutils@^1.5.1, domutils@^1.7.0: domelementtype "1" domutils@^2.0.0, domutils@^2.4.3, domutils@^2.4.4: - version "2.5.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.5.0.tgz#42f49cffdabb92ad243278b331fd761c1c2d3039" - integrity sha512-Ho16rzNMOFk2fPwChGh3D2D9OEHAfG19HgmRR2l+WLSsIstNsAYBzePH412bL0y5T44ejABIVfTHQ8nqi/tBCg== + version "2.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.5.1.tgz#9b8e84b5d9f788499ae77506ea832e9b4f9aa1c0" + integrity sha512-hO1XwHMGAthA/1KL7c83oip/6UWo3FlUNIuWiWKltoiQ5oCOiqths8KknvY2jpOohUoUgnwa/+Rm7UpwpSbY/Q== dependencies: dom-serializer "^1.0.1" - domelementtype "^2.0.1" - domhandler "^4.0.0" + domelementtype "^2.2.0" + domhandler "^4.1.0" dot-case@^2.1.0: version "2.1.1" @@ -5030,9 +5093,9 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.3.564, electron-to-chromium@^1.3.649: - version "1.3.690" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.690.tgz#54df63ec42fba6b8e9e05fe4be52caeeedb6e634" - integrity sha512-zPbaSv1c8LUKqQ+scNxJKv01RYFkVVF1xli+b+3Ty8ONujHjAMg+t/COmdZqrtnS1gT+g4hbSodHillymt1Lww== + version "1.3.710" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.710.tgz#b33d316e5d6de92b916e766d8a478d19796ffe11" + integrity sha512-b3r0E2o4yc7mNmBeJviejF1rEx49PUBi+2NPa7jHEX3arkAXnVgLhR0YmV8oi6/Qf3HH2a8xzQmCjHNH0IpXWQ== "emoji-regex@>=6.0.0 <=6.1.1": version "6.1.1" @@ -5077,9 +5140,9 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: once "^1.4.0" engine.io-client@~4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-4.1.2.tgz#823b4f005360321c41445fc23ce8ee028ef2e36b" - integrity sha512-1mwvwKYMa0AaCy+sPgvJ/SnKyO5MJZ1HEeXfA3Rm/KHkHGiYD5bQVq8QzvIrkI01FuVtOdZC5lWdRw1BGXB2NQ== + version "4.1.3" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-4.1.3.tgz#e0ea88aefe76a14cf4375513b194438be3c5e238" + integrity sha512-C3JYYyvna0FvSKOWGWpo0/EQ6MayO8uEKam1oedLZRpxLego9Fk6K3UH/Phieu1xPHauM7YqAygJ+6SraVc0Qg== dependencies: base64-arraybuffer "0.1.4" component-emitter "~1.3.0" @@ -5151,9 +5214,9 @@ envify@^4.0.0: through "~2.3.4" envinfo@^7.7.3: - version "7.7.4" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.4.tgz#c6311cdd38a0e86808c1c9343f667e4267c4a320" - integrity sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ== + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== eol@^0.9.1: version "0.9.1" @@ -5203,6 +5266,20 @@ es-abstract@^1.17.2, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: string.prototype.trimstart "^1.0.4" unbox-primitive "^1.0.0" +es-get-iterator@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.2.tgz#9234c54aba713486d7ebde0220864af5e2b283f7" + integrity sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.0" + has-symbols "^1.0.1" + is-arguments "^1.1.0" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.5" + isarray "^2.0.5" + es-module-lexer@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.4.1.tgz#dda8c6a14d8f340a24e34331e0fab0cb50438e0e" @@ -5312,9 +5389,9 @@ eslint-module-utils@^2.6.0: pkg-dir "^2.0.0" eslint-plugin-flowtype@^5.3.1: - version "5.4.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.4.0.tgz#a559526e56403cb97b470b524957fc526e2485fe" - integrity sha512-O0s0iTT5UxYuoOpHMLSIO2qZMyvrb9shhk1EM5INNGtJ2CffrfUmsnh6TVsnoT41fkXIEndP630WNovhoO87xQ== + version "5.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.6.0.tgz#9ddba1ce31990c53e144b3a545b7c74b1d164fd9" + integrity sha512-XbeDejiL+SecDInj9On/9D4EM31kUp6B3uWYsBH6Vsb2CfaFWiUHvosAZx1TafVjp6izLC7D3kpix1DIpDF4Qw== dependencies: lodash "^4.17.15" string-natural-compare "^3.0.1" @@ -5370,32 +5447,25 @@ eslint-plugin-react-hooks@^4.2.0: resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556" integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ== -eslint-plugin-react@^7.22.0: - version "7.22.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz#3d1c542d1d3169c45421c1215d9470e341707269" - integrity sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA== +eslint-plugin-react@^7.23.1: + version "7.23.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.23.1.tgz#f1a2e844c0d1967c822388204a8bc4dee8415b11" + integrity sha512-MvFGhZjI8Z4HusajmSw0ougGrq3Gs4vT/0WgwksZgf5RrLrRa2oYAw56okU4tZJl8+j7IYNuTM+2RnFEuTSdRQ== dependencies: - array-includes "^3.1.1" - array.prototype.flatmap "^1.2.3" + array-includes "^3.1.3" + array.prototype.flatmap "^1.2.4" doctrine "^2.1.0" has "^1.0.3" jsx-ast-utils "^2.4.1 || ^3.0.0" - object.entries "^1.1.2" - object.fromentries "^2.0.2" - object.values "^1.1.1" + minimatch "^3.0.4" + object.entries "^1.1.3" + object.fromentries "^2.0.4" + object.values "^1.1.3" prop-types "^15.7.2" - resolve "^1.18.1" - string.prototype.matchall "^4.0.2" + resolve "^2.0.0-next.3" + string.prototype.matchall "^4.0.4" -eslint-scope@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" - integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^5.0.0, eslint-scope@^5.1.1: +eslint-scope@^5.0.0, eslint-scope@^5.1.0, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -5420,10 +5490,10 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== -eslint-webpack-plugin@^2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.5.2.tgz#4ee17577d6392bf72048080a1678d6237183db81" - integrity sha512-ndD9chZ/kaGnjjx7taRg7c6FK/YKb29SSYzaLtPBIYLYJQmZtuKqtQbAvTS2ymiMQT6X0VW9vZIHK0KLstv93Q== +eslint-webpack-plugin@^2.5.3: + version "2.5.3" + resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.5.3.tgz#a125585a1d8bb9c939f2a920a9bc9be4a21cdb58" + integrity sha512-LewNevZf9ghDCxCGT6QltNWVi8KIYWc4LKcin8K9Azh1hypG7YAmobUDIU67fAPa+eMjRnU4rjEkLbYI1w5/UA== dependencies: "@types/eslint" "^7.2.6" arrify "^2.0.1" @@ -5432,9 +5502,9 @@ eslint-webpack-plugin@^2.5.2: schema-utils "^3.0.0" eslint@^7.20.0: - version "7.22.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.22.0.tgz#07ecc61052fec63661a2cab6bd507127c07adc6f" - integrity sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg== + version "7.23.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.23.0.tgz#8d029d252f6e8cf45894b4bee08f5493f8e94325" + integrity sha512-kqvNVbdkjzpFy0XOszNwjkKzZ+6TcwCQ/h+ozlcIWwaimBBuhlQ4nN6kbiM2L+OjDcznkTJxzYfRFH92sx4a0Q== dependencies: "@babel/code-frame" "7.12.11" "@eslint/eslintrc" "^0.4.0" @@ -5495,7 +5565,7 @@ esquery@^1.4.0: dependencies: estraverse "^5.1.0" -esrecurse@^4.1.0, esrecurse@^4.3.0: +esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== @@ -5512,6 +5582,11 @@ estraverse@^5.1.0, estraverse@^5.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== +estree-util-is-identifier-name@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-1.1.0.tgz#2e3488ea06d9ea2face116058864f6370b37456d" + integrity sha512-OVJZ3fGGt9By77Ix9NhaRbzfbDV/2rx9EP7YIDJTmsZSEc5kYn2vWcNccYyahJL2uAQZK2a5Or2i0wtIKTPoRQ== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -5557,10 +5632,10 @@ events@^3.2.0: resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -eventsource@1.0.7, eventsource@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" - integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== +eventsource@1.1.0, eventsource@^1.0.7: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.0.tgz#00e8ca7c92109e94b0ddf32dac677d841028cfaf" + integrity sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg== dependencies: original "^1.0.0" @@ -6177,10 +6252,10 @@ fs-minipass@^2.0.0: dependencies: minipass "^3.0.0" -fs-monkey@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.1.tgz#4a82f36944365e619f4454d9fff106553067b781" - integrity sha512-fcSa+wyTqZa46iWweI7/ZiUfegOZl0SG8+dltIwFXo7+zYU9J9kpS3NB6pZcSlJdhvIwp81Adx2XhZorncxiaA== +fs-monkey@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" + integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== fs.realpath@^1.0.0: version "1.0.0" @@ -6210,10 +6285,10 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -gatsby-cli@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/gatsby-cli/-/gatsby-cli-3.1.0.tgz#e67deb874d24c02b7d47a3fdf51f2d06bb2d50ae" - integrity sha512-SOEXePHvk+Lj3XezFOjmtidMUq39hRHQsDa9iAtMvFc6bJxVIm4oGMu59mUWijGEVTlL1kwMOY7kAq1DEEtfNA== +gatsby-cli@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/gatsby-cli/-/gatsby-cli-3.2.0.tgz#af279e0df295a11f644cd1433ed5b31800940597" + integrity sha512-MOj7LgwNX/O30LNdZ1WDUQ4Wiyn3uXFGND7QQepfWpaHvrgtposhy/vseAAR54N5pyehcdLhQkNQkbd4Zw9olA== dependencies: "@babel/code-frame" "^7.10.4" "@types/common-tags" "^1.8.0" @@ -6223,14 +6298,14 @@ gatsby-cli@^3.1.0: common-tags "^1.8.0" configstore "^5.0.1" convert-hrtime "^3.0.0" - create-gatsby "^1.1.0" + create-gatsby "^1.2.0" envinfo "^7.7.3" execa "^3.4.0" fs-exists-cached "^1.0.0" fs-extra "^8.1.0" - gatsby-core-utils "^2.1.0" - gatsby-recipes "^0.12.0" - gatsby-telemetry "^2.1.0" + gatsby-core-utils "^2.2.0" + gatsby-recipes "^0.13.0" + gatsby-telemetry "^2.2.0" hosted-git-info "^3.0.6" is-valid-path "^0.1.1" joi "^17.4.0" @@ -6254,10 +6329,10 @@ gatsby-cli@^3.1.0: yoga-layout-prebuilt "^1.9.6" yurnalist "^2.1.0" -gatsby-core-utils@^2.0.0, gatsby-core-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/gatsby-core-utils/-/gatsby-core-utils-2.1.0.tgz#634989bc3cde1c7add752fbdc3c6a3cdd8e23377" - integrity sha512-zBNZ4kypfgqrUWNGMQQCXZookssXWaTnLWmxM7TOz5Phjvr0NvQo/xpkUgVbuylkQDwprmg88oRdox8L3zMY9Q== +gatsby-core-utils@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/gatsby-core-utils/-/gatsby-core-utils-2.2.0.tgz#def804d0fc2acde605c5d4da3c1ffbfc9aaf4e2a" + integrity sha512-7T6aVJAj0u/VUg+zKOLuxyZLS/8KDQcDeEFCkKY0d7Pd4wV/QqKRLljr0TRVkivRZHXyWQI9fM3ox5DzfkHdCQ== dependencies: ci-info "2.0.0" configstore "^5.0.1" @@ -6268,55 +6343,56 @@ gatsby-core-utils@^2.0.0, gatsby-core-utils@^2.1.0: tmp "^0.2.1" xdg-basedir "^4.0.0" -gatsby-graphiql-explorer@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-1.1.0.tgz#00e4cfcad769363e6ea97cf6e36ff618c5e31923" - integrity sha512-+HqRSR3tkIAqMloEmLxpnfTpAWF9zHyRfPYw6nOhVmEkC75zNrT22XkFp9toitr0qdCVavpAJMhjBpypL9l3qQ== +gatsby-graphiql-explorer@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-1.2.0.tgz#5e8b64d876e56c288a23c7a7430e2d074aec0fea" + integrity sha512-2Ot6RstekslT6kzv28ovwwsRXIRbqLP8FkfjUql2ZrkothMXIGp4s1hl6e1RQ6qB7E+8HO0Xhgg85pmJD4cfOA== dependencies: "@babel/runtime" "^7.12.5" -gatsby-legacy-polyfills@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/gatsby-legacy-polyfills/-/gatsby-legacy-polyfills-1.1.0.tgz#70b0a42d1121b04c872b6320ade0efd8b996aaa8" - integrity sha512-h+1dvamBzeItxkWUyjlEJ5/1mBR8nOiS2ZO8L6VOL/s4egwTFbL8ehE/yhn/41nSB/KCKjMY9mv7orU/v/Xdaw== +gatsby-legacy-polyfills@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gatsby-legacy-polyfills/-/gatsby-legacy-polyfills-1.2.0.tgz#fda9b3b9f6b340a4fdfdd978e84b0847bdfab79c" + integrity sha512-WC2LXsQQ/F6zNHhD50gnl2U7XVJnwldnU9xKOLndEfy74GhQ7OONsAYSytMYXdBlMKJW3k15pBfhRMM6incZIw== dependencies: core-js-compat "3.9.0" -gatsby-link@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/gatsby-link/-/gatsby-link-3.1.0.tgz#a64795edc032483450103ab235bab68a6f8dc2b8" - integrity sha512-5l84aGNGYp+8QDWnM030R1TjBms+zgdsNSZrRmwcQ57EF2IW6zRrw+ENSlBrxeV40mkmIXkVmIVbB8XuNKZNrg== +gatsby-link@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/gatsby-link/-/gatsby-link-3.2.0.tgz#87d130dfccab915f9fd989611765d220967417f2" + integrity sha512-LyANWBIuMnxivSNF7pnHc0S3mDNMaHNGSacnMynpHw9kVZuu03xi+DnzEqkzon/hgl+yRgQOtganGZgHTHzYFw== dependencies: "@babel/runtime" "^7.12.5" "@types/reach__router" "^1.3.7" prop-types "^15.7.2" -gatsby-page-utils@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/gatsby-page-utils/-/gatsby-page-utils-1.1.0.tgz#44bbc38a5baf96b97c70ec5be607c594fe12b054" - integrity sha512-hNjEuWYtU95t6ypXn82eC+7OoArH4i/PnlhHt9DS8xdpf7Ad95Bk+wAhpIlF8iv9f/uf/e5DdbQeSXj1E1TeRw== +gatsby-page-utils@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gatsby-page-utils/-/gatsby-page-utils-1.2.0.tgz#8c1be23a4701f4b6cdb3fb3c753923fa37bfd895" + integrity sha512-8b09VzneD1ze3eSJ4n88ytf3N2kE8PcoYVVyHe/EL5HloUz3EexY1o6oJbePkXsfqqcMGuUsUnPNSbLX+0YGYQ== dependencies: "@babel/runtime" "^7.12.5" bluebird "^3.7.2" chokidar "^3.5.1" fs-exists-cached "^1.0.0" - gatsby-core-utils "^2.1.0" + gatsby-core-utils "^2.2.0" glob "^7.1.6" lodash "^4.17.21" micromatch "^4.0.2" -gatsby-plugin-algolia@^0.17.0: - version "0.17.0" - resolved "https://registry.yarnpkg.com/gatsby-plugin-algolia/-/gatsby-plugin-algolia-0.17.0.tgz#0db6c2d3a1682c8258507f363c43825e40da5392" - integrity sha512-QsMa2ofgIQiU12A0BsLfVc14FIKHBtsEKgGnqh+4OGA4GxaOD123Vp98qBzpiRnZe4mSCCNGMXD1j5ISWvT8ag== +gatsby-plugin-algolia@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-algolia/-/gatsby-plugin-algolia-0.18.0.tgz#81a3477a9a384c694cce357a21af649b7c707872" + integrity sha512-RKIqSrU860hH5cfqQRAfiC0QIY/WLiwBwkQ6EBikOtYvcHarbBrnC9L22bYBjp9zKi9tTklz6MhWFb6I52+EMg== dependencies: algoliasearch "^3.24.5" + deep-equal "^2.0.5" lodash.chunk "^4.2.0" -gatsby-plugin-catch-links@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/gatsby-plugin-catch-links/-/gatsby-plugin-catch-links-3.1.0.tgz#9ead896dc4bc2a711f7312e8453a3c906758b0ac" - integrity sha512-7h5V7ZZFJOlIlN4qmwgQbmsQrXO/UsIjnfdX93RdeZGBINjeUxaM7r97Od0cAzxf6lnkf4d34t13CmOa0dWbxQ== +gatsby-plugin-catch-links@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-catch-links/-/gatsby-plugin-catch-links-3.2.0.tgz#92e89a2a4fa9bc7d618fd62dede587f6437f2dff" + integrity sha512-mXAHWBTm6xaHfNKuyMte5PXxExHzXzpOdK6SiYoj0/uV+OHPIMiLf28ixvmgaxNVCb/k2hgEsnR1GtGb3+KC2w== dependencies: "@babel/runtime" "^7.12.5" escape-string-regexp "^1.0.5" @@ -6326,28 +6402,28 @@ gatsby-plugin-google-fonts@^1.0.1: resolved "https://registry.yarnpkg.com/gatsby-plugin-google-fonts/-/gatsby-plugin-google-fonts-1.0.1.tgz#d71054f7bf207b9a8da227380369e18e6f4e0201" integrity sha512-p1NVkn27GUnDA5qHM+Z4cCcLCJIardzZXMon3640sT4xuL/AZJbsx3HEt2KY/5oZu0UXIkytkxzV2Da4rQeUIg== -gatsby-plugin-google-tagmanager@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/gatsby-plugin-google-tagmanager/-/gatsby-plugin-google-tagmanager-3.1.0.tgz#fa5d044075e501b2dc5dd85019be5ce028c4abad" - integrity sha512-DWwCv6OGgJz91B/p5ExtsGWV139UiOEi/LgjO5Q32nQCY6idX9PGwC30qGzSV4z/Vm3YyDQxOSAD2GFYmKePdw== +gatsby-plugin-google-tagmanager@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-google-tagmanager/-/gatsby-plugin-google-tagmanager-3.2.0.tgz#c862236c4ea8c190d4e2ef9883f2f72e1aea5d7a" + integrity sha512-B41EvUoXRzgWbXhZof2EcK6xMBkReM7bupyaFAKNXfNw7FbJnyMA1IJ7jRQcvgsdLLacSJTIYRPA1IiyBjTT0g== dependencies: "@babel/runtime" "^7.12.5" -gatsby-plugin-manifest@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/gatsby-plugin-manifest/-/gatsby-plugin-manifest-3.1.0.tgz#9a40e2c7355663ea0863b199e7ba92af2f655e8d" - integrity sha512-T3vmSdld5KdKhov1/GFgBZ1fgFdyS1Uw2ehtJy3qTqknO3TLq2AiyMTJVRE5Z6ztYWLkE5Lnc07HZSYSb0ocsA== +gatsby-plugin-manifest@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-manifest/-/gatsby-plugin-manifest-3.2.0.tgz#512938442542f95ffc8e0cbe5df19db719e935d9" + integrity sha512-oU5pvAHZ+qIhCbmTP5Eti73i6pgAnxF/nfwXCSQ7zUjFWzKkjW8tHYK3XmhEYX2ooUX2WeP9e3vp2QdnlmA59Q== dependencies: "@babel/runtime" "^7.12.5" - gatsby-core-utils "^2.1.0" - gatsby-plugin-utils "^1.1.0" + gatsby-core-utils "^2.2.0" + gatsby-plugin-utils "^1.2.0" semver "^7.3.2" sharp "^0.27.0" -gatsby-plugin-mdx@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/gatsby-plugin-mdx/-/gatsby-plugin-mdx-2.1.0.tgz#1ae6d096016d40219fe254a1bf2fe9e7a4ce6e7a" - integrity sha512-0iSsPxCUTJMeTbozHVqczlgMAKxZJ4IkxOS5a6aTCwzrOOwIfc5YqcWQEBS3nfUF/azzEIejYuydyTMi68Y76A== +gatsby-plugin-mdx@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-mdx/-/gatsby-plugin-mdx-2.2.0.tgz#138f6a42d49ab5b1a37a90a80ddcf76d5c37f6f6" + integrity sha512-pYh18HM8VkaBDmeSPqVqq3jxjStw1sQ8Kp3GPfBLDnldBKsyi6BOvXIHLR9dSO2h0qjji9evpLdm1U2cI+BTFQ== dependencies: "@babel/core" "^7.12.3" "@babel/generator" "^7.12.5" @@ -6364,7 +6440,7 @@ gatsby-plugin-mdx@^2.0.1: escape-string-regexp "^1.0.5" eval "^0.1.4" fs-extra "^8.1.0" - gatsby-core-utils "^2.1.0" + gatsby-core-utils "^2.2.0" gray-matter "^4.0.2" json5 "^2.1.3" loader-utils "^1.4.0" @@ -6393,16 +6469,16 @@ gatsby-plugin-meta-redirect@^1.1.1: dependencies: fs-extra "^7.0.0" -gatsby-plugin-netlify@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/gatsby-plugin-netlify/-/gatsby-plugin-netlify-3.1.0.tgz#2e6e2d89ffab2031b3f54adc69e449ee5312f146" - integrity sha512-wVZ2cn5dct17wDMslov8nCiAEyh1D5cbu7W04J8zUGOFdKp+Mo/SId+t5Wqpu86CBnKNEX8LVOaswpsI1B2K9A== +gatsby-plugin-netlify@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-netlify/-/gatsby-plugin-netlify-3.2.0.tgz#fe63e7c818f6b888547417eacd523906d6846419" + integrity sha512-kt6NutGTzR8ypd0UcljXWp1dZt1MRE35vwdY7ujdk9ta6//loJe3i84hFY3xarbYCyMB7KgWeSXYM/KcUiOpiw== dependencies: "@babel/runtime" "^7.12.5" fs-extra "^8.1.0" kebab-hash "^0.1.2" lodash "^4.17.21" - webpack-assets-manifest "^3.1.1" + webpack-assets-manifest "^5.0.1" gatsby-plugin-nginx-redirect@^0.0.11: version "0.0.11" @@ -6413,55 +6489,55 @@ gatsby-plugin-nginx-redirect@^0.0.11: lodash "^4.17.20" nginx-conf "^1.5.0" -gatsby-plugin-page-creator@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-3.1.0.tgz#98df02c01beabd6274c1f920d5785ec70f6e9c17" - integrity sha512-0Ji3U8/oPgUCIHUmm5QI09Yz98j8qslqdzDv7veE75+Qqr1oC4ZD650TwH9GVjRKitxwntK+GaNPMS6nDq24kw== +gatsby-plugin-page-creator@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-3.2.0.tgz#cb33ddbb48d9d5e92e4c2e5c25d3b39e8b64c89f" + integrity sha512-9JlR+jA1zRFOtGmTcy/Yr9MDy1//7Vq3VA9CWJ/+4AyGEgbStQ4ObPbK0NE3V4aUuRlDBhj5SsKJ3xOUecVQRA== dependencies: "@babel/traverse" "^7.12.5" "@sindresorhus/slugify" "^1.1.0" chokidar "^3.5.1" fs-exists-cached "^1.0.0" - gatsby-page-utils "^1.1.0" - gatsby-telemetry "^2.1.0" + gatsby-page-utils "^1.2.0" + gatsby-telemetry "^2.2.0" globby "^11.0.2" lodash "^4.17.21" -gatsby-plugin-react-helmet@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/gatsby-plugin-react-helmet/-/gatsby-plugin-react-helmet-4.1.0.tgz#a210eeb840411fe59d1da1184e2ffb25383cbc9d" - integrity sha512-vMTtpVnzrYRcBrDt4feui0CxviINtNFwulRbhJ0if63H31Ep0i4jcMzDitVqpHxcImkzQwchK3Qap3JWqr6L6Q== +gatsby-plugin-react-helmet@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-react-helmet/-/gatsby-plugin-react-helmet-4.2.0.tgz#406a8500576fe13674b317041a91b73189b5c58f" + integrity sha512-EF9GsIgDpO3qVTMDXzzm9h3G10tNiejp3MfIrSgSE66NGLY/GR8aEsENsOWrjHsHMOs7AaC1eOXbNQ0aJt3Otg== dependencies: "@babel/runtime" "^7.12.5" gatsby-plugin-react-svg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/gatsby-plugin-react-svg/-/gatsby-plugin-react-svg-3.0.0.tgz#67984bf350bce0532bef965fab094b0b461cdf68" - integrity sha512-myZl5NjVZwLLn4ovwSDM7cufa8yjaRiU5KoufJrz8FEalRroZ/hFSCCKNVna3blTwxcS0rZgISigYn9/xY7rkw== + version "3.0.1" + resolved "https://registry.yarnpkg.com/gatsby-plugin-react-svg/-/gatsby-plugin-react-svg-3.0.1.tgz#af3f05e657f25b7319a53cc1e702c2dd881dfcbb" + integrity sha512-bjVSCAOeRWmf5a96/BL81sHITGFV/2Ql+IwP3ET5O5BZYOpt0f7QVCspkvCj0hsy4BJgCgANpzFstuaxUNsojA== dependencies: svg-react-loader "^0.4.4" -gatsby-plugin-sass@^4.0.2: - version "4.1.0" - resolved "https://registry.yarnpkg.com/gatsby-plugin-sass/-/gatsby-plugin-sass-4.1.0.tgz#458df0b2b8bcc04bdd040febed106883e2825690" - integrity sha512-lVm+DGSkAIM2APosbaBqi9OlS5YP1bXVmA2MXJqGdIrb/x9FkrN3psFjiTIuBob2YesAgeQV2OJtJefGGAf4bQ== +gatsby-plugin-sass@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-sass/-/gatsby-plugin-sass-4.2.0.tgz#15802a17e253dbd60530cba7079628255cdb5521" + integrity sha512-WnboqnpqZdkkQBYwbwnAAloJqBLuxR4FP2lp7jdrJPW4Drp0MQ2sf7XdtFjbNtmgpdXTeYFRBHazZpd25xsIgA== dependencies: "@babel/runtime" "^7.12.5" resolve-url-loader "^3.1.2" sass-loader "^10.1.1" -gatsby-plugin-sharp@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/gatsby-plugin-sharp/-/gatsby-plugin-sharp-3.1.0.tgz#64472f5b0904ce04fe8da1a01ae9d72b099239c6" - integrity sha512-u9gVDjclnxKuC86r4ghX6ne94ndnYpHULezPkzWoVepJVV7p1khVYeRnvfWbXPt7TN3NrgUgIsyDKQ1fzHKFZA== +gatsby-plugin-sharp@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/gatsby-plugin-sharp/-/gatsby-plugin-sharp-3.2.1.tgz#6c150484b9d07ccdf24adf86b92f5e3a23597bd4" + integrity sha512-ZAEiDehEz7VRgykQSVwg0ESu9c+rA2BUfi6+VCi2ppemRezXm+jGUkSTo+WUhjiPmEhQq+IIOOWe4lpslJoZRg== dependencies: "@babel/runtime" "^7.12.5" async "^3.2.0" bluebird "^3.7.2" filenamify "^4.2.0" fs-extra "^9.1.0" - gatsby-core-utils "^2.1.0" - gatsby-telemetry "^2.1.0" + gatsby-core-utils "^2.2.0" + gatsby-telemetry "^2.2.0" got "^10.7.0" imagemin "^7.0.1" imagemin-mozjpeg "^9.0.0" @@ -6476,10 +6552,10 @@ gatsby-plugin-sharp@^3.0.1: svgo "1.3.2" uuid "3.4.0" -gatsby-plugin-sitemap@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/gatsby-plugin-sitemap/-/gatsby-plugin-sitemap-3.1.0.tgz#490d126f6bd74a384b49469913a25a1ddf3c6239" - integrity sha512-dcwFZ1Icg/0gd5HCPyMoAbxu23PkLhmnRiS/YqYmYKd0z/QFf1PIIFInQAxI1QwPNlgabkRycGHjQzlM032zwQ== +gatsby-plugin-sitemap@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-sitemap/-/gatsby-plugin-sitemap-3.2.0.tgz#7a17a95ca5b7bc0fe1c9b8661cdbf326e7cd4b17" + integrity sha512-UIeOClN5o7eoARmLQY8+ad0hE85cJTCDFvnNMmbJ1SzuAyldgHep2GVDw+YbTnPCkP7rXIZ0aYPFhugPOa/Zqw== dependencies: "@babel/runtime" "^7.12.5" common-tags "^1.8.0" @@ -6487,10 +6563,10 @@ gatsby-plugin-sitemap@^3.0.0: pify "^3.0.0" sitemap "^1.13.0" -gatsby-plugin-typescript@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/gatsby-plugin-typescript/-/gatsby-plugin-typescript-3.1.0.tgz#dafb86c481f8bad84ad761e08f7d6ae83a7c73ba" - integrity sha512-p1tk/7ECbLefJzmEEl/n6qKofNIXIH2B9Bz0XnKyVaRxXNIbE3VI76qFCm3dFh+MUUg8Q4JKc2WAZcBYIdQeZA== +gatsby-plugin-typescript@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-typescript/-/gatsby-plugin-typescript-3.2.0.tgz#ce86469837e7c9783a8acee7f3859e9b7ad591e8" + integrity sha512-C9FqkDfIaI2f/zdWmVVZBCSbGdclr6fOJHpgPJm0DOWHsOMBqmiDjZ+0U2inc0iR0hq5cPqKCQGTisk6clVCNw== dependencies: "@babel/core" "^7.12.3" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" @@ -6498,26 +6574,26 @@ gatsby-plugin-typescript@^3.1.0: "@babel/plugin-proposal-optional-chaining" "^7.12.1" "@babel/preset-typescript" "^7.12.1" "@babel/runtime" "^7.12.5" - babel-plugin-remove-graphql-queries "^3.1.0" + babel-plugin-remove-graphql-queries "^3.2.0" -gatsby-plugin-utils@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/gatsby-plugin-utils/-/gatsby-plugin-utils-1.1.0.tgz#b73f3f196323df3c75e6edb345d221f003b5c152" - integrity sha512-B21V3tFskfZcVSJVaYy6rLrxHcumbcmhKAYKniKThxCP/0KSqHkfC9+Bopsonk8npRKbVX924OI3UOCKfbgFsg== +gatsby-plugin-utils@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-utils/-/gatsby-plugin-utils-1.2.0.tgz#4751d952c9c99f15d4a68497cd1841a90aec6c33" + integrity sha512-9+kKeyQdXJtQ/9pthfP4LTiem7coOdBt+8wRTwa+DF331qfzunjekl0uWlZSZBnQpG1uS7GX4R/4tei72cVVmw== dependencies: joi "^17.2.1" -gatsby-react-router-scroll@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/gatsby-react-router-scroll/-/gatsby-react-router-scroll-4.1.0.tgz#582a693048cf9a485a567afa11964df366d104fe" - integrity sha512-P2RIO7Py7QQvIntzmrpiz93B6jZsOwVhSVWp3dDa1YrD4/y43553zrEwczifWicLYcgCy/miMnuctfoKCJuxlg== +gatsby-react-router-scroll@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/gatsby-react-router-scroll/-/gatsby-react-router-scroll-4.2.0.tgz#bb10753c7ba8934a4b6e9eec359b69b556f310fc" + integrity sha512-n3KF1wNkWR6S5ZpFdXCEu4JP9xntyZNW2S/B8kumna7r2zclJBOiQWJWTopb7rEMgC/uY+RQRFHgyweaYSqIqQ== dependencies: "@babel/runtime" "^7.12.5" -gatsby-recipes@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/gatsby-recipes/-/gatsby-recipes-0.12.0.tgz#3b0e313c6f67ffa750c7ff402ca1196f525a2470" - integrity sha512-WotaMTpVWVP40uO24Iw2ioEAGcO6OZwcJYZz3Ihrb4CmjbKM6KEic8RuXH4d84OTLCvWz0s0lPiIu1IgbnYwgQ== +gatsby-recipes@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/gatsby-recipes/-/gatsby-recipes-0.13.0.tgz#de9cfb611052db899c6a2ad8f9368859b82f7e59" + integrity sha512-ni3J7wu45XfktDyxjL42zgjRzDqGQZX4/l541P5UbcAjdPAQJBP3qUgyPt2qhtenPYP/iZdbutXKxKjfkckcsQ== dependencies: "@babel/core" "^7.12.3" "@babel/generator" "^7.12.5" @@ -6542,8 +6618,8 @@ gatsby-recipes@^0.12.0: express "^4.17.1" express-graphql "^0.9.0" fs-extra "^8.1.0" - gatsby-core-utils "^2.1.0" - gatsby-telemetry "^2.1.0" + gatsby-core-utils "^2.2.0" + gatsby-telemetry "^2.2.0" glob "^7.1.6" graphql "^15.4.0" graphql-compose "~7.25.0" @@ -6578,10 +6654,10 @@ gatsby-recipes@^0.12.0: xstate "^4.9.1" yoga-layout-prebuilt "^1.9.6" -gatsby-remark-autolink-headers@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/gatsby-remark-autolink-headers/-/gatsby-remark-autolink-headers-3.1.0.tgz#baa7b73f328f83ed82fb8ab01445cbca38ef421d" - integrity sha512-N3CiPQjKl6yJS7Yf2QV4hi/ok1sCbiHDkC0pN3tsLttloEtGxd5Q+wc7aakpUcdosjOkK4a8uTMfQTDGdURpsA== +gatsby-remark-autolink-headers@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/gatsby-remark-autolink-headers/-/gatsby-remark-autolink-headers-3.2.0.tgz#efa1901662fad4ddc7ba40c913de20809b43d082" + integrity sha512-mH+JI4Huh1FOijj/fI6a6ZTzIroI/KuMRUlMOecTsttg5dr8O1XoUh+6ywyPFohcSLulLVrAPqxt/fg3wsGHow== dependencies: "@babel/runtime" "^7.12.5" github-slugger "^1.3.0" @@ -6589,43 +6665,43 @@ gatsby-remark-autolink-headers@^3.0.0: mdast-util-to-string "^1.1.0" unist-util-visit "^1.4.1" -gatsby-remark-images@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/gatsby-remark-images/-/gatsby-remark-images-4.0.0.tgz#1a6f2421495e41cf34358a4ae4883a9f51225cb5" - integrity sha512-N6SZdZBbNoXpJO1dFceh1fSr0ac/ApslvEognsU6qpr2Rb9kocrF1qC9A+zh/nk82DQ8gVeL8COLfGtPb8T7mw== +gatsby-remark-images@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/gatsby-remark-images/-/gatsby-remark-images-4.2.0.tgz#c8a34c5e9bea47427ff6d65a6ecb52506685bdfe" + integrity sha512-LaybtebK/8jF2qLInv/2yAvNioCJXxjhVZqIBs8xQp6sgaWSQ2CMFWARLkJC21OezIObiAGYKCMSKk8bWP6cFQ== dependencies: "@babel/runtime" "^7.12.5" chalk "^4.1.0" cheerio "^1.0.0-rc.3" - gatsby-core-utils "^2.0.0" + gatsby-core-utils "^2.2.0" is-relative-url "^3.0.0" - lodash "^4.17.20" + lodash "^4.17.21" mdast-util-definitions "^1.2.5" potrace "^2.1.8" query-string "^6.13.3" unist-util-select "^1.5.0" unist-util-visit-parents "^2.1.2" -gatsby-remark-prismjs@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/gatsby-remark-prismjs/-/gatsby-remark-prismjs-4.1.0.tgz#2c02e46790f5e24819c684f3d0c1e0e2945584cc" - integrity sha512-/3MOQIMVR/n8gs6zdF5OZ9EjCVkyQG7S65gX/C8rd3jiOaoWo1E6ENcn6ePb9/rWWZpFtaRu4MNpR/CRDdOsWg== +gatsby-remark-prismjs@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/gatsby-remark-prismjs/-/gatsby-remark-prismjs-4.2.0.tgz#3a40a0246673d20fdab99b097c8ebf193c86ced2" + integrity sha512-PTE4p/f+XosSt/VdHJr9U3ruZ3yhqtUpqDuifsVbOOsS6AyvmEY/7WPUThRC+nSVfueG1geVgxrWB0AoaUPKXQ== dependencies: "@babel/runtime" "^7.12.5" parse-numeric-range "^0.0.2" unist-util-visit "^1.4.1" -gatsby-source-filesystem@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/gatsby-source-filesystem/-/gatsby-source-filesystem-3.1.0.tgz#59d9c5ebced33d954a9927e740168b9c9ee43422" - integrity sha512-3qFXEi4Hp7NrqTMCJ44vzwMZclD1aHyC5XUXxuuQ+/gT4k4yPIjPTbUdYgDzvrc8/K/5XRvJDB2vprdjxwoeGw== +gatsby-source-filesystem@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/gatsby-source-filesystem/-/gatsby-source-filesystem-3.2.0.tgz#1ceec22a068b235a084b15fb426898ef213fe995" + integrity sha512-5CAMdSiasWCciJEneIU1RgS9IcHrTwl8i7xqPxhE9ihBa+Y1RSEX3FdtNGnK3Z5dYQVHMwR0NNOPJ3WZW0rJQQ== dependencies: "@babel/runtime" "^7.12.5" better-queue "^3.8.10" chokidar "^3.4.3" file-type "^16.0.0" fs-extra "^8.1.0" - gatsby-core-utils "^2.1.0" + gatsby-core-utils "^2.2.0" got "^9.6.0" md5-file "^5.0.0" mime "^2.4.6" @@ -6634,10 +6710,10 @@ gatsby-source-filesystem@^3.0.0: valid-url "^1.0.9" xstate "^4.14.0" -gatsby-telemetry@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/gatsby-telemetry/-/gatsby-telemetry-2.1.0.tgz#e7c0f8bc488a93bf4afcd10760f38b50471e754f" - integrity sha512-ZAmjxYsLyJ9eK3ZGphoIjl1C/Mx732h+PWpyD+NNUPf+GFJcPDVAd/tX9XHjNTVrAN3rAaHuH48wK7JNeC/xIA== +gatsby-telemetry@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/gatsby-telemetry/-/gatsby-telemetry-2.2.0.tgz#c6ed229ea2f1c238200ec4a9e943ead7a366fe9b" + integrity sha512-Zx/MP+By8QHgm2fikfq6egmcrwREsWAg2wfqTo0CRax5WUQQWl57zX3b0bIJ+k0sFCvU4XuxP0XrytvzxkVViQ== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" @@ -6647,28 +6723,28 @@ gatsby-telemetry@^2.1.0: boxen "^4.2.0" configstore "^5.0.1" fs-extra "^8.1.0" - gatsby-core-utils "^2.1.0" + gatsby-core-utils "^2.2.0" git-up "^4.0.2" is-docker "^2.1.1" lodash "^4.17.21" node-fetch "^2.6.1" uuid "3.4.0" -gatsby-transformer-json@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/gatsby-transformer-json/-/gatsby-transformer-json-3.1.0.tgz#d3cf91c5a6ec98f4a295af97b02b22e54dcb8682" - integrity sha512-eEd3LkxteckVQt0ka5tH2tJmYSogEfuULg7GPCsh9pcK2hR8YZq2dpFyGzwGREd6FYYkyJTg8KtqSSASiNjJrg== +gatsby-transformer-json@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/gatsby-transformer-json/-/gatsby-transformer-json-3.2.0.tgz#3cfc4aef0913387b26ecf89b040a48408ed91d61" + integrity sha512-U0uOjTXkozFOzoMG46+Vmc7N0CH/hTYrvyIqtxpV+xDPvWNn07Ynk/0qaxAjRANe5oyJHYfTl1vd0Y/9R89AlA== dependencies: "@babel/runtime" "^7.12.5" bluebird "^3.7.2" -gatsby-transformer-remark@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/gatsby-transformer-remark/-/gatsby-transformer-remark-3.1.0.tgz#6c62c090a2b392b2f4b4bc40a6eaaf379193f8af" - integrity sha512-GgCVPqNQkwZjX0EYkzDEQyBkO1RvGKYHLb4Qc0ttgSqVXrW8P4gCi9sYpSOGlqVECltJDMaK+G7maqyZ89XSZQ== +gatsby-transformer-remark@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/gatsby-transformer-remark/-/gatsby-transformer-remark-3.2.0.tgz#51a608dfc12a1c4c3b266c5076043d068050d049" + integrity sha512-z/fykxLNbKTN9fzYypyMwJ09z5YDMgnEPPF1x+szyjvEJhjKF8rfSgP13iKeYuG04Pxrj8L+QKS6xL/+H2lJIA== dependencies: "@babel/runtime" "^7.12.5" - gatsby-core-utils "^2.1.0" + gatsby-core-utils "^2.2.0" gray-matter "^4.0.2" hast-util-raw "^4.0.0" hast-util-to-html "^4.0.1" @@ -6688,10 +6764,10 @@ gatsby-transformer-remark@^3.0.0: unist-util-select "^1.5.0" unist-util-visit "^1.4.1" -gatsby-transformer-sharp@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/gatsby-transformer-sharp/-/gatsby-transformer-sharp-3.1.0.tgz#958318785828302ef195a071bfb71071c94028be" - integrity sha512-wj7KFhbqkxT5Ff5R8RDpBz5DweR6frLyIX28n4ryGIqMkgkmEwkIfWcA4/JjocDm4dVwkXKmlwJA1jufkGEpCg== +gatsby-transformer-sharp@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/gatsby-transformer-sharp/-/gatsby-transformer-sharp-3.2.0.tgz#f6b8481dfacdc1d8d27c253213982f8571af462b" + integrity sha512-2UmkLMCuYCskuyyEqHIPfNg1svgtNxCWWCCfEnAIIhntWfX7mewdhSG7eBciFJep+CYfV6bGZLcb+sKYkb0jvg== dependencies: "@babel/runtime" "^7.12.5" bluebird "^3.7.2" @@ -6702,10 +6778,10 @@ gatsby-transformer-sharp@^3.0.0: semver "^7.3.4" sharp "^0.27.0" -gatsby@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-3.1.0.tgz#88bfd1053d7a6574208d5fb525186a6a20ca8ffd" - integrity sha512-AnEMYZk5f5zEPZ4yHUaJk9G98RyoWdnkif1k2GvEyRrMbPOW6VpZdFnxZKVGfX/AZcA+pA0szuY8f46GASaXEg== +gatsby@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-3.2.1.tgz#c1130764077e4fc7360cb6892b25e810ae53cbbf" + integrity sha512-nakOINSniWsBPfbZE5HJOoEwC2/bBoJAYxGYNG/P7M8mM9JVbsIsnAylTe205/MsO0qpcTpqRm0usxzyvF3yYw== dependencies: "@babel/code-frame" "^7.10.4" "@babel/core" "^7.12.3" @@ -6731,8 +6807,8 @@ gatsby@^3.1.0: babel-plugin-add-module-exports "^1.0.4" babel-plugin-dynamic-import-node "^2.3.3" babel-plugin-lodash "^3.3.4" - babel-plugin-remove-graphql-queries "^3.1.0" - babel-preset-gatsby "^1.1.0" + babel-plugin-remove-graphql-queries "^3.2.0" + babel-preset-gatsby "^1.2.0" better-opn "^2.0.0" better-queue "^3.8.10" bluebird "^3.7.2" @@ -6747,7 +6823,7 @@ gatsby@^3.1.0: core-js "^3.9.0" cors "^2.8.5" css-loader "^5.0.1" - css-minimizer-webpack-plugin "^1.2.0" + css-minimizer-webpack-plugin "^1.3.0" css.escape "^1.5.1" date-fns "^2.14.0" debug "^3.2.7" @@ -6761,9 +6837,9 @@ gatsby@^3.1.0: eslint-plugin-graphql "^4.0.0" eslint-plugin-import "^2.22.1" eslint-plugin-jsx-a11y "^6.4.1" - eslint-plugin-react "^7.22.0" + eslint-plugin-react "^7.23.1" eslint-plugin-react-hooks "^4.2.0" - eslint-webpack-plugin "^2.5.2" + eslint-webpack-plugin "^2.5.3" event-source-polyfill "^1.0.15" execa "^4.0.3" express "^4.17.1" @@ -6774,16 +6850,16 @@ gatsby@^3.1.0: find-cache-dir "^3.3.1" fs-exists-cached "1.0.0" fs-extra "^8.1.0" - gatsby-cli "^3.1.0" - gatsby-core-utils "^2.1.0" - gatsby-graphiql-explorer "^1.1.0" - gatsby-legacy-polyfills "^1.1.0" - gatsby-link "^3.1.0" - gatsby-plugin-page-creator "^3.1.0" - gatsby-plugin-typescript "^3.1.0" - gatsby-plugin-utils "^1.1.0" - gatsby-react-router-scroll "^4.1.0" - gatsby-telemetry "^2.1.0" + gatsby-cli "^3.2.0" + gatsby-core-utils "^2.2.0" + gatsby-graphiql-explorer "^1.2.0" + gatsby-legacy-polyfills "^1.2.0" + gatsby-link "^3.2.0" + gatsby-plugin-page-creator "^3.2.0" + gatsby-plugin-typescript "^3.2.0" + gatsby-plugin-utils "^1.2.0" + gatsby-react-router-scroll "^4.2.0" + gatsby-telemetry "^2.2.0" glob "^7.1.6" got "8.3.2" graphql "^15.4.0" @@ -6850,7 +6926,7 @@ gatsby@^3.1.0: util.promisify "^1.0.1" uuid "3.4.0" v8-compile-cache "^2.2.0" - webpack "^5.16.0" + webpack "^5.28.0" webpack-dev-middleware "^4.1.0" webpack-dev-server "^3.11.2" webpack-merge "^5.7.3" @@ -6883,7 +6959,7 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: +get-intrinsic@^1.0.1, get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== @@ -7045,9 +7121,9 @@ globals@^12.1.0: type-fest "^0.8.1" globals@^13.6.0: - version "13.6.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.6.0.tgz#d77138e53738567bb96a3916ff6f6b487af20ef7" - integrity sha512-YFKCX0SiPg7l5oKYCJ2zZGxcXprVXHcSnVuvzrT3oSENQonVLqM5pf9fN5dLGZGyCjhw8TN8Btwe/jKnZ0pjvQ== + version "13.7.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.7.0.tgz#aed3bcefd80ad3ec0f0be2cf0c895110c0591795" + integrity sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA== dependencies: type-fest "^0.20.2" @@ -7063,7 +7139,7 @@ globby@11.0.1: merge2 "^1.3.0" slash "^3.0.0" -globby@11.0.2, globby@^11.0.1, globby@^11.0.2: +globby@11.0.2: version "11.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og== @@ -7089,6 +7165,18 @@ globby@^10.0.0, globby@^10.0.1: merge2 "^1.2.3" slash "^3.0.0" +globby@^11.0.1, globby@^11.0.2: + version "11.0.3" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb" + integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -7194,9 +7282,9 @@ graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6 integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== graphql-compose@~7.25.0: - version "7.25.0" - resolved "https://registry.yarnpkg.com/graphql-compose/-/graphql-compose-7.25.0.tgz#cd893172616ce56b0566e62fd249fb7782332d38" - integrity sha512-Zd2G62Sq0ZQW+qXds/LgSi3YSulmk2t2YS3WJfHvNslkEbyAcE1mFiy7c1wU0tl3woB0vPRwI0jAYtSSG6llNA== + version "7.25.1" + resolved "https://registry.yarnpkg.com/graphql-compose/-/graphql-compose-7.25.1.tgz#9d89f72781931590d4dfca6a709f381f2f76b873" + integrity sha512-TPXTe1BoQkMjp/MH93yA0SQo8PiXxJAv6Eo6K/+kpJELM9l2jZnd5PCduweuXFcKv+nH973wn/VYzYKDMQ9YoQ== dependencies: graphql-type-json "0.3.2" object-path "0.11.5" @@ -7256,10 +7344,10 @@ graphql-upload@^11.0.0: isobject "^4.0.0" object-path "^0.11.4" -graphql-ws@4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-4.1.5.tgz#03526b29acb54a424a9fbe300a4bd69ff65a50b3" - integrity sha512-yUQ1AjegD1Y9jDS699kyw7Mw+9H+rILm2HoS8N5a5B5YTH93xy3yifFhAJpKGc2wb/8yGdlVy8gTcud0TPqi6Q== +graphql-ws@4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-4.2.2.tgz#73ede40c064fe76c48c6869df7fc0bfbef80cc20" + integrity sha512-b6TLtWLAmKunD72muL9EeItRGpio9+V3Cx4zJsBkRA+3wxzTWXDvQr9/3qSwJ3D/2abz0ys2KHTM6lB1uH7KIQ== graphql@^15.4.0: version "15.5.0" @@ -7296,7 +7384,7 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-bigints@^1.0.0: +has-bigints@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== @@ -7321,7 +7409,7 @@ has-symbol-support-x@^1.4.1: resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== -has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2: +has-symbols@^1.0.1, has-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== @@ -7657,14 +7745,14 @@ hicat@^0.8.0: minimist "^1.2.5" highlight.js@^10.4.1: - version "10.6.0" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.6.0.tgz#0073aa71d566906965ba6e1b7be7b2682f5e18b6" - integrity sha512-8mlRcn5vk/r4+QcqerapwBYTe+iPL5ih6xrNylxrnBdHQiijDETfXX7VIxC3UiCRiINBJfANBAsPzAvRQj8RpQ== + version "10.7.2" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.2.tgz#89319b861edc66c48854ed1e6da21ea89f847360" + integrity sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg== hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== hosted-git-info@^3.0.6: version "3.0.8" @@ -7693,20 +7781,15 @@ hsla-regex@^1.0.0: resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= -html-comment-regex@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" - integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== - html-entities@^1.2.1, html-entities@^1.3.1: version "1.4.0" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== html-entities@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.1.1.tgz#faa5fc521e2d18499627835d22be3554c202208f" - integrity sha512-HjNLgm9Ba8zKd6NDMkXa0mMPn3eDUxOUnEIm/qy2Rm6rnqRHgI9DpMYIv1Fndu8haUmfMQHNYNrlNKmdU8GMnQ== + version "2.3.2" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488" + integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ== html-void-elements@^1.0.0, html-void-elements@^1.0.1: version "1.0.5" @@ -7837,10 +7920,10 @@ human-signals@^1.1.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== -husky@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/husky/-/husky-5.1.3.tgz#1a0645a4fe3ffc006c4d0d8bd0bcb4c98787cc9d" - integrity sha512-fbNJ+Gz5wx2LIBtMweJNY1D7Uc8p1XERi5KNRMccwfQA+rXlxWNSdUxswo0gT8XqxywTIw7Ywm/F4v/O35RdMg== +husky@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/husky/-/husky-6.0.0.tgz#810f11869adf51604c32ea577edbc377d7f9319e" + integrity sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ== iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: version "0.4.24" @@ -8121,7 +8204,7 @@ is-alphanumerical@^1.0.0: is-alphabetical "^1.0.0" is-decimal "^1.0.0" -is-arguments@^1.0.4: +is-arguments@^1.0.4, is-arguments@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== @@ -8219,7 +8302,7 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-date-object@^1.0.1: +is-date-object@^1.0.1, is-date-object@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== @@ -8253,9 +8336,9 @@ is-directory@^0.3.1: integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= is-docker@^2.0.0, is-docker@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" - integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.0.tgz#b037c8815281edaad6c2562648a5f5f18839d5f7" + integrity sha512-K4GwB4i/HzhAzwP/XSlspzRdFTI9N8OxJOyOU7Y5Rz+p+WBokXWVWblaJeBkggthmoSV0OoGTH5thJNvplpkvQ== is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" @@ -8359,6 +8442,11 @@ is-lower-case@^1.1.0: dependencies: lower-case "^1.1.0" +is-map@^2.0.1, is-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== + is-natural-number@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" @@ -8457,7 +8545,7 @@ is-promise@^2.2.2: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== -is-regex@^1.0.4, is-regex@^1.1.2: +is-regex@^1.0.4, is-regex@^1.1.1, is-regex@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== @@ -8494,6 +8582,11 @@ is-root@2.1.0: resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== +is-set@^2.0.1, is-set@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== + is-ssh@^1.3.0: version "1.3.2" resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.2.tgz#a4b82ab63d73976fd8263cceee27f99a88bdae2b" @@ -8516,13 +8609,6 @@ is-string@^1.0.5: resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== -is-svg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" - integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== - dependencies: - html-comment-regex "^1.1.0" - is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" @@ -8530,6 +8616,17 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.1" +is-typed-array@^1.1.3: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.5.tgz#f32e6e096455e329eb7b423862456aa213f0eb4e" + integrity sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug== + dependencies: + available-typed-arrays "^1.0.2" + call-bind "^1.0.2" + es-abstract "^1.18.0-next.2" + foreach "^2.0.5" + has-symbols "^1.0.1" + is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -8566,6 +8663,16 @@ is-valid-path@^0.1.1: dependencies: is-invalid-path "^0.1.0" +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakset@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83" + integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw== + is-whitespace-character@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" @@ -8608,7 +8715,7 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= -isarray@^2.0.1: +isarray@^2.0.1, isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== @@ -9041,6 +9148,13 @@ lock@^1.0.0: resolved "https://registry.yarnpkg.com/lock/-/lock-1.1.0.tgz#53157499d1653b136ca66451071fca615703fa55" integrity sha1-UxV0mdFlOxNspmRRBx/KYVcD+lU= +lockfile@^1.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.4.tgz#07f819d25ae48f87e538e6578b6964a4981a5609" + integrity sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA== + dependencies: + signal-exit "^3.0.2" + lodash-es@^4.17.20: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" @@ -9061,7 +9175,7 @@ lodash.chunk@^4.2.0: resolved "https://registry.yarnpkg.com/lodash.chunk/-/lodash.chunk-4.2.0.tgz#66e5ce1f76ed27b4303d8c6512e8d1216e8106bc" integrity sha1-ZuXOH3btJ7QwPYxlEujRIW6BBrw= -lodash.clonedeep@4.5.0: +lodash.clonedeep@4.5.0, lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= @@ -9166,6 +9280,11 @@ lodash.some@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0= +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= + lodash.uniq@4.5.0, lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -9194,7 +9313,7 @@ loglevel@^1.6.8: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== -longest-streak@^2.0.1: +longest-streak@^2.0.0, longest-streak@^2.0.1: version "2.0.4" resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== @@ -9398,6 +9517,40 @@ mdast-util-definitions@^4.0.0: dependencies: unist-util-visit "^2.0.0" +mdast-util-mdx-expression@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-0.1.1.tgz#fa1a04a5ea6777b0e8db6c120adf03088595df95" + integrity sha512-SoO8y1B9NjMOYlNdwXMchuTVvqSTlUmXm1P5QvZNPv7OH7aa8qJV+3aA+vl1DHK9Vk1uZAlgwokjvDQhS6bINA== + dependencies: + strip-indent "^3.0.0" + +mdast-util-mdx-jsx@~0.1.0: + version "0.1.4" + resolved "https://registry.yarnpkg.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-0.1.4.tgz#868371b90b17337b4f072a07021f7ce19612cf34" + integrity sha512-67KOAvCmypBSpr+AJEAVQg1Obig5Wnguo4ETTxASe5WVP4TLt57bZjDX/9EW5sWYQsO4gPqLxkUOlypVn5rkhg== + dependencies: + mdast-util-to-markdown "^0.6.0" + parse-entities "^2.0.0" + stringify-entities "^3.1.0" + unist-util-remove-position "^3.0.0" + unist-util-stringify-position "^2.0.0" + vfile-message "^2.0.0" + +mdast-util-mdx@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/mdast-util-mdx/-/mdast-util-mdx-0.1.1.tgz#16acbc6cabe33f4cebeb63fa9cf8be5da1d56fbf" + integrity sha512-9nncdnHNYSb4HNxY3AwE6gU632jhbXsDGXe9PkkJoEawYWJ8tTwmEOHGlGa2TCRidtkd6FF5I8ogDU9pTDlQyA== + dependencies: + mdast-util-mdx-expression "~0.1.0" + mdast-util-mdx-jsx "~0.1.0" + mdast-util-mdxjs-esm "~0.1.0" + mdast-util-to-markdown "^0.6.1" + +mdast-util-mdxjs-esm@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-0.1.1.tgz#69134a0dad71a59a9e0e9cfdc0633dde31dff69a" + integrity sha512-kBiYeashz+nuhfv+712nc4THQhzXIH2gBFUDbuLxuDCqU/fZeg+9FAcdRBx9E13dkpk1p2Xwufzs3wsGJ+mISQ== + mdast-util-phrasing@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/mdast-util-phrasing/-/mdast-util-phrasing-2.0.0.tgz#57e61f2be908be9f5fce54fcc2fa593687986267" @@ -9436,6 +9589,18 @@ mdast-util-to-hast@^3.0.4: unist-util-visit "^1.1.0" xtend "^4.0.1" +mdast-util-to-markdown@^0.6.0, mdast-util-to-markdown@^0.6.1: + version "0.6.5" + resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz#b33f67ca820d69e6cc527a93d4039249b504bebe" + integrity sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ== + dependencies: + "@types/unist" "^2.0.0" + longest-streak "^2.0.0" + mdast-util-to-string "^2.0.0" + parse-entities "^2.0.0" + repeat-string "^1.0.0" + zwitch "^1.0.0" + mdast-util-to-nlcst@^3.2.0: version "3.2.3" resolved "https://registry.yarnpkg.com/mdast-util-to-nlcst/-/mdast-util-to-nlcst-3.2.3.tgz#dcd0f51b59515b11a0700aeb40f168ed7ba9ed3d" @@ -9505,19 +9670,19 @@ media-typer@0.3.0: integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= mem@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-8.0.0.tgz#b5e4b6d2d241c6296da05436173b4d0c7ae1f9ac" - integrity sha512-qrcJOe6uD+EW8Wrci1Vdiua/15Xw3n/QnaNXE7varnB6InxSk7nu3/i5jfy3S6kWxr8WYJ6R1o0afMUtvorTsA== + version "8.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-8.1.0.tgz#445e47827fb757a4e5f35b0a6a62743cbfdc0a0d" + integrity sha512-FIkgXo0kTi3XpvaznV5Muk6Y6w8SkdmRXcY7ZLonQesuYezp59UooLxAVBcGuN6PH2tXN84mR3vyzSc6oSMUfA== dependencies: map-age-cleaner "^0.1.3" mimic-fn "^3.1.0" memfs@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.2.0.tgz#f9438e622b5acd1daa8a4ae160c496fdd1325b26" - integrity sha512-f/xxz2TpdKv6uDn6GtHee8ivFyxwxmPuXatBb1FBwxYNuVpbM3k/Y1Z+vC0mH/dIXXrukYfe3qe5J32Dfjg93A== + version "3.2.2" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.2.2.tgz#5de461389d596e3f23d48bb7c2afb6161f4df40e" + integrity sha512-RE0CwmIM3CEvpcdK3rZ19BC4E6hv9kADkMN5rPduRak58cNArWLi/9jFLsa4rhsjfVxMP3v0jO7FHXq7SvFY5Q== dependencies: - fs-monkey "1.0.1" + fs-monkey "1.0.3" memoizee@^0.4.15: version "0.4.15" @@ -9582,6 +9747,69 @@ microevent.ts@~0.1.1: resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== +micromark-extension-mdx-expression@^0.3.0, micromark-extension-mdx-expression@^0.3.2, micromark-extension-mdx-expression@~0.3.0: + version "0.3.2" + resolved "https://registry.yarnpkg.com/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-0.3.2.tgz#827592af50116110dc9ee27201a73c037e61aa27" + integrity sha512-Sh8YHLSAlbm/7TZkVKEC4wDcJE8XhVpZ9hUXBue1TcAicrrzs/oXu7PHH3NcyMemjGyMkiVS34Y0AHC5KG3y4A== + dependencies: + micromark "~2.11.0" + vfile-message "^2.0.0" + +micromark-extension-mdx-jsx@~0.3.0: + version "0.3.3" + resolved "https://registry.yarnpkg.com/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-0.3.3.tgz#68e8e700f2860e32e96ff48e44afb7465d462e21" + integrity sha512-kG3VwaJlzAPdtIVDznfDfBfNGMTIzsHqKpTmMlew/iPnUCDRNkX+48ElpaOzXAtK5axtpFKE3Hu3VBriZDnRTQ== + dependencies: + estree-util-is-identifier-name "^1.0.0" + micromark "~2.11.0" + micromark-extension-mdx-expression "^0.3.2" + vfile-message "^2.0.0" + +micromark-extension-mdx-md@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/micromark-extension-mdx-md/-/micromark-extension-mdx-md-0.1.1.tgz#277b4e82ada37bfdf222f6c3530e20563d73e064" + integrity sha512-emlFQEyfx/2aPhwyEqeNDfKE6jPH1cvLTb5ANRo4qZBjaUObnzjLRdzK8RJ4Xc8+/dOmKN8TTRxFnOYF5/EAwQ== + +micromark-extension-mdx@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/micromark-extension-mdx/-/micromark-extension-mdx-0.2.1.tgz#074b85013909481d23f382f17dced7b4cd173c0a" + integrity sha512-J+nZegf1ExPz1Ft6shxu8M9WfRom1gwRIx6gpJK1SEEqKzY5LjOR1d/WHRtjwV4KoMXrL53+PoN7T1Rw1euJew== + dependencies: + micromark "~2.11.0" + micromark-extension-mdx-expression "~0.3.0" + micromark-extension-mdx-jsx "~0.3.0" + micromark-extension-mdx-md "~0.1.0" + +micromark-extension-mdxjs-esm@~0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-0.3.1.tgz#40a710fe145b381e39a2930db2813f3efaa014ac" + integrity sha512-tuLgcELrgY1a5tPxjk+MrI3BdYtwW67UaHZdzKiDYD8loNbxwIscfdagI6A2BKuAkrfeyHF6FW3B8KuDK3ZMXw== + dependencies: + micromark "~2.11.0" + micromark-extension-mdx-expression "^0.3.0" + vfile-message "^2.0.0" + +micromark-extension-mdxjs@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs/-/micromark-extension-mdxjs-0.3.0.tgz#35ecebaf14b8377b6046b659780fd3111196eccd" + integrity sha512-NQuiYA0lw+eFDtSG4+c7ao3RG9dM4P0Kx/sn8OLyPhxtIc6k+9n14k5VfLxRKfAxYRTo8c5PLZPaRNmslGWxJw== + dependencies: + acorn "^8.0.0" + acorn-jsx "^5.0.0" + micromark "~2.11.0" + micromark-extension-mdx-expression "~0.3.0" + micromark-extension-mdx-jsx "~0.3.0" + micromark-extension-mdx-md "~0.1.0" + micromark-extension-mdxjs-esm "~0.3.0" + +micromark@~2.11.0: + version "2.11.4" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-2.11.4.tgz#d13436138eea826383e822449c9a5c50ee44665a" + integrity sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA== + dependencies: + debug "^4.0.0" + parse-entities "^2.0.0" + micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -9609,17 +9837,17 @@ micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.0.5" -mime-db@1.46.0, "mime-db@>= 1.43.0 < 2", mime-db@^1.28.0: - version "1.46.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee" - integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== +mime-db@1.47.0, "mime-db@>= 1.43.0 < 2", mime-db@^1.28.0: + version "1.47.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" + integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.28, mime-types@~2.1.17, mime-types@~2.1.24: - version "2.1.29" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2" - integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ== + version "2.1.30" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" + integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== dependencies: - mime-db "1.46.0" + mime-db "1.47.0" mime@1.6.0, mime@^1.3.4: version "1.6.0" @@ -9753,7 +9981,7 @@ mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp@^0.5, mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.1: +mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -9843,7 +10071,7 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== -nanoid@^3.1.20: +nanoid@^3.1.20, nanoid@^3.1.22: version "3.1.22" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.22.tgz#b35f8fb7d151990a8aebd5aa5015c03cf726f844" integrity sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ== @@ -9941,7 +10169,7 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -node-abi@^2.7.0: +node-abi@^2.21.0: version "2.21.0" resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.21.0.tgz#c2dc9ebad6f4f53d6ea9b531e7b8faad81041d48" integrity sha512-smhrivuPqEM3H5LmnY3KU6HfYv0u4QklgAxfFyRNujKUzbUcYZ+Jc2EhukB9SRcD2VpqhxM7n/MIcp1Ua1/JMg== @@ -10115,7 +10343,7 @@ object-inspect@^1.9.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== -object-is@^1.0.1: +object-is@^1.0.1, object-is@^1.1.4: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== @@ -10150,7 +10378,7 @@ object.assign@^4.1.0, object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" -object.entries@^1.1.2: +object.entries@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6" integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg== @@ -10160,7 +10388,7 @@ object.entries@^1.1.2: es-abstract "^1.18.0-next.1" has "^1.0.3" -object.fromentries@^2.0.2: +object.fromentries@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8" integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ== @@ -10186,7 +10414,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.0, object.values@^1.1.1: +object.values@^1.1.0, object.values@^1.1.1, object.values@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.3.tgz#eaa8b1e17589f02f698db093f7c62ee1699742ee" integrity sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw== @@ -11188,12 +11416,11 @@ postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: uniq "^1.0.1" util-deprecate "^1.0.2" -postcss-svgo@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" - integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== +postcss-svgo@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e" + integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== dependencies: - is-svg "^3.0.0" postcss "^7.0.0" postcss-value-parser "^3.0.0" svgo "^1.0.0" @@ -11245,12 +11472,12 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.27: supports-color "^6.1.0" postcss@^8.2.8: - version "8.2.8" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.8.tgz#0b90f9382efda424c4f0f69a2ead6f6830d08ece" - integrity sha512-1F0Xb2T21xET7oQV9eKuctbM9S7BC0fetoHCc4H13z0PT6haiRLP4T0ZY4XWh7iLP0usgqykT6p9B2RtOf4FPw== + version "8.2.9" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.9.tgz#fd95ff37b5cee55c409b3fdd237296ab4096fba3" + integrity sha512-b+TmuIL4jGtCHtoLi+G/PisuIl9avxs8IZMSmlABRwNz5RLUUACrC+ws81dcomz1nRezm5YPdXiMEzBEKgYn+Q== dependencies: colorette "^1.2.2" - nanoid "^3.1.20" + nanoid "^3.1.22" source-map "^0.6.1" potrace@^2.1.8: @@ -11261,9 +11488,9 @@ potrace@^2.1.8: jimp "^0.14.0" prebuild-install@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.0.1.tgz#5902172f7a40eb67305b96c2a695db32636ee26d" - integrity sha512-7GOJrLuow8yeiyv75rmvZyeMGzl8mdEX5gY69d6a6bHWmiPevwqFw+tQavhK0EYMaSg3/KD24cWqeQv1EWsqDQ== + version "6.1.1" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.1.1.tgz#6754fa6c0d55eced7f9e14408ff9e4cba6f097b4" + integrity sha512-M+cKwofFlHa5VpTWub7GLg5RLcunYIcLqtY5pKcls/u7xaAb8FrXZ520qY8rkpYy5xw90tYCyMO0MP5ggzR3Sw== dependencies: detect-libc "^1.0.3" expand-template "^2.0.3" @@ -11271,7 +11498,7 @@ prebuild-install@^6.0.1: minimist "^1.2.3" mkdirp-classic "^0.5.3" napi-build-utils "^1.0.1" - node-abi "^2.7.0" + node-abi "^2.21.0" noop-logger "^0.1.1" npmlog "^4.0.1" pump "^3.0.0" @@ -11279,7 +11506,6 @@ prebuild-install@^6.0.1: simple-get "^3.0.3" tar-fs "^2.0.0" tunnel-agent "^0.6.0" - which-pm-runs "^1.0.0" prelude-ls@^1.2.1: version "1.2.1" @@ -11372,7 +11598,7 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= -prompts@2.4.0, prompts@^2.3.2: +prompts@2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== @@ -11380,6 +11606,14 @@ prompts@2.4.0, prompts@^2.3.2: kleur "^3.0.3" sisteransi "^1.0.5" +prompts@^2.3.2: + version "2.4.1" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" + integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + prop-types-extra@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/prop-types-extra/-/prop-types-extra-1.1.1.tgz#58c3b74cbfbb95d304625975aa2f0848329a010b" @@ -11484,9 +11718,11 @@ qs@6.7.0: integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== qs@^6.9.4: - version "6.9.6" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" - integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== + version "6.10.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" + integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg== + dependencies: + side-channel "^1.0.4" query-string@^5.0.1: version "5.1.1" @@ -11528,9 +11764,9 @@ querystringify@^2.1.1: integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== queue-microtask@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.2.tgz#abf64491e6ecf0f38a6502403d4cda04f372dfd3" - integrity sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg== + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== ramda@0.21.0: version "0.21.0" @@ -11641,14 +11877,14 @@ react-dev-utils@^11.0.3: strip-ansi "6.0.0" text-table "0.2.0" -react-dom@^17.0.1: - version "17.0.1" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.1.tgz#1de2560474ec9f0e334285662ede52dbc5426fc6" - integrity sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug== +react-dom@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" - scheduler "^0.20.1" + scheduler "^0.20.2" react-error-overlay@^6.0.9: version "6.0.9" @@ -11716,6 +11952,11 @@ react-overlays@^5.0.0: uncontrollable "^7.0.0" warning "^4.0.3" +react-refresh@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.10.0.tgz#2f536c9660c0b9b1d500684d9e52a65e7404f7e3" + integrity sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ== + react-refresh@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.9.0.tgz#71863337adc3e5c2f8a6bfddd12ae3bfe32aafbf" @@ -11736,10 +11977,10 @@ react-transition-group@^4.4.1: loose-envify "^1.4.0" prop-types "^15.6.2" -react@^17.0.1: - version "17.0.1" - resolved "https://registry.yarnpkg.com/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127" - integrity sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w== +react@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -11913,7 +12154,7 @@ regex-parser@^2.2.11: resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0, regexp.prototype.flags@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== @@ -11958,9 +12199,9 @@ regjsgen@^0.5.1: integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== regjsparser@^0.6.4: - version "0.6.7" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.7.tgz#c00164e1e6713c2e3ee641f1701c4b7aa0a7f86c" - integrity sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ== + version "0.6.9" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.9.tgz#b489eef7c9a2ce43727627011429cf833a7183e6" + integrity sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ== dependencies: jsesc "~0.5.0" @@ -12054,15 +12295,13 @@ remark-mdx@1.6.22, remark-mdx@^1.6.22: unified "9.2.0" remark-mdx@^2.0.0-next.4: - version "2.0.0-next.8" - resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-2.0.0-next.8.tgz#db1c3cbc606ea0d01526242199bb134d99020363" - integrity sha512-mjP0yo6BgjYrx5a+gKWYRFWbGnRiWi4Fdf17xGCr9VkSMnG4Dyo06spqbaLfHwl0KkQ/RQZlR2sn1mKnYduJdw== + version "2.0.0-next.9" + resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-2.0.0-next.9.tgz#3e2088550ddd4264ce48bca15fb297569d369e65" + integrity sha512-I5dCKP5VE18SMd5ycIeeEk8Hl6oaldUY6PIvjrfm65l7d0QRnLqknb62O2g3QEmOxCswcHTtwITtz6rfUIVs+A== dependencies: - parse-entities "^2.0.0" - remark-stringify "^8.1.0" - stringify-entities "^3.0.1" - strip-indent "^3.0.0" - unist-util-stringify-position "^2.0.3" + mdast-util-mdx "^0.1.1" + micromark-extension-mdx "^0.2.0" + micromark-extension-mdxjs "^0.3.0" remark-mdxjs@^2.0.0-next.4: version "2.0.0-next.8" @@ -12198,9 +12437,9 @@ renderkid@^2.0.4: strip-ansi "^3.0.0" repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== repeat-string@^1.0.0, repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1: version "1.6.1" @@ -12304,7 +12543,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.3.2: +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.3.2: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -12312,6 +12551,14 @@ resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.1 is-core-module "^2.2.0" path-parse "^1.0.6" +resolve@^2.0.0-next.3: + version "2.0.0-next.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" + integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + responselike@1.0.2, responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -12412,9 +12659,9 @@ rx@4.1.0: integrity sha1-pfE/957zt0D+MKqAP7CfmIBdR4I= rxjs@^6.6.0: - version "6.6.6" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.6.tgz#14d8417aa5a07c5e633995b525e1e3c0dec03b70" - integrity sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg== + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: tslib "^1.9.0" @@ -12473,10 +12720,10 @@ sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -scheduler@^0.20.1: - version "0.20.1" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.1.tgz#da0b907e24026b01181ecbc75efdc7f27b5a000c" - integrity sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw== +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -12499,7 +12746,7 @@ schema-utils@^2.6.5: ajv "^6.12.4" ajv-keywords "^3.5.2" -schema-utils@^3.0.0: +schema-utils@^3.0, schema-utils@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== @@ -12580,9 +12827,9 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== semver@^7.2.1, semver@^7.3.2, semver@^7.3.4: - version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" - integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: lru-cache "^6.0.0" @@ -12730,7 +12977,7 @@ shell-quote@1.7.2: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== -side-channel@^1.0.4: +side-channel@^1.0.3, side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== @@ -12809,9 +13056,9 @@ slice-ansi@^4.0.0: is-fullwidth-code-point "^3.0.0" slugify@^1.4.4: - version "1.4.7" - resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.4.7.tgz#e42359d505afd84a44513280868e31202a79a628" - integrity sha512-tf+h5W1IrjNm/9rKKj0JU2MDMruiopx0jjVA5zCdBtcGjfp0+c5rHw/zADLC3IeKlGHtVbHtpfzvYA0OYT+HKg== + version "1.5.0" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.5.0.tgz#5f3c8e2a84105b54eb51486db1b468a599b3c9b8" + integrity sha512-Q2UPZ2udzquy1ElHfOLILMBMqBEXkiD3wE75qtBvV+FsDdZZjUqPZ44vqLTejAVq+wLLHacOMcENnP8+ZbzmIA== snake-case@^2.1.0: version "2.1.0" @@ -12893,16 +13140,16 @@ socket.io@3.1.1: socket.io-parser "~4.0.3" sockjs-client@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.0.tgz#2f8ff5d4b659e0d092f7aba0b7c386bd2aa20add" - integrity sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q== + version "1.5.1" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.1.tgz#256908f6d5adfb94dabbdbd02c66362cca0f9ea6" + integrity sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ== dependencies: debug "^3.2.6" eventsource "^1.0.7" faye-websocket "^0.11.3" inherits "^2.0.4" json3 "^3.3.3" - url-parse "^1.4.7" + url-parse "^1.5.1" sockjs@^0.3.21: version "0.3.21" @@ -13073,7 +13320,7 @@ sse-z@0.3.0: resolved "https://registry.yarnpkg.com/sse-z/-/sse-z-0.3.0.tgz#e215db7c303d6c4a4199d80cb63811cc28fa55b9" integrity sha512-jfcXynl9oAOS9YJ7iqS2JMUEHOlvrRAD+54CENiWnc4xsuVLQVSgmwf7cwOTcBd/uq3XkQKBGojgvEtVXcJ/8w== -ssri@^8.0.0: +ssri@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== @@ -13215,7 +13462,7 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string.prototype.matchall@^4.0.2: +string.prototype.matchall@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.4.tgz#608f255e93e072107f5de066f81a2dfb78cf6b29" integrity sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ== @@ -13273,7 +13520,7 @@ stringify-entities@^1.0.1: is-alphanumerical "^1.0.0" is-hexadecimal "^1.0.0" -stringify-entities@^3.0.0, stringify-entities@^3.0.1: +stringify-entities@^3.0.0, stringify-entities@^3.0.1, stringify-entities@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-3.1.0.tgz#b8d3feac256d9ffcc9fa1fefdcf3ca70576ee903" integrity sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg== @@ -13499,12 +13746,17 @@ sync-fetch@0.3.0: node-fetch "^2.6.1" table@^6.0.4: - version "6.0.7" - resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34" - integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== + version "6.0.9" + resolved "https://registry.yarnpkg.com/table/-/table-6.0.9.tgz#790a12bf1e09b87b30e60419bafd6a1fd85536fb" + integrity sha512-F3cLs9a3hL1Z7N4+EkSscsel3z55XT950AvB05bwayrNg5T1/gykXtigioTAjbltvbMSJvvhFCbnf6mX+ntnJQ== dependencies: - ajv "^7.0.2" - lodash "^4.17.20" + ajv "^8.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + lodash.clonedeep "^4.5.0" + lodash.flatten "^4.4.0" + lodash.truncate "^4.4.2" slice-ansi "^4.0.0" string-width "^4.2.0" @@ -13513,7 +13765,7 @@ tapable@^1.0.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tapable@^2.1.1, tapable@^2.2.0: +tapable@^2.0, tapable@^2.1.1, tapable@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== @@ -13835,16 +14087,21 @@ tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2, tslib@^2.0.0, tslib@^2.0.3, tslib@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" - integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== +tslib@^2, tslib@^2.0.0, tslib@^2.0.3, tslib@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" + integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== tslib@~2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== +tslib@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" + integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== + tsutils@^3.17.1: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -13881,6 +14138,11 @@ type-fest@^0.11.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + type-fest@^0.8.0, type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" @@ -13917,19 +14179,19 @@ typedarray-to-buffer@^3.1.5: is-typedarray "^1.0.0" typescript@^4.1.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.3.tgz#39062d8019912d43726298f09493d598048c1ce3" - integrity sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw== + version "4.2.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961" + integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg== unbox-primitive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.0.tgz#eeacbc4affa28e9b3d36b5eaeccc50b3251b1d3f" - integrity sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA== + version "1.0.1" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== dependencies: function-bind "^1.1.1" - has-bigints "^1.0.0" - has-symbols "^1.0.0" - which-boxed-primitive "^1.0.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" unbzip2-stream@^1.0.9: version "1.4.3" @@ -14160,6 +14422,13 @@ unist-util-remove-position@^2.0.0: dependencies: unist-util-visit "^2.0.0" +unist-util-remove-position@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-3.0.0.tgz#4cd19e82c8e665f462b6acfcfd0a8353235a88e9" + integrity sha512-17kIOuolVuK16LMb9KyMJlqdfCtlfQY5FjY3Sdo9iC7F5wqdXhNjMq0PBvMpkVNNnAmHxXssUW+rZ9T2zbP0Rg== + dependencies: + unist-util-visit "^2.0.0" + unist-util-remove@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-1.0.3.tgz#58ec193dfa84b52d5a055ffbc58e5444eb8031a3" @@ -14168,9 +14437,9 @@ unist-util-remove@^1.0.3: unist-util-is "^3.0.0" unist-util-remove@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-2.0.1.tgz#fa13c424ff8e964f3aa20d1098b9a690c6bfaa39" - integrity sha512-YtuetK6o16CMfG+0u4nndsWpujgsHDHHLyE0yGpJLLn5xSjKeyGyzEBOI2XbmoUHCYabmNgX52uxlWoQhcvR7Q== + version "2.1.0" + resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-2.1.0.tgz#b0b4738aa7ee445c402fda9328d604a02d010588" + integrity sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q== dependencies: unist-util-is "^4.0.0" @@ -14188,7 +14457,7 @@ unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6" integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ== -unist-util-stringify-position@^2.0.0, unist-util-stringify-position@^2.0.3: +unist-util-stringify-position@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== @@ -14348,7 +14617,7 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -url-parse@^1.4.3, url-parse@^1.4.7: +url-parse@^1.4.3, url-parse@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b" integrity sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q== @@ -14537,18 +14806,18 @@ web-namespaces@^1.0.0, web-namespaces@^1.1.2: resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== -webpack-assets-manifest@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/webpack-assets-manifest/-/webpack-assets-manifest-3.1.1.tgz#39bbc3bf2ee57fcd8ba07cda51c9ba4a3c6ae1de" - integrity sha512-JV9V2QKc5wEWQptdIjvXDUL1ucbPLH2f27toAY3SNdGZp+xSaStAgpoMcvMZmqtFrBc9a5pTS1058vxyMPOzRQ== +webpack-assets-manifest@^5.0.1: + version "5.0.3" + resolved "https://registry.yarnpkg.com/webpack-assets-manifest/-/webpack-assets-manifest-5.0.3.tgz#0ea198da4d882dbec5a13dc41e46f4cb33d2a2e2" + integrity sha512-bKFVRLhI6joPtveEvKz9ZsHJplMysSHlAQm3vlkn3fz1utmNUrGym7v4BwwDd2sUPoiwEPrVbEX8CgwruCryrQ== dependencies: - chalk "^2.0" + chalk "^4.0" + deepmerge "^4.0" + lockfile "^1.0" lodash.get "^4.0" lodash.has "^4.0" - mkdirp "^0.5" - schema-utils "^1.0.0" - tapable "^1.0.0" - webpack-sources "^1.0.0" + schema-utils "^3.0" + tapable "^2.0" webpack-dev-middleware@^3.7.2: version "3.7.3" @@ -14636,7 +14905,7 @@ webpack-sources@^0.2.0: source-list-map "^1.1.1" source-map "~0.5.3" -webpack-sources@^1.0.0, webpack-sources@^1.1.0, webpack-sources@^1.4.3: +webpack-sources@^1.1.0, webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -14664,10 +14933,10 @@ webpack-virtual-modules@^0.3.2: dependencies: debug "^3.0.0" -webpack@^5.16.0: - version "5.26.3" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.26.3.tgz#bafd439abac08fbb82657ec855d038743b725ab8" - integrity sha512-z/F2lt2N1fZqaud1B4SzjL3OW03eULThbBXQ2OX4LSrZX4N9k1A5d0Rje3zS2g887DTWyAV0KGqEf64ois2dhg== +webpack@^5.28.0: + version "5.31.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.31.0.tgz#fab61d0be896feca4af87bdad5c18815c0d63455" + integrity sha512-3fUfZT/FUuThWSSyL32Fsh7weUUfYP/Fjc/cGSbla5KiSo0GtI1JMssCRUopJTvmLjrw05R2q7rlLtiKdSzkzQ== dependencies: "@types/eslint-scope" "^3.7.0" "@types/estree" "^0.0.46" @@ -14707,7 +14976,7 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== -which-boxed-primitive@^1.0.1: +which-boxed-primitive@^1.0.1, which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== @@ -14718,15 +14987,33 @@ which-boxed-primitive@^1.0.1: is-string "^1.0.5" is-symbol "^1.0.3" +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which-pm-runs@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" - integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= +which-typed-array@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff" + integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA== + dependencies: + available-typed-arrays "^1.0.2" + call-bind "^1.0.0" + es-abstract "^1.18.0-next.1" + foreach "^2.0.5" + function-bind "^1.1.1" + has-symbols "^1.0.1" + is-typed-array "^1.1.3" which@^1.2.9, which@^1.3.1: version "1.3.1" @@ -14815,10 +15102,10 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@7.4.3: - version "7.4.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.3.tgz#1f9643de34a543b8edb124bdcbc457ae55a6e5cd" - integrity sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA== +ws@7.4.4, ws@^7.3.0, ws@~7.4.2: + version "7.4.4" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.4.tgz#383bc9742cb202292c9077ceab6f6047b17f2d59" + integrity sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw== ws@^6.2.1: version "6.2.1" @@ -14827,11 +15114,6 @@ ws@^6.2.1: dependencies: async-limiter "~1.0.0" -ws@^7.3.0, ws@~7.4.2: - version "7.4.4" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.4.tgz#383bc9742cb202292c9077ceab6f6047b17f2d59" - integrity sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw== - x-is-string@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" @@ -14899,9 +15181,9 @@ xss@^1.0.6: cssfilter "0.0.10" xstate@^4.11.0, xstate@^4.14.0, xstate@^4.9.1: - version "4.16.2" - resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.16.2.tgz#d6b973b1253b8c85f50f68601837287d59d4bf34" - integrity sha512-EY39NNZnwM4tRYNmQAi1c2qHuZ1lJmuDpEo1jxiRcfS+1jPtKRAjGRLNx3fYKcK0ohW6mL41Wze3mdCF0SqavA== + version "4.17.1" + resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.17.1.tgz#f027b51ee35dae28954d27ad09f37b4d5d5ce40f" + integrity sha512-3q7so9qAKFnz9/t7BNQXQtV+9fwDATCOkC+0tAvVqczboEbu6gz2dvPPVCCkj55Hyzgro9aSOntGSPGLei82BA== xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.2" @@ -14909,14 +15191,14 @@ xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== y18n@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" - integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== y18n@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" - integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yallist@^2.0.0, yallist@^2.1.2: version "2.1.2" @@ -15008,11 +15290,6 @@ yargs@^16.1.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yarn@^1.22.10: - version "1.22.10" - resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.10.tgz#c99daa06257c80f8fa2c3f1490724e394c26b18c" - integrity sha512-IanQGI9RRPAN87VGTF7zs2uxkSyQSrSPsju0COgbsKQOOXr5LtcVPeyXWgwVa0ywG3d8dg6kSYKGBuYK021qeA== - yauzl@^2.4.2: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"