当任务处于迁移中、迁移失败、暂停中或已完成状态时,您可以调用本接口查看数据迁移详情,包括每个对象的迁移状态及进度。
参数说明 | 数据类型 | 是否必须 | 参数说明 |
---|---|---|---|
Action | String | 是 | 系统默认参数,这个接口的接口定义,取值为:DescribeMigrationJobDetail。 |
MigrationJobId | String | 是 | 迁移任务ID。 |
RegionId | String | 否 | 地域ID。 |
MigrationMode.StructureInitialization | Boolean | 否 | 是否查看结构迁移详情,取值true或false。 |
MigrationMode.DataInitialization | Boolean | 否 | 是否查看全量数据迁移,取值true或false。 |
MigrationMode.DataSynchronization | Boolean | 否 | 是否查看增量数据迁移,取值true或false。 |
PageSize | Integer | 否 | 每页的记录数,取值:30/50/100,默认为30。 只有当MigrationMode.StructureInitialization、MigrationMode.DataInitialization、MigrationMode.DataSynchronization 这三个配置项只有一个为true时,这个配置项才能生效。 |
PageNum | Integer | 否 | 页码,大于0且不超过Integer的最大值,默认值为:1。 只有当MigrationMode.StructureInitialization、MigrationMode.DataInitialization、MigrationMode.DataSynchronization三个配置项只有一个为true时,这个配置项才能生效。 |
ClientToken | String | 否 | 用于保证请求的幂等性,防止重复提交请求。由客户端生成该参数值,要保证在不同请求间唯一,最大值不超过64个ASCII字符,且该参数值中不能包含非ASCII字符。 |
AccountId | String | 否 | 阿里云账号ID。 |
参数名称 | 数据类型 | 参数说明 |
---|---|---|
RequestId | String | 请求ID |
StructureInitializationDetailList | List | 迁移详情列表 |
StructureInitializationDetails | List |
结构迁移详情 StructureInitializationDetail的定义参考StructureInitializationDetail参数定义 |
DataInitializationDetails | List |
全量迁移详情 DataInitializationDetail的定义参考DataInitializationDetail 参数定义 |
DataSynchronizationDetails | List |
增量迁移详情 DataSynchronizationDetail的定义参考DataSynchronizationDetail 参数定义 |
参数名称 | 数据类型 | 参数说明 |
---|---|---|
ObjectName | String | 迁移对象名称 |
ObjectType | String | 迁移对象类型,取值包括: Table、Constraint、Index、View、MaterilizeView、Type、Synonym、Trigger、Function、Procedure、Package、Default、Rule、Plan Guide |
SourceOwnerDBName | String | 迁移对象在源实例所属的数据库名称 |
DestinationOwnerDBName | String | 迁移对象在目标实例所属的Schema |
Status | String | 这个迁移对象的迁移状态 |
ErrorMessage | String | 这个迁移对象迁移失败的原因 |
ObjectDefinition | String | 这个迁移对象的结构语法定义 |
Constraints | List |
这个迁移对象对应的约束子对象。只有当这个迁移对象为表时,才会有约束,约束包括索引、外键 |
参数名称 | 数据类型 | 参数说明 |
---|---|---|
TableName | String | 迁移表的表名 |
SourceOwnerDBName | String | 迁移表在源实例所属的数据库名称 |
DestinationOwnerDBName | String | 迁移表在目标实例所属的数据库名称 |
Status | String | 这个表的迁移状态 |
ErrorMessage | String | 这个表迁移失败的原因 |
TotalRowNum | String | 这个表待迁移的全部记录数 |
FinishRowNum | String | 这个表已经完成迁移的记录数 |
UsedTime | String | 截止目前为止,迁移这个表所用的时间,单位为秒 |
参数名称 | 数据类型 | 参数说明 |
---|---|---|
TableName | String | 迁移表的表名 |
SourceOwnerDBName | String | 迁移表在源实例所属的数据库名称 |
DestinationOwnerDBName | String | 迁移表在目标实例所属的数据库名称 |
Status | String | 这个表的迁移状态 |
ErrorMessage | String | 这个表迁移失败的原因 |
下面简单演示通过Java SDK查看迁移任务详情的示例:
private static void describeMigrationJobDetail(String MigrationJobId) {
DescribeMigrationJobDetailRequest request = new DescribeMigrationJobDetailRequest();
request.setMigrationJobId(MigrationJobId);
request.setMigrationModeStructureInitialization(true);
request.setMigrationModeDataInitialization(true);
request.setMigrationModeDataSynchronization(true);
try {
DescribeMigrationJobDetailResponse response = client.getAcsResponse(request);
System.out.println("Get Migration Detail of Migration Job " +MigrationJobId+" Succeed!");
List<StructureInitializationDetail> struInitDetails= response.getStructureInitializationDetailList();
System.out.println("Structure Initialization Detail:");
for (int i = 0; i < struInitDetails.size(); i++) {
String objectName=struInitDetails.get(i).getObjectName();
String SrcDBName=struInitDetails.get(i).getSourceOwnerDBName();
String DestDBName = struInitDetails.get(i).getDestinationOwnerDBName();
String Status=struInitDetails.get(i).getStatus();
String errorMsg=struInitDetails.get(i).getErrorMessage();
System.out.println("ObjectName:"+objectName+"; SRCDBName:"+SrcDBName+"; DESTDBName:"
+DestDBName+"; Status:"+Status+"errorMsg:"+errorMsg);
}
List<DataInitializationDetail> dataInitDetails = response.getDataInitializationDetailList();
System.out.println("Data Initialization Detail:");
for (int i = 0; i < dataInitDetails.size(); i++) {
String tblName=dataInitDetails.get(i).getTableName();
String tbl_srcDBName=dataInitDetails.get(i).getSourceOwnerDBName();
String tbl_destDBName=dataInitDetails.get(i).getDestinationOwnerDBName();
String dataInitStatus=dataInitDetails.get(i).getStatus();
String dataInitSumRows=dataInitDetails.get(i).getTotalRowNum();
String dataInitFinishRows=dataInitDetails.get(i).getFinishRowNum();
String dataUsedTime=dataInitDetails.get(i).getMigrationTime();
String dataInitErrMSG = dataInitDetails.get(i).getErrorMessage();
System.out.println("TableName:"+tblName+"; SRCDBName:"+tbl_srcDBName
+"; DESTDBName:"+tbl_destDBName+"; SumRows:"+dataInitSumRows+"; FinishRows"
+"; UsedTime:"+dataUsedTime+"; ErrorMSG:"+dataInitErrMSG);
}
List<DataSynchronizationDetail> dataSyncDetails = response.getDataSynchronizationDetailList();
System.out.println("Data Synchronization Detail");
for (int i = 0; i < dataSyncDetails.size(); i++) {
String dataSyncTblName=dataSyncDetails.get(i).getTableName();
String dataSyncSRCDBName=dataSyncDetails.get(i).getSourceOwnerDBName();
String dataSyncDESTDBName = dataSyncDetails.get(i).getDestinationOwnerDBName();
String dataSyncStatus = dataSyncDetails.get(i).getStatus();
String dataSyncErrMsg = dataSyncDetails.get(i).getErrorMessage();
System.out.println("TableName:"+dataSyncTblName+"; SRCDBName:"+dataSyncSRCDBName
+"; DESTDBName:"+dataSyncDESTDBName+"; Status:"+dataSyncStatus+"; ErrorMSG:"+dataSyncErrMsg);
}
} catch (Exception e) {
// TODO: handle exception
System.out.println("Get Migration Detail of Migration Job " +MigrationJobId+" Failed!");
System.out.println(e.toString());
}
}
在文档使用中是否遇到以下问题
更多建议
匿名提交