diff --git a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.java b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.java
index 0d648bc..d451cc4 100644
--- a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.java
+++ b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.java
@@ -1243,6 +1243,16 @@
       ;
     }
       if (s != null) {
+          if (s.contains(".")) {
+              int dotIdx = s.indexOf(".");
+              String namePart1 = s.substring(0, dotIdx);
+              String namePart2 = s.substring(dotIdx+1, s.length());
+              if (enclosingType.isTableType()) {
+                 if (((TableType)enclosingType).getSchema().equals(namePart1)) {
+                     s = namePart2;
+                 }
+              }
+          }
           for (String typeName : localTypes.keySet()) {
               if (typeName.equals(s)) {
                   dt = localTypes.get(s);
@@ -3309,21 +3319,6 @@
     catch(LookaheadSuccess ls) { return true; }
   }
 
-  private boolean jj_3R_76() {
-    if (jj_scan_token(O_OPENPAREN)) return true;
-    if (jj_scan_token(S_NUMBER)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_61() {
-    if (jj_scan_token(K_DAY)) return true;
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_84()) jj_scanpos = xsp;
-    if (jj_scan_token(R_TO)) return true;
-    return false;
-  }
-
   private boolean jj_3R_51() {
     if (jj_scan_token(K_NATIONAL)) return true;
     Token xsp;
@@ -3339,11 +3334,6 @@
     return false;
   }
 
-  private boolean jj_3R_57() {
-    if (jj_3R_80()) return true;
-    return false;
-  }
-
   private boolean jj_3R_24() {
     if (jj_scan_token(K_INTERVAL)) return true;
     Token xsp;
@@ -3366,11 +3356,6 @@
     return false;
   }
 
-  private boolean jj_3_2() {
-    if (jj_3R_7()) return true;
-    return false;
-  }
-
   private boolean jj_3R_22() {
     if (jj_scan_token(K_BOOLEAN)) return true;
     return false;
@@ -3390,16 +3375,6 @@
     return false;
   }
 
-  private boolean jj_3R_12() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3_2()) {
-    jj_scanpos = xsp;
-    if (jj_3R_57()) return true;
-    }
-    return false;
-  }
-
   private boolean jj_3R_74() {
     if (jj_scan_token(O_OPENPAREN)) return true;
     if (jj_scan_token(S_NUMBER)) return true;
@@ -3411,12 +3386,22 @@
     return false;
   }
 
+  private boolean jj_3R_57() {
+    if (jj_3R_80()) return true;
+    return false;
+  }
+
   private boolean jj_3R_59() {
     if (jj_scan_token(O_OPENPAREN)) return true;
     if (jj_scan_token(S_NUMBER)) return true;
     return false;
   }
 
+  private boolean jj_3_2() {
+    if (jj_3R_7()) return true;
+    return false;
+  }
+
   private boolean jj_3R_83() {
     if (jj_scan_token(O_COMMA)) return true;
     return false;
@@ -3438,6 +3423,16 @@
     return false;
   }
 
+  private boolean jj_3R_12() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3_2()) {
+    jj_scanpos = xsp;
+    if (jj_3R_57()) return true;
+    }
+    return false;
+  }
+
   private boolean jj_3R_56() {
     if (jj_scan_token(S_QUOTED_IDENTIFIER)) return true;
     return false;
@@ -3521,20 +3516,15 @@
     return false;
   }
 
-  private boolean jj_3R_6() {
-    if (jj_3R_11()) return true;
-    if (jj_3R_12()) return true;
-    return false;
-  }
-
   private boolean jj_3R_69() {
     if (jj_scan_token(O_OPENPAREN)) return true;
     if (jj_scan_token(S_NUMBER)) return true;
     return false;
   }
 
-  private boolean jj_3_1() {
-    if (jj_3R_6()) return true;
+  private boolean jj_3R_6() {
+    if (jj_3R_11()) return true;
+    if (jj_3R_12()) return true;
     return false;
   }
 
@@ -3564,6 +3554,11 @@
     return false;
   }
 
+  private boolean jj_3_1() {
+    if (jj_3R_6()) return true;
+    return false;
+  }
+
   private boolean jj_3R_46() {
     if (jj_scan_token(K_VARCHAR2)) return true;
     Token xsp;
@@ -4039,6 +4034,11 @@
     return false;
   }
 
+  private boolean jj_3R_84() {
+    if (jj_scan_token(O_OPENPAREN)) return true;
+    return false;
+  }
+
   private boolean jj_3R_10() {
     Token xsp;
     xsp = jj_scanpos;
@@ -4307,8 +4307,18 @@
     return false;
   }
 
-  private boolean jj_3R_84() {
+  private boolean jj_3R_76() {
     if (jj_scan_token(O_OPENPAREN)) return true;
+    if (jj_scan_token(S_NUMBER)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_61() {
+    if (jj_scan_token(K_DAY)) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_84()) jj_scanpos = xsp;
+    if (jj_scan_token(R_TO)) return true;
     return false;
   }
 
diff --git a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jj b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jj
index aa2af3c..48bac8d 100644
--- a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jj
+++ b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jj
Binary files differ
diff --git a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt
index e0e0fd7..7b8adb7 100644
--- a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt
+++ b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt
Binary files differ
diff --git a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/util/DatabaseTypeBuilder.java b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/util/DatabaseTypeBuilder.java
index b116990..00f0554 100644
--- a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/util/DatabaseTypeBuilder.java
+++ b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/util/DatabaseTypeBuilder.java
@@ -504,7 +504,8 @@
     	List<String> percentNameList = new ArrayList<String>();
     	List<String> nonPercentNameList = new ArrayList<String>();
         for (UnresolvedType uType : unresolvedTypes) {
-        	if (uType.getTypeName().contains(PERCENT)) {
+            CompositeDatabaseType owningType = uType.getOwningType();
+        	if (owningType != null && (owningType.isTYPEType() || owningType.isROWTYPEType())) {
         		if (!percentNameList.contains(uType.getTypeName())) {
         			percentNameList.add(uType.getTypeName());
         		}
@@ -573,17 +574,21 @@
 				if (owningType.isROWTYPEType()) {
 	                ROWTYPEType rType = (ROWTYPEType)owningType;
 	                String tableName = rType.getTypeName();
+	                if (tableName.contains(ROWTYPE_MACRO)) {
+	                    int idx = tableName.indexOf(ROWTYPE_MACRO);
+	                    tableName = tableName.substring(0,idx);
+	                }
 	                resolvedType = (CompositeDatabaseType)typesRepository.getDatabaseType(tableName);
 	                if (resolvedType == null) {
 	                    TableType tableType = null;
-	                    List<TableType> tables = buildTables(conn, null, tableName, false);
+	                    List<TableType> tables = buildTables(conn, schemaPattern, tableName, false);
 	                    if (tables != null && tables.size() > 0) {
 	                        tableType = tables.get(0);
 	                        typesRepository.setDatabaseType(tableType.getTableName(), tableType);
 	                        rType.setEnclosedType(tableType);
-	                        uType.getOwningType().setEnclosedType(rType);
 	                        typesRepository.setDatabaseType(rType.getTypeName(), rType);
 	                    }
+                        resolvedType = tableType;
 	                    // always a chance that tableType has some unresolved column type
 	                    if (tableType != null && !tableType.isResolved()) {
 	                        UnresolvedTypesVisitor unresolvedTypesVisitor = new UnresolvedTypesVisitor();
diff --git a/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/databasetypebuilder/TypeResolutionTestSuite.java b/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/databasetypebuilder/TypeResolutionTestSuite.java
index cf37fe0..ed851cf 100644
--- a/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/databasetypebuilder/TypeResolutionTestSuite.java
+++ b/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/databasetypebuilder/TypeResolutionTestSuite.java
@@ -20,7 +20,7 @@
 //JUnit4 imports
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
-import org.junit.Ignore;
+//import org.junit.Ignore;
 import org.junit.Test;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertSame;
@@ -274,8 +274,7 @@
 
     }
 
-    //@Test
-    @Ignore
+    @Test
     public void testUnresolvedTypeResolution() throws ParseException {
         assertEquals("incorrect procedure name", DDLRESOLVTEST_PACKAGE , ddlresolvtestPackage.getPackageName());
         UnresolvedTypesVisitor visitor = new UnresolvedTypesVisitor();
@@ -346,8 +345,7 @@
             0, visitor.getUnresolvedTypes().size());
     }
 
-    //@Test
-    @Ignore
+    @Test
     public void testTableTypeRefersToGlobalTypes() {
         boolean worked = true;
         String msg = null;
@@ -366,8 +364,7 @@
             0, visitor.getUnresolvedTypes().size());
     }
 
-    //@Test
-    @Ignore
+    @Test
     public void testPLSQLRecordTypeRefersToDifferentPackage() {
         boolean worked = true;
         String msg = null;
