====== 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
* http://download.oracle.com/otn/solaris/oracle11g/R2/solaris.x64_11gR2_database_1of2.zip
* http://download.oracle.com/otn/solaris/oracle11g/R2/solaris.x64_11gR2_database_2of2.zip
* http://download.oracle.com/otn/solaris/oracle11g/R2/solaris.x64_11gR2_grid.zip
=== 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 => [[solaris:netzwerkkarte_einrichten|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|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 . " 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 [[dba:arbeits_umgebung#linux_-_arbeitsumgebung_setzen_und_einrichten|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 # 0-3
chmod 660 /dev/rdsk/c2t # 0-3
ls -lhL /dev/rdsk/c2t # 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 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 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 [[dba:install_ubuntu_debian_10#screenshots_des_ablaufs_des_installers|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 [[solaris:netzwerkkarte_einrichten#swap_space_bei_bedarf_erweitern|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
siehe => http://it.toolbox.com/blogs/surachart/ora29786-siha-attribute-get-failed-with-error-attribute-spfile-sts200-lsts0-41226
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:\\
* http://download.oracle.com/docs/cd/E11882_01/install.112/e10863/toc.htm
Solaris:\\
* http://docs.sun.com/app/docs/doc/817-1592/rmtaskproj.task-10?l=en&a=view
* http://publib.boulder.ibm.com/infocenter/weahelp/5.1/index.jsp?topic=/com.ibm.websphere.wea.doc/prep_solaris.html
* http://www.c0t0d0s0.org/archives/4205-Less-known-Solaris-Features-Resource-Management-Part-2-How-to-work-with-Tasks-and-Projects.html
ORACLE ASM
* http://www.oracle-base.com/articles/10g/AutomaticStorageManagement10g.php
* http://www.idevelopment.info/data/Oracle/DBA_tips/Automatic_Storage_Management/ASM_10.shtml
* http://blogs.sun.com/pomah/entry/configuration_example_of_oracle_asm
* http://www.oracledba.org/10g/asm/asm_install.html
* http://indiandba.blogspot.com/2009/04/implement-asm-instance-on-solaris.html