Damian Kasperski

Damian Kasperski Student informatyki
stosowanej na
wydziale Matematyki,
Fi...

Temat: Problem z global names

Witam.

Mam problem przy połączeniu z bazą kiedy próbuję użyć global names. Wygląda to tak:

SQL> connect system/haslo@cracow.online.shop
ERROR:
ORA-12154: TNS: nie uda│o siŕ rozstrzygn╣Š podanego identyfikatora po│╣czenia

Problemu nie ma kiedy łączę tylko prze SID:

connect system/haslo@cracow

Wygląda na to, że problem jest z tnsnames. Tak wygląda:

CRACOW =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.XXX.XXX.XXX)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cracow.online.shop)
)
)

LISTENER_CRACOW =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.XXX.XXX.XXX)(PORT = 1522))

Polecenia dają wynik:

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------

CRACOW.ONLINE.SHOP

SQL> show parameter global

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
global_context_pool_size string
global_names boolean TRUE
global_txn_processes integer 1

SQL> show parameter instance_name

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string cracow

SQL> show parameter db_name

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string cracow

Baza: Oracle 11g
System: Windows 7
Paweł Grzegorz Kwiatkowski

Paweł Grzegorz Kwiatkowski Architekt
oprogramowania,
Ericsson

Temat: Problem z global names

Spróbuj zmienić:


CRACOW =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.XXX.XXX.XXX)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cracow.online.shop)
)
)


na


CRACOW.online.shop =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.XXX.XXX.XXX)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cracow.online.shop)
)
)


Jak nie zadziała, to wklej rezultaty:

tnsping cracow

tnsping cracow.online.shop

oraz zawartość sqlnet.ora używanego przez TNSPINGa.
Damian Kasperski

Damian Kasperski Student informatyki
stosowanej na
wydziale Matematyki,
Fi...

Temat: Problem z global names

Wyczytałem na forum oraclowym (https://forums.oracle.com/forums/thread.jspa?messageID=... ), że db_name, instance_name oraz service_name mogą mieć takie same nazwy, ale global_name powinien być inny.Oraz, że każdy database link tworzony powinien mieć taką samą nazwę co global_name zdalnej bazy. Zamieniłem więc mojego tnsa na:


CRACOW =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.XXX.XXX.XXX)(PORT = 1522))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cracow)
)
)



C:\Users\Damian>tnsping cracow

TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 01-MAR-2
013 10:30:52

Copyright (c) 1997, 2010, Oracle. All rights reserved.

U┐yte pliki parametrˇw:
D:\app\Damian\product\11.2.0\dbhome_2\network\admin\sqlnet.ora


U┐yto adaptera TNSNAMES w celu rozstrzygniŕcia tego aliasu
Prˇba skontaktowania siŕ z (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL =
TCP)(HOST = 192.XXX.XXX.XXX)(PORT = 1522))) (CONNECT_DATA = (SERVER = DEDICATED)
(SERVICE_NAME = cracow)))
OK (10 ms)



C:\Users\Damian>tnsping cracow.online.shop

TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 01-MAR-2
013 10:31:08

Copyright (c) 1997, 2010, Oracle. All rights reserved.

U┐yte pliki parametrˇw:
D:\app\Damian\product\11.2.0\dbhome_2\network\admin\sqlnet.ora

TNS-03505: Nie uda│o siŕ rozstrzygn╣Š nazwy



# sqlnet.ora Network Configuration File: D:\app\Damian\product\11.2.0\dbhome_2\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.

# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)


Przy próbie tworzenia łącznika:


SQL> create public database link warsaw.online.shop using 'warsaw.online.shop';
create public database link warsaw.online.shop using 'warsaw.online.shop'
*
BúąD w linii 1:
ORA-02084: brak sk│adnika w nazwie bazy danych
Damian Kasperski edytował(a) ten post dnia 01.03.13 o godzinie 10:59
Paweł Grzegorz Kwiatkowski

Paweł Grzegorz Kwiatkowski Architekt
oprogramowania,
Ericsson

Temat: Problem z global names

1. W sqlnet.ora dodaj wpis:

NAMES.DEFAULT_DOMAIN = online.shop


# powoduje, że do nazwy sieciowej (tej którą podajesz w tnsping), bedzie doklejana nazwa tej domeny, to samo tyczy się nazwy serwisowej (SERVICE_NAME)

2. W tnsnames.ora dodaj (nazwa sieciowa + nazwa domeny)

CRACOW.online.shop =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.XXX.XXX.XXX)(PORT = 1522))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cracow)
)
)

Damian Kasperski

Damian Kasperski Student informatyki
stosowanej na
wydziale Matematyki,
Fi...

Temat: Problem z global names

Dziękuję Ci bardzo, hula jak trzeba. Zamień odział na Krakowski to Ci przyniosę piwko :-)

Niestety nadal mam problem z utworzeniem database link przy użyciu <db_name>.<db_domain> czyli: warsaw.online.shop

Wywala komunikat jak wcześniej.Damian Kasperski edytował(a) ten post dnia 01.03.13 o godzinie 11:58
Paweł Grzegorz Kwiatkowski

Paweł Grzegorz Kwiatkowski Architekt
oprogramowania,
Ericsson

Temat: Problem z global names

Damian Kasperski:
Dziękuję Ci bardzo, hula jak trzeba. Zamień odział na Krakowski to Ci przyniosę piwko :-)

Niestety nadal mam problem z utworzeniem database link przy użyciu <db_name>.<db_domain> czyli: warsaw.online.shop

Wywala komunikat jak wcześniej.

Co do piwka, to wygląda, że mnie okazja ominęła ;-)

Spróbuj nazwać db linka inaczej i sprawdź czy działa. Może być tak, że "online", to "słowo klucz" dla Oracle i dlatego nie chce utworzyć linka :)



create public database link foobar using 'warsaw.online.shop';

select * from dual@foobar;

-- słowa zarezerwowane:
select * from v$reserved_words;

-- to powinno pomóc, aczkolwiek zachowanie może być odmienne od oczekiwanego :)
create public database link "warsaw.online.shop" using 'warsaw.online.shop';

-- Proponuję sprawdzić zachowanie:

create table "foo" (a number);

create table bar (a number);

select * from "foo";

select * from foo;

select * from "bar";

select * from bar;

Damian Kasperski

Damian Kasperski Student informatyki
stosowanej na
wydziale Matematyki,
Fi...

Temat: Problem z global names

Miałeś rację "online" jest zarezerwowanym słowem - nigdy bym do tego nie doszedł. Dzięki :)

Trzeba będzie przemianować domenę w każdej bazie.

Następna dyskusja:

Dziwny problem w funkcji T-...




Wyślij zaproszenie do