KnowHow

13
Mai
2005

Oracle - Schnell FAQs

1. Ora oder OCI?
2. Ich habe Oracle-Support mit --with-oci8 in PHP eincompiliert, nun startet der Apache nicht mehr.
3. Der Webserver verbraucht jetzt viel mehr Speicher als ohne Oracle, mache ich was falsch?
4. Umlaute, die in die Datenbank eingetragen wurden, werden nicht korrekt dargestellt.
5. Gibt es auto_increment unter Oracle?
6. Ich verwende das obige Beispiel. Wie kann ich nun mysql_insert_id() emulieren?
7. Wie selektiere ich nur bestimmte Zeilen (LIMIT unter MySQL)?
8. Wie speichere ich Datensätze mit mehr als 2000 Zeichen ab?
9. Wie bearbeite ich LOBs mit PHP?
10. Wie nenne ich Spalten um?
11. Wie kann ich SQL Skriptdateien in Oracle ausführen?
12. Welche freien Tools gibts für Oracle?
13. Ich bekomme ein Oracle Fehlernummer ORA-XXXXX, wo stehen die Fehlercodes?
14. Welche Bücher zu Oracle sind empfehlenswert?

Org Link

Gibt es auto_increment unter Oracle?


Nein. Jedoch kann auto_increment via Trigger emuliert werden.

Wer von MySQL nach Oracle portiert vermisst wohl als erstes das auto_increment Feature von MySQL Spalten. Dieses läßt sich jedoch unter der Nutzung von Sequences und Triggern bei Oracle erstellen:
rem Wir brauchen zum einen einen Zähler,
rem der hochzählt (dazu die Sequence)

create sequence zaehler_der_tabelle_xy
       increment by 1 start with 1 cache 2;

rem Jetzt die eigentliche Tabelle

CREATE TABLE xy (
        id_xy NUMBER(20,0) PRIMARY KEY,
        bla_xy VARCHAR2(4000)
);

rem Nun ist noch ein Trigger vonnöten, der
rem die neue Id von der Sequence übergeben
rem bekommt und vor dem insert diesen Wert
rem auf die entsprechende Spalte überträgt:

CREATE TRIGGER trigger_primary_key BEFORE INSERT ON xy
       REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW
Begin
select zaehler_der_tabelle_xy.nextval into :NEW.id_xy from DUAL;
End;
/
Bei jedem insert wird nun der Wert von id_xy automatisch hochgesetzt. Zu beachten ist, dass es besser ist, für jede Tabelle eine eigene Sequence zu erstellen, denn sonst müssen sich alle Tabellen die fortlaufenden Zahlen teilen.

Alternativ kann auch ohne Trigger gearbeitet werden und die nächste Zahl per Hand selektiert werden:
$stmt=OCIParse($conn, "SELECT zaehler_der_tabelle_xy.nextval FROM DUAL");
OCIExecute($stmt);
OCIFetch($stmt);
$nextid=OCIResult($stmt, "NEXTVAL");
Der aktuellen Wert der Sequenz zaehler_der_tabelle_xy kann durch Verwendung von currval (abgeleitet von Current Value) ermittelt werden. Mit dem folgenden Codestück ist es möglich, den zuletzt eingefügten Wert abzufragen:
// INSERT in die Tabelle

$stmt = OCIParse($conn, "INSERT INTO xy (BLA_XY) VALUES 'BLA'");
OCIExecute($stmt, OCI_DEFAULT);

//Abfrage der Sequence
$stmt = OCIParse($conn,"SELECT zaehler_der_tabelle_xy.currval
                 AS CV FROM DUAL");
OCIExecute($stmt, OCI_DEFAULT);
OCIFetch($stmt);
$last_id=OCIResult($stmt, "CV");
OCICommit($conn);
Achtung: Das selektieren des currval funktioniert nur innerhalb derselben Transaktion (daher auch beim OCI_DEFAULT). Will man den aktuellen höchsten ID-Wert ermitteln, ist es besser, unter Verwendung der SQL-Funktion MAX() den höchsten Wert direkt aus der Tabelle abzufragen.


Org. Link

2
Mai
2005

RegTP: Fax-Nummer und E-Mail für Spam-Opfer

Rufnummern-Spam soll eingedämmt werden
Die Regulierungsbehörde für Telekommunikation und Post (RegTP) hat jetzt eine Fax-Nummer und E-Mail-Adresse eingerichtet, an die sich durch unerwünschte Werbung Terrorisierte wenden können. Allerdings sind die Möglichkeiten der RegTP in Bezug auf die Spam-Bekämpfung derzeit recht eingeschränkt.
Wer sich durch Spam über Telefon, Fax, SMS oder E-Mail belästigt fühlt, kann sich unter der Fax-Nummer 06321/934-111 oder die E-Mail-Adresse rufnummernspam@regtp.de an die RegTP wenden. Allerdings kann die RegTP bisher nur bei so genanntem Rufnummern-Spam tätig werden, d.h. es wird eine gesicherte Kenntnis der rechtswidrigen Nutzung von Fax- oder Telefonnummern vorausgesetzt.
Auch dürfen die betroffenen Verbraucher keine Geschäftsbeziehung zum Absender und vorher auch keine Zustimmung bezüglich der Zusendungen erteilt haben.
Verbraucher, die entsprechende, sie belästigende Werbung für Rufnummern erhalten, sollen ihre aussagekräftigen Unterlagen, d.h. beispielsweise die erhaltenen Faxe oder Werbe-E-Mails, mit einer kurzen Sachverhaltsdarstellung und der Bitte um Einschreiten an die RegTP senden.
Original Link

MPD start script

#!/bin/bash
#
# mpd This script takes care of starting and stopping
# mpd (Music Player Deamon) server
#
# This script has been tested on redhat/fedora distribution and
# should run on other "system V" like Mandrake
#
# To get mpd please visite www.musicpd.org
# To get rpm package check at http://sourceforge.net
#
# Thank to schmandman (original script for BSD system)
#
# Installation
# 1) copy this script into /etc/init.d/
# 2) make this script executable ( chmod a-x /etc/init.d/mpd )
# 3) Create link to start mpd at the desired level (usually level 5)
# ln -s /etc/init.d/mpd /etc/rc.d/rc5.d/S99mpd
# 4) Create link to stop properly the deamon
# ln -s /etc/init.d/mpd /etc/rc.d/rc0.d/K99mpd
# ln -s /etc/init.d/mpd /etc/rc.d/rc1.d/K99mpd
# ln -s /etc/init.d/mpd /etc/rc.d/rc6.d/K99mpd
#

# Source function library.
. /etc/rc.d/init.d/functions

prog="Music Player Daemon"
configfile="/etc/mpd.conf"
daemonx="/usr/local/bin/mpd"
pid="/var/run/mpd.pid"

if [ ! -x $daemonx ]; then
echo -e "Fatal error: $daemonx not found"
return 1
fi

if [ ! -f $configfile ]; then
echo -e "Fatal Error: config file $configfile not found...exiting"
return 1
fi

music=`grep music_dir $configfile|cut -d " " -f2|sed -e 's/\"//g'`
if [ ! -d $music ]; then
echo -e "no music found\n why start?"
return 1
fi

start() {
echo -n $"Starting $prog: "
daemon $daemonx $configfile
ret=$?
echo
[ $ret -eq 0 ] && touch $pid
return $ret
}
stop() {
echo -n $"Stopping $prog: "
killproc $daemonx
ret=$?
echo
[ $ret -eq 0 ] && rm -f $pid
}
createdb() {
echo -n $"Create/Recreate db "
$daemonx --create-db
ret=$?
echo
[ $ret -eq 0 ] && touch $pid
return $ret
}

# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $daemonx
ret=$?
;;
restart)
stop
start
;;
createdb)
stop
createdb
start
;;
*)
echo $"Usage: $0 {start|stop|status|createdb|restart}"
exit 1
esac

exit $?

28
Apr
2005

Web ASCII


  0 1 2 3 4 5 6 7 8 9   0 1 2 3 4 5 6 7 8 9   0 1 2 3 4 5 6 7 8 9
 00








 100
d
e
f
g
h
i
j
k
l
m
 200
È
É
Ê
Ë
Ì
Í
Î
Ï
Ð
Ñ
 10






 110
n
o
p
q
r
s
t
u
v
w
 210
Ò
Ó
Ô
Õ
Ö
×
Ø
Ù
Ú
Û
 20









 120
x
y
z
{
|
}
~

 220
Ü
Ý
Þ
ß
à
á
â
ã
ä
å
 30


!
"
#
$
%
&
'
 130
ƒ
ˆ
Š
 230
æ
ç
è
é
ê
ë
ì
í
î
ï
 40
(
)
*
+
,
-
.
/
0
1
 140
Œ
Ž
 240
ð
ñ
ò
ó
ô
õ
ö
÷
ø
ù
 50
2
3
4
5
6
7
8
9
:
;
 150
˜
š
œ
ž
Ÿ
 250
ú
û
ü
ý
þ
ÿ
 
 60
<
=
>
?
@
A
B
C
D
E
 160
 
¡
¢
£
¤
¥
¦
§
¨
©
 
 70
F
G
H
I
J
K
L
M
N
O
 170
ª
«
¬
­
®
¯
°
±
²
³
 
 80
P
Q
R
S
T
U
V
W
X
Y
 180
´
µ
·
¸
¹
º
»
¼
½
 
 90
Z
[
\
]
^
_
`
a
b
c
 190
¾
¿
À
Á
Â
Ã
Ä
Å
Æ
Ç
 

22
Apr
2005

HTML Characters, Alpha Codes

A
Á
&Aacute;
&#193;
á
&aacute;
&#225;
Â
&Acirc;
&#194;
â
&acirc;
&#226;
´
&acute;
&#180;
Æ
&AElig;
&#198;
æ
&aelig;
&#230;
À
&Agrave;
&#192;
à
&agrave;
&#224;
&alefsym;
&#8501;
Α
&Alpha;
&#913;
α
&alpha;
&#945;
&
&amp;
&#38;
&and;
&#8743;
&ang;
&#8736;
&apos;
&apos;
&#39;
Å
&Aring;
&#197;
å
&aring;
&#229;
&asymp;
&#8776;
Ã
&Atilde;
&#195;
ã
&atilde;
&#227;
Ä
&Auml;
&#196;
ä
&auml;
&#228;
B
&bdquo;
&#8222;
Β
&Beta;
&#914;
β
&beta;
&#946;
¦
&brvbar;
&#166;
&bull;
&#8226;
C
&cap;
&#8745;
Ç
&Ccedil;
&#199;
ç
&ccedil;
&#231;
¸
&cedil;
&#184;
¢
&cent;
&#162;
Χ
&Chi;
&#935;
χ
&chi;
&#967;
ˆ
&circ;
&#710;
&clubs;
&#9827;
&cong;
&#8773;
©
&copy;
&#169;
&crarr;
&#8629;
&cup;
&#8746;
¤
&curren;
&#164;
D
&Dagger;
&#8225;
&dagger;
&#8224;
&dArr;
&#8659;
&darr;
&#8595;
°
&deg;
&#176;
Δ
&Delta;
&#916;
δ
&delta;
&#948;
&diams;
&#9830;
÷
&divide;
&#247;
E
É
&Eacute;
&#201;
é
&eacute;
&#233;
Ê
&Ecirc;
&#202;
ê
&ecirc;
&#234;
È
&Egrave;
&#200;
è
&egrave;
&#232;
&empty;
&#8709;
&emsp;
&#8195;
&ensp;
&#8194;
Ε
&Epsilon;
&#917;
ε
&epsilon;
&#949;
&equiv;
&#8801;
Η
&Eta;
&#919;
η
&eta;
&#951;
Ð
&ETH;
&#208;
ð
&eth;
&#240;
Ë
&Euml;
&#203;
ë
&euml;
&#235;
&euro;
&#8364;
&exist;
&#8707;
F
ƒ
&fnof;
&#402;
&forall;
&#8704;
½
&frac12;
&#189;
¼
&frac14;
&#188;
¾
&frac34;
&#190;
&frasl;
&#8260;
G
Γ
&Gamma;
&#915;
γ
&gamma;
&#947;
&ge;
&#8805;
>
&gt;
&#62;
H
&hArr;
&#8660;
&harr;
&#8596;
&hearts;
&#9829;
&hellip;
&#8230;
I
Í
&Iacute;
&#205;
í
&iacute;
&#237;
Î
&Icirc;
&#206;
î
&icirc;
&#238;
¡
&iexcl;
&#161;
Ì
&Igrave;
&#204;
ì
&igrave;
&#236;
&image;
&#8465;
&infin;
&#8734;
&int;
&#8747;
Ι
&Iota;
&#921;
ι
&iota;
&#953;
¿
&iquest;
&#191;
&isin;
&#8712;
Ï
&Iuml;
&#207;
ï
&iuml;
&#239;
K
Κ
&Kappa;
&#922;
κ
&kappa;
&#954;
L
Λ
&Lambda;
&#923;
λ
&lambda;
&#955;
&lang;
&#9001;
«
&laquo;
&#171;
&lArr;
&#8656;
&larr;
&#8592;
&lceil;
&#8968;
&ldquo;
&#8220;
&le;
&#8804;
&lfloor;
&#8970;
&lowast;
&#8727;
&loz;
&#9674;
&lrm;
&#8206;
&lsaquo;
&#8249;
&lsquo;
&#8216;
<
&lt;
&#60;
M
¯
&macr;
&#175;
&mdash;
&#8212;
µ
&micro;
&#181;
·
&middot;
&#183;
&minus;
&#8722;
Μ
&Mu;
&#924;
μ
&mu;
&#956;
N
&nabla;
&#8711;
 
&nbsp;
&#160;
&ndash;
&#8211;
&ne;
&#8800;
&ni;
&#8715;
¬
&not;
&#172;
&notin;
&#8713;
&nsub;
&#8836;
Ñ
&Ntilde;
&#209;
ñ
&ntilde;
&#241;
Ν
&Nu;
&#925;
ν
&nu;
&#957;
O
Ó
&Oacute;
&#211;
ó
&oacute;
&#243;
Ô
&Ocirc;
&#212;
ô
&ocirc;
&#244;
Œ
&OElig;
&#338;
œ
&oelig;
&#339;
Ò
&Ograve;
&#210;
ò
&ograve;
&#242;
&oline;
&#8254;
Ω
&Omega;
&#937;
ω
&omega;
&#969;
Ο
&Omicron;
&#927;
ο
&omicron;
&#959;
&oplus;
&#8853;
&or;
&#8744;
ª
&ordf;
&#170;
º
&ordm;
&#186;
Ø
&Oslash;
&#216;
ø
&oslash;
&#248;
Õ
&Otilde;
&#213;
õ
&otilde;
&#245;
&otimes;
&#8855;
Ö
&Ouml;
&#214;
ö
&ouml;
&#246;
P
&para;
&#182;
&part;
&#8706;
&permil;
&#8240;
&perp;
&#8869;
Φ
&Phi;
&#934;
φ
&phi;
&#966;
Π
&Pi;
&#928;
π
&pi;
&#960;
ϖ
&piv;
&#982;
±
&plusmn;
&#177;
£
&pound;
&#163;
&Prime;
&#8243;
&prime;
&#8242;
&prod;
&#8719;
&prop;
&#8733;
Ψ
&Psi;
&#936;
ψ
&psi;
&#968;
Q
"
&quot;
&#34;
R
&radic;
&#8730;
&rang;
&#9002;
»
&raquo;
&#187;
&rArr;
&#8658;
&rarr;
&#8594;
&rceil;
&#8969;
&rdquo;
&#8221;
&real;
&#8476;
®
&reg;
&#174;
&rfloor;
&#8971;
Ρ
&Rho;
&#929;
ρ
&rho;
&#961;
&rlm;
&#8207;
&rsaquo;
&#8250;
&rsquo;
&#8217;
S
&sbquo;
&#8218;
Š
&Scaron;
&#352;
š
&scaron;
&#353;
&sdot;
&#8901;
§
&sect;
&#167;
­  or  -
&shy;
&#173;
Σ
&Sigma;
&#931;
σ
&sigma;
&#963;
ς
&sigmaf;
&#962;
&sim;
&#8764;
&spades;
&#9824;
&sub;
&#8834;
&sube;
&#8838;
&sum;
&#8721;
&sup;
&#8835;
¹
&sup1;
&#185;
²
&sup2;
&#178;
³
&sup3;
&#179;
&supe;
&#8839;
ß
&szlig;
&#223;
T
Τ
&Tau;
&#932;
τ
&tau;
&#964;
&there4;
&#8756;
Θ
&Theta;
&#920;
θ
&theta;
&#952;
ϑ
&thetasym;
&#977;
&thinsp;
&#8201;
Þ
&THORN;
&#222;
þ
&thorn;
&#254;
˜
&tilde;
&#732;
×
&times;
&#215;
&trade;
&#8482;
U
Ú
&Uacute;
&#218;
ú
&uacute;
&#250;
&uArr;
&#8657;
&uarr;
&#8593;
Û
&Ucirc;
&#219;
û
&ucirc;
&#251;
Ù
&Ugrave;
&#217;
ù
&ugrave;
&#249;
¨
&uml;
&#168;
ϒ
&upsih;
&#978;
Υ
&Upsilon;
&#933;
υ
&upsilon;
&#965;
Ü
&Uuml;
&#220;
ü
&uuml;
&#252;
W
&weierp;
&#8472;
X
Ξ
&Xi;
&#926;
ξ
&xi;
&#958;
Y
Ý
&Yacute;
&#221;
ý
&yacute;
&#253;
¥
&yen;
&#165;
Ÿ
&Yuml;
&#376;
ÿ
&yuml;
&#255;
Z
Ζ
&Zeta;
&#918;
ζ
&zeta;
&#950;
&zwj;
&#8205;
&zwnj;
&#8204;

20
Apr
2005

colorWizard


#000000
0/0/0
#000033
0/0/51
#000066
0/0/102
#000099
0/0/153
#0000CC
0/0/204
#0000FF
0/0/255
#003300
0/51/0
#003333
0/51/51
#003366
0/51/102
#003399
0/51/153
#0033CC
0/51/204
#0033FF
0/51/255
#006600
0/102/0
#006633
0/102/51
#006666
0/102/102
#006699
0/102/153
#0066CC
0/102/204
#0066FF
0/102/255
#009900
0/153/0
#009933
0/153/51
#009966
0/153/102
#009999
0/153/153
#0099CC
0/153/204
#0099FF
0/153/255
#00CC00
0/204/0
#00CC33
0/204/51
#00CC66
0/204/102
#00CC99
0/204/153
#00CCCC
0/204/204
#00CCFF
0/204/255
#00FF00
0/255/0
#00FF33
0/255/51
#00FF66
0/255/102
#00FF99
0/255/153
#00FFCC
0/255/204
#00FFFF
0/255/255
#330000
51/0/0
#330033
51/0/51
#330066
51/0/102
#330099
51/0/153
#3300CC
51/0/204
#3300FF
51/0/255
#333300
51/51/0
#333333
51/51/51
#333366
51/51/102
#333399
51/51/153
#3333CC
51/51/204
#3333FF
51/51/255
#336600
51/102/0
#336633
51/102/51
#336666
51/102/102
#336699
51/102/153
#3366CC
51/102/204
#3366FF
51/102/255
#339900
51/153/0
#339933
51/153/51
#339966
51/153/102
#339999
51/153/153
#3399CC
51/153/204
#3399FF
51/153/255
#33CC00
51/204/0
#33CC33
51/204/51
#33CC66
51/204/102
#33CC99
51/204/153
#33CCCC
51/204/204
#33CCFF
51/204/255
#33FF00
51/255/0
#33FF33
51/255/51
#33FF66
51/255/102
#33FF99
51/255/153
#33FFCC
51/255/204
#33FFFF
51/255/255
#660000
102/0/0
#660033
102/0/51
#660066
102/0/102
#660099
102/0/153
#6600CC
102/0/204
#6600FF
102/0/255
#663300
102/51/0
#663333
102/51/51
#663366
102/51/102
#663399
102/51/153
#6633CC
102/51/204
#6633FF
102/51/255
#666600
102/102/0
#666633
102/102/51
#666666
102/102/102
#666699
102/102/153
#6666CC
102/102/204
#6666FF
102/102/255
#669900
102/153/0
#669933
102/153/51
#669966
102/153/102
#669999
102/153/153
#6699CC
102/153/204
#6699FF
102/153/255
#66CC00
102/204/0
#66CC33
102/204/51
#66CC66
102/204/102
#66CC99
102/204/153
#66CCCC
102/204/204
#66CCFF
102/204/255
#66FF00
102/255/0
#66FF33
102/255/51
#66FF66
102/255/102
#66FF99
102/255/153
#66FFCC
102/255/204
#66FFFF
102/255/255
#990000
153/0/0
#990033
153/0/51
#990066
153/0/102
#990099
153/0/153
#9900CC
153/0/204
#9900FF
153/0/255
#993300
153/51/0
#993333
153/51/51
#993366
153/51/102
#993399
153/51/153
#9933CC
153/51/204
#9933FF
153/51/255
#996600
153/102/0
#996633
153/102/51
#996666
153/102/102
#996699
153/102/153
#9966CC
153/102/204
#9966FF
153/102/255
#999900
153/153/0
#999933
153/153/51
#999966
153/153/102
#999999
153/153/153
#9999CC
153/153/204
#9999FF
153/153/255
#99CC00
153/204/0
#99CC33
153/204/51
#99CC66
153/204/102
#99CC99
153/204/153
#99CCCC
153/204/204
#99CCFF
153/204/255
#99FF00
153/255/0
#99FF33
153/255/51
#99FF66
153/255/102
#99FF99
153/255/153
#99FFCC
153/255/204
#99FFFF
153/255/255
#CC0000
204/0/0
#CC0033
204/0/51
#CC0066
204/0/102
#CC0099
204/0/153
#CC00CC
204/0/204
#CC00FF
204/0/255
#CC3300
204/51/0
#CC3333
204/51/51
#CC3366
204/51/102
#CC3399
204/51/153
#CC33CC
204/51/204
#CC33FF
204/51/255
#CC6600
204/102/0
#CC6633
204/102/51
#CC6666
204/102/102
#CC6699
204/102/153
#CC66CC
204/102/204
#CC66FF
204/102/255
#CC9900
204/153/0
#CC9933
204/153/51
#CC9966
204/153/102
#CC9999
204/153/153
#CC99CC
204/153/204
#CC99FF
204/153/255
#CCCC00
204/204/0
#CCCC33
204/204/51
#CCCC66
204/204/102
#CCCC99
204/204/153
#CCCCCC
204/204/204
#CCCCFF
204/204/255
#CCFF00
204/255/0
#CCFF33
204/255/51
#CCFF66
204/255/102
#CCFF99
204/255/153
#CCFFCC
204/255/204
#CCFFFF
204/255/255
#FF0000
255/0/0
#FF0033
255/0/51
#FF0066
255/0/102
#FF0099
255/0/153
#FF00CC
255/0/204
#FF00FF
255/0/255
#FF3300
255/51/0
#FF3333
255/51/51
#FF3366
255/51/102
#FF3399
255/51/153
#FF33CC
255/51/204
#FF33FF
255/51/255
#FF6600
255/102/0
#FF6633
255/102/51
#FF6666
255/102/102
#FF6699
255/102/153
#FF66CC
255/102/204
#FF66FF
255/102/255
#FF9900
255/153/0
#FF9933
255/153/51
#FF9966
255/153/102
#FF9999
255/153/153
#FF99CC
255/153/204
#FF99FF
255/153/255
#FFCC00
255/204/0
#FFCC33
255/204/51
#FFCC66
255/204/102
#FFCC99
255/204/153
#FFCCCC
255/204/204
#FFCCFF
255/204/255
#FFFF00
255/255/0
#FFFF33
255/255/51
#FFFF66
255/255/102
#FFFF99
255/255/153
#FFFFCC
255/255/204
#FFFFFF
255/255/255

19
Apr
2005

SUCHMASCHINE FUER 0190'ER NUMMERN

Die Regulierungsbehörde hilft
bei der Suche nach Betreibern
von 0190er-Nummern. Unter
www.regtp.de ist die Suchmaschi-
ne erreichbar (unter dem Punkt
„Nummernverwaltung", dann
„0190/0900 Premium-Rate-Dienste").
Damit sollen Verbraucher leichter
den Netzbetreiber zu einer
(0)190er-Rufnummer ausfindig
machen können und schneller in
der Lage sein, ihre Rechte nach
der Telekommunikations-
Kundenschutzverordnung (TKV)
durchzusetzen.

Nach Paragraph 13a TKV sind
die Netzbetreiber verpflichtet,
unverzüglich geeignete Maßnah-
men zur zukünftigen Unterbin-
dung von Rechtsverstößen bei
einer missbräuchlichen Nutzung
einer 0190er-Rufhumer zu er-
greifen. Da die Anbieter von ent-
sprechenden Diensten vielfach
den Netzbetreiber wechseln, war
die Suche nach dem aktuellen
Carrier bisher sehr aufwändig.
Laut RegTP kann der mit der
Suchmaschine aufgefundene
Netzbetreiber dem Verbraucher
auch auf Grund seiner direkten
Vertragsbeziehung den Endan-
bieter der Rufnummer nennen.

Ist über die Suchabfrage kein
Netzbetreiber zu ermitteln oder
liegen dem Verbraucher andere
Informationen vor, so kann er
sich laut RegTP per E-Mail an
auskunft0190@regtp.de wenden.
Eine vergleichbare Suchmaschi-
ne zu 0900er-Rufnummern
soll in Kürze folgen.

18
Apr
2005

VB & ASP Functions




'Rot13

Function dec1(dectxt,artieksi)
txtdone = ""
if artieksi = 1 then artieksi = +3 else artieksi = -3
For i = 1 To Len(dectxt)
a = Mid(dectxt, i, 1)
b = Asc(a) + artieksi
Do
If b > 255 Then b = b - 255
Loop Until b <= 255
Do
If b < 1 Then b = b + 255
Loop Until b >= 1
txtdone = txtdone & Chr(b)
Next
dec1 = txtdone
End Function



'Reverse

Function dec2(dectxt)
txtdone = ""
For i = 1 To Len(dectxt)
a = Mid(dectxt, i, 1)
txtdone = a & txtdone
Next
dec2 = txtdone
End Function



'XOR

Function dec3(dectxt,onarka)
txtdone = ""
For i = 1 To Len(dectxt)
a = Mid(dectxt, i, 1)
'if onarka = 0 then xorfakt = i else xorfakt = Len(dectxt)-i
xorfakt = 7
b = Asc(a) Xor xorfakt
Do
If b > 255 Then b = b - 255
Loop Until b <= 255
Do
If b < 1 Then b = b + 255
Loop Until b >= 1
txtdone = txtdone & Chr(b)
Next
dec3 = txtdone
End Function



'Inverse

Function dec4(dectxt)
txtdone = ""
For i = 1 To Len(dectxt)
a = Mid(dectxt, i, 1)
b = 255 - Asc(a)
Do
If b > 255 Then b = b - 255
Loop Until b <= 255
Do
If b < 1 Then b = b + 255
Loop Until b >= 1
txtdone = txtdone & Chr(b)
Next
dec4 = txtdone
End Function

17
Apr
2005

Backup Server unter Linux

Vorwort
Ein Backup-System zu installieren gleicht unter Linux fast einem Abenteuer. Wo soll ich anfangen? Welche Programme brauche ich? Gibt es nicht einfach eine Backup-Software? Wenn Sie noch kein Backup-System unter Linux aufgebaut haben werden Sie genau vor solchen Fragen stehen. Ich versuche Ihnen hier einen guten Einstieg zu geben um in kurzer Zeit mit dem Backup-System umgehen zu können. Dazu gehört sowohl die Sicherungsmethode, welches Sicherungsgerät Sie verwenden sollten und welche Software dafür geeignet ist. Zudem möchte ich noch sagen das diese Dokumentation wirklich nur den Serverbereich abdeckt.


Sicherungsmethode
Bevor überhaupt ein Backup durchgeführt wird, sollten Sie sich auf jeden Fall überlegen nach welcher Methode Sie sichern möchten. Das heißt genauer gesagt: Sind Ihre Daten sehr sensibel (hängt also Ihre Existenz davon ab) oder weniger, dann sollten Sie jeden Tag ein komplettes Backup mit wechselnden Bändern durchführen. Besitzen Sie weniger sensible Daten dann reicht auch ein komplettes Wochenbackup mit ständig wechselnden Bändern. Weiter unten finden Sie eine Empfehlung wie Sie evtl. Ihr Backup-System aufbauen könnten. Dies ist wie gesagt nur eine Empfehlung und kann selbstverständlich auch anders aufgebaut sein.

Datenart	Sicherungstage i. d. Woche	Wieviele Medien
hoch sensibel	Mo.- Fr.	5 insg. / 1 pro Sicherungstag
sensibel	Mo., Mi., Fr.	3 insg. / 1 pro Sicherungstag
normal	Fr.	2 insg. / 1 pro Sicherungstag in der Woche
fast egal	1x im Monat	2 insg. / 1 pro Sicherungstag im Monat

Auch wenn Sie fast auf alle Ihre Daten verzichten können, ist es sehr von Vorteil wenn Sie eine Sicherung durchführen. Es fehlen einem nämlich immer irgendwelche wichtigen Dateien nach einer Neuinstallation :-)) ! Alle Medien werden in der obigen Tabelle selbstverständlich immer in wechselndem Zyklus, also im Wochen- bzw. Monatstakt gewechselt und somit jede Woche bzw. jeden Monat überschrieben.
Die Sicherungen sollten nach Möglichkeit ohne Datenkompression durchgeführt werden. Sie ist zwar zuverlässig, kostet aber relativ viel Zeit. Wenn Sie also alle Daten auf dem Band unkomprimiert unterbringen können, sollten Sie das auch nutzen bis ihr Platz nicht mehr ausreicht.
Es gibt noch 2 Unterschiede: Ein Voll- und ein Teilbackup. Generell ist es immer besser ein Vollbackup zu machen. Das heißt alle Daten bei einer Sicherung komplett auf einem Band. Ein Teilbackup empfiehlt sich nur, wenn Sie mit dem Platz auf einem Band trotz Kompression nicht auskommen. Das heißt es wird pro Sicherung nur ein Teil Ihrer ganzen Daten gesichert. Diese Daten werden bei der nächsten Sicherung nicht überschrieben sondern aktualisiert. Die Backup-Software stellt anhand des Datums fest, ob die zu sichernde Datei neuer ist oder nicht. Ist sie neuer so wird sie gesichert und die alte Datei überschrieben.


Sicherungsgeräte
Wenn Sie ihre Sicherung zentral über einem Server laufen lassen wollen, dann gibt es generell eigentlich nur eine Wahl: SCSI Streamer. SCSI Streamer zeichnen sich durch ihre Stabilität besonders aus. Sie sind sehr flexibel in der Bedienung und erreichen eine sehr hohe Datentransferrate. Dafür sind sie aber auch etwas teuerer und benötigen zudem noch einen zusätzlichen SCSI Controller. IDE Streamer werden über einen IDE Kanal angesprochen und sind weniger flexibel als SCSI Streamer. Das zeichnet sich oft schon bei der Installation eines IDE Streamers aus, so daß oftmals der Kernel mit herstellerabhängigen Treiber gepatcht werden muss. IDE Streamer laufen relativ stabil aber haben eine relativ niedrige Übertragungsrate im Gegensatz zum SCSI Streamer. Ein weiterer Vorteil ist allerdings der geringe Preis.


Die Hardware
Mein Backupsystem sah wie folgt aus: Ein K5-100MHz (ja... darauf kriegt man ein Sicherungssystem ans laufen :-)) ), 32MB RAM eine 1GB HD und ein OnStream 30GB IDE Sicherungsgerät mit SuSE Linux 6.2 mit Samba 2.05a. Der Kernel ist derzeitig 2.2.14 und er wurde zusätzlich noch gepatcht, damit ich den Streamer ans laufen bekam. Ich bevorzuge persönlich lieber SCSI Geräte (siehe Sicherungsgeräte), da die Erfahrung doch gezeigt hat, daß sie um einiges stabiler laufen. Aus Kostengründen mußte ich mich aber durchringen dieses Laufwerk zu benutzen, welches allerdings unter Linux problemlos läuft.
Mein Ziel war es über meinem Linux Rechner verschiedene Shares von einem NT Server zu sichern, ohne die Daten auf dem Linux Rechner zwischenzulagern. Genau dieses wird Stück für Stück weiter unten beschrieben.


Backup-Software
Auf dem Linuxmarkt gibt es eine Vielzahl an Programmen. Ich habe einige Programme für mein Ziel gesucht, allerdings nicht das gefunden, was ich haben wollte. Somit mußte ich mir selber ein Backup-Script schreiben um genau das Ziel zu erreichen. Aber wir fangen erst mal mit den Grundlagen an. Um überhaupt sichern zu können ist das bewährte Programm tar der richtige Anfang. Dann sollten Sie noch wissen welche Gerätedateien angesprochen werden müssen. Bei SCSI-Streamern ist das im allgemeinen /dev/st0, bei mir war es /dev/ht0. Dann müssen Sie noch wissen wieviel Datenblöcke auf einmal geschrieben werden können. In meinen Fall waren dieses 32kB Blockgröße. Die 32kB ergeben sich aus 512byte/Sektor x 64. Dieses ist von Gerät zu Gerät ein wenig unterschiedlich. Sie können es generell von Ihrem Hersteller erfahren.
Sie müssen jetzt als root angemeldet sein. Um nun zum Beispiel all ihre Homeverzeichnisse über tar zu sichern, geben sie folgendes ein:

tar -cvv -b 64 -f /dev/st0 /home
Die Rücksicherung erfolgt fast genauso:
tar -xvv -b 64 -f /dev/st0 /home
Wenn Sie aber ein anderes Verzeichnis für die Rücksicherung benutzen möchten benutzen Sie folgenden Befehl:
tar -xvv --directory=/pfad -b 64 -f /dev/st0

Das ist die einfachste Methode. Nun kann es aber schon mal vorkommen, daß Sie mehrere Sicherungen auf ein Band nutzen möchten. Standardmäßig wird das Band nach jeder Sicherung zurückgespult und bei jeder neuen Sicherung überschrieben wird. Damit das Medium nicht nach jeder Sicherung zurückgespult wird, müssen Sie die "non rewinding" Gerätedatei für das Bandlaufwerk verwenden, wie z.B. /dev/nst0 oder wie bei meinem IDE Bandlaufwerk /dev/nht0. Zusätzlich benötigen Sie noch den mt Befehl. mt ist ein Programm, daß es ermöglicht ein Bandlaufwerk individueller zu steuern. Damit ist es zum Beispiel möglich ein Medium zu löschen, oder Daten an ein bestehendes Archiv anzuhängen. Gehen wir davon aus das Sie Daten an ein bestehendes Archiv anhängen möchten:

tar -cvv -b 64 -f /dev/nst0 /daten1
# Datensicherung erfolgt im "non rewinding" Modus.
mt -f /dev/nst0 rewind
# Das Medium wird jetzt zurückgespult und kann erst dann entnommen werden.
# Möchten Sie es nicht entnehmen, sondern sofort weitersichern so entfällt der Befehl.
mt -f /dev/nst0 eom
# Das Bandlaufwerk wird an das Ende der zuletzt beschriebenen Daten vorgespult.
tar -cvv -b 64 -f /dev/nst0 /daten2
# Die Sicherung beginnt wieder und die Daten werden jetzt angehängt.
mt -f /dev/nst0 rewind
# Das Medium wird jetzt zurückgespult und kann wieder entnommen werden. 

Hinweis: Sie können die TAPE Variabel mit dem Befehl export TAPE=/dev/nst0 setzen, damit Programme wie tar oder mt standardmäßig darauf zurückgreifen.
Jetzt haben Sie zum Beispiel alle Daten gesichert. Jetzt geht es an die Rücksicherung. Auch hier hilft uns das mt Programm weiter. Möchten Sie das erste Backup wieder herstellen geben Sie folgendes ein:

mt -f /dev/nst0 rewind
# Band wird zurückgespult
tar -xvv -b 64 -f /dev/nst0 /daten1
# Rücksicherung /daten1 erfolgt
mt -f /dev/nst0 rewind
mt -f /dev/nst0 fsf 1
# Das erste Archiv wird übersprungen
tar -xvv -b 64 -f /dev/nst0 /daten2
# Rücksicherung /daten2 erfolgt
mt -f /dev/nst0 rewind
# Medium kann entnommen werden

Ich liste Ihnen hier noch die wichtigsten Optionen zu dem mt Programm auf.

Option	Beschreibung
fsf	Das Medium springt zu dem ersten Block des nächsten Archivs
bsf	Das Medium springt zu dem ersten Block des vorherigen Archivs
eom	Das Medium wird zum Ende der zuletzt beschriebenen Daten gespult
rewind	Das Medium wird zurückgespult
status	Es werden Statusinformationen über das Medium angezeigt
retension	Das Band wird nachgespannt (vor- und zurückgespult)
erase	Das Medium wird gelöscht

Das sind die wichtigsten Optionen von mt. Weitere Optionen finden Sie in der entsprechenden Manpage.
Hinweis: Sie müssen sich unbedingt merken wieviele Archive sich auf dem Medium befinden, damit die fsf Angabe korrekt gesetzt wird.
Nun gehen wir noch ein Schritt weiter und Sie möchten ihren Linux Rechner als Backup-Server einsetzen und damit z.B. 2 NT Shares zu sichern. Dazu empfehle ich den Befehl smbclient um auf den NT Server zuzugreifen. Dieses sieht bei der Sicherung wie folgt aus:

mt -f /dev/nst0 rewind
smbclient \\\\server_nt\\share_1 -U name%password -Tcb 64 /dev/nht0
# Es wird auf dem Server server_nt zugegriffen, um die Share share_1 zu sichern
# Dazu muss ein existierender Benutzer auf dem NT Server lese Rechte auf die zu
# sichernden Daten haben. Durch die Option T wird tar benutzt um ein Backup
# zu erstellen (Parameter c). Die Blockgröße ist wieder auf 64 gesetzt.
mt -f /dev/nst0 rewind
mt -f /dev/nst0 eom
smbclient \\\\server_nt\\share_2 -U name%password -Tcb 64 /dev/nht0
# Share share_2 wird gesichert
mt -f /dev/nst0 rewind

Nun muss nur noch die Rücksicherung erfolgen:

mt -f /dev/nst0 rewind
smbclient \\\\server_nt\\share_1 -U name%password -Txb 64 /dev/nht0
# Es wird auf dem Server server_nt zugegriffen, um die Daten auf share_1
# zurückzusichern. Dazu muss ein existierender Benutzer auf dem NT Server
# schreib Rechte auf die Share haben. Durch den Parameter x (extract) erfolgt 
# die Rücksicherung.
mt -f /dev/nst0 rewind
mt -f /dev/nst0 fsf 1
smbclient \\\\server_nt\\share_2 -U name%password -Txb 64 /dev/nht0
# Die Daten werden auf share_2 zurückgesichert.
mt -f /dev/nst0 rewind

Nun werden Kenner wahrscheinlich einen Einwand haben. Es geht nämlich auch etwas einfacher mit dem Befehl smbmount. Es könnten ja einfach alle Shares von dem NT Server auf den Linux Rechner gemountet werden, um sie dann einfach in einem Archiv zu sichern. Prinzipiell ist das richtig, aber smbmount steckt ziemlich voll mit Bugs. Er trennt merkwürdigerweise nach einiger Zeit die Verbindung mit der Fehlermeldung "Broken Pipe". Das geschah bei mir während ich auf die zu sichernden Daten zugegriffen habe. Aus diesem Grund ist dieses Verfahren mit smbmount nicht zu empfehlen. Sollte jemand dazu noch nähere Informationen haben, so würde ich mich über ein Feedback freuen.
Hinweis: Wenn Sie in der Richtung einen Backup-Server aussetzen möchten empfehle ich Ihnen dringend eine Rücksicherung zu testen.


Fazit
Es ist zwar eine etwas umständliche Art zumal es auch andere Software gibt, wie z.B. afio und cpio. Allerdings hat man so ein absolut individuelles Backup-System das in einem Rutsch (wenn erwünscht) von einem NT Server, einem NFS Server und anderen Hosts sichern kann. Aus diesem Grund denke ich das sich die Arbeit lohnen wird. Weiterhin möchte ich noch sagen, daß ich keinerlei Verantwortung für den Inhalt bzw. Richtigkeit dieser Dokumentation übernehme.


Quellen
SuSE Linux Handbuch
smbclient Manpage
tar helpfile & Manpage
mt Manpage


Original Artikel
logo

vireas

Suche

 

Aktuelle Beiträge

C i s c o  V...
can get always the latest version of C i s c o  V...
vireas - 12. Jul, 11:07
WM5: Custom text on today...
You can set a small custom text message on the bottom...
vireas - 15. Mai, 21:44
WM5: Increase Performance...
Boost Windows Mobile 5 performance up to 20 percent [HKLM\System\Stor ageManager\FATFS]...
vireas - 15. Mai, 21:42
WM5: Speed Up your Pocket...
This tweak might help improving visual performance...
vireas - 15. Mai, 21:41
Windows Ordner
-Es ist nicht möglich unter Windows einen Ordner anzulegen...
vireas - 22. Feb, 13:37

Archiv

April 2025
Mo
Di
Mi
Do
Fr
Sa
So
 
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
 
 
 
 
 
 

Status

Online seit 7701 Tagen
Zuletzt aktualisiert: 12. Jul, 11:07
vireas-plug

KnowHow
KnowHow - Mobiles
Tools
Profil
Abmelden
Weblog abonnieren