---
title: Setting up Network ACLs in Oracle 11g... For Dummies
description: Oracle's post-upgrade network ACL setup documentation is confusing. A colleague shared a simple set of commands for a basic setup. Here they are.,.
---

[Blog | Pythian ](https://www.pythian.com/blog)

# [Setting up Network ACLs in Oracle 11g... For Dummies](https://www.pythian.com/blog/setting-up-network-acls-in-oracle-11g-for-dummies)

 Written by [Don Seiler](https://www.pythian.com/blog/author/don-seiler) | Jul 24, 2009 4:00:00 AM

Having recently performed a test upgrade for a client from Oracle RDBMS 10g to 11g, I can tell you that one of the big changes that will likely require action on your part as DBA is the new fine-grained access control for the packages UTL_SMTP, UTL_TCP, UTL_MAIL, UTL_HTTP and UTL_INADDR. Part of the Oracle 11g pre-upgrade tool will notify you of users that will require new privileges.

## The Shift to Fine-Grained Access Control

Of course, Oracle’s post-upgrade network ACL setup documentation is much more confusing than it needs to be, at least for simple minds like me. A colleague stepped forward with a simple set of commands for a basic setup that even the tired and stressed can understand.

## Implementing a Basic ACL Configuration

### Step-by-Step PL/SQL Example

I’ll share that here, with some basic explanation:

```
BEGIN   -- Create the new ACL, naming it "netacl.xml", with a description.   -- Also, provide one starter privilege, granting user FOO   -- the privilege to connect.   DBMS_NETWORK_ACL_ADMIN.CREATE_ACL('netacl.xml',        'Allow usage to the UTL network packages', 'FOO', TRUE, 'connect');    -- Now grant privilege to resolve DNS names for FOO,   -- and then grant connect and resolve to user BAR   DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE('netacl.xml' ,'FOO', TRUE, 'resolve');   DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE('netacl.xml' ,'BAR', TRUE, 'connect');   DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE('netacl.xml' ,'BAR', TRUE, 'resolve');    -- Specify which hosts this ACL applies to,   -- for simplicity, we're saying all (*)   -- You might want to specify certain hosts to lock this down.   DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL('netacl.xml','*'); END; / 
```

## Managing Connectivity and Scope

As you can see, this example will let the FOO and BAR database users connect and resolve to any host. The ASSIGN_ACL section in the full package documentation (see link below) details how this can be used to lock down a user’s ability to make outside connections.

Of course, nothing beats reading the [Oracle 11g DBMS_NETWORK_ACL_ADMIN documentation](https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_networkacl_adm.htm), where you can see some examples of stricter ACL setups.

## Oracle Database Consulting Services

Ready to optimize your Oracle Database for the future?

[View full post](https://www.pythian.com/blog/setting-up-network-acls-in-oracle-11g-for-dummies)

```json
{
  "@context" : "http://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Don Seiler"
  },
  "dateModified" : "2026-03-08T23:27:47.744Z",
  "datePublished" : "2009-07-24T04:00:00Z",
  "headline" : "Setting up Network ACLs in Oracle 11g… For Dummies",
  "image" : {
    "@type" : "ImageObject",
    "height" : 60,
    "url" : "/hs/hsstatic/content_shared_assets/static-1.4092/img/default-amp-logo.png",
    "width" : 60
  },
  "mainEntityOfPage" : "https://www.pythian.com/blog/setting-up-network-acls-in-oracle-11g-for-dummies",
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "height" : 60,
      "url" : "/hs/hsstatic/content_shared_assets/static-1.4092/img/default-amp-logo.png",
      "width" : 60
    },
    "name" : "Pythian Blog"
  }
}
```