By Brian Fitzgerald
Error
In AWS EC2 Redhat Linux, gridSetup.sh reports this error:
PRVF-0002 : could not retrieve local node name
Solution
Set the EnableDnsHostnames flag
Error details
In Linux, you run Oracle 19c grid setup
[grid@ip-10-0-2-197 ~]$ cd /u01/app/19.3.0/grid [grid@ip-10-0-2-197 grid]$ ./gridSetup.sh
After the splash screen:

this error appears:

The error appears in several log files. For example: /tmp/GridSetupActions2019-09-01_09-40-29AM/gridSetupActions2019-09-01_09-40-29AM.log
SEVERE: [Sep 1, 2019 9:40:36 AM] [FATAL] PRVF-0002 : could not retrieve local node name ip-10-0-2-197.ec2.internal: ip-10-0-2-197.ec2.internal: Name or service not known. Refer associated stacktrace #oracle.install.commons.util.exception.AbstractErrorAdvisor:165
/tmp/GridSetupActions2019-09-01_09-40-29AM/time2019-09-01_09-40-29AM.log
oracle.cluster.verification.VerificationException: PRVF-0002 : could not retrieve local node name ip-10-0-2-197.ec2.internal: ip-10-0-2-197.ec2.internal: Name or service not known
Note that the local hostname does not resolve to an IP address:
[grid@ip-10-0-2-197 grid]$ hostname ip-10-0-2-197.ec2.internal [grid@ip-10-0-2-197 grid]$ ping ip-10-0-2-197.ec2.internal ping: ip-10-0-2-197.ec2.internal: Name or service not known
Cause
The Virtual Private Cloud (VPC) has the EnableDnsHostnames flag set to Disabled (False). This could happen in a non-default VPC, meaning a VPC that you create. You can see this in the AWS console:

or from python:
Python 2.7.5 (default, Jun 11 2019, 14:33:56)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from boto3 import client
>>> rsp = client('ec2').describe_vpc_attribute(
... Attribute='enableDnsHostnames',
... VpcId = 'vpc-0786f6ef4dc16cefc'
... )
>>> rsp['EnableDnsHostnames']['Value']
False
or from the command line:
[grid@ip-10-0-2-197 grid]$ aws ec2 describe-vpc-attribute --vpc-id vpc-0786f6ef4dc16cefc --attribute enableDnsHostnames
{
"VpcId": "vpc-0786f6ef4dc16cefc",
"EnableDnsHostnames": {
"Value": false
}
}
Fix
Set the EnableDnsHostnames flag, which the AWS manual describes:
Indicates whether the instances launched in the VPC get DNS hostnames. If enabled, instances in the VPC get DNS hostnames; otherwise, they do not.
From the VPC Dashboard, select your VPC. Click Actions, and select “Edit DNS hostnames”. At the Edit DNS hostnames screen, check “enable” and press “Save”.

or, in python:
>>> from boto3 import client
>>> rsp = client('ec2').modify_vpc_attribute(
... VpcId = 'vpc-0786f6ef4dc16cefc',
... EnableDnsHostnames = { 'Value': True }
... )
or, using the aws command line, issue modify-vpc-attribute:
[grid@ip-10-0-2-197 grid]$ aws ec2 modify-vpc-attribute --vpc-id vpc-0786f6ef4dc16cefc --enable-dns-hostnames
[grid@ip-10-0-2-197 grid]$ aws ec2 describe-vpc-attribute --vpc-id vpc-0786f6ef4dc16cefc --attribute enableDnsHostnames
{
"VpcId": "vpc-0786f6ef4dc16cefc",
"EnableDnsHostnames": {
"Value": true
}
}
Retest
The change does not affect the EC2 instance immediately.
[grid@ip-10-0-2-197 grid]$ ping ip-10-0-2-197.ec2.internal ping: ip-10-0-2-197.ec2.internal: Name or service not known
Reboot the host:
[ec2-user@ip-10-0-2-197 scr]$ sudo reboot
Now test:
[ec2-user@ip-10-0-2-197 ~]$ ping ip-10-0-2-197.ec2.internal PING ip-10-0-2-197.ec2.internal (10.0.2.197) 56(84) bytes of data.
Now gridSetup.sh starts normally, and the installer menu appears:
[grid@ip-10-0-2-197 grid]$ ./gridSetup.sh

Discussion
Note that error PRVF-0002 has been widely reported in the blogs. In this case, the environment is AWS EC2 Redhat Linux 7.2 and Oracle 19c Grid Infrastructure. The error also appears in Oracle Linux, and in Oracle versions as early as 11g. PRVF-0002 can as well appear in a silent install.
The fix is sometimes given as a local /etc/hosts edit. However, in this blog article, I am proposing a fix that you can implement once per VPC, so that you don’t have to edit hosts every time. Also, you can get more consistent deployments across all VPCs, not just the default VPC.
Conclusion
gridSetup error “PRVF-0002 : could not retrieve local node name” can be resolved at the VPC level by setting EnableDnsHostnames.