Mondjuk jön egy parancs, hogy describe x@dblink_itt, ahol az x-ben nincs pont.
Először a user_objects@dblink_itt-ben keresünk, ahol object_name='X'
Ha nincs találat, akkor megpróbálhatjuk ezt:
select * from user_db_links@dblink_itt where db_link=regexp_replace(sys.database_name@dblink_itt, '^[^.]+(..*|)$', 'X1'));
Ha az a feladat, hogy describe x.y@dblink_itt, akkor először select * from all_objects@dblink_itt where owner='X' and object_name='Y';
Második esélyként: select * from user_db_links@dblink_itt where db_link='X.Y';
Namostan akarunk-e más userek dblink-jéről információt adni? (Az Sql*Plus nem tekinthető mintának, mert az semmilyen dblink-ről nem ad semmilyen információt). Ha igen, akkor még lehet ezek valamelyike: select * from all_db_links@dblink_itt where owner='X' and db_link='Y';
select * from all_db_links@dblink_itt where owner='X' and db_link=regexp_replace(sys.database_name@dblink_itt, '^[^.]+(..*|)$', 'Y1'));
Ha ezt mind megvan, akkor már csak a PUBLIC dblink-ekkel kell foglalkozni, valahogy úgy, ahogy a PUBLIC szinonímákkal, hogy pl. `describe dual`
1. select * from user_objects where OBJECT_NAME='DUAL'; Nincs találat 2. select * from all_synonyms where OBJECT_NAME='DUAL' AND OWNER='PUBLIC'; Van találat, kiderül, hogy owner='SYS' 3. select * from all_objects where OBJECT_NAME='DUAL' AND OWNER='SYS'; És már célba is értünk.
Viszont ez működik, lekérdezi a távoli domain-nevet:
select sys.database_name, sys.database_name@dblink_remote from dual; HELYI_NEV TAVOLI_NEV
Ez akkor lehet releváns, ha egy describe dblink_ott@dblink_itt szerű műveletet akarnék implementálni (ne firtassuk, milyen megfontolásból),
ugyanis ha a távoli adatbázis nevében van domain-rész, akkor ez nem talál:
SELECT * FROM user_db_links@dblink_itt WHERE db_link='DBLINK_OTT' de ez igen: SELECT * FROM user_db_links@dblink_itt WHERE db_link='DBLINK_OTT.DOMAIN_OTT'
Hadd ne mondjam, hogy az Sql*Plus csinálja jobban, ugyanis ott a describe egyáltalán nem működik DBLINK-re.
Bónusz érdekesség: a dblink nevében lehet pont, ebből következik, hogy describe x.y vagy az x séma y objektumát fogja megtalálni, vagy az aktuális séma x.y dblink-jét. Cannot be helped, ahogy a művelt francia mondja.
Na jó, végeztem még egy mérést, így már van egy tippem.
#1 NLS_LANG=american_hungary.EE8ISO8859P2 sqlplus ... SQL> select * from dual; D - X
#2 NLS_LANG=american_hungary.AL32UTF8 sqlplus ... SQL> select * from dual; DUM --- X
Szóval kimatekozza, hogy az AL32UTF8-ban egy karakter akár három byte is lehet (igazából négy, de mi tökéletes ebben a fájó életben), tehát valamiért három karakterre írja ki a mező nevét is.
Így van, synonym vagy view megoldja a lekérdezést, de pl. a describe nem fog működni, mert ahhoz a jupiter-en lévő user_tab_columns-t kellene elérni két dblinken keresztül.
Oracle APEX-ben szeretnék segítséget kérni, bízok benne hogy maradhat.
Szóval azt szeretném megoldani, hogy egy "Function Body returning SQL Query" által visszaadott táblázatban szeretnék gyorskeresést használni. Keresgéltem már a neten, de amit találtam (java kód az "Execute when Page Loads"-ba ) az így nem működött.
Ezt próbáltam, ami nekem nem működött. Lehet valamit én néztem be, de nem jöttem még rá mit rontok el...
Az alábbiak valamelyikével kérdezhetjük le az adatbázis nevét:
select * from global_name; select ora_database_name from dual;
Az eredményben a domain-rész is ott van (ha van egyáltalán), tehát pl:
UBUL -- itt nincs domain rész
GARFIELD.ARBUCKLE.HOME -- itt van domain rész
A CREATE DATABASE LINK akkor ragasztja hozzá a dblink nevéhez a (helyi) database domainjét, ha nincs pont a névben, és van a database nevében domain rész, pl:
ubul> create database link PROBA ... --> PROBA garfield> create database link PROBA.1 ... --> PROBA.1 garfield> create database link PROBA2 ... --> PROBA2.ARBUCKLE.HOME
Az Állambiztonsági szolgálatoknak legyen akármi a nevük volt szüksége egy reláció modellű rendszerre. A CIA csak egy kisebb része a kezdeti felhasználóknak. Larry Ellison cége nyerte meg a tendert a fejlesztésre. Hiába az IBM matematikusai, találták ki a reláció modellű adatkezelést, használható rendszerük a DB(2) sokkal később jelent meg a keresjedelmi forgalomban.
A SAP egy komplett vállatírányítási rendszer, amit a vevő igényei szerint modulokban installálnak, és világ nem USA részén meglehetősen elterjet. Hasonló rendzser a PeapolSoft vagy rendszere, amit az USA-ban előszerettel használnak.
A 80-as években jutottam működő reláció modellű rendszerhez. Akkor Informix, és Oracle volt a piacvezető. Illetve volt a szabad szoftver Ingress.
Az Apexet én első változatban 99-ben kezdtem használni, internetes-browser cliens , oracle db server alapú fejlesztéseket tett lehetővé. Egy bonyolult alkalmazást kellett megcsinálni. A felhasználók ténylegesen szét voltak szórva a kontinenseken, (Antarktisz kivételével), a felhasználók mennyisége azonban nem volt nagyon jelentős, de 100% adat és feldolgozási biztonságot kellett megoldani.
Off: Azért az interneten sem csupa okosság van ám, és ezen még a mesterséges intelligencia sem segít, sajnos. On: A SAP vállalatirányítási rendszere többféle adatbázissal működhet, pl. Oracle, DB2, MSSQL.
Közben olvastam olyat is, hogy az Oracle adatbáziskezelőt a CIA alkotta meg eredetileg, hogy legyen elérhető relációs adatbáziskezelő, amihez ők hozzáférhetnek.
Az eszközeiket, mint az APEX-et később csinálták még az is lehet, hogy a SAP konkurencia termékeire válaszul.
A SAP-nál mindig figyelik Larry Elison lépéseit és hogy a főnökük le ne maradjon tőle.
Szerintem: "Latin szó (oraculum) az orare (‘beszél, kijelent’) igéből, forrása az os, oris (‘száj’). Lásd még orális, orátor, oratoriánus, oratórium.". Vedd hozzá a jóslatot.