Inhaltsverzeichnis
Installation Oracle 11g Single Instance auf Solaris x64 mit Oracle ASM Disk
Vorbereitungen
Download Software
unter http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-linx8664soft-100572.html Software laden
System
Überprüfen und System einstellen auch mit der Solaris Management Console
/usr/sadm/bin/smc &
Speicher > 1GB
/usr/sbin/prtconf | grep "Memory size"
Swap > einfach bis doppelter Hauptspeicher (je nach RAM)
/usr/sbin/swap -l
Was für eine Architektur
/bin/isainfo -kv
Genügend Plattenplatz tmp > 1GB
df -h /tmp
Genügend Platz für die Installation > 5GB, unter /opt
df -h
Netzwerk
Zielsystem Netzwerkstack überprüfen, Namensauflösung einreichten etc siehe auch ⇒ Netzwerkkarte einrichten
OS Software Stand
Version OS ermitteln
siehe auch den Abschnitt dba:10g_11g_upgrade_sparc_solaris#betriebssystem_voraussetzungen_ueberpruefen_und_bei_bedarf_optimieren_nachinstallieren
$uname -a SunOS solaris01 5.10 Generic_141445-09 i86pc i386 i86pc $cat /etc/release Solaris 10 10/09 s10x_u8wos_08a X86
Package Requirements prüfen
Benötigt wird:
- SUNWarc
- SUNWbtool
- SUNWhea
- SUNWlibC
- SUNWlibm
- SUNWlibms
- SUNWsprot
- SUNWtoo
- SUNWi1of
- SUNWi1cs (ISO8859-1)
- SUNWi15cs (ISO8859-15)
- SUNWxwfnt
- SUNWcsl
prüfen mit:
pkginfo -i SUNWarc SUNWbtool SUNWhea SUNWlibC SUNWlibms SUNWsprot SUNWtoo SUNWi1of SUNWi1cs SUNWi15cs SUNWxwfnt SUNWcsl
Falls ein Package fehlt, Solaris CD mounten und in Verzeichnis /cdrom/sol_10_1009_x86/Solaris_10/Product wechseln
und mit „pkgadd -d . <name_des_paketes>“ installieren.
pkgadd -d /cdrom/sol_10_1009_x86/Solaris_10/Product SUNWcsl
Patch Requirements
Für alle Datenbank Installationen
Evlt. veraltet!? * 120753-06: SunOS 5.10: Microtasking libraries (libmtsk) patch * 139574-03: SunOS 5.10
—
- 120754-06: SunOS 5.10_x86 libmtsk
- 119961-05: SunOS 5.10_x86: Assembler
- 119964-14: SunOS 5.10_x86 Shared library patch for C++_x86
- 137104-02
- 139575-03
- 139556-08
- 141445-09 (11.2.0.2)
- 141415-04
Überprüfen mit
# /usr/sbin/patchadd -p | grep patch_number(without version number) wie /usr/sbin/patchadd -p | grep 139574
Falls nicht gefunden über http://sunsolve.sun.com den Patch Laden (Sun Account UND Wartungsvertrag für Solaris notwendig!)
User anlegen
folgende Gruppen und User werden angelegt:
- oinstall - Oracle Inventory group
- dba - OSDBA group
- oracle - Oracle software owner
- oper - OSOPER group Optional
# gibt es die Datei oraInst.loc schon? more /var/opt/oracle/oraInst.loc inventory_loc=/u01/app/oracle/oraInventory inst_group=oinstall
falls nicht, noch keine Oracle Umgebung angelegt
User und Gruppen anlegen:
/usr/sbin/groupadd oinstall /usr/sbin/groupadd dba mkdir /export/home mkdir /export/home/oracle /usr/sbin/ useradd -g oinstall -G dba -d /export/home/oracle -m oracle passwd -r files oracle
Bash als default shell einrichten durch anpassen der /etc/passwd
oracle:x:100:100::/export/home/oracle:/usr/bin/bash
Umgebung für den Oracle User einrichten
Anmelden mit „su - oracle“ und„.profile“ setzen (siehe Arbeitsumgebung setzen und einrichten unter Windows und Linux) (An Solaris anpassen!)
„umask 022“ in .profile aufnehmen
Kernel Parameters on Solaris 10 einstellen
Parameter | Replaced by Resource Control | Recommended Value |
---|---|---|
noexec_user_stack | NA | 1 |
semsys:seminfo_semmni | project.max-sem-ids | 100 |
semsys:seminfo_semmns | NA | 1024 |
semsys:seminfo_semmsl | process.max-sem-nsems | 256 |
semsys:seminfo_semvmx | NA | 32767 |
shmsys:shminfo_shmmax | project.max-shm-memory | 4294967295 |
shmsys:shminfo_shmmni | project.max-shm-ids | 100 |
Global einstellen in der Datei /etc/system (Alle evlt. Paramter eingestellt, verhalten muss im Detail geprüft und optimiert werden!)
set noexec_user_stack=1 set semsys:seminfo_semmsl=256 set semsys:seminfo_semvmx=32767 set shmsys:shminfo_shmmax=4294967295 set shmsys:shminfo_shmseg=1024 set shmsys:shminfo_shmmin=1 set shmsys:shminfo_shmmni=1024 set semsys:seminfo_semaem=16384 set semsys:seminfo_semmns=16384 set semsys:seminfo_semmni=1024 set semsys:seminfo_semmap=1026 set semsys:seminfo_semmnu=2048 set semsys:seminfo_semume=256 set semsys:seminfo_semopm=200 set msgsys:msginfo_msgmap=1026 set msgsys:msginfo_msgmax=65535 set msgsys:msginfo_msgmnb=65535 set rlim_fd_cur=1024
System warm neu starten
Arbeiten mit Solaris 10 resource control facility project groups
Projekgruppen anzeigen
projects -l
Ist die Gruppe group.dba schon dabei? Wenn nicht ⇒
#anlegen und oracle User zuweisen projadd -U oracle -p 100 group.dba #Commentar projmod -c 'Oracle DB Umgebung' group.dba #Attribute setzen projmod -sK "project.max-shm-memory=(privileged,4G,deny)" group.dba projmod -sK "project.max-sem-ids=(privileged,100,deny)" group.dba projmod -sK "project.max-shm-ids=(privileged,100,deny)" group.dba projmod -sK "process.max-sem-nsems=(privileged,256,deny)" group.dba
den Oracle Anwender der projekt Gruppe zuweisen
usermod -K project=group.dba oracle id -p oracle uid=100(oracle) gid=100(oinstall) projid=100(group.dba)
Überprüfen als User Oracle
su - oracle id -p uid=100(oracle) gid=100(dba) projid=100(group.dba) prctl -n project.max-shm-memory -i process $$
Shell Limits
Shell Limit | Recommended Value | |
---|---|---|
TIME | -1 (Unlimited) | ulimit -t |
FILE | -1 (Unlimited) | ulimit -f |
DATA | Minium value: 1048576 | ulimit -d |
STACK | Minium value: 32768 | ulimit -s |
NOFILES | Minium value: 4096 | ulimit -n |
VMEMORY | Minium value: 4194304 | ulimit -v |
anzeigen mit:
ulimit -a
Kann über /etc/profile gesetzt werden:
ulimit -n 65536 ulimit -s 16384
Verzeichnisstruktur anlegen
mkdir -p /opt/oracle chown -R oracle:oinstall /opt/oracle chmod -R 775 /opt/oracle/
ASM Platten einrichten
Auf dem System werden 4 Platten für ASM eingerichet, ASM übernimmt Raid Level (1) und Stripping, internal Redundancy Konzept
- Platten „physikalisch“ am System einrichten (einbauen bzw. bei VM der Maschine zuweisen)
- Maschine starten
- Mit dem Befehlt Devices anlegen und binden
devfsadm
oder
touch /reconfigure reboot
- Mit „format“ Platten auflisten und devices merken
- Rechte auf die Platten setzen
chown oracle:dba /dev/rdsk/c2t<n> # 0-3 chmod 660 /dev/rdsk/c2t<n> # 0-3 ls -lhL /dev/rdsk/c2t<n> # 0-3
- Platten default partionieren und formatieren
#format format>disk 5 format>fdisk y format>volname asm5 format>label format>verify format>p partition>print partition>6 usr wm 1 19gb partition>print partition>label partition>quit format>verify format>quit
Installation starten
- Quellen prüfen und entpacken
- Installation ASM Software starten
- Installation DB Software Standard Edition ohne Starterdb
- Einrichten Listener und SQL*Net
- Einrichten der ASM Instance
- Einrichten einer Datenbank mit dem DBCA
Quellen prüfen und entpacken
Prüfen ob alles komplett ist (Größe und Checksum)
cksum solaris.x64_11gR2_grid.zip # (1,065,998,995 bytes) (cksum - 2022125792) 2022125792 cksum solaris.x64_11gR2_database_1of2.zip # (1,342,890,396 bytes) (cksum - 974026425) 974026425 cksum solaris.x64_11gR2_database_2of2.zip # (1,005,450,726 bytes) (cksum - 351090271) 351090271 unzip solaris.x64_11gR2_grid.zip unzip solaris.x64_11gR2_database_1of2.zip unzip solaris.x64_11gR2_database_2of2.zip
Installation ASM starten
Display auf Display Host setzen, xhost <IP Adresse> auf Display Host
export DISPLAY=localhost:0.0 cd grid ./runInstaller
InstallerScreen durchgehen „Nur Grid Infrastuktur Software installieren“ auswählen,
Installationsverzeichnis entgegen dem Installeranweisungen unter /opt/oracle/product/11.2.0/grid gesetzt
Root.script laufen lassen
Configurieren für Standalone:
/opt/oracle/product/11.2.0/grid/perl/bin/perl -I/opt/oracle/product/11.2.0/grid/perl/lib -I/opt/oracle/product/11.2.0/grid/crs/install /opt/oracle/product/11.2.0/grid/crs/install/roothas.pl
Installation Standard Edition Software ohne Starterdb
Display auf Display Host setzen, xhost <IP Adresse> auf Display Host
export DISPLAY=localhost:0.0 cd database ./runInstaller
Installer Screen durchlaufen, bei Auswahl der Standard Edition können keine weiteren Optionen gewählt werden
Auf eigenes Oracle Home achten!
(im Prinzip gleicher Ablauf wie Installationsscreens 11g ), root script ausführen.
Fehler beim Linken
Exception String: Error in invoking target 'irman ioracle' of makefile
Ursache: Swap Space zu klein ⇒ online vergrößeren und auf „wiederholen“ klicken (siehe swap_space_bei_bedarf_erweitern )
Einrichten Listener und SQL*Net im Oracle DB Home
Auf richtes Home achten (DB Home!)
Mit dem netmgr Assistent SQL*Net Listener.ora einrichten und listener mit lsnrctl starten
Einrichten der ASM Instance
mit dem asmca
# Oracle Home auf Grid Home einstellen asmca starten
Manuelles Anlegen einer ASM Instance
Erstellen der init.ora
INSTANCE_TYPE=ASM DB_UNIQUE_NAME=+ASM LARGE_POOL_SIZE=16M ASM_DISKGROUPS='DB_DATA' ASM_DISKSTRING =’/dev/rdsk/c2t*’ diagnostic_dest='/opt/oracle'
starten der instance
export ORACLE_SID=+ASM sqlplus / as sysdba SQL> startup ORA-01078: failure in processing system parameters ORA-29701: unable to connect to Cluster Synchronization Service # Cluster Dienst starten! # im Grid Home crsctl start resource -all # Nächster Startversuch sqlplus / as sysdba SQL> startup ORA-01031: insufficient privileges ## !!!! 11G!!!!! SYSASM !!!! sqlplus / as sysasm SQL> startup ORA-15032: not all alterations performed ORA-15017: diskgroup "DB_DATA" cannot be mounted ORA-15063: ASM discovered an insufficient number of disks for diskgroup "DB_DATA" SQL> SELECT group_number, disk_number, mount_status, header_status, state, path FROM v$asm_disk; no rows selected ### Darauf auchten das die /dev/rdsk/ Devices die Recht gesetzt sind! #DISKGROUP anlegen SQL>CREATE DISKGROUP DB_DATA_GRP NORMAL REDUNDANCY FAILGROUP failure_group_1 DISK '/dev/rdsk/c2t1d0s6' NAME diska1, '/dev/rdsk/c2t2d0s6' NAME diska2, FAILGROUP failure_group_2 DISK '/dev/rdsk/c2t3d0s6' NAME diskb1, '/dev/rdsk/c2t4d0s6' NAME diskb2; ERROR at line 3: ORA-15106: missing or invalid operating system disk locator string #nächster Versuch, OHNE KOMMA! und erstmal nur einen Disk... SQL> create DISKGROUP DB_DATA_GRP normal redundancy failgroup failure_group_1 DISK '/dev/rdsk/c2t1d0s6' failgroup failure_group_2 DISK '/dev/rdsk/c2t3d0s6' ; # Weitere dann hinzugefügt SQL> alter diskgroup db_data_GRP add failgroup failure_group_1 DISK '/dev/rdsk/c2t2d0s6'; SQL> alter diskgroup db_data_GRP add failgroup failure_group_2 DISK '/dev/rdsk/c2t4d0s6'; #geht! SQL> select name,total_mb,USABLE_FILE_MB,FREE_MB from v$asm_diskgroup; NAME TOTAL_MB USABLE_FILE_MB FREE_MB ------------------------------ ---------- -------------- ---------- DB_DATA_GRP 78825 39346 78719
Demnächst mehr ….
Probleme:
SQL> drop diskgroup db_data_grp; drop diskgroup db_data_grp * ERROR at line 1: ORA-15039: diskgroup not dropped ORA-29786: SIHA attribute GET failed with error [Attribute 'SPFILE' sts[200] lsts[0]] SQL> create spfile from memory; create spfile from memory * ERROR at line 1: ORA-29786: SIHA attribute GET failed with error [Attribute 'SPFILE' sts[200] lsts[0]] Ursache: CRS Registry muss Verweis auf Listener und ASM Instance enthalten! crsctl stat res | grep NAME\= |grep asm #srvctl add listener -l LISTENER -s -o /opt/oracle/product/11.2.0/dbhome_1 #srvctl add asm -l LISTENER
Doppelter Eintrag im SPFILE für die ASM Diskgroups aus Wandlung init.ora nach Spfile und nachträgliches Hinzufügen einer Default Diskgroup.
... +ASM.asm_diskgroups='DB_DATA','DB_DATA_GRP'#Manual Mount *.asm_diskgroups='DB_DATA_GRP' ... Lösung: alter system reset asm_diskgroups scope=spfile sid='+ASM'; alter system reset asm_diskgroups scope=spfile;
Quellen
Oracle Doku:
Solaris:
ORACLE ASM