Migrate a remote oracle database (11g) into a docker oracle XE database (11g)
A child table may be exported at some point of time, let's say 12:00. Then as expdp goes on, the parent table may be exported minutes later, let's say at 12:05. Your dump file contains the content of those tables from different points of times.

Yes, if those tables were changing during that 5 minutes, their relation may become inconsistent and you will get key constraint errors. The child table may have references on parent entries that do not exist.

That is why you should use the flashback_scn or flashback_time or consistent=y parameters for expdp. With them, everything will be exported as they existed at 1 specific SCN or point of time. Not using these parameters is a very common mistake.

Then for the packages. No, not even a FULL=Y expdp exports everything. Most of SYS objects are not exported.

Let's say your packages use the SYS.DBMS_LOCK package. By default, users are not able to use that package, because they need to have the EXECUTE privilege granted on it. As the package was not exported, it will not be imported. Since DBMS_LOCK will not be imported, privileges granted on it will not be imported as well. So for this specific package, you need to grant the required privilege manually.

That was just 1 example. Then there is SYS.DBMS_CRYPTO and the others.

The "broken packages" part is just too broad to answer here. You are the one with access to the packages and the code, you are the one who can check the errors.