Direkt zum Inhalt | Direkt zur Navigation

Benutzerspezifische Werkzeuge

This is SunRain Plone Theme

Sektionen

Sie sind hier: Startseite / DB / Oracle / SUN Oracle grid ASM 11G installation

SUN Oracle grid ASM 11G installation

SUN Oracle grid ASM 11G installation Oracle grid Installation auf Solaris 10

Oracle Database grid ASM 11g Release 2 Installation auf Solaris 10 (x86)

Für eine saubere Trennung von den Aufgaben des System- bzw. Storage-Administrators auf der einen Seite und der Datenbank Administratoren auf der anderen Seite, ist es notwendig unterschiedlicher Benutzer und Benutzergruppen anzulegen.

Quellen:
http://www.oracle.com/webfolder/technetwork/de/community/dbadmin/tipps/gridinfrastruktur_sod/index.html
http://www.idevelopment.info/data/Oracle/DBA_tips/Automatic_Storage_Management/ASM_10.shtml
http://www.pipperr.de/dokuwiki/doku.php?id=dba:install_solaris_10_x86_11g

Gruppen und Gruppen-IDs (GID)

BereichGruppeZugeordnete BenutzerBedeutung
Software Installation oinstall grid
oracle
Alle Benutzer, die Software installieren, müssen dieser Gruppe als Primärgruppe angehören. Dies ist insbesondere für das gemeinsam verwendete Oracle Inventory notwendig.

Grid Administration

asmadmin

grid Benutzer, die zur dieser ASM Admin Gruppe gehören, melden sich als SYSASM an der ASM Instanz an und dürfen somit Diskgruppen verwalten. Dies ist auch die Gruppe, der die ASM Platten/Devices zugeordnet sein müssen

ASM DBA

asmdba

grid
oracle

ASM DBA Benutzer melden sich als SYSDBA an der ASM Instanz an. Dies ist notwendig, damit die Datenbank Instanz (die sich ebenfalls als SYSDBA anmeldet) Datenfiles in ASM anlegen kann.
Im Gegensatz zum DBA bei einer Datenbank können diese Benutzer ASM nicht stoppen oder starten. Ebenfalls können keine Diskgruppen verwaltet werden. SYSASM und SYSDBA Gruppen werden in das oracle Executable der Grid Infrastruktur gelinkt

ASM Operator asmoper grid Die ASM Operators sind Benutzer, die ASM stoppen und starten dürfen. Diese Gruppe ist nur notwendig, falls man einigen DBAs auch das Stoppen und Starten von ASM erlauben möchte. Liegen allerdings OCR und Voting Disks in der ASM, so kann ASM nur vom Root User durch das Stoppen des Clusters angehalten werden.
DB Admin dba oracle Benutzer der DBA Gruppe melden sich als SYSDBA an der jeweiligen Oracle Datenbank an.
ASM Group 01

Zuordnung der Benutzer und User-IDs (UID) zu den Gruppen

Benutzer

Gruppen

Bereich

grid

asmadmin,asmdba,oinstall

Installation, Verwaltung der Grid Infrastruktur und ASM und Anlegen von Diskgruppen.

oracle

dba,asmdba,oinstall

Installation und Verwaltung Datenbank

Create User / Group

Erstellen neuer Gruppen und Benutzer.

groupadd asmadmin
groupadd asmoper
groupadd asmdba
groupadd oinstall

# er wird davon ausgegangen, daß der User oracle bereits vorhanden ist
#useradd -g oinstall -G dba -d /home/oracle -s /usr/bin/bash -u 1001 oracle
usermod -G dba,asmdba oracle

useradd -G asmadmin,asmdba,asmoper -g oinstall -d /home/grid -s /usr/bin/bash -u 1002 grid
mkdir /home/grid
chown grid:asmadmin /home/grid
passwd -r files grid

test -f ~grid/.profile && cp ~grid/.profile ~grid/.profile.bak

echo "HISTSIZE=3000
export HISTSIZE
PATH=$PATH:/usr/openwin/bin
export PATH
unset LANG;

export sitename=`hostname`
PS1='[ \${LOGNAME}@\${sitename} SID=\${ORACLE_SID}: \$PWD ]
> ';export PS1
PS2='Befehl komplettieren! >: '

umask 022" > ~grid/.profile

Eine Platte erzeugen, für die Installation von Oracle Grid Infrastruktur

zpool create -m /applications/grid appl_grid c1t4d0
chown -R grid:asmdba /applications/grid
zfs list

NAME          USED  AVAIL  REFER  MOUNTPOINT
appl_grid     104K  2.94G    31K  /applications/grid

oder erstellen Sie ein Verzeichnisse, in dem die Oracle-Software installiert werden soll. Die Größe muss größer als 4GB sein.

mkdir -p /applications/grid
chown -R grid:asmdba /applications/grid

Download Software

Download Sie die folgende Software.

Set Kernel Parameters

In äteren Versionen von Solaris wurden Kernelparameter durch Hinzufügen von Einträgen in der "/etc/system" gesetzt. Ein Neustart der Maschine war notwendig.

set semsys:seminfo_semmni=100
set semsys:seminfo_semmsl=256
set shmsys:shminfo_shmmax=4294967295
set shmsys:shminfo_shmmni=100

Der Oracle Installer erkennt diese Kernel Parameter, die mit dieser Methode gesetzt wurden, aber das ist eine veraltet Methode.
Die Parameter werden mit dem System Resource Controller (SRC) gesetzt.

Als Benutzer root den folgenden Befehl ausführen:

projadd oracle

Fügen Sie die folgende Zeile in die Datei "/etc/user_attr".

oracle::::project=oracle

Wenn Sie eine Standard-Installation durchgeführt haben, ist es wahrscheinlich, dass nur der Kernel-Parameter "max-shm-memory" geändert werden muss.
Den aktuellen Wert erhalten Sie mit folgenden Befehl. Stellen Sie sicher, das mindestens eine Sitzung ein Oracle-Benutzer angemeldet ist, nachdem die Änderungen durchgeführt wurden.

prctl -n project.max-shm-memory -i project oracle

project: 100: oracle
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
project.max-shm-memory
privileged 254MB - deny -
system 16.0EB max deny -

So setzen Sie diesen Wert, stellen Sie sicher, das mindestens eine Sitzung mit einem Oracle-Benutzer angemeldet ist und führen Sie dann als Root-Benutzer folgenden Befehle aus:

prctl -n project.max-shm-memory -v 4gb -r -i project oracle
projmod -s -K "project.max-shm-memory=(priv,4gb,deny)" oracle

Das erste Command setzt dynamisch den Wert, während der zweite die Änderungen in die Datei "/etc/project"schreibt. Damit steht der Wert nach einem Neustarts wieder zu Verfügung

cat /etc/project

system:0::::
user.root:1::::
noproject:2::::
default:3::::
group.staff:10::::
oracle:100::::project.max-shm-memory=(priv,4294967296,deny)

Die Oracle-Installer erkennt die Kernel-Parameter mit dem SRC nicht, aber wenn man die Warnungen ignorieret, dann kann die Installation erfolgreich abgeschlossen werden.

Unpack Files

1. Die Dateien liegen im Zip-Format vor . Es wird ein UnZipper benötigt.
2. Herunterladen und entpacken Sie die Datei in dem gleiche Verzeichnis, wo bereits die Oracle Database Files liegen

unzip solaris.x64_11gR2_grid.zip

Storage Berechtigungen und Konfiguration

vorbereitung

Anzeigen der  Festplatten:

iostat -En

c2t0d0           Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: VMware   Product: Virtual disk     Revision: 1.0  Serial No:
Size: 3.22GB <3221224960 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 2 Predictive Failure Analysis: 0

Formatieren der Platte:
Zum Erstellen oder identifizieren der Festplatten-Slices (Partitionen), die Sie in der Automatic Storage Management disk Gruppe verwenden möchten:

format

AVAILABLE DISK SELECTIONS:
0. c2t0d0 <DEFAULT cyl 1533 alt 2 hd 128 sec 32>
/pci@0,0/pci15ad,790@11/pci15ad,1976@2/sd@0,0
Specify disk (enter its number): 0

Dieser Befehl zeigt Ihnen, welche Festplatte an diesem System angeschlossen sind
Geben Sie die Nummer der Festplatte, die Sie verwenden möchten.

Verwenden Sie den Befehl "fdisk" eine Solaris-Partition auf der Festplatte anzulegen, wenn diese nicht bereits vorhanden ist.

format> fdisk

No fdisk table exists. The default partition for the disk is:

a 100% "SOLARIS System" partition

Type "y" to accept the default partition,  otherwise type "n" to edit the
partition table.

Mit "y" bestätigen.

Für ASM sollten Sie bei dem Zylinder 1 und nicht mit Zylinder 0 den neuen Slice beginnen
Die Festplatte zuerst "label"

format> label

Geben dann Sie die Option  "Partition" ein

partition

Für einen Überblick können Sie

partition> print

eingeben

Current partition table (original):
Total disk cylinders available: 1532 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders        Size            Blocks
0 unassigned    wm       0               0         (0/0/0)          0
1 unassigned    wm       0               0         (0/0/0)          0
2     backup    wu       0 - 1531        2.99GB    (1532/0/0) 6275072
3 unassigned    wm       0               0         (0/0/0)          0
4 unassigned    wm       0               0         (0/0/0)          0
5 unassigned    wm       0               0         (0/0/0)          0
6 unassigned    wm       0               0         (0/0/0)          0
7 unassigned    wm       0               0         (0/0/0)          0
8       boot    wu       0 -    0        2.00MB    (1/0/0)       4096
9 unassigned    wm       0               0         (0/0/0)          0

Wählen Sie den zu erstellende Slice

partition> 6

Part      Tag    Flag     Cylinders        Size            Blocks
6 unassigned    wm       0               0         (0/0/0)          0

Enter partition id tag[unassigned]:
Enter partition permission flags[wm]:
Enter new starting cyl[0]: 1
Enter partition size[0b, 0c, 1e, 0.00mb, 0.00gb]: 1531c


6 unassigned    wm       1 - 1531        2.99GB    (1531/0/0) 6270976

Die Änderungen mit "label" speichern:

partition> label

mit "y" und "quit" das Format Programm verlassen.

Die Berechtigung für diese Slice setzten:

chown grid:asmadmin /dev/rdsk/c2t0d0s6
chmod 660 /dev/rdsk/c2t0d0s6

ORA-15081 Achtung: Auf meiner Testmaschine konnte ich die Databank mit dem User Oracle nicht starteten, wenn das Datafile im ASM liegt.
Ich muste die Berechtigungen wie folgt setzten:

chown grid:oinstall /dev/rdsk/c2t0d0s6
chmod 660 /dev/rdsk/c2t0d0s6

Damit hatte Oracle voll schreibrechte auf das Device, was aber dem Konzept wiederspricht. Ich gehe davon aus, das die Datenbank direkt in die ASM Platten schreibt und nicht über die ASM Instance.

Feststellen, ob das Oracle Central Inventory directory und die Oracle Inventory-Gruppe existiert

Wenn Sie die Oracle-Software zum ersten Mal installieren, dann erstellt der OUI die oraInst.loc Datei. Diese Datei enthät den Namen der Installationsgruppe und den Pfad zum Oracle Central Inventory Verzeichnis.
Ein
oraInst.loc Datei hat folgenden Inhalt :

# more /var/opt/oracle/oraInst.loc

inventory_loc=/applications/oracle/oraInventory
inst_group=oinstall

Installation

Melden Sie sich als grid Benutzer an 

echo "# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=\$TMP; export TMPDIR

# Select the appropriate ORACLE_BASE
ORACLE_BASE=/applications/grid
export ORACLE_BASE
ORACLE_HOME=\$ORACLE_BASE/11.2.0.1
export ORACLE_HOME
PATH=\$ORACLE_HOME/bin:\$PATH
export PATH " >> ~grid/.profile

Wenn Sie als Oracle-Benutzer mit X-Emulation remote arbeiten, dann setzen Sie die DISPLAY-Umgebungsvariable.

DISPLAY=<machine-name>:0.0
export DISPLAY

Starten Sie den Oracle Universal Installer (OUI), indem Sie den folgenden Befehl in dem ausgepackten Installations-Verzeichnis aufrufen:

./runInstaller

  1. Type der Datenbank Installation
    Wir wählen die "Grid Infrastruture Software only" aus
    step_01.png
  2. Auswahl der Sprache
    step_02.png
  3. Gruppe für die OS Authentication festlegen
    step_03.png
  4. Festlegen der Installations Directorys
    step_6.png
  5. Überprüfung Prerequisits (Voraussetungen)
    step_05.png
  6. Installationszusammenfassung
    step_06.png
  7. Installationsvorgang
    step_06.png
    Ausführen "post Install script" als root
    step_07.png
  8. ende
    step_08.png

Für weitere Informationen siehe

Einrichten der ASM Instance

Einrichten mit dem asmca

# Oracle Home auf Grid Home einstellen
grid> asmca

Manuelles Anlegen einer ASM Instance

Erstellen der init.ora

echo "############################################
# Automatic Storage Management
###########################################
INSTANCE_TYPE=ASM
DB_UNIQUE_NAME=+ASM
LARGE_POOL_SIZE=16M
ASM_DISKGROUPS='DB_DATA'
ASM_DISKSTRING ='/dev/rdsk/c2t*'
diagnostic_dest='/ORACLE/+ASM/trace'" >/tmp/init+ASM.ora

export ORACLE_SID=+ASM
sqlplus / as sysasm
SQL> startup pfile='/tmp/init+ASM.ora';

ASM instance started
Total System Global Area  283930624 bytes
Fixed Size                  2210328 bytes
Variable Size             256554472 bytes
ASM Cache                  25165824 bytes
ORA-15032: not all alterations performed
ORA-15017: diskgroup "DB_DATA" cannot be mounted

SQL> create spfile from pfile='/tmp/init+ASM.ora';
SQL>  shutdown

SQL>  startup

ORA-29701: unable to connect to Cluster Synchronization Service

Cluster Dienst wurde nicht gestartet

grid> crsctl start resource -all

CRS-2672: Attempting to start 'ora.LISTENER.lsnr' on 'ora_01'
CRS-2672: Attempting to start 'ora.cssd' on 'ora_01'
CRS-2679: Attempting to clean 'ora.diskmon' on 'ora_01'
CRS-2681: Clean of 'ora.diskmon' on 'ora_01' succeeded
CRS-2672: Attempting to start 'ora.diskmon' on 'ora_01'
CRS-2676: Start of 'ora.LISTENER.lsnr' on 'ora_01' succeeded
CRS-2676: Start of 'ora.diskmon' on 'ora_01' succeeded
CRS-2676: Start of 'ora.cssd' on 'ora_01' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'ora_01'
CRS-2676: Start of 'ora.asm' on 'ora_01' succeeded

ORA-29786: SIHA attribute GET failed with error [Attribute 'SPFILE' sts[200]

CRS Registry muss Verweis auf Listener und ASM Instance enthalten

grid> crsctl stat res | grep NAME\= |grep asm

Wenn kein Eintrag vorhanden ist:

grid> srvctl add listener -l LISTENER -s -o $ORACLE_HOME
grid> srvctl add asm -l LISTENER

Einrichten Oracle Cluster Synchronization Services (CSS)

Der Automatic Storage Management (ASM) erfordert den Einsatz von dem Oracle Cluster Synchronization Services (CSS). Bevor ASM verwendet werden kann, muss der CSS konfiguriert werden, um die Synchronisation zwischen der ASM-Instanz und den Datenbank-Instanzen zu ermöglichen.

In einer Nicht-RAC-Umgebung, wird der CSS-Service als "single-node version" gestartet.
Für eine Oracle Real Application Clusters (RAC)-Installationen wird der CSS-Service mit dem Oracle Cluster Ready Services (CRS) in einem separaten Oracle Home-Verzeichnis (CRS Home-Verzeichnis) installiert.
In einer "
Single-Node-Installationen" wird der CSS-Service mit dem Oracle Home der ASM Instance gestartet.

Da der CSS ausgeführt werden muss,

Bevor die ASM-Instanz oder ein Datenbank-Instanz gestartet wird, muss der CSS gestartet sein.
Der
Oracle Universal Installer schreibt die Aufruf der CSS-Konfigurations in die root.sh, die nach der Installation als root ausgeführt wird.

Running Oracle 11g root.sh script...

The following environment variables are set as:
ORACLE_OWNER= grid
ORACLE_HOME=  /applications/grid/11.2.0.1

Enter the full pathname of the local bin directory: [/usr/local/bin]:
The file "dbhome" already exists in /usr/local/bin.  Overwrite it? (y/n) [n]: y
Copying dbhome to /usr/local/bin ...
The file "oraenv" already exists in /usr/local/bin.  Overwrite it? (y/n) [n]: y
Copying oraenv to /usr/local/bin ...
The file "coraenv" already exists in /usr/local/bin.  Overwrite it? (y/n) [n]: y
Copying coraenv to /usr/local/bin ...

Entries will be added to the /var/opt/oracle/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
To configure Grid Infrastructure for a Stand-Alone Server run the following command as the root user:
/applications/grid/11.2.0.1/perl/bin/perl -I/applications/grid/11.2.0.1/perl/lib -I/applications/grid/11.2.0.1/crs/install /applications/grid/11.2.0.1/crs/install/roothas.pl


To configure Grid Infrastructure for a Cluster perform the following steps:
1. Provide values for Grid Infrastructure configuration parameters in the file - /applications/grid/11.2.0.1/crs/install/crsconfig_params. For details on how to do this, see the installation guide.
2. Run the following command as the root user:
/applications/grid/11.2.0.1/perl/bin/perl -I/applications/grid/11.2.0.1/perl/lib -I/applications/grid/11.2.0.1/crs/install /applications/grid/11.2.0.1/crs/install/rootcrs.pl
To update inventory properties for Grid Infrastructure, perform the following
steps. If a pre-11.2 home is already configured, execute the following:
11.2_Home/oui/bin/runInstaller -updateNodeList -silent -local CRS=false ORACLE_HOME=pre-11.2_Home
Always execute the following to register the current home:
11.2_Home/oui/bin/runInstaller -updateNodeList -silent -local CRS=true ORACLE_HOME=11.2_Home.
If either home is shared, provide the additional argument -cfs.

Diskgroups verwalten

Eine Diskgroup mit externen Spiegel anlegen.

SQL> create DISKGROUP DB_DATA_GRP EXTERNAL REDUNDANCY DISK '/dev/rdsk/c2t0d0s6';

Eine Diskgroup mit einem Spiegel

SQL> create DISKGROUP DB_DATA_GRP01
normal REDUNDANCY
FAILGROUP data_fg1 DISK '/dev/rdsk/c2t3d0s6' name data_fg1_disk3
FAILGROUP data_fg2 DISK '/dev/rdsk/c2t4d0s6' name data_fg1_disk4;

Eine Diskgroup mit einem Spiegel und mehreren Disk

SQL> create DISKGROUP DB_DATA_GRP02
normal REDUNDANCY
FAILGROUP data_fg21 DISK '/dev/rdsk/c3t0d0s6' name c3t0d0s6,'/dev/rdsk/c3t1d0s6'name c3t1d0s6,'/dev/rdsk/c3t2d0s6' name c3t2d0s6,'/dev/rdsk/c3t3d0s6' name c3t3d0s6
FAILGROUP data_fg22 DISK '/dev/rdsk/c4t0d0s6' name c4t0d0s6,'/dev/rdsk/c4t1d0s6'name c4t1d0s6,'/dev/rdsk/c4t2d0s6' name c4t2d0s6,'/dev/rdsk/c4t3d0s6' name c4t3d0s6;

Eine Diskgroup mit neuen Platten erweitern

SQL> alter DISKGROUP  DB_DATA_GRP02 add FAILGROUP data_fg22 DISK '/dev/rdsk/c4t4d0s6' name c4t4d0s6,'/dev/rdsk/c4t5d0s6' name c4t5d0s6,'/dev/rdsk/c4t6d0s6' name c4t6d0s6;
alter DISKGROUP  DB_DATA_GRP02 add FAILGROUP data_fg21 DISK '/dev/rdsk/c3t4d0s6' name c3t4d0s6,'/dev/rdsk/c3t5d0s6' name c3t5d0s6,'/dev/rdsk/c3t6d0s6' name c3t6d0s6;

Platten aus einer Diskgroup entfernen

SQL> alter DISKGROUP DB_DATA_GRP02 drop disk C4T4D0S6,C4T5D0S6,C4T6D0S6;

Status der Diskgoup Operation

SQL> select group_number,operation,state, est_minutes from v$asm_operation;

GROUP_NUMBER OPERA STAT EST_MINUTES
------------ ----- ---- -----------
2 REBAL RUN            0

Diskgoup Informationen

SQL> select group_number,name,type,total_mb,free_mb from v$asm_diskgroup;

GROUP_NUMBER NAME                           TYPE     TOTAL_MB    FREE_MB
------------ ------------------------------ ------ ---------- ----------
0 DB_DATA_GRP                              0          0

Diskgoup mount / umounten

SQL> ALTER DISKGROUP DB_DATA_GRP MOUNT;

Diskgoup löschen

SQL> drop DISKGROUP DB_DATA_GRP;

Diskgoup Übersicht Platten und Diskgroup

SQL> set pagesize 200 linesize 400 long 1000
col DISK_PATH  format a30

select  dg.name as dg_name,
d.name as disk_name,
d.path as disk_path,
d.failgroup as disk_failgroup,
d.FREE_MB as free,
d.mount_status as status
from v$asm_disk d, v$asm_diskgroup dg
where d.group_number = dg.group_number(+);

oder ein änliches Ergebnis mit asmcmd

ASMCMD> lsdsk -p -k --discovery

DG_NAME                        DISK_NAME                      DISK_PATH                      DISK_FAILGROUP                 STATUS
------------------------------ ------------------------------ ------------------------------ ------------------------------ -------
DB_DATA                                                       /dev/rdsk/c2t0d0s6                                            CLOSED
DB_DATA                                                       /dev/rdsk/c2t1d0s6                                            CLOSED
DB_DATA_GRP                    DB_DATA_GRP_0000               /dev/rdsk/c2t2d0s6             DB_DATA_GRP_0000               CACHED

mount der Diskgroup

SQL> ALTER DISKGROUP DB_DATA_GRP01 MOUNT;

Änderung vom asm_diskstring

SQL> alter system set asm_diskstring='/dev/rdsk/c2t*d*s6','/dev/rdsk/c3t*d*s6','/dev/rdsk/c4t*d*s6' scope=both

Auslessen asm_diskstring

SQL> show parameter asm_diskstring;

Platten auflisten

SQL> set pagesize 200 linesize 400 long 1000
col disk_path format a30

select PATH as disk_path,MOUNT_STATUS as status,TOTAL_MB as Total_Disk_Space from v$asm_disk order by PATH;

Dump ASM disk header

Wenn Sie den ASM Disk-Header ausgeben möchten, können Sie das  Oracle-interne Tool "kfed" (Kernel Datei-Editor) verwenden, um Informationen über Ihre Festplatte, diskgroup etc. zu erhalten, auch wenn die Festplatte offline ist.

Es ist standardmäßig mit einer Oracle 11g Installation vorhanden

Wenn Sie Informationen über den gespeicherten ASM Disk-Header lesen möchten, können Sie es wie folgt Befehl verwenden:

kfed read /devASM3 dsk1.dump

Nun haben Sie in der Datei dsk1.dump den ASM-Disk-Header . Diese Datei kann einfach mit einem Texteditor gelesen werden

Wenn Sie den "diskgroup Namen" die der Platte angehört umbenennen möchten, können Sie den dumpfile benutzen und mit den "Merge"-Befehl von KFED die Änderungen wieder zurück schreiben.

kfed merge /dev/ASM3 text=dsk1.dump

Achtung, Es scheint so, das der "diskgroup Name" oder "disk Name "mit einer festen Länge kodiert wird. Wenn Sie den Namen zu ändern, und dieser basiert auf einer Basis von 4 Byte Wort, benennen Sie sie in ein 4 Byte Wort um.

Löschen ASM Disk Header

ls /dev/Ora*|while read d;do dd if=/dev/zero of=$d bs=4096 count=5000 ;done


Artikelaktionen

Kommentieren

Sie können einen Kommentar abgeben, indem Sie das untenstehende Formular ausfüllen. Nur Text. Web- und E-Mailadressen werden in anklickbare Links umgewandelt. Kommentare werden moderiert.

Enter the word