

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 中使用診斷支援指令碼 AWS DMS
<a name="CHAP_SupportScripts"></a>

如果您在使用 時遇到問題 AWS DMS，您的支援工程師可能需要有關來源或目標資料庫的詳細資訊。我們希望確保 AWS Support 盡可能在最短的時間內取得所需的資訊。因此，我們開發了指令碼，以查詢幾個主要關聯式資料庫引擎的這項資訊。

如果資料庫有可用的支援指令碼，請使用以下所述的對應指令碼主題中的連結下載該指令碼。在驗證並檢閱指令碼 (如下所述) 之後，您可以根據指令碼主題中描述的程序來執行指令碼。當指令碼執行完成時，您可以將其輸出上傳到您的 AWS 支援案例 （再次說明，如下所述）。

在執行指令碼之前，您可以偵測下載或存放支援指令碼時可能引進的任何錯誤。若要這樣做，請將指令碼檔案的檢查總和與 提供的值進行比較 AWS。 AWS 會使用檢查總和的 SHA256 演算法。

**若要使用總和檢查驗證支援指令碼檔案**

1. 在 [https://d2pwp9zz55emqw.cloudfront.net/sha256Check.txt](https://d2pwp9zz55emqw.cloudfront.net/sha256Check.txt) 開啟提供的最新總和檢查檔案，以驗證這些支援指令碼。例如，檔案可能具有下列內容。

   ```
   MYSQL  dfafd0d511477c699f96c64693ad0b1547d47e74d5c5f2f2025b790b1422e3c8
   ORACLE  6c41ebcfc99518cfa8a10cb2ce8943b153b2cc7049117183d0b5de3d551bc312
   POSTGRES  6ccd274863d14f6f3146fbdbbba43f2d8d4c6a4c25380d7b41c71883aa4f9790
   SQL_SERVER  971a6f2c46aec8d083d2b3b6549b1e9990af3a15fe4b922e319f4fdd358debe7
   ```

1. 在包含支援檔案的目錄中，執行適用於您作業系統的 SHA256 驗證命令。例如，在 macOS 作業系統上，您可以在本主題稍後所述的 Oracle 支援指令碼上執行下列命令。

   ```
   shasum -a 256 awsdms_support_collector_oracle.sql
   ```

1. 將指令的結果與您開啟的最新 `sha256Check.txt` 檔案中顯示的值進行比較。兩個值應該相符。如果不相符，請聯絡支援工程師，以了解不相符的項目，以及如何取得乾淨的支援指令碼檔案。

如果您有乾淨的支援指令碼檔案，在執行指令碼之前，請確保從效能和安全性的角度閱讀和理解 SQL。如果您不習慣在此指令碼中執行任何 SQL，您可以加入註解或移除問題 SQL。您也可以向支援工程師諮詢，了解任何可接受的因應措施。

成功完成後，除非另有說明，否則指令碼會以可讀的 HTML 格式傳回輸出。該指令碼旨在從此 HTML 中排除任何可能危及您業務的資料或安全性詳細資訊。其也不會對您的資料庫或其環境進行任何修改。但是，如果您在 HTML 中發現任何不希望分享的資訊，請在上傳 HTML 之前移除問題資訊。當您能夠放心分享 HTML 中的資訊時，請使用支援案例的**案例詳細資訊**中的**附件**來上傳 HTML。

下列每個主題說明支援 AWS DMS 資料庫可用的指令碼，以及如何執行這些指令碼。支援工程師將引導您執行以下記錄的特定指令碼。

**Topics**
+ [Oracle 診斷支援指令碼](CHAP_SupportScripts.Oracle.md)
+ [SQL Server 診斷支援指令碼](CHAP_SupportScripts.SQLServer.md)
+ [MySQL 相容資料庫的診斷支援指令碼](CHAP_SupportScripts.MySQL.md)
+ [PostgreSQL 診斷支援指令碼](CHAP_SupportScripts.PostgreSQL.md)

# Oracle 診斷支援指令碼
<a name="CHAP_SupportScripts.Oracle"></a>

您可以在下面找到診斷支援指令碼，以便在 AWS DMS 遷移組態中分析內部部署或 Amazon RDS for Oracle 資料庫。這些指令碼可與來源或目標端點搭配使用。所有指令碼都會寫入，以在 SQL\$1Plus 命令列公用程式中執行。如需使用此公用程式的相關資訊，請參閱 Oracle 文件中的[使用 SQL 命令列的 A](https://docs.oracle.com/cd/B25329_01/doc/appdev.102/b25108/xedev_sqlplus.htm)。

在執行指令碼之前，請確定您使用的使用者帳戶具有存取 Oracle 資料庫的必要許可。顯示的許可設定會假設如下建立使用者。

```
CREATE USER script_user IDENTIFIED BY password;
```

對於內部部署資料庫，請為 `script_user` 如下所示設定最低許可。

```
GRANT CREATE SESSION TO script_user;
GRANT SELECT on V$DATABASE to script_user;
GRANT SELECT on V$VERSION to script_user;
GRANT SELECT on GV$SGA to script_user;
GRANT SELECT on GV$INSTANCE to script_user;
GRANT SELECT on GV$DATAGUARD_CONFIG to script_user;
GRANT SELECT on GV$LOG to script_user;
GRANT SELECT on DBA_TABLESPACES to script_user;
GRANT SELECT on DBA_DATA_FILES to script_user;
GRANT SELECT on DBA_SEGMENTS to script_user;
GRANT SELECT on DBA_LOBS to script_user;
GRANT SELECT on V$ARCHIVED_LOG to script_user;
GRANT SELECT on DBA_TAB_MODIFICATIONS to script_user;
GRANT SELECT on DBA_TABLES to script_user;
GRANT SELECT on DBA_TAB_PARTITIONS to script_user;
GRANT SELECT on DBA_MVIEWS to script_user;
GRANT SELECT on DBA_OBJECTS to script_user;
GRANT SELECT on DBA_TAB_COLUMNS to script_user;
GRANT SELECT on DBA_LOG_GROUPS to script_user;
GRANT SELECT on DBA_LOG_GROUP_COLUMNS to script_user;
GRANT SELECT on V$ARCHIVE_DEST to script_user;
GRANT SELECT on DBA_SYS_PRIVS to script_user;
GRANT SELECT on DBA_TAB_PRIVS to script_user;
GRANT SELECT on DBA_TYPES to script_user;
GRANT SELECT on DBA_CONSTRAINTS to script_user;
GRANT SELECT on V$TRANSACTION to script_user;
GRANT SELECT on GV$ASM_DISK_STAT to script_user;
GRANT SELECT on GV$SESSION to script_user;
GRANT SELECT on GV$SQL to script_user;
GRANT SELECT on DBA_ENCRYPTED_COLUMNS to script_user;
GRANT SELECT on DBA_PDBS to script_user;

GRANT EXECUTE on dbms_utility to script_user;
```

對於 Amazon RDS 資料庫，請如下所示設定最低許可。

```
GRANT CREATE SESSION TO script_user;
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$VERSION','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$SGA','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$INSTANCE','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$DATAGUARD_CONFIG','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$LOG','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_TABLESPACES','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_DATA_FILES','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_SEGMENTS','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_LOBS','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_TAB_MODIFICATIONS','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_TABLES','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_TAB_PARTITIONS','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_MVIEWS','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_TAB_COLUMNS','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_LOG_GROUPS','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_LOG_GROUP_COLUMNS','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVE_DEST','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_SYS_PRIVS','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_TAB_PRIVS','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_TYPES','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_CONSTRAINTS','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TRANSACTION','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$ASM_DISK_STAT','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$SESSION','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('GV_$SQL','script_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_ENCRYPTED_COLUMNS','script_user','SELECT');

exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_PDBS','script_user','SELECT');

exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_UTILITY','script_user','EXECUTE');
```

您可以在下方找到說明，了解如何下載、檢閱和執行每個適用於 Oracle 的 SQL\$1Plus 支援指令碼。您也可以了解如何檢閱輸出並將其上傳至 AWS Support 案例。

**Topics**
+ [awsdms\$1support\$1collector\$1oracle.sql script](#CHAP_SupportScripts.Oracle.Awsdms_Support_Collector_Oracle_Script)

## awsdms\$1support\$1collector\$1oracle.sql script
<a name="CHAP_SupportScripts.Oracle.Awsdms_Support_Collector_Oracle_Script"></a>

下載 [https://d2pwp9zz55emqw.cloudfront.net/scripts/awsdms_support_collector_oracle.sql](https://d2pwp9zz55emqw.cloudfront.net/scripts/awsdms_support_collector_oracle.sql) 指令碼。

此指令碼會收集 Oracle 資料庫組態的相關資訊。請記得驗證指令碼上的總和檢查，且如果總和檢查已驗證，請檢閱指令碼中的 SQL 程式碼，將您不希望執行的任何程式碼加上註解。您對指令碼的完整性和內容感到滿意之後，就可以執行該指令碼。

**若要執行指令碼並將結果上傳至支援案例**

1. 使用下列 SQL\$1Plus 命令列，從資料庫環境執行指令碼。

   ```
   SQL> @awsdms_support_collector_oracle.sql
   ```

   此指令碼會顯示簡短說明和提示，以繼續或中止執行。按下 [Enter] 以繼續。

1. 在下列提示中，僅輸入您要遷移之其中一個結構描述的名稱。

1. 在下列提示中，輸入您已定義要連線至資料庫的使用者名稱 (*script\$1user*)。

1. 在以下提示中，輸入您要檢查的資料天數，或接受預設值。然後，指令碼會收集資料庫中的指定資料。

   指令碼完成後，指令碼會顯示輸出 HTML 檔案的名稱，例如 `dms_support_oracle-2020-06-22-13-20-39-ORCL.html`。此指令碼會將此檔案儲存在工作目錄中。

1. 檢閱此 HTML 檔案，並移除您不希望分享的任何資訊。當 HTML 可供您共用時，請將檔案上傳至您的 AWS 支援案例。如需上傳此檔案的詳細資訊，請參閱[在 中使用診斷支援指令碼 AWS DMS](CHAP_SupportScripts.md)。

# SQL Server 診斷支援指令碼
<a name="CHAP_SupportScripts.SQLServer"></a>

您可以在下面找到診斷支援指令碼的說明，可用於在 AWS DMS 遷移組態中分析內部部署或 Amazon RDS for SQL Server 資料庫。這些指令碼可與來源或目標端點搭配使用。對於內部部署資料庫，請在 sqlcmd 命令列公用程式中執行這些指令碼。如需使用此公用程式的相關資訊，請參閱 Microsoft 說明文件中的 [sqlcmd - 使用公用程式](https://docs.microsoft.com/en-us/sql/ssms/scripting/sqlcmd-use-the-utility?view=sql-server-ver15)。

對於 Amazon RDS 資料庫，您無法使用 sqlcmd 命令列公用程式進行連線。而是使用任何連線到 Amazon RDS SQL Server 的用戶端工具來執行這些指令碼。

在執行指令碼之前，請確定您使用的使用者帳戶具有存取 SQL Server 資料庫的必要許可。對於內部部署和 Amazon RDS 資料庫，您可以使用與存取 SQL Server 資料庫相同的許可，而不需要使用 `SysAdmin` 角色。

**Topics**
+ [設定內部部署 SQL Server 資料庫的最低許可](#CHAP_SupportScripts.SQLServer.onprem)
+ [設定 Amazon RDS SQL Server 資料庫的最低許可](#CHAP_SupportScripts.SQLServer.rds)
+ [SQL Server 支援指令碼](#CHAP_SupportScripts.SQLServer.Scripts)

## 設定內部部署 SQL Server 資料庫的最低許可
<a name="CHAP_SupportScripts.SQLServer.onprem"></a>

**若要設定針對內部部署 SQL Server 資料庫執行的最低許可**

1. 使用 SQL Server Management Studio (SSMS) 建立有密碼驗證的新 SQL Server 帳戶，例如 `on-prem-user`。

1. 在 SSMS 的**使用者對應**區段中，選擇 **MSDB** 和 **MASTER** 資料庫 (提供公有許可)，並指派您想要執行此指令碼之資料庫的 `DB_OWNER` 角色。

1. 開啟新帳戶的內容 (按一下滑鼠右鍵) 選單，選擇**安全**並明確授予 `Connect SQL` 權限。

1. 執行下列授予命令。

   ```
   GRANT VIEW SERVER STATE TO on-prem-user;
   USE MSDB;
   GRANT SELECT ON MSDB.DBO.BACKUPSET TO on-prem-user;
   GRANT SELECT ON MSDB.DBO.BACKUPMEDIAFAMILY TO on-prem-user;
   GRANT SELECT ON MSDB.DBO.BACKUPFILE TO on-prem-user;
   ```

## 設定 Amazon RDS SQL Server 資料庫的最低許可
<a name="CHAP_SupportScripts.SQLServer.rds"></a>

**若要使用 Amazon RDS SQL Server 資料庫的最低許可執行**

1. 使用 SQL Server Management Studio (SSMS) 建立有密碼驗證的新 SQL Server 帳戶，例如 `rds-user`。

1. 在 SSMS 的**使用者對應**區段中，選擇 **MSDB** 資料庫 (提供公有許可)，並指派您想要執行此指令碼之資料庫的 `DB_OWNER` 角色。

1. 開啟新帳戶的內容 (按一下滑鼠右鍵) 選單，選擇**安全**並明確授予 `Connect SQL` 權限。

1. 執行下列授予命令。

   ```
   GRANT VIEW SERVER STATE TO rds-user;
   USE MSDB;
   GRANT SELECT ON MSDB.DBO.BACKUPSET TO rds-user;
   GRANT SELECT ON MSDB.DBO.BACKUPMEDIAFAMILY TO rds-user;
   GRANT SELECT ON MSDB.DBO.BACKUPFILE TO rds-user;
   ```

## SQL Server 支援指令碼
<a name="CHAP_SupportScripts.SQLServer.Scripts"></a>

下列主題說明如何下載、檢閱及執行適用於 SQL Server 的每個支援指令碼。其中也會說明如何檢閱指令碼輸出，並將其上傳至 AWS Support 案例。

**Topics**
+ [awsdms\$1support\$1collector\$1sql\$1server.sql 指令碼](#CHAP_SupportScripts.SQLServer.Awsdms_Support_Collector_SQLServer_Script)

### awsdms\$1support\$1collector\$1sql\$1server.sql 指令碼
<a name="CHAP_SupportScripts.SQLServer.Awsdms_Support_Collector_SQLServer_Script"></a>

下載 [https://d2pwp9zz55emqw.cloudfront.net/scripts/awsdms_support_collector_sql_server.sql](https://d2pwp9zz55emqw.cloudfront.net/scripts/awsdms_support_collector_sql_server.sql) 指令碼。

**注意**  
只在 SQL Server 2014 及更高版本上執行此 SQL Server 診斷支援指令碼。

這個指令碼會收集 SQL Server 資料庫組態的相關資訊。請記得驗證指令碼上的總和檢查，且如果總和檢查已驗證，請檢閱指令碼中的 SQL 程式碼，將您不希望執行的任何程式碼加上註解。您對指令碼的完整性和內容感到滿意之後，就可以執行該指令碼。

**若要執行內部部署 SQL Server 資料庫的指令碼**

1. 使用以下 sqlcmd 命令列來執行此指令碼。

   ```
   sqlcmd -Uon-prem-user -Ppassword -SDMS-SQL17AG-N1 -y 0 
   -iC:\Users\admin\awsdms_support_collector_sql_server.sql -oC:\Users\admin\DMS_Support_Report_SQLServer.html -dsqlserverdb01
   ```

   指定的 sqlcmd 命令參數包含下列各項：
   + `-U` – 資料庫使用者名稱。
   + `-P` – 資料庫使用者密碼。
   + `-S` – SQL Server 資料庫伺服器名稱。
   + `-y`— 從 sqlcmd 公用程式輸出的資料欄最大寬度。值 0 指定無限寬度的資料欄。
   + `-i` – 要執行的支援指令碼路徑 (在此情況下為 `awsdms_support_collector_sql_server.sql`)。
   + `-o` – 含有您指定之檔案名稱的輸出 HTML 檔案路徑，其中包含收集的資料庫組態資訊。
   + `-d` – SQL Server 資料庫名稱。

1. 指令碼完成後，請檢閱輸出的 HTML 檔案，並移除您不希望分享的任何資訊。當 HTML 可供您共用時，請將檔案上傳至您的 AWS 支援案例。如需上傳此檔案的詳細資訊，請參閱[在 中使用診斷支援指令碼 AWS DMS](CHAP_SupportScripts.md)。

使用 Amazon RDS for SQL Server 時，您無法使用 sqlcmd 命令列公用程式進行連線，因此請使用下列程序。

**若要執行 RDS SQL Server 資料庫的指令碼**

1. 使用任何可讓您以 `Master` 使用者身分連線到 RDS SQL Server 的用戶端工具來執行指令碼，並將輸出儲存為 HTML 檔案。

1. 檢閱輸出的 HTML 檔案，並移除您不希望分享的任何資訊。當 HTML 可供您共用時，請將檔案上傳至您的 AWS 支援案例。如需上傳此檔案的詳細資訊，請參閱[在 中使用診斷支援指令碼 AWS DMS](CHAP_SupportScripts.md)。

# MySQL 相容資料庫的診斷支援指令碼
<a name="CHAP_SupportScripts.MySQL"></a>

您可以在下面找到診斷支援指令碼，以便在 AWS DMS 遷移組態中分析內部部署或 Amazon RDS for MySQL 相容資料庫。這些指令碼可與來源或目標端點搭配使用。所有指令碼都會寫入，以在 MySQL SQL 命令列中執行。

如需安裝 MySQL 用戶端的相關資訊，請參閱 MySQL 文件中的[安裝 MySQL Shell](https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-install.html)。如需使用 MySQL 用戶端的相關資訊，請參閱 MySQL 文件中的[使用 MySQL Shell 命令](https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-configuring.html)。

在執行指令碼之前，請確定您使用的使用者帳戶具有必要許可，可存取 MySQL 相容資料庫。使用下列程序建立使用者帳戶，並提供執行此指令碼所需的最低許可。

**設定具有執行這些指令碼之最低許可的使用者帳戶**

1. 建立要執行指令碼的使用者。

   ```
   create user 'username'@'hostname' identified by password;
   ```

1. 對資料庫授予 `select` 命令，以對資料庫進行分析。

   ```
   grant select on database-name.* to username;
   grant replication client on *.* to username;
   ```

1. 

   ```
   grant execute on procedure mysql.rds_show_configuration to username;
   ```

下列主題說明如何下載、檢閱及執行適用於 MySQL 相容資料庫的每個支援指令碼。它們也說明如何檢閱指令碼輸出並將其上傳至您的 AWS 支援案例。

**Topics**
+ [awsdms\$1support\$1collector\$1MySQL.sql 指令碼](#CHAP_SupportScripts.MySQL.Awsdms_Support_Collector_MySQL_Script)

## awsdms\$1support\$1collector\$1MySQL.sql 指令碼
<a name="CHAP_SupportScripts.MySQL.Awsdms_Support_Collector_MySQL_Script"></a>

下載 [https://d2pwp9zz55emqw.cloudfront.net/scripts/awsdms_support_collector_MySQL.sql](https://d2pwp9zz55emqw.cloudfront.net/scripts/awsdms_support_collector_MySQL.sql) 指令碼。

此指令碼會收集與 MySQL 相容資料庫組態的相關資訊。請記得驗證指令碼上的總和檢查，且如果總和檢查已驗證，請檢閱指令碼中的 SQL 程式碼，將您不希望執行的任何程式碼加上註解。您對指令碼的完整性和內容感到滿意之後，就可以執行該指令碼。

使用命令列連線到資料庫環境後執行此指令碼。

**若要執行此指令碼並將結果上傳至支援案例**

1. 使用以下 `mysql` 命令連接至資料庫。

   ```
   mysql -p -h hostname -P port -u username database-name
   ```

1. 使用以下 mysql `source` 命令來執行此指令碼。

   ```
   source awsdms_support_collector_MySQL.sql
   ```

   檢閱產生的報告，並移除您不希望分享的任何資訊。當您可以放心分享此內容時，請將該檔案上傳至 AWS Support 案例。如需上傳此檔案的詳細資訊，請參閱[在 中使用診斷支援指令碼 AWS DMS](CHAP_SupportScripts.md)。

**注意**  
如果您已經擁有具有 [MySQL 相容資料庫的診斷支援指令碼](#CHAP_SupportScripts.MySQL) 中所述必要權限的使用者帳戶，您也可以使用現有的使用者帳戶來執行指令碼。
請記住在執行指令碼之前連接到資料庫。
此指令碼會以文字格式產生輸出。
牢記安全性最佳實務，如果您建立新的使用者帳戶，僅是為了執行此 MySQL 診斷支援指令碼，建議您在成功執行指令碼後刪除此使用者帳戶。

# PostgreSQL 診斷支援指令碼
<a name="CHAP_SupportScripts.PostgreSQL"></a>

您可以在下面找到可用於分析 AWS DMS 遷移組態中任何 PostgreSQL RDBMS （內部部署、Amazon RDS 或 Aurora PostgreSQL) 的診斷支援指令碼。這些指令碼可與來源或目標端點搭配使用。所有指令碼都會寫入，以在 psql 命令列公用程式中執行。

在執行這些指令碼之前，請確定您使用的使用者帳戶具有存取任何 PostgreSQL RDBMS 的必要許可：
+ PostgreSQL 10.x 或更高版本 – 具有對 `pg_catalog.pg_ls_waldir` 函數執行許可的使用者帳戶。
+ PostgreSQL 9.x 或更舊版本 – 具有預設許可的使用者帳戶。

我們建議您使用具有適當許可的現有帳戶來執行這些指令碼。

如果您需要建立新的使用者帳戶或授予現有帳戶執行這些指令碼的許可，您可以針對以 PostgreSQL 版本為基礎的任何 PostgreSQL RDBMS 執行下列 SQL 命令。

**授予帳戶許可，以便針對 10.x 版或更高版本的 PostgreSQL 資料庫執行這些指令碼**
+ 執行以下任意一項：
  + 對於新的使用者帳戶，執行下列命令。

    ```
    CREATE USER script_user WITH PASSWORD 'password';
    GRANT EXECUTE ON FUNCTION pg_catalog.pg_ls_waldir TO script_user;
    ```
  + 對於現有的使用者帳戶，請執行下列命令。

    ```
    GRANT EXECUTE ON FUNCTION pg_catalog.pg_ls_waldir TO script_user;
    ```

**授予帳戶許可，以便針對 PostgreSQL 9.x 版或更舊版本的資料庫執行這些指令碼**
+ 執行以下任意一項：
  + 對於新的使用者帳戶，請使用預設許可執行下列命令。

    ```
    CREATE USER script_user WITH PASSWORD password;
    ```
  + 對於現有的使用者帳戶，請使用現有的許可。

**注意**  
這些指令碼不支援的某些功能，與尋找 PostgreSQL 9.x 及更舊版本資料庫的 WAL 大小相關。如需詳細資訊，請使用 AWS Support。

下列主題說明如何下載、檢閱和執行 PostgreSQL 可用的每個支援指令碼。此外，還會說明如何檢閱指令碼輸出，並將其上傳至 AWS Support 案例。

**Topics**
+ [awsdms\$1support\$1collector\$1postgres.sql 指令碼](#CHAP_SupportScripts.PostgreSQL.Awsdms_Support_Collector_PostgreSQL_Script)

## awsdms\$1support\$1collector\$1postgres.sql 指令碼
<a name="CHAP_SupportScripts.PostgreSQL.Awsdms_Support_Collector_PostgreSQL_Script"></a>

下載 [https://d2pwp9zz55emqw.cloudfront.net/scripts/awsdms_support_collector_postgres.sql](https://d2pwp9zz55emqw.cloudfront.net/scripts/awsdms_support_collector_postgres.sql) 指令碼。

此指令碼會收集 PostgreSQL 資料庫組態的相關資訊。請記得驗證指令碼上的總和檢查。如果總和檢查已驗證，請檢閱指令碼中的 SQL 程式碼，將您不希望執行的任何程式碼加上註解。您對指令碼的完整性和內容感到滿意之後，就可以執行該指令碼。

**注意**  
您可以使用 psql 用戶端 10 版或更高版本執行此指令碼。

您可以使用下列程序，從資料庫環境或命令列執行此指令碼。在任何一種情況下，您都可以稍後將檔案上傳至 AWS Support。

**若要執行此指令碼並將結果上傳至支援案例**

1. 執行以下任意一項：
   + 使用以下 psql 命令列從資料庫環境執行指令碼。

     ```
     dbname=# \i awsdms_support_collector_postgres.sql
     ```

     在下列提示中，僅輸入您要遷移之其中一個結構描述的名稱。

     在下列提示中，輸入您已定義用來連線至資料庫的使用者 (`script_user`) 名稱。
   + 直接從命令列執行下列指令碼。此選項可避免在指令碼執行前的任何提示。

     ```
     psql -h database-hostname -p port -U script_user -d database-name -f awsdms_support_collector_postgres.sql
     ```

1. 檢閱輸出的 HTML 檔案，並移除您不希望分享的任何資訊。當您可以放心分享 HTML 的內容時，請將該檔案上傳至 AWS Support 案例。如需上傳此檔案的詳細資訊，請參閱[在 中使用診斷支援指令碼 AWS DMS](CHAP_SupportScripts.md)。