Troubleshooting self-managed Active Directory for Amazon RDS for Oracle
Use the following information to resolve common problems with self-managed Active Directory (AD) for Amazon RDS for Oracle. To see the events that Amazon RDS emits for your DB instance, run describe-events or open the Logs & events tab of the DB instance in the console.
aws rds describe-events \ --source-type db-instance \ --source-identifier my-oracle-instance \ --duration 1440
Problems when you join a DB instance to the domain
| Symptom | Likely cause | Action |
|---|---|---|
The API returns InvalidParameterCombination: The domain must have exactly two DNS
endpoints. |
You passed one address, or more than two, to --domain-dns-ips. |
Pass exactly two addresses. If you have one DNS server, enter its address twice. |
| The API rejects the secret Amazon Resource Name (ARN). | The secret is in a different AWS account or AWS Region than the DB instance. | Create the secret and AWS KMS key in the same account and Region as the DB instance. |
The status is enable-kerberos-failed, and the event reports that Amazon RDS can't read the
secret. |
The secret resource policy doesn't allow rds.amazonaws.com to call
secretsmanager:GetSecretValue, the aws:sourceArn condition doesn't match the DB instance,
or the AWS KMS key policy doesn't allow rds.amazonaws.com to call kms:Decrypt. |
Correct the policies as shown in Step 4: Create an AWS KMS key and Step 5: Create a Secrets Manager secret, and then retry the join. |
The status is enable-kerberos-failed, and the event reports invalid domain credentials. |
The secret key names are wrong, the user name includes a domain prefix, the password is wrong, or the account is locked, disabled, or expired. | Make sure that the keys are exactly SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME and
SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD, and that the user name has no domain prefix. Unlock or reset
the account in AD, update the secret, and retry the join. |
The status is enable-kerberos-failed, and the event reports that Amazon RDS can't reach the
domain. |
The DNS server addresses are wrong, or security groups, network ACLs, routes, or firewalls block traffic between the DB instance and your domain controllers. | Verify the addresses and the rules described in Configure your network connectivity, and then retry the join. |
The status is enable-kerberos-failed, and the event reports a permission or authorization
error. |
The Organizational Unit (OU) doesn't exist, the distinguished name is wrong, or the domain service account lacks one of the delegated permissions. | Verify the OU distinguished name, and complete Step 3: Delegate control to the AD domain service account. Then retry the join. |
Problems after the DB instance is joined
| Symptom | Likely cause | Action |
|---|---|---|
The status is kerberos-enabled, but Amazon RDS emits an event that it can't reach the domain
controllers. |
A change to security groups, network ACLs, routes, VPN, or domain controller addresses broke connectivity between the DB instance and your domain. | Verify the addresses and the rules described in
Configure your network connectivity. Restore connectivity on ports 53, 88,
464, and 389. If the domain controller addresses changed, modify the DB instance with the new
--domain-dns-ips values. |
The status is kerberos-enabled, but Amazon RDS emits an event that it can't connect with the
domain credentials. |
The domain service account password changed in AD but not in the secret, or the account is locked, disabled, or expired. | Update the secret, or unlock the account. For details, see Rotating the domain service account credentials. |
| Kerberos sign-in fails on a restored DB instance or read replica. | The new DB instance wasn't joined to the domain. Its DomainMemberships list is empty. |
Modify the new DB instance with the four domain parameters. |
| Kerberos sign-in fails after you moved or deleted the AD user object that Amazon RDS created for the DB instance. | Amazon RDS creates one AD user object for each DB instance in the OU that you specify. The object's name is the
first 20 characters of the DB instance resource ID in lowercase (for example,
db-abcdefghij1234567). If you delete the object, the domain controller can't issue service tickets for
the DB instance. If you move it out of the OU, Amazon RDS can't find it to rotate the Kerberos keys or update the
configuration. |
Don't move or delete this object. If you already deleted or moved it, modify the DB instance with the four domain parameters so that Amazon RDS recreates the object in the OU. |
Client connection errors
| Error | Likely cause | Action |
|---|---|---|
ORA-01017: invalid username/password; logon denied |
The Kerberos ticket is valid, but no Oracle user exists for the principal, or the user name doesn't match the principal in uppercase. | Create the user as described in Step 2: Create Kerberos authentication Oracle logins. In a multitenant DB instance, make sure that you created the user in the pluggable database (PDB) that you connect to. |
ORA-18925: Error during Kerberos5 authentication |
General client-side Kerberos failure on the JDBC connection. Most often there is no Kerberos ticket in the credential cache, or the ticket has expired. | Run klist to confirm that a valid ticket exists, and run kinit if it
doesn't. |
ORA-18923: The service in process is not supported: No valid credentials provided (Mechanism level:
Clock skew too great (37)) |
The client clock differs from the domain controller clock by more than the domain's maximum tolerance, which is
5 minutes by default. Kerberos error Note that The |
Synchronize the client clock with your domain and reconnect. The same error can also appear when a ticket is very close to expiry. |
kinit: KDC has no support for encryption type |
Your domain controllers don't allow an encryption type that the client or the RDS service account supports. | Allow AES128-CTS-HMAC-SHA1-96 or AES256-CTS-HMAC-SHA1-96 on your domain controllers and for the user account. |