How to select from pdbs with a cdb user?
That error means your listener is not running. Start your listener.
This just works normally without doing anything:
SQL&gt; create user c##myadmin identified by password;

User created.

SQL&gt; grant dba to c##myadmin container=all;

Grant succeeded.

SQL&gt; alter user c##myadmin set container_data=all container=current;

User altered.

SQL&gt; conn c##myadmin/password
Connected.
SQL&gt; select con_id, name from v$containers;

    CON_ID NAME
---------- ----------
         1 CDB$ROOT
         2 PDB$SEED
         3 PDB1
         4 PDB2

SQL&gt; select count(*) from dba_users@pdb1;

  COUNT(*)
----------
        37

SQL&gt; select count(*) from dba_users@pdb2;

  COUNT(*)
----------
        37

SQL&gt; select db_link from dba_db_links;

DB_LINK
--------------------------------------------------------------------------------
SYS_HUB

An alternative is the CONTAINERS clause, but that has some serious limitations (queried object must exist in all containers).