====== 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