Well,
As a previous post said, the dictionary, itself, is created and maintained by the DBA using DDL to create the database instance in the first place.
But, if what you mean is a human-readable report that describes what columns exist in what tables.... then let me point you in the right direction.
First off, you need to know what tables exist, that you have authority to 'see'.
I assume you have the ability to connect to SQL-Plus. If not, you will need the DBA to install SQL-Plusfor Windows and put an entry in your TNSNAMES.ORA file (and maybe assign you a user-id and password). For the below process to work, the DBA will also need to grant you select authority against the dictionary views.
So, to find out what tables you can see, you need to do this select:
Select owner, table_name from all_tables;
Next you can do a 'Describe' on each of the tables, one by one.
Lets say one of the rows returned by the above select shows an owner of 'ACCOUNTING' and a table of 'CHRT_OF_ACCTS'. To know what columns exist in CHRT_OF_ACCTS do this:
DESC ACCOUNTING.CHRT_OF_ACCTS
All you need now is to know which columns are the primary keys:
select i.index_name, ic.column_name
from all_indexes i, all_ind_columns ic
where i.table_owner = 'ACCOUNTING'
and i.table_name = 'CHRT_OF_ACCTS'
and i.uniqueness = 'UNIQUE'
and i.owner = ic.owner
and i.index_name = ic.index_name
order by ic.index_name, ic.column_position;
However, I should point out that all your questions should be answerable by your Data Administration group. You should have a Data Analyst who has created a Data Model of all this, already.
If you want to find out more about what information exists in the Oracle dictionary... do this query:
Select view_name from all_views
where substr(view_name,1,4) = 'ALL_';
Then just play around in all the glory that is the Oracle dictionary.