diff --git a/content/en/docs.lnk b/content/en/docs.lnk new file mode 100644 index 0000000000000000000000000000000000000000..1779c367a67f42d9b23fa78eeeb15cb8df6a4c8e Binary files /dev/null and b/content/en/docs.lnk differ diff --git a/content/en/docs/Administratorguide/Administratorguide.md b/content/en/docs/Administratorguide/Administratorguide.md new file mode 100644 index 0000000000000000000000000000000000000000..143ef356ade86209a1112e0904c9374a349922ce --- /dev/null +++ b/content/en/docs/Administratorguide/Administratorguide.md @@ -0,0 +1,3 @@ +# Administrator Guide + +This document describes common administrator operations of the openGauss database, helping administrators better use the openGauss database. This document is intended for all administrators who use the openGauss database. \ No newline at end of file diff --git a/content/en/docs/Administratorguide/audit-logs.md b/content/en/docs/Administratorguide/audit-logs.md new file mode 100644 index 0000000000000000000000000000000000000000..2631d1712b3e52420ff0aa7b9c1e3d77b144fbdd --- /dev/null +++ b/content/en/docs/Administratorguide/audit-logs.md @@ -0,0 +1,6 @@ +# Audit Logs + +After the audit function is enabled, a large number of audit logs will be generated, which occupy large storage space. You can customize an audit log maintenance policy based on the size of available storage space. + +For details, see "Database Security Management \> Configuring Database Audit \> Maintaining Audit Logs" in the _Developer Guide_. + diff --git a/content/en/docs/Administratorguide/backup-and-restoration.md b/content/en/docs/Administratorguide/backup-and-restoration.md new file mode 100644 index 0000000000000000000000000000000000000000..be708caf992a6c76c1f3d14c7cc4780e5eb54b23 --- /dev/null +++ b/content/en/docs/Administratorguide/backup-and-restoration.md @@ -0,0 +1,9 @@ +# Backup and Restoration + +- **[Overview](overview.md)** + +- **[Physical Backup and Restoration](physical-backup-and-restoration.md)** + +- **[Logical Backup and Restoration](logical-backup-and-restoration.md)** + + diff --git a/content/en/docs/Administratorguide/check-method-0.md b/content/en/docs/Administratorguide/check-method-0.md new file mode 100644 index 0000000000000000000000000000000000000000..09d7f31a8a25fbf69510a8734ff72862d9776d92 --- /dev/null +++ b/content/en/docs/Administratorguide/check-method-0.md @@ -0,0 +1,350 @@ +# Check Method + +Use the **gs\_check** tool provided by openGauss to check the openGauss health status. + +## Precautions + +- Only user **root** is authorized to check new nodes added during cluster scale-out. In other cases, the check can be performed only by user **omm**. +- Parameter **-i** or **-e** must be set. **-i** specifies a single item to be checked, and **-e** specifies an inspection scenario where multiple items will be checked. +- If **-i** is not set to a **root** item or no such items are contained in the check item list of the scenario specified by **-e**, you do not need to enter the name or password of user **root**. +- You can run **--skip-root-items** to skip **root** items. +- Check the consistency between the new node and existing nodes. Run the **gs\_check** command on an existing node and specify the **--hosts** parameter. The IP address of the new node needs to be written into the **hosts** file. + +## Procedure + +Method 1: + +1. Log in as the OS user **omm** to the primary node of the database. +2. Run the following command to check the openGauss database status: + + ``` + gs_check -i CheckClusterState + ``` + + In the command, **-i** indicates the check item and is case-sensitive. The format is **-i CheckClusterState**, **-i CheckCPU** or **-i CheckClusterState,CheckCPU**. + + Checkable items are listed in "Server Tools \> gs\_check \> openGauss status checks" in the _openGauss Tool Reference_. You can create a check item as needed. + + +Method 2: + +1. Log in as the OS user **omm** to the primary node of the database. +2. Run the following command to check the openGauss database health status: + + ``` + gs_check -e inspect + ``` + + In the command, **-e** indicates the inspection scenario and is case-sensitive. The format is **-e inspect** or **-e upgrade**. + + The inspection scenarios include **inspect** \(routine inspection\), **upgrade** \(inspection before upgrade\), **expand** \(inspection before cluster scale-out\), **binary\_upgrade** \(inspection before in-place upgrade\), and **health** \(health inspection\). You can create an inspection scenario as needed. + + +Method 3: + +1. Log in as the OS user **omm** to the primary node of the database. +2. Copy the inspection tool **gs\_check** and the **inspection** directory to all new hosts. +3. Write the IP addresses of the new hosts into the **ipListFile** file and separate the IP addresses with line feeds. +4. Run the following command to check the new nodes before cluster scale-out: + + ``` + gs_check -e expand_new_node --hosts ipListFile + ``` + + **-e** must be set to **expand\_new\_node**, indicating inspection before cluster scale-out. + + +The openGauss inspection is performed to check openGauss status during openGauss running or to check the environment and conditions before critical operations, such as upgrade or scale-out. For details about the inspection items and scenarios, see "Server Tools \> gs\_check \> openGauss status checks" in the _openGauss Tool Reference_. + +## Examples + +Check result of a single item: + +``` +perfadm@lfgp000700749:/opt/huawei/perfadm/tool/script> gs_check -i CheckCPU +Parsing the check items config file successfully +Distribute the context file to remote hosts successfully +Start to health check for the cluster. Total Items:1 Nodes:3 + +Checking... [=========================] 1/1 +Start to analysis the check result +CheckCPU....................................OK +The item run on 3 nodes. success: 3 + +Analysis the check result successfully +Success. All check items run completed. Total:1 Success:1 Failed:0 +For more information please refer to /opt/huawei/wisequery/script/gspylib/inspection/output/CheckReport_201902193704661604.tar.gz +``` + +Local execution result: + +``` +perfadm@lfgp000700749:/opt/huawei/perfadm/tool/script> gs_check -i CheckCPU -L + +2017-12-29 17:09:29 [NAM] CheckCPU +2017-12-29 17:09:29 [STD] Check the CPU usage of the host. If the value of idle is greater than 30% and the value of iowait is less than 30%, this item passes the check. Otherwise, this item fails the check. +2017-12-29 17:09:29 [RST] OK + +2017-12-29 17:09:29 [RAW] +Linux 4.4.21-69-default (lfgp000700749) 12/29/17 _x86_64_ + +17:09:24 CPU %user %nice %system %iowait %steal %idle +17:09:25 all 0.25 0.00 0.25 0.00 0.00 99.50 +17:09:26 all 0.25 0.00 0.13 0.00 0.00 99.62 +17:09:27 all 0.25 0.00 0.25 0.13 0.00 99.37 +17:09:28 all 0.38 0.00 0.25 0.00 0.13 99.25 +17:09:29 all 1.00 0.00 0.88 0.00 0.00 98.12 +Average: all 0.43 0.00 0.35 0.03 0.03 99.17 +``` + +Check result of a scenario: + +``` +[perfadm@SIA1000131072 Check]$ gs_check -e inspect +Parsing the check items config file successfully +The below items require root privileges to execute:[CheckBlockdev CheckIOrequestqueue CheckIOConfigure CheckCheckMultiQueue CheckFirewall CheckSshdService CheckSshdConfig CheckCrondService CheckNoCheckSum CheckSctpSeProcMemory CheckBootItems CheckFilehandle CheckNICModel CheckDropCache] +Please enter root privileges user[root]:root +Please enter password for user[root]: +Please enter password for user[root] on the node[10.244.57.240]: +Check root password connection successfully +Distribute the context file to remote hosts successfully +Start to health check for the cluster. Total Items:59 Nodes:2 + +Checking... [ ] 21/59 +Checking... [=========================] 59/59 +Start to analysis the check result +CheckClusterState...........................OK +The item run on 2 nodes. success: 2 + +CheckDBParams...............................OK +The item run on 1 nodes. success: 1 + +CheckDebugSwitch............................OK +The item run on 2 nodes. success: 2 + +CheckDirPermissions.........................OK +The item run on 2 nodes. success: 2 + +CheckReadonlyMode...........................OK +The item run on 1 nodes. success: 1 + +CheckEnvProfile.............................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +GAUSSHOME /usr1/gaussdb/app +LD_LIBRARY_PATH /usr1/gaussdb/app/lib +PATH /usr1/gaussdb/app/bin + + +CheckBlockdev...............................OK +The item run on 2 nodes. success: 2 + +CheckCurConnCount...........................OK +The item run on 1 nodes. success: 1 + +CheckCursorNum..............................OK +The item run on 1 nodes. success: 1 + +CheckPgxcgroup..............................OK +The item run on 1 nodes. success: 1 + +CheckDiskFormat.............................OK +The item run on 2 nodes. success: 2 + +CheckSpaceUsage.............................OK +The item run on 2 nodes. success: 2 + +CheckInodeUsage.............................OK +The item run on 2 nodes. success: 2 + +CheckSwapMemory.............................OK +The item run on 2 nodes. success: 2 + +CheckLogicalBlock...........................OK +The item run on 2 nodes. success: 2 + +CheckIOrequestqueue.....................WARNING +The item run on 2 nodes. warning: 2 +The warning[host240,host157] value: +On device (vdb) 'IO Request' RealValue '256' ExpectedValue '32768' +On device (vda) 'IO Request' RealValue '256' ExpectedValue '32768' + +CheckMaxAsyIOrequests.......................OK +The item run on 2 nodes. success: 2 + +CheckIOConfigure............................OK +The item run on 2 nodes. success: 2 + +CheckMTU....................................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +1500 + +CheckPing...................................OK +The item run on 2 nodes. success: 2 + +CheckRXTX...................................NG +The item run on 2 nodes. ng: 2 +The ng[host240,host157] value: +NetWork[eth0] +RX: 256 +TX: 256 + + +CheckNetWorkDrop............................OK +The item run on 2 nodes. success: 2 + +CheckMultiQueue.............................OK +The item run on 2 nodes. success: 2 + +CheckEncoding...............................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +LANG=en_US.UTF-8 + +CheckFirewall...............................OK +The item run on 2 nodes. success: 2 + +CheckKernelVer..............................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +3.10.0-957.el7.x86_64 + +CheckMaxHandle..............................OK +The item run on 2 nodes. success: 2 + +CheckNTPD...................................OK +host240: NTPD service is running, 2020-06-02 17:00:28 +host157: NTPD service is running, 2020-06-02 17:00:06 + + +CheckOSVer..................................OK +host240: The current OS is centos 7.6 64bit. +host157: The current OS is centos 7.6 64bit. + + +CheckSysParams..........................WARNING +The item run on 2 nodes. warning: 2 +The warning[host240,host157] value: +Warning reason: variable 'net.ipv4.tcp_retries1' RealValue '3' ExpectedValue '5'. +Warning reason: variable 'net.ipv4.tcp_syn_retries' RealValue '6' ExpectedValue '5'. +Warning reason: variable 'net.sctp.path_max_retrans' RealValue '5' ExpectedValue '10'. +Warning reason: variable 'net.sctp.max_init_retransmits' RealValue '8' ExpectedValue '10'. + + +CheckTHP....................................OK +The item run on 2 nodes. success: 2 + +CheckTimeZone...............................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: ++0800 + +CheckCPU....................................OK +The item run on 2 nodes. success: 2 + +CheckSshdService............................OK +The item run on 2 nodes. success: 2 + +CheckSshdConfig.........................WARNING +The item run on 2 nodes. warning: 2 +The warning[host240,host157] value: + +Warning reason: UseDNS parameter is not set; expected: no + +CheckCrondService...........................OK +The item run on 2 nodes. success: 2 + +CheckStack..................................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +8192 + +CheckNoCheckSum.............................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +Nochecksum value is N,Check items pass. + +CheckSysPortRange...........................OK +The item run on 2 nodes. success: 2 + +CheckMemInfo................................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +totalMem: 31.260929107666016G + +CheckHyperThread............................OK +The item run on 2 nodes. success: 2 + +CheckTableSpace.............................OK +The item run on 1 nodes. success: 1 + +CheckSctpService............................OK +The item run on 2 nodes. success: 2 + +CheckSysadminUser...........................OK +The item run on 1 nodes. success: 1 + +CheckGUCConsistent..........................OK +All DN instance guc value is consistent. + +CheckMaxProcMemory..........................OK +The item run on 1 nodes. success: 1 + +CheckBootItems..............................OK +The item run on 2 nodes. success: 2 + +CheckHashIndex..............................OK +The item run on 1 nodes. success: 1 + +CheckPgxcRedistb............................OK +The item run on 1 nodes. success: 1 + +CheckNodeGroupName..........................OK +The item run on 1 nodes. success: 1 + +CheckTDDate.................................OK +The item run on 1 nodes. success: 1 + +CheckDilateSysTab...........................OK +The item run on 1 nodes. success: 1 + +CheckKeyProAdj..............................OK +The item run on 2 nodes. success: 2 + +CheckProStartTime.......................WARNING +host157: +STARTED COMMAND +Tue Jun 2 16:57:18 2020 /usr1/dmuser/dmserver/metricdb1/server/bin/gaussdb --single_node -D /usr1/dmuser/dmb1/data -p 22204 +Mon Jun 1 16:15:15 2020 /usr1/gaussdb/app/bin/gaussdb -D /usr1/gaussdb/data/dn1 -M standby + + +CheckFilehandle.............................OK +The item run on 2 nodes. success: 2 + +CheckRouting................................OK +The item run on 2 nodes. success: 2 + +CheckNICModel...............................OK +The item run on 2 nodes. success: 2 (consistent) +The success on all nodes value: +version: 1.0.0 +model: Red Hat, Inc. Virtio network device + + +CheckDropCache..........................WARNING +The item run on 2 nodes. warning: 2 +The warning[host240,host157] value: +No DropCache process is running + +CheckMpprcFile..............................NG +The item run on 2 nodes. ng: 2 +The ng[host240,host157] value: +There is no mpprc file + +Analysis the check result successfully +Failed. All check items run completed. Total:59 Success:52 Warning:5 NG:2 +For more information please refer to /usr1/gaussdb/tool/script/gspylib/inspection/output/CheckReport_inspect611.tar.gz + +``` + diff --git a/content/en/docs/Administratorguide/check-method-2.md b/content/en/docs/Administratorguide/check-method-2.md new file mode 100644 index 0000000000000000000000000000000000000000..91c4f5576886cfe7d5910dee77a6a09db1b78b7a --- /dev/null +++ b/content/en/docs/Administratorguide/check-method-2.md @@ -0,0 +1,40 @@ +# Check Method + +Use the **gs\_checkperf** tool provided by openGauss to check hardware performance. + +## Prerequisites + +- openGauss is running properly. +- Services are running properly on the database. + +## Procedure + +1. Log in as the OS user **omm** to the primary node of the database. +2. Run the following command to check the openGauss database performance: + + ``` + gs_checkperf + ``` + + +For details about performance statistical items, see "Server Tools \> gs\_checkperf \> Performance Check Items" in the _openGauss Tool Reference_. + +## Examples + +Simple performance statistical result is displayed on the screen as follows: + +``` +gs_checkperf -i pmk -U omm +Cluster statistics information: + Host CPU busy time ratio : 1.43 % + MPPDB CPU time % in busy time : 1.88 % + Shared Buffer Hit ratio : 99.96 % + In-memory sort ratio : 100.00 % + Physical Reads : 4 + Physical Writes : 25 + DB size : 70 MB + Total Physical writes : 25 + Active SQL count : 2 + Session count : 3 +``` + diff --git a/content/en/docs/Administratorguide/check-method.md b/content/en/docs/Administratorguide/check-method.md new file mode 100644 index 0000000000000000000000000000000000000000..8af1051f9843214bd9e2ba427553b8f366e6bdc0 --- /dev/null +++ b/content/en/docs/Administratorguide/check-method.md @@ -0,0 +1,60 @@ +# Check Method + +Use the **gs\_checkos** tool provided by openGauss to check the OS status. + +## Prerequisites + +- The hardware and network are working properly. +- The trust relationship of user **root** among the hosts is normal. +- Only user **root** is authorized to run the **gs\_checkos** command. + +## Procedure + +1. Log in to a server as user **root**. +2. Run the following command to check OS parameters of servers where the openGauss nodes are deployed: + + ``` + gs_checkos -i A + ``` + + Check the OS parameters to ensure that openGauss has passed the pre-installation check and can efficiently operate after it is installed. For details about the check items, see "Server Tools \> gs\_checkos" in the _openGauss Tool Reference_. + + +## Examples + +Before running the **gs\_checkos** command, execute pre-processing scripts by running **gs\_preinstall** to prepare the environment. The following uses parameter **A** as an example: + +``` +gs_checkos -i A +Checking items: + A1. [ OS version status ] : Normal + A2. [ Kernel version status ] : Normal + A3. [ Unicode status ] : Normal + A4. [ Time zone status ] : Normal + A5. [ Swap memory status ] : Normal + A6. [ System control parameters status ] : Normal + A7. [ File system configuration status ] : Normal + A8. [ Disk configuration status ] : Normal + A9. [ Pre-read block size status ] : Normal + A10.[ IO scheduler status ] : Normal + A11.[ Network card configuration status ] : Normal + A12.[ Time consistency status ] : Warning + A13.[ Firewall service status ] : Normal + A14.[ THP service status ] : Normal +Total numbers:14. Abnormal numbers:0. Warning number:1. +``` + +The following uses parameter **B** as an example: + +``` +gs_checkos -i B +Setting items: + B1. [ Set system control parameters ] : Normal + B2. [ Set file system configuration value ] : Normal + B3. [ Set pre-read block size value ] : Normal + B4. [ Set IO scheduler value ] : Normal + B5. [ Set network card configuration value ] : Normal + B6. [ Set THP service ] : Normal +Total numbers:6. Abnormal numbers:0. Warning number:0. +``` + diff --git a/content/en/docs/Administratorguide/checking-and-deleting-logs.md b/content/en/docs/Administratorguide/checking-and-deleting-logs.md new file mode 100644 index 0000000000000000000000000000000000000000..02282653e4c236ff9534db4b3f2103a35faaf732 --- /dev/null +++ b/content/en/docs/Administratorguide/checking-and-deleting-logs.md @@ -0,0 +1,11 @@ +# Checking and Deleting Logs + +You are advised to check OS logs and database run logs monthly for monitoring system status and troubleshooting, and to delete database run logs monthly for saving disk space. + +- **[Checking OS Logs](checking-os-logs.md)** + +- **[Checking openGauss Run Logs](checking-opengauss-run-logs.md)** + +- **[Cleaning Run Logs](cleaning-run-logs.md)** + + diff --git a/content/en/docs/Administratorguide/checking-database-performance.md b/content/en/docs/Administratorguide/checking-database-performance.md new file mode 100644 index 0000000000000000000000000000000000000000..408f5983f430e389f289b27cb6d7a28529cef2e6 --- /dev/null +++ b/content/en/docs/Administratorguide/checking-database-performance.md @@ -0,0 +1,7 @@ +# Checking Database Performance + +- **[Check Method](check-method-2.md)** + +- **[Exception Handling](exception-handling-3.md)** + + diff --git a/content/en/docs/Administratorguide/checking-opengauss-health-status.md b/content/en/docs/Administratorguide/checking-opengauss-health-status.md new file mode 100644 index 0000000000000000000000000000000000000000..df4c446b6b46efd8a2d75ef489e18bb606ac5c5a --- /dev/null +++ b/content/en/docs/Administratorguide/checking-opengauss-health-status.md @@ -0,0 +1,7 @@ +# Checking openGauss Health Status + +- **[Check Method](check-method-0.md)** + +- **[Exception Handling](exception-handling-1.md)** + + diff --git a/content/en/docs/Administratorguide/checking-opengauss-run-logs.md b/content/en/docs/Administratorguide/checking-opengauss-run-logs.md new file mode 100644 index 0000000000000000000000000000000000000000..00d7433b0a123999c949af40a52c75712d92cf1c --- /dev/null +++ b/content/en/docs/Administratorguide/checking-opengauss-run-logs.md @@ -0,0 +1,111 @@ +# Checking openGauss Run Logs + +A database can still run when errors occur during the execution of some operations. However, data may be inconsistent before and after the error occurrences. Therefore, you are advised to monthly check openGauss run logs to detect potential problems in time. + +## Prerequisites + +- The host used for collecting logs is running properly, and the network connection is normal. Database installation users trust each other. +- An OS tool \(for example, **gstack**\) that the log collection tool requires has been installed. If it is not installed, an error message is displayed, and this collection item is skipped. + +## Procedure + +1. Log in as the OS user **omm** to the primary node of the database. +2. Run the following command to collect database logs: + + ``` + gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" + ``` + + In the command, **20160616 01:01** indicates the start time of the log and **20160616 23:59** indicates the end time of the log. + +3. Based on command output in [2](#en-us_topic_0237088806_en-us_topic_0059778412_l87490fc259434bc6ac7800ec9881a6ab), access the related log collection directory, decompress collected database logs, and check these logs. + + Assume that collected logs are stored in **/opt/gaussdb/tmp/gaussdba\_mppdb/collector\_20160726\_105158.tar.gz**. + + ``` + tar -xvzf /opt/gaussdb/tmp/gaussdba_mppdb/collector_20160726_105158.tar.gz + cd /opt/gaussdb/tmp/gaussdba_mppdb/collector_20160726_105158 + ``` + + +## Examples + +- Run the **gs\_collector** command together with parameters **--begin-time** and **--end-time**: + + ``` + gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" + ``` + + If information similar to the following is displayed, the logs have been archived: + + ``` + Successfully collected files + All results are stored in /tmp/gaussdba_mppdb/collector_20160616_175615.tar.gz. + ``` + +- Run the **gs\_collector** command together with parameters **--begin-time**, **--end-time**, and **-h**: + + ``` + gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" -h plat2 + ``` + + If information similar to the following is displayed, the logs have been archived: + + ``` + Successfully collected files + All results are stored in /tmp/gaussdba_mppdb/collector_20160616_190225.tar.gz. + ``` + +- Run the **gs\_collector** command together with parameters **--begin-time**, **--end-time**, and **-f**: + + ``` + gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" -f /opt/software/gaussdb/output + ``` + + If information similar to the following is displayed, the logs have been archived: + + ``` + Successfully collected files + All results are stored in /opt/software/gaussdb/output/collector_20160616_190511.tar.gz. + ``` + +- Run the **gs\_collector** command together with parameters **--begin-time**, **--end-time**, and **--keyword**: + + ``` + gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" --keyword="os" + ``` + + If information similar to the following is displayed, the logs have been archived: + + ``` + Successfully collected files. + All results are stored in /tmp/gaussdba_mppdb/collector_20160616_190836.tar.gz. + ``` + +- Run the **gs\_collector** command together with parameters **--begin-time**, **--end-time**, and **-o**: + + ``` + gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" -o /opt/software/gaussdb/output + ``` + + If information similar to the following is displayed, the logs have been archived: + + ``` + Successfully collected files. + All results are stored in /opt/software/gaussdb/output/collector_20160726_113711.tar.gz. + ``` + +- Run the **gs\_collector** command together with parameters **--begin-time**, **--end-time**, and **-l** \(the file name extension must be .log\): + + ``` + gs_collector --begin-time="20160616 01:01" --end-time="20160616 23:59" -l /opt/software/gaussdb/logfile.log + ``` + + If information similar to the following is displayed, the logs have been archived: + + ``` + Successfully collected files. + All results are stored in /opt/software/gaussdb/output/collector_20160726_113711.tar.gz. + ``` + + diff --git a/content/en/docs/Administratorguide/checking-os-logs.md b/content/en/docs/Administratorguide/checking-os-logs.md new file mode 100644 index 0000000000000000000000000000000000000000..d8142987b5ecfd2261f14f7a16002a5be6335edc --- /dev/null +++ b/content/en/docs/Administratorguide/checking-os-logs.md @@ -0,0 +1,14 @@ +# Checking OS Logs + +You are advised to monthly check OS logs to detect and prevent potential OS problems. + +## Procedure + +Run the following command to check OS log files: + +``` +vim /var/log/messages +``` + +\(Pay attention to words like **kernel**, **error**, and **fatal** in logs generated within the last month and handle the problems based on the alarm information.\) + diff --git a/content/en/docs/Administratorguide/checking-os-parameters.md b/content/en/docs/Administratorguide/checking-os-parameters.md new file mode 100644 index 0000000000000000000000000000000000000000..6e70e6b96faf4fcb207979c8c2d6f1f9c0716410 --- /dev/null +++ b/content/en/docs/Administratorguide/checking-os-parameters.md @@ -0,0 +1,7 @@ +# Checking OS Parameters + +- **[Check Method](check-method.md)** + +- **[Exception Handling](exception-handling.md)** + + diff --git a/content/en/docs/Administratorguide/checking-the-number-of-application-connections.md b/content/en/docs/Administratorguide/checking-the-number-of-application-connections.md new file mode 100644 index 0000000000000000000000000000000000000000..ea50291be88a088391bb4c450727f4d058191ab5 --- /dev/null +++ b/content/en/docs/Administratorguide/checking-the-number-of-application-connections.md @@ -0,0 +1,126 @@ +# Checking the Number of Application Connections + +If the number of connections between applications and the database exceeds the maximum value, new connections cannot be established. You are advised to daily check the number of connections, release idle connections in time, or increase the allowed maximum number of connections. + +## Procedure + +1. Log in as the OS user **omm** to the primary node of the database. +2. Run the following command to connect to the database: + + ``` + gsql -d postgres -p 8000 + ``` + + **postgres** is the name of the database to be connected, and **8000** is the port number of the database primary node. + + If information similar to the following is displayed, the connection succeeds: + + ``` + gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 + Non-SSL connection (SSL connection is recommended when requiring high-security) + Type "help" for help. + + postgres=# + ``` + +3. Run the following SQL statement to check the number of connections: + + ``` + postgres=# SELECT count(*) FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS s; + ``` + + Information similar to the following is displayed. **2** indicates that two applications are connected to the database. + + ``` + count + ------- + 2 + (1 row) + ``` + +4. View the allowed maximum connections. + + ``` + postgres=# SHOW max_connections; + ``` + + Information similar to the following is displayed. **200** indicates the currently allowed maximum number of connections. + + ``` + max_connections + ----------------- + 200 + (1 row) + ``` + + +## Exception Handling + +If the number of connections in the command output is close to the value of **max\_connections** of the database, delete existing connections or change the upper limit based on site requirements. + +1. Run the following SQL statement to view information about connections whose **state** is set to **idle**, and **state\_change** column is not updated for a long time. + + ``` + postgres=# SELECT * FROM pg_stat_activity where state='idle' order by state_change; + ``` + + Information similar to the following is displayed: + + ``` + datid | datname | pid | usesysid | usename | application_name | client_addr + | client_hostname | client_port | backend_start | xact_start | quer + y_start | state_change | waiting | enqueue | state | resource_pool + | query + -------+----------+-----------------+----------+----------+------------------+--------------- + -+-----------------+-------------+-------------------------------+------------+-------------- + -----------------+-------------------------------+---------+---------+-------+--------------- + +---------------------------------------------- + 13626 | postgres | 140390162233104 | 10 | gaussdba | | + | | -1 | 2016-07-15 14:08:59.474118+08 | | 2016-07-15 14 + :09:04.496769+08 | 2016-07-15 14:09:04.496975+08 | f | | idle | default_pool + | select count(group_name) from pgxc_group; + 13626 | postgres | 140390132872976 | 10 | gaussdba | cn_5002 | 10.180.123.163 + | | 48614 | 2016-07-15 14:11:16.014871+08 | | 2016-07-15 14 + :21:17.346045+08 | 2016-07-15 14:21:17.346095+08 | f | | idle | default_pool + | SET SESSION AUTHORIZATION DEFAULT;RESET ALL; + (2 rows) + ``` + +2. Release idle connections. + + Check each connection and release them after obtaining approval from the users of the connections. Run the following SQL command to release a connection using **pid** obtained in the previous step: + + ``` + postgres=# SELECT pg_terminate_backend(140390132872976); + ``` + + Information similar to the following is displayed: + + ``` + postgres=# SELECT pg_terminate_backend(140390132872976); + pg_terminate_backend + ---------------------- + t + (1 row) + ``` + + If no connections can be released, go to the next step. + +3. Increase the maximum number of connections. + + ``` + gs_guc set -D /gaussdb/data/dbnode -c "max_connections= 800" + ``` + + **800** is the new maximum value. + +4. Restart database services to make the new settings take effect. + + > **NOTE:** + >The restart results in operation interruption. Properly plan the restart to avoid affecting users. + + ``` + gs_om -t stop && gs_om -t start + ``` + + diff --git a/content/en/docs/Administratorguide/checking-time-consistency.md b/content/en/docs/Administratorguide/checking-time-consistency.md new file mode 100644 index 0000000000000000000000000000000000000000..f79fd1ea5c9235e1ca60a79936a34799e42724c7 --- /dev/null +++ b/content/en/docs/Administratorguide/checking-time-consistency.md @@ -0,0 +1,46 @@ +# Checking Time Consistency + +Database transaction consistency is guaranteed by a logical clock and is not affected by OS time. However, OS time inconsistency will lead to problems, such as abnormal backend O&M and monitoring functions. Therefore, you are advised to monthly check time consistency among nodes. + +## Procedure + +1. Log in as the OS user **omm** to any host in the GaussDB Kernel cluster. +2. Create a configuration file containing information about nodes in the cluster. + + ``` + vim /tmp/mpphosts + ``` + + Add the host name of each node. + + ``` + plat1 + plat2 + plat3 + ``` + +3. Save the configuration file. + + ``` + :wq! + ``` + +4. Run the following command and write the time on each node into the **/tmp/sys\_ctl-os1.log** file: + + ``` + for ihost in `cat /tmp/mpphosts`; do ssh -n -q $ihost "hostname;date"; done > /tmp/sys_ctl-os1.log + ``` + +5. Check time consistency between the nodes based on the command output. The time difference should not exceed 30s. + + ``` + cat /tmp/sys_ctl-os1.log + plat1 + Thu Feb 9 16:46:38 CST 2017 + plat2 + Thu Feb 9 16:46:49 CST 2017 + plat3 + Thu Feb 9 16:46:14 CST 2017 + ``` + + diff --git a/content/en/docs/Administratorguide/cleaning-run-logs.md b/content/en/docs/Administratorguide/cleaning-run-logs.md new file mode 100644 index 0000000000000000000000000000000000000000..0ac2ab0d99ef6bde80d62afc529e90e271540a83 --- /dev/null +++ b/content/en/docs/Administratorguide/cleaning-run-logs.md @@ -0,0 +1,25 @@ +# Cleaning Run Logs + +A large number of run logs will be generated during database running and occupy huge disk space. You are advised to delete expired run logs and retain logs generated within one month. + +## Procedure + +1. Log in as the OS user **omm** to any host in the GaussDB Kernel cluster. +2. Clean logs. + 1. Back up logs generated over one month ago to other disks. + 2. Access the directory where logs are stored. + + ``` + cd $GAUSSLOG + ``` + + 3. Access the corresponding sub-directory and run the following command to delete logs generated one month ago: + + ``` + rm log name + ``` + + The naming convention of a log file is **postgresql-**_year_-_month_-_day_**\_HHMMSS**. + + + diff --git a/content/en/docs/Administratorguide/data-security-maintenance-suggestions.md b/content/en/docs/Administratorguide/data-security-maintenance-suggestions.md new file mode 100644 index 0000000000000000000000000000000000000000..838e8440de6472133ebc55c2d2830d1dcac1b9c6 --- /dev/null +++ b/content/en/docs/Administratorguide/data-security-maintenance-suggestions.md @@ -0,0 +1,23 @@ +# Data Security Maintenance Suggestions + +To ensure data security in GaussDB Kernel and prevent accidents, such as data loss and illegal data access, read this section carefully. + +## Preventing Data Loss + +You are advised to plan routine physical backup and store backup files in a reliable medium. If a serious error occurs in the system, you can use the backup files to restore the system to the state at the backup point. + +## Preventing Illegal Data Access + +- You are advised to manage database users based on their permission hierarchies. A database administrator creates users and grants permissions to the users based on service requirements to ensure users properly access the database. +- You are advised to deploy GaussDB Kernel servers and clients \(or applications developed based on the client library\) in trusted internal networks. If the servers and clients must be deployed in an untrusted network, enable SSL encryption before services are started to ensure data transmission security. Note that enabling the SSL encryption function compromises database performance. + +## Preventing System Logs from Leaking Personal Data + +- Delete personal data before sending debug logs to others for analysis. + + > **NOTE:** + >The log level **log\_min\_messages** is set to **DEBUG**_x_ \(_x_ indicates the debug level and the value ranges from 1 to 5\). The information recorded in debug logs may contain personal data. + +- Delete personal data before sending system logs to others for analysis. If the execution of a SQL statement fails, the error SQL statement will be recorded in a system log by default. SQL statements may contain personal data. +- Set **log\_min\_error\_statement** to **PANIC** to prevent error SQL statements from being recorded in system logs. However, once the function is disabled, it is difficult to locate fault causes if faults occur. + diff --git a/content/en/docs/Administratorguide/exception-handling-1.md b/content/en/docs/Administratorguide/exception-handling-1.md new file mode 100644 index 0000000000000000000000000000000000000000..841adc2dce7150a3cb7ac211c7fd6b69ee7ba37c --- /dev/null +++ b/content/en/docs/Administratorguide/exception-handling-1.md @@ -0,0 +1,370 @@ +# Exception Handling + +Troubleshoot exceptions detected in the inspection by following instructions in this section. + +**Table 1** Check of openGauss running status + + +
+ | ++ | +
---|---|
+ | +Run the following command to check whether SSD is faulty. If yes, analyze the specific cause. +gs_checkperf -i SSD -U omm+ |
+
+ | ++ | ++ | ++ | ++ | +
---|---|---|---|---|
+ | ++ | +A plain-text script file containing SQL statements and commands. The commands can be executed on gsql, a command line terminal, to recreate database objects and load table data. + |
+You are advised to use plain-text exported files for small databases. + |
+Before using gsql to restore database objects, you can use a text editor to edit the plain-text export file as required. + |
+
+ | ++ | +A binary file that allows the restoration of all or selected database objects from an exported file. + |
+You are advised to use custom-format archive files for medium or large database. + |
+You can use gs_restore to import database objects from a custom-format archive. + |
+
+ | ++ | +A directory containing directory files and the data files of tables and BLOB objects. + |
++ | +|
+ | ++ | +A tar-format archive that allows the restoration of all or selected database objects from an exported file. It cannot be further compressed and has an 8-GB limitation on the size of a single table. + |
++ | +
+ | ++ | +
---|---|
Modify the file name, permission, or content, or delete any content in the data directory. + |
++ | +
+ | ++ | +
+ | ++ | +
---|---|
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
---|---|
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
---|---|
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | ++ | +
---|---|---|
+ | ++ | ++ | +
+ | ++ | +
---|---|
+ | +
|
+
+ | ++ | +
+ | ++ | +
---|---|
+ | ++ | +
+ | +The value can be customized, for example, open_ai. The value must meet the unique constraint. + |
+
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | +Iteration times. A large value is recommended to ensure the convergence effect, for example, 2000. + |
+
+ | +(0, 1] is a floating-point number. A large learning rate is recommended to accelerate convergence. + |
+
+ | +Number of feature values to be reduced. +-1: Do not use PCA for dimension reduction. All features are supported. +Floating point number in the range of (0, 1]: A smaller value indicates a smaller training dimension and a faster convergence speed, but affects the training accuracy. + |
+
+ | +If the feature value dimension is high, you are advised to increase the value of this parameter to increase the model complexity. For example, set this parameter to 64, 128, and so on. + |
+
+ | +You are advised to increase the value of this parameter based on the amount of encoded data to accelerate model convergence. For example, set this parameter to 256, 512, and so on. + |
+
+ | +See GS_OPT_MODEL. + |
+
+ | ++ | ++ | ++ | +
---|---|---|---|
+ | ++ | ++ | ++ | +
+ | ++ | ++ | +
---|---|---|
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
---|---|---|
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | ++ | +
---|---|---|---|
+ | ++ | +
|
+Messages of the set level or lower will be sent to clients. The lower the level is, the fewer the messages will be sent. + |
+
+ | ++ | +
|
+Messages higher than the set level will be recorded in logs. The higher the level is, the fewer the server logs will be recorded. + |
+
+ | +Level of SQL error statements to be recorded in server logs. + |
+
|
+SQL error statements of the set level or higher will be recorded in server logs. +Only a system administrator is allowed to modify this parameter. + |
+
+ | +Minimum execution duration of a statement. If the execution duration of a statement is equal to or longer than the set milliseconds, the statement and its duration will be recorded in logs. Enabling this function can help you track the query attempts to be optimized. + |
++ + + | +The default value (-1) indicates that the function is disabled. +Only a system administrator is allowed to modify this parameter. + |
+
+ | +Whether to record a server log message when each session is connected or disconnected. + |
++ + | ++ | +
+ | ++ | ++ + | +Only a system administrator is allowed to modify this parameter. + |
+
+ | ++ | ++ + | +Only a system administrator is allowed to modify this parameter. + |
+
+ | ++ | ++ + | +By default, connection logs only record the IP addresses of connected hosts. With this function, the host names will also be recorded. +This parameter affects parameters in Querying Audit Results, GS_WLM_SESSION_HISTORY, PG_STAT_ACTIVITY, and log_line_prefix. + |
+
+ | ++ | +
---|---|
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | + + | ++ | ++ + | ++ | ++ | ++ | +
---|---|---|---|---|---|---|
+ | ++ | ++ | ++ | ++ | ++ | ++ | +
+ | ++ | ++ | ++ | ++ | ++ | ++ | +
+ | ++ | ++ | ++ | ++ | ++ | ++ | +
+ | ++ | ++ | ++ | ++ | ++ | ++ | +
+ | ++ | ++ | ++ | ++ | ++ | ++ | +
+ | ++ | ++ | ++ | ++ | ++ | ++ | +
+ | ++ | ++ | ++ | ++ | ++ | ++ | +
+ | ++ | ++ | ++ | ++ | ++ | ++ + | +
+ | ++ | ++ | ++ | ++ | ++ | ++ | +
+ | ++ | ++ | ++ | ++ | ++ | ++ | +
+ | ++ | ++ | ++ | ++ | ++ | ++ | +
+ | ++ | ++ | ++ | ++ | ++ | ++ | +
+ | ++ | ++ | ++ | ++ | ++ | ++ | +
+ | ++ | ++ | ++ | ++ | ++ | ++ | +
+ | ++ | ++ | ++ | ++ | ++ | ++ | +
+ | ++ | ++ | +
---|---|---|
+ | +Indicates that this record accepts only the Unix-domain-socket connection. If no such type of record exists, Unix-domain-socket connections are not allowed. +When gsql is used to initiate a connection from a local server and the -U parameter is not specified, a Unix-domain-socket connection is established. + |
++ | +
+ | +Indicates that this record accepts either a common TCP/IP-socket connection or a TCP/IP-socket connection encrypted through SSL. + |
++ | +
+ | +Indicates that this record accepts only a TCP/IP socket connection encrypted through SSL. + |
+For the connection encrypted through SSL, you need to apply for a digital certificate and configure related parameters. For details, see Establishing Secure TCP/IP Connections in SSL Mode. + |
+
+ | +Indicates that this record accepts only a common TCP/IP socket connection. + |
++ | +
+ | ++ | +
|
+
+ | +Users who match the record and are allowed to access databases + |
+
|
+
+ | +Range of IP addresses that match the record and can be visited + |
+IPv4 and IPv6 are supported. The IP address range can be expressed in the following two formats: + + + |
+
+ | ++ | +The following authentication modes are supported. For details, see Table 2. +
|
+
+ | ++ | +
---|---|
+ | +In trust mode, only the connection initiated from the local server using gsql with the -U parameter not specified is trusted. In this case, no password is required. +The trust authentication mode applies to local connection of a single-user workstation, but not of a multi-user workstation. To use the trust authentication, you can use the file system permissions to control the access to the Unix-domain socket file on the server. You can use either of the following methods to control the access: +
|
+
+ | +Rejects connection unconditionally. This authentication mode is usually used for filtering certain hosts. + |
+
+ | +Requires that the client must provide an MD5-encrypted password for authentication. + + |
+
+ | +Requires that the client must provide a sha256-encrypted password for authentication. The password is encrypted based on the unidirectional sha256 of salt (a random number sent from the server to the client) when being transmitted, enhancing the security. + |
+
+ | +Client certificate authentication mode. In this mode, the SSL connection must be configured and the client must provide a valid SSL certificate. The user password is not required. + + |
+
+ | +Uses the GSSAPI-based Kerberos authentication. + NOTICE:
+
|
+
+ | ++ | ++ | +
---|---|---|
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | +Driver installation path, which is the same as the dynamic library path in Driver64. + |
+ + | +
+ | ++ | ++ | +
---|---|---|
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | +
+ NOTE:
+ After a user established a connection, the ODBC driver automatically clears their password stored in memory. +However, if this parameter is configured, UnixODBC will cache data source files, which may cause the password to be stored in the memory for a long time. +When you connect to an application, you are advised to send your password through an API instead of writing it in a data source configuration file. After the connection has been established, immediately clear the memory segment where your password is stored. + |
+
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | +Whether to enable the extended query protocol for the database. +The value can be 0 or 1. The default value is 1, indicating that the extended query protocol is enabled. + |
+ + | +
+ | +Whether to enable the batch query protocol. If it is enabled, DML performance can be improved. The value can be 0 or 1. The default value is 1. +If this parameter is set to 0, the batch query protocol is disabled (mainly for communication with earlier database versions). +If this parameter is set to 1 and support_batch_bind is set to on, the batch query protocol is enabled. + |
+ + | +
+ | +Whether to display the driver deployment path and process owner in the connection_info parameter mentioned in connection_info. + |
+
+ NOTE:
+ The default value is 0. If this parameter is set to 1, the ODBC driver reports the driver deployment path and process owner to the database and displays the information in the connection_info parameter (see connection_info). In this case, you can query the information from PG_STAT_ACTIVITY. + |
+
+ | ++ | ++ | +
---|---|---|
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | ++ | +
---|---|---|---|
+ | ++ | ++ | ++ | +
+ | ++ | ++ | ++ | +
+ | ++ | ++ | ++ | +
+ | ++ | ++ | ++ | +
+ | ++ | ++ | ++ | +
+ | ++ | ++ | ++ | +
+ | ++ | ++ | ++ | +
---|---|---|---|
+ | ++ | ++ | ++ | +
+ | ++ | ++ | +|
+ | ++ | ++ | ++ | +
+ | ++ | ++ | +|
+ | ++ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
---|---|---|
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | ++ | +
---|---|---|---|
+ | ++ | ++ | ++ | +
+ | ++ | ++ | +|
+ | ++ | ++ | +|
+ | ++ | ++ | +|
+ | ++ | ++ | +|
+ | ++ | ++ | +|
+ | ++ | ++ | +|
+ | ++ | ++ | +|
+ | ++ | ++ | +|
+ | ++ | ++ | +|
+ | ++ | ++ | ++ | +
+ | ++ | ++ | ++ | +
+ | ++ | ++ | +|
+ | ++ | ++ | +|
+ | ++ | ++ | +|
+ | ++ | ++ | +|
+ | ++ | ++ | +|
+ | ++ | ++ | ++ | +
+ | ++ | ++ | +|
+ | ++ | ++ | +|
+ | ++ | ++ | +|
+ | ++ | ++ | +|
+ | ++ | ++ | +|
+ | ++ | ++ | ++ | +
+ | ++ | ++ | +|
+ | ++ | ++ | ++ | +
+ | ++ | +
---|---|
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
---|---|
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | +Same as 16:05. Input hours must be less than or equal to 12. + |
+
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
---|---|
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | ++ | +
---|---|---|
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | ++ | +
+ | ++ | +
---|---|
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
---|---|
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
---|---|
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
---|---|
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
---|---|
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
---|---|
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
---|---|
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
---|---|
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
---|---|
+ | ++ | +
+ | ++ | +
+ | ++ | +
---|---|
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
---|---|
+ | ++ | +
+ | ++ | +
+ | ++ | +
---|---|
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
---|---|
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
---|---|
+ | +SQLAllocHandle is a generic function for allocating a handle. It can replace the following functions: +
|
+
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | +SQLFreeHandle is a generic function for releasing a handle. It can replace the following functions: +
|
+
+ | ++ | +
---|---|
+ | ++ | +
+ | ++ | +
+ | ++ | +
---|---|
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +