Oracle kliens GUI
Ki milyen klienst hasznal Oracle-hoz Linuxon? Az sqlpluson kivul...? Jo lenne valami GUI-s cucc, amivel tablespaceket, stb-t lehetne bongeszni is.
- Tovább (Oracle kliens GUI)
- 1727 megtekintés
Ki milyen klienst hasznal Oracle-hoz Linuxon? Az sqlpluson kivul...? Jo lenne valami GUI-s cucc, amivel tablespaceket, stb-t lehetne bongeszni is.
Előre is bocsi, ha nagyon primitív lesz a kérdés..
Van egy sqlrészletem, ami egy változóban($a) van:
$a = "se lect * from todo_adatok where id in (se lect id from todo_base where
nev = 'nev') and sid not in (se lect sid from todo_statusz where
statusz_nev = 'kész') and lejar > now()"
és 3 segédváltozóm ($rend1, $limit, $rend2)
$rend1 = "lejar";
$limit = "5";
$rend2 = "datum";
Az lenne a feladat, hogy $a- t rendezze $rend1 szerint, limitálja $limittel
(eddig ugye
$a . " order by " $rend1 . " limit " . $limit
), és
az így kapott táblát rendezze $rend2 szerint. Na most $rend1 után nem
írhatom ugye, hogy
", $rend2"
, mert az mást adna.
Ha mondjuk mindent megváltoztatok, és $a elején select aid lesz (ami primary
key), akkor az alábbi queryre ezt kapom vissza:
se lect * from todo_adatok where aid in (se lect aid from todo_adatok where id
in (se lect id from todo_base where nev = 'nev') and sid not in (se lect
sid from todo_statusz where statusz_nev = 'kész') and lejar > now() order by
lejar limit 5);
ERROR 1235 (42000): This version of MySQL doesn't yet support 'LIMIT &
IN/ALL/ANY/SOME subquery'
Ha lenne valakinek ötlete arra, hogy hogyan tudnám a fenti lekérdezést
helyesen megcsinálni úgy, hogy a $a- t nem bántom, azt nagyon megköszönném
:- ).
Sziasztok!
Tud-e' esetleg valaki jo modszereket arra, hogy mysql-ben (konkretan 5.0.27, gya'ri, fc4-re) hogyan lehet tablakat es indexeket hatekonyan tomoriteni? A tablakat feltolte's utan tisztan read-only modon hasznalnam, viszont fontos lenne a kis me'ret e's a gyorsasa'g is. Adott tehat egy tabla, benne ~1.8 millio rekord. Ezeknek ke't indexe van:
* egy sima id (primary key + auto increment, 1 es 1.8 millio kozott), valamint
* egy geometry::point osztalyon levo r-tree, ez egy sima mezei spatial index (utolag van letrehozva, feltolte's uta'n, `create index ...`-szel)
Egy rekord az 1 int + 1 point + 14*float, igy egy tabla ~170mega lesz. Az index pedig ~130mega, ebbol ~10mega az id indexe, a maradek az a spatial index. Erre a kovetkezotket probaltam ki:
* myisamchk tabla # hogy minden rendben van-e'
* myisampack tabla # tomorit: a 170mega's *.MYD-bol csinal 136 mega'sat, de az index megszunik letezni (a MYI file 130 mega'sbol ossszeesik kb. 1k-sra)
* myisamchk -rq tabla # aszondja a myisampack, hogy csinaljam ezt, megcsinalom, es visszakerul az index, ugyanugy 130mega's erdekes, hogy amig a create index kb. 4 percig futott, ez kb. 1 perc alatt lefut
* myisamchk tabla # csak a biztonstag kedveert, aszondja hogy fasza.
Kerdes, hogy ennel van-e valami effektivebb modszer, pl a myiamchk --sort-index es/vagy --sort-records jutott eszembe, de ez nekem valahogy nagyon nem akartak mukodni (rtfm alapjan kreten hibauzenetek jonnek, amit utana kismillio myisamchk-val lehet csak visszapofozni). Foleg az index tomorites lenne jo... osszesen ui. ~900 ilyen ta'bla't kellene ta'rolni...
A.
Van egy C programom, ami postgres adatbázist tölt fel adatokkal, illetve egy weblapom, ami ebből olvasgat. PHP-vel tökéletesen tudok kapcsolódni a szerverhez, a C-vel viszont gondok vannak.
Az adatbázissal kapcsolatos részek:
void clearres() {
if(res) {
PQclear(res);
res = NULL;
}
}
void db_end() {
printf("exiting...\n");
clearres();
PQfinish(conn);
exit(0);
}
void checkconn() {
PQconsumeInput(conn);
if(PQstatus(conn) == CONNECTION_OK)
return;
printf("connection lost, reconnecting...\n");
PQreset(conn);
if(PQstatus(conn) == CONNECTION_OK)
return;
printf("can't connect to database\n");
db_end();
}
void execquery(char *cmd, const char **par, int npar, ExecStatusType expected) {
checkconn();
clearres();
res = PQexecParams(conn, cmd, npar, NULL, par, NULL, NULL, 0);
if(PQresultStatus(res) == expected)
return;
}
void write_cur() {
char *query[255];
/* itt még némi finomítás */
execquery(*query,NULL,0,PGRES_COMMAND_OK);
}
int main( int argc, char *argv[] ) {
// init
conn = PQsetdbLogin("localhost","5432",NULL,NULL,"*","*","*");
checkconn();
//execquery("BEGIN;",NULL,0,PGRES_COMMAND_OK);
/* némi kód itt is, a program többi részével kapcsolatos */
//execquery("COMMIT;",NULL,0,PGRES_COMMAND_OK);
db_end();
return 0;
}
A query ami lefut az jó, mert kézzel beírva működik.
Valami ötletetek van? Hol lehet a baj?
Sziasztok
Egy Oracle motorral rendelkező adatbázist (IMI munkaügyi rendszer) szeretnék egy másik szerveren lévő mysql-el szinkronizálni. Milyen módszerekkel, eszközökkel oldható meg ez a kérdés. Lényegén csak egy 1-2 tábla szinkronizálására lenne szükség, és szeretném valahogy automatizálni. Az oracle jelenleg egy Win98-as gépen csücsül:)
Sziasztok!
Adott egy HP Prloiant ML110-es gép szerverként, elsősorban játékszerverek futnak rajta. Nemrég kértek WoW-szervert is, ami brutális mérteű adatbázissal jár. (Alapjáraton ~100 mega, de 2 hét alatt megduplázódott, ilyen növekedés várható később is)
Ez persze elég rendesen leterheli a szervert, ami a többi szolgáltatás minőségén meglátszik, szóval nem tartható állapot. Szeretném valahogy a végletekig optimalizálni a MySQL-szervert, akár külön erre a célra futtatni egyet. Hogyan tudom megoldani, hogy ne terhelje ennyire? Gondoltam a progi processzoridejének korlátozására (hogyan?), a progi által használt sávszél korlátozására (iptables gondolom, de ahhoz sajnos nem értek), esetleg a MySQL-DB másik szerverre való átpakolására (belassíthatja jelentősen a WoW-ot, mert csak külföldi ingyenes hostolókat találtam, sajnos még nincs 2. szerver). De biztos vannak még jobb megoldások is, ha valaki tud ilyet akkor ne sajnálja;)
Köszi a segítséget!
Sziasztok!
Szeretnék két mysql szerver között egy adatbázist replikálni. A szervereket beállítottam master-nek és slave-nek, létrehoztam egy repluser felhasználót a masteren, beállítottam neki hogy a slave-ről bejelentkezhet. De: mégsem sikerül bejelentkeznie. Azt mondja, hogy 1045 access denied... Ha administrárorral próbálom a slave-ről, akkor sikerül bejelentkeznie a masterre.
mit kellene még tennem? hol csesztem el?
Minden segítséget előre is köszönök!
Jobb helyet nem találván ide irok.
Saját szabad szavas keresőt kell irnom, addig eljutottam, hogy a mysql full text search -e elég normális eredményeket ad, viszont most megváltozott a feladat kicsit. A felahsználóim módosíthatják a saját magukról szóló lapokat, és ezek alapján kell megjelenitenem, a kapott emberkeet. Értelemszerüen, minél inkább elől van valaki a listában annál jobb neki.
Viszont a full text search nagyon könnyen befolyásolható bizonyos kulcs szavakra, igy az iránt érdeklődnék, hogy van -e valakinek valami öttlete arra, hogy hogyan lehet kevésbé átverhető motort irni.
- addig eljutottam, hogy a minden szót csak egyszer rakok bele a full text search mezőbe.
További ötletek, google link, tanáncs bármi jöhet.
Sziasztok,
Tudna valaki segiteni? SQL-ben veletlen szam generalasakor hogyan/mivel lehet azt biztositani, hogy a szamok semmikeppen se legyenek egyformak?
koszi.
Üdv!
A PostgreSQL 8.0-ás szerveren a
select lower('manó')
parancs a "man" stringet adja vissza, az "ó" elvész valahol. A zadatbázis encoding UNICODE, a client_encoding szintén. Mi a baja???
Valaki segítsen már szegény nyomorult vasárnapi programozón... :-)
Előre is kösz.