Public database link username
Gentlemen,
I would like to recreate the public database links with new username and password. Prior to that, I want to know which user the current public database link in connecting to.
The dba_db_links table shows only the user name for private database links. Where can I find the username for public database link.
e.g.,
SQL> create public database link abc.domain.com connect to targetuser idenitified by targetpassword using 'abc.doman.com';
Where I find the information about targetuser; it is not shown in dba_db_links table for public database links.
Thanks
This indicates that the connection information (username/password) was not specified when the database link was created.
http://docs.oracle.com/cd/E11882_01/server.112/e25494/ds_admin002.htm#ADMIN12154
This implies that if user A on the local database tries to use this link, then the same account (i.e. A) with the same password exists on the remote database - i.e. all of the users on the local database that use this link are duplicated on the remote database as well.
HTH
Srini
Similar Messages
-
A question about CREATE PUBLIC DATABASE LINK and ORA-12154 error
Dear all,
I have a problem about public database link creation and I would appreciate if you could kindly give me a hand. I have the following connection parameters in my
tnsnames.ora file:
DGPAPROD.WORLD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (COMMUNITY=tcp.world)
(PROTOCOL=TCP)(HOST=ORASR001)(PORT=1521)
(CONNECT_DATA = (SID = DGPAPROD))
...Having the above mentioned parameters I can connect to this remote database directly in a SQL*Plus shell:
$ sqlplus username/[email protected] works pretty well and the connection is established without any problem.
Now, what I would like to do is to create a public database link to this remote database in order to avoid the user/connection switching for viewing the
content of this database. I proceeded according to the syntax indicated in the Oracle online documentation:
http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/statements_5005.htm#SQLRF01205
Therefore I run the following in order to create a public database link
CREATE PUBLIC DATABASE LINK SR001_dblink CONNECT TO user IDENTIFIED BY password USING 'DGPAPROD.WORLD';Apparently there is no error and the link is created successfully. However it cannot resolve the remote host and whenever I run the following query
(myenterprise is the name of a table in that remote database)
SELECT *
FROM myenterprise@SR001_dblink
ERROR at line 1:
ORA-12154: TNS:could not resolve the connect identifier specifiedWhat causes this problem?
Thanks in advance,
Kind Regards,
Dariyooshspajdy wrote:
You must have defined DGPAPROD.WORLD in tnsnames.oar on server where you DB is runnig.Hello there,
Thanks a lot for this nice solution. In fact I had to add the connection parameters into the tnsnames.ora file of the server on which the link was created (not the tnsnames.ora of my oracle client stored on the localhost)
After a bit googling I found another solution that allows to create the database link:
CREATE PUBLIC DATABASE LINK SR001_dblink CONNECT TO user IDENTIFIED BY password USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (COMMUNITY=tcp.world)
(PROTOCOL=TCP)(HOST=ip_adresse)(PORT=1521)))(CONNECT_DATA = (SID = GPAPROD)))';Thanks a lot for your help!
Kind Regards,
Dariyoosh
Edited by: dariyoosh on 18 nov. 2009 07:15 -
Cannot drop public database link
Hi all.
Just trying to drop some old database links and getting the following:
SQL> select * from dba_db_links where host = 'V638';
OWNER DB_LINK USERNAME HOST CREATED
PUBLIC V638 SYSADM V638 23-SEP-04
SQL> drop public database link V638;
drop public database link V638
ERROR at line 1:
ORA-02024: database link not found
There was another db link in there called V638.WORLD and when I issued
drop public database link v638 it removed that one with no errors...
Any way I can get rid of this other one?
Version info:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
PL/SQL Release 9.2.0.4.0 - Production
CORE 9.2.0.3.0 Production
TNS for Solaris: Version 9.2.0.4.0 - Production
NLSRTL Version 9.2.0.4.0 - Production
ThanksYes I already tried that...
SQL> select * from global_name;
GLOBAL_NAME
VTEST1.WORLD
SQL> alter database rename global_name to test.world;
Database altered.
SQL> alter database rename global_name to test.world;
Database altered.
SQL> select * from global_name;
GLOBAL_NAME
TEST.WORLD
SQL> drop public database link v638;
drop public database link v638
ERROR at line 1:
ORA-02024: database link not found
SQL> alter database rename global_name to vtest1.world;
Database altered.
SQL> select * from global_name;
GLOBAL_NAME
VTEST1.WORLD -
Hi All,
I am using Oracle 10g.
I created one Public database link as :
i created this database link by connecting ora1.
CREATE PUBLIC DATABASE LINK "ora2_1" CONNECT TO CURRENT_USER
USING 'ora2';
When i run the select query i am getting error. as:
i run this select query by connecting ora1 database.
SQL> SELECT * FROM C_UPDT@ora2_1;
SELECT * FROM C_UPDT@ora2_1
ERROR at line 1:
ORA-01017: invalid username/password; logon denied
ORA-02063: preceding line from ora2_1
What could be the problem.
ThanksHi..
I want to use that link for all schemas existed in ora2.so, i didnot specify the username, password.
>
The database link connects to the only one schema per db link in the target database.If you specify PUBLIC, then all the schemas in the source database (where the db link is created) can use and access data through it.So, if you want to create public database link for all the schemas in the target database ORA2, then you will have to create as many as schemas are present in ORA2.
Anand -
Restriction on accessing public database link
How to restrict certain users from accessing public database link.
ravi02, sb has pretty much nailed the answer in that if you make the link public then anyone can use it. However, is the link in question a fixed user link or a current session user link? With a fixed user link then whatever access is granted to the fixed user is available to any user who has access to your instance. On the other hand if each user is required to have their username created on the remote instance then object and role grants issued on the remote instance can still limit what objects a user may reference.
HTH -- Mark D Powell -- -
How to Create Public database link in oracle 9i?
Friends,
OS: RHEL AS 3
DB: 9iR2
database name 1 = nubul
database name 2 = test
in the 'nubul' database server using system user.
i created a database link to connect the 'test' database
sql> create public database link test using 'test';
database link created.
then i logged in as normal user....
sql> select count(*) from employee@test
Error at line 1:
ORA-12154: TNS: could not resolve service name
where i am making mistake?
i gave the linkname as my remote database name.
am i have to make any entry in the tnsnames.ora?
thanks & regardsYou have to remember that when you access a dblink, the database where the link is defined is acting as a client to the database to which the link points ... exactly the same as if you you were using sqlplus on the machine hosting the db where the link is defined. In other words, given:
Host 'Host-src', with database 'db-src', with a dblink 'lk_target'
Host 'host-trgt', with database 'db-trgt'
When you connect to db-src and access lk-target, db-src is now acting as a client to db-trgt. Exactly as if you had opened sqlplus on host-src and connected directly to db-trgt. So, given the above scenario
host-src$> sqlplus scott/tiger@db-src
sql> select * from emp@lk_target;when you execute that SELECT to the link, the same tns considerations are in effect as if you had
host-src$> sqlplus scott/tiger@db-trgtThe same tnsnames.ora entry, on the source machine, is required for both. -
ORA-31600 when trying to view SQL DDL for a created public database link
I created and committed a public database link and I can access the external database.
When I try to view the DDL of the link, on the SQL tab, I'm getting following error:
ORA-31600: invalid input value EMIT_SCHEMA for parameter NAME in function SET_TRANSFORM_PARAM
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 105
ORA-06512: at "SYS.DBMS_METADATA_INT", line 3900
ORA-06512: at "SYS.DBMS_METADATA_INT", line 4048
ORA-06512: at "SYS.DBMS_METADATA", line 836
ORA-06512: at line 1
and
ORA-31600: invalid input value LONGNAME for parameter NAME in function SET_FILTER
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 105
ORA-06512: at "SYS.DBMS_METADATA_INT", line 1980
ORA-06512: at "SYS.DBMS_METADATA_INT", line 3665
ORA-06512: at "SYS.DBMS_METADATA", line 670
ORA-06512: at "SYS.DBMS_METADATA", line 571
ORA-06512: at "SYS.DBMS_METADATA", line 1221
ORA-06512: at line 1
Is this because of a bug in SqlDeveloper or because the db_link and host parameters have 33 characters?
I'm using sql developer 1.5.3, build MAIN-5783
tx,
Roger VermeirIt's probably the length; really all sqldev does is calling:
select DBMS_METADATA.get_ddl('DB_LINK',:NAME,:OWNER) FROM dual;So if you call it a bug, it's a database bug in the DBMS_METADATA package.
But if you work with identifiers over 30 chars, I'd say that's a bug on it's own...
FWIW, I can't reproduce this on our 10g DB; are you on 9i?
Regards,
K. -
Query the column names from Public database links
Greetings,
I would like to retrieve the list of all the column names from a public database link. A regular ALL_TAB_COLUMNS doesn't seem to be working.
Thanks
John9569Hi,
I think your DBA needed to create a synonym for you to have access of that remote database view.
CREATE SYNONYM synonym_name
FOR view_name@db_link;Then you can find the column names by
DESC synonym_nameGuru's , please correct me If I am wrong.
Thanks
Edited by: user10679113 on Mar 12, 2009 12:28 PM
Edited by: user10679113 on Mar 12, 2009 12:33 PM -
Retrieve password from public database-link
In the past we have created a public database-link to another database. Unfortunately we forgot the password and want to have it back. Sice the database-link is public, the password can not be found in user_db_links.
Is it possible to retrieve a password from a public database-link?Hi,
I know resetting in an Option for you but in worst case. Coming to the point you can get from "sys.link$" But how far will work on 10g verison did not checked. Try and see
Ahh. sorry Why you try "select dbms_metadata.get_ddl(’DB_LINK’,’TEST’,user) from dual
it will give the script. If the password in encripted for 10g try with "link$" it will work.
- Pavan Kumar N
Edited by: Pavan Kumar on Nov 18, 2008 3:57 PM -
Hi there,
Possibly overlooking something but can I export a public database link using SQL Developer?
Thanks.HI,
Public synonym can not be exported and never exported even at FULL Export also. . You can get them from "dba_synonyms". I suggest that you create so customer script .
select 'create public synonym ' || table_name || ' for ' || table_owner || '.' || table_name || ';'
from dba_synonyms
where
owner='PUBLIC' and table_owner not in ('SYS', 'SYSTEM')
order by
table_owner;
More: Information:
https://forums.oracle.com/thread/855639?start=0&tstart=0
Oracle Data Pump Schema Export and Public Synonyms
Thank you -
Cann't Drop public database link
I am not able to drop public database link .
Oracle Version - 11.2.0.1.0 - 64bit Production
Os Version - Sun Solaris .
When I am going to drop a public database link it's give a error :
SQL Error: ORA-00604: error occurred at recursive SQL level 1
ORA-20000: Can not drop Object
ORA-06512: at line 2
00604. 00000 - "error occurred at recursive SQL level %s"
Can anyone help to resolve this problem? It is a Production Database and it's a Urgent .
Thanks,
Dip Sankar RanaYou say:
I already given syntax of creating Public database link.
But you should give real details (exact statements and exact results) to make it clear what you are attempting and what your problem is.
Please show:
- The CREATE PUBLIC DATABASE LINK statement (obscuring the password, of course) and its result (i.e. success or failure message)
- From each of schema1 (working) and schema2 (not working):
- - The result of SELECT USER FROM DUAL;
- - The result of SELECT USER FROM DUAL@DB_TST;
- - The result of SELECT COUNT(*) FROM ALL_OBJECTS@DB_TST WHERE OWNER = 'B1';
In the meantime, an observation.
You said:
I create a public db link from schema1 to other database using below command --
CREATE PUBLIC DATABASE LINK DB_TST
CONNECT TO B1 IDENTIFIED BY password
USING 'SPPROD'Note that any user (in caps: ANY USER) on this database can use this link to connect to database SPPROD as B1 without knowing the password - because you put the credentials in the link.
If you have a PUBLIC database link with credentials, like you do here, you have a serious, glaring security exposure. You really, REALLY should not do this. Use a private database link (available only to the user that created it) or do not put credentials on the link (so that any user using that link is using his own credentials to connect to the remote database).
Edited by: mtefft on Jan 14, 2011 4:14 AM -
I have two computers at my training lab. Both have computer Oracle 9i install. Bith have service/tag cats.
1.)
Computer Name : 10227-mr-srv.abc.com
Oracle service name : cats
2.)
Computer Name : 10227-ocrsrv.abc.com
Oracle service name : cats
Now from 1st oracle server, I want to connect to 2nd oracle server.
May be using fixed user hr Password hr_1.
Can you please give exact CREATE PUBILC DATABASE LINK statement for same.
May have to use identifier as creating loop.You can check out the syntax and examples here
-
Does shared public fixed user database links work with 9.2.0.8
Hi,
I'm trying to test benefits of using 'shared public fixed user database links' in 9.2.0.8 .
I've monitored tcp/ip communication after creating db link via:
CREATE SHARED PUBLIC DATABASE LINK sales.us.americas.acme_auto.com CONNECT TO scott IDENTIFIED BY tiger AUTHENTICATED BY anupam IDENTIFIED BY bhide USING 'sales';
but as far as I've observed there is new tcp/ip connection made after new user requesting remote table .
So looks like there is 1:1 relationship between user sessions requesting remote table and network connection opened .
Actually there are 2 network connection opened for every session using remote table .
tcp4 0 0 192.15.x.y.44141 192.15.x.y.1521 ESTABLISHED
tcp4 0 1127 192.15.x.y.1521 192.15.x.y.44170 ESTABLISHEDAs of both instances sharing same hardware ,maybe better aproatch would be BEQ communication ?
But I dont see obvious reasons that IPC communication would be better than few connections (because of shared db links) via tcp/ip .
Maybe my understanding of shared db links is wrong but I think that at some point there will be no 1:1 relation between user session requesting remote table
and number of network connection with remote instance . So for exaple with 100 user session I see only 10 network connections .
Regards.
GregThank You, that looks promising .
But could You help with creating test case scenario in which I can clearly see the difference in tcp/ip connection numbers between shared non-shared db links.
Regards.
Greg -
Using database link via dbms_scheduler
Hello out there,
I have a problem calling a stored procedure via dbms_scheduler that pulls some rows over a public database link.
The setup is the following:
create public database link mediabase using 'mediabase';
create or replace procedure hole_kurse as
mdatum date;
begin
select max(datum) into mdatum
from dt_wechselkurs;
insert into dt_wechselkurs l
(waehrung,
datum,
wechselkurs)
(select
r.waehrung,
r.datum,
r.wechselkurs
from
dt_wechselkurs@mediabase r
where
datum>mdatum);
commit;
end hole_kurse;
begin
dbms_scheduler.create_job(job_name => 'wechselkurse',
job_type => 'STORED_PROCEDURE',
job_action => 'hole_kurse',
start_date => sysdate,
repeat_interval => 'FREQ=DAILY; BYHOUR=7; BYMINUTE=0; BYSECOND=0');
dbms_scheduler.enable(name => 'wechselkurse');
commit;
end;
/I can access the database link in SQL and I can call the procedure hole_kurse from SQL without any errors. But the job fails writing "ORA-01017: invalid username/password; logon denied" into alert.log. I also tried using dbms_job which used to work with Oracle 10g but now fails with the same error.
My Oracle version is 11.2.0.2 64bit on Window Server 2008R2.
So what do I have to change that my job will run?
Many thanks in advance,
dhalekI'm not completely sure, but here is a possibility:
The [url http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_5005.htm#i2061505]docs have this to say:
>
If you specify CONNECT TO user IDENTIFIED BY password, then the database link connects with the specified user and password.
If you specify CONNECT TO CURRENT_USER, then the database link connects with the user in effect based on the scope in which the link is used.
If you omit both of those clauses, then the database link connects to the remote database as the locally connected user.
>
Your dblink is like this:
create public database link mediabase using 'mediabase';That is the third case described, so the link connects as "the locally connected user", which in the scheduler session is probably not your user.
You may try it with the second case described in the docs:
create public database link mediabase CONNECT TO CURRENT_USER using 'mediabase';If I understand the docs correct, then within the procedure the dblink will use the schema that the procedure is owned by (unless the procedure is using invoker-rights, then it will be the invoking user.)
It is just a guess, but you can try it and see ;-) -
ORA-01017 error while using a database link
Hi all,
I have a TNS entry as below
HOME=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=10.66.205.110)(PORT=1521))
(CONNECT_DATA=(SID=HOME))
I have created a database link as
create public database link link92.com using 'HOME'.
This was created successfully and an entry was made in all_db_links table.
However if i try connecting to a table in the remote database...for example
select * from emp@link92;
I am receiving an error ORA-01017(Invalid username passwd).
Would appreciate if somebody could help me out.
Thank youIt is not that the Database Link is "PUBLIC" that makes it use the current username/password.
It is that the Database Link has been created without specifying a " CONNECT TO username IDENTIFIED BY password " that makes the DBLink behave as a "current user database link" using the current username/password to connect to the remote database.
You can have a PUBLIC database link that uses a "CONNECT TO username IDENTIFIED BY password" such that all connections use the same remote username and password.
You can also have "private" (ie not PUBLIC) database link that does not specify a "CONNECT TO username IDENTIFIED BY password" which becomes a "current user [owner] database link".
Maybe you are looking for
-
Also, I can no longer find my "Recently Added" playlist. I have searched every title in my playlists and its no longer there. It's really frustrating because now if I want to listen to a new playlist that I've added new music to I have to really se
-
Returning error messages to sheel with termout off
Hi, I did a search in this forum and I couldn't find the answer. I am unloading (spooling) a table using sqlplus. Since I don't want to display these records on screen I am using set termout off. But I want to see error messages on the screen. I used
-
How can you change the font size in the application and system headers?
How can you change the font size in the application and system headers? I searched the system and finder prefs to no avail. Changing the screen density is not a good option. Thanks
-
Adobe Photoshop Album Starter Edition 3.0 in taskbar
Adobe Photo Downloader icon appears in taskbar after booting up. Disable, Launch and Exit appear only options on right-clicking. I can't find anything in set-up or preferences to remove this icon from my taskbar. Suggestions?
-
Hi Friends, I have initialized a cube. in that there are 70 packages available. but the QM status has not changed into Green. while I see the details, only one package ( Package No. 38) has yellow states. in that package, Transfer rules, Update rul