'Linux'에 해당되는 글 14건

  1. 2009.06.17 Oracle 9i Realse2 RAC for linux 구성
  2. 2009.06.16 Installing Oracle Database 10g Release 1 and 2 (32-bit/64-bit) on Linux
  3. 2009.06.06 SYSLINUX - bootloaders for FAT filesystems
2009. 6. 17. 10:47

Oracle 9i Realse2 RAC for linux 구성

728x90

---------------------------------------------------------------------------
작성자 : 문태준 (taejun at tunelinux.pe.kr http://tunelinux.pe.kr http://database.sarang.net)
작성일 : 2003. 1. 28(화)
---------------------------------------------------------------------------

ㅇ 문서소개
본 문서는 IBM 인텔기반 PC서버인 xSeries X440 서버에 운영체제를 리눅스로 하여 Oracle RAC release 2(9.2.0)를 구현하는 것에 대하여 개략적인 설명을 담았다. 이미 리눅스(레드햇)에 대해서는 익숙하다는 전제하에 설명을 하였으며 커널 컴파일, 커널 모듈 컴파일, LVM, raw device, watchdog 에 대한 이해를 필요로 한다. 또한 오라클 설치에 대한 부분은 별도의 문서를 참고하기 바라며 해당 자료도 이 문서에서 소개를 하고 있다.

ㅇ 환경
Hardware : IBM xSeries X440, X335 (Intel 기반 PC 서버)
운영체제 : Redhat Advanced Server 2.1(AS 2.1. 상용으로 인터넷에서 다운받을 수 없으며 구입해야함), Redhat 7.3(RH 7.3)
X440 사이트 자료
http://commerce-28.www.ibm.com/cgi-bin/ncommerce/CategoryDisplay?cntrfnbr=1&cgmenbr=1&cntry=410&lang=ko_KR&cgrfnbr=2249907

ㅇ 하드웨어 작업
X440에 AS 2.1을 설치하는 경우 아래 자료를 먼저 참고한다.
IBM eServer xSeries 440 - Installing Red Hat Advanced Server Linux v2.1
http://www-1.ibm.com/cgi-bin/pc/support/supportR5lite/pagegen/qtechinfo/en_US/MIGR-43851.html?lang=pt_BR&page=brand&brand=IBM+PC+Server&family=&machineType=&doctype=Software+information&subtype=All

redhat 7.3 에 설치하기는 다음의 자료를 참고한다.
http://www.pc.ibm.com/qtechinfo/MIGR-44441.html

어떤 하드웨어이든 먼저 바이오스등을 업데이트해야 한다.
IBM eServer xSeries 440 System Service Package 를 업데이트해야 하는데 네가지 프로그램이 있다.
a. BIOS code
b. Diagnostics code
c. System Management Processor firmware files
d. System Management device driver 

일반적으로는 하드웨어 업체에서 관련 작업을 진행해 줄 것이다.
이와 더불어 하드웨어에 있는 SCSI 어댑터나 ServerRaid 관련 설정을 하드웨어 업체에서 해준다. 이번의 경우는 두개의 HDD를 Raid 1 으로 구성하였다. 

ㅇ 운영체제 설치
- AS 2.1의 설치과정은 다른 레드햇 계열 배포판과 거의 동일하다. Installation Type에서는 custom 대신 Advanced Server 를 선택하면 미리 설정된 구성을 사용하여 편리하게 작업을 할 수 있다.
- X440의 하드웨어적인 특징(summit. NUMA 관련된 부분임)때문에 운영체제 설치시나 설치이후 kernel-summit-2.4.9-e.3.i686.rpm 을 설치해야한다. AS 2.1은 배포판에 기본적으로 summit 패치된 커널 RPM이 들어있다. X440도 모델에 따라 다른데 8way까지 지원되는 모델은 운영체제 설치후 재부팅시 smp나 enterprise 커널로 부팅이 되는데 4way entry 모델은 smp, enterprise로는 부팅되지 않고 single 커널만 부팅이 된다. summit 패치된 커널을 설치하지 않으면 CPU가 4개이지만 TOP에서 확인하보면 두개만 인식이 된다.
- 설치후 redhat-config-network-0.9.30-1.i386.rpm 을 업데이트하여준다. GUI로 네트워크 설정을 해주는 툴이며 업데이트해주지 않는다고 하더라도 특별한 문제가 없다. 네트웍은 쉘 커맨드 상에서도 수정할 수 있기 때문이다.
- 레드햇 관련 ftp 사이트에 접속하여 updates 디렉토리로 가면 kernel 관련 업데이트 파일을 받을 수 있다. 기본설치는 linux-2.4.9e.3summit 으로 하지만 여기서 linux-2.4.9e.8summit 로 업데이트를 할 수 있다.(AS 2.1의 경우 FTP사이트에서는 SRPM만 제공한다)
- summit 커널에서 새로운 드라이버를 추가하려면 커널 소스와 커널 SRPM을 같이 설치하여 커널 소스상에 summit 패치를 적용해주면 된다. Oracle 9.2에서 RAC를 위한 "TSC disable on NUMA" 패치의 경우는 커널 소스 컴파일이 필요하다.
** " TSC disable on NUMA" 패치 : http://oss.software.ibm.com/linux/patches/?patch_id=438
- Oracle RAC를 위한 ocfs 파일 시스템 커널 모듈의 경우에는 AS 2.1를 위해 single, smp, enterprise 커널용 rpm은 있지만 summit 패치된 커널용은 따로 제공하지 않으므로 otn 사이트에서 ocfs 소스를 받아 spec 파일을 이용하여 모듈을 컴파일하면 된다. 물론 이를 위해서는 필요한 패치가 적용된 커널 소스가 있으면 되며 오라클에서 제공하는 spec 파일을 약간만 수정하면 된다. ( http://otn.oracle.com/tech/linux/open_source.html )
- 타회사의 인텔 서버에서 리눅스용 Oracle 9.2와 RAC는 작동을 잘 하지만 X440에서는 개별 노드가 계속 죽는 현상이 발생한다. 이와 관련되어 IBM에서 패치를 제공하며 이에 해당하는 것이 " TSC disable on NUMA" 패치이다. 앞에서 언급한 사이트에서 패치파일을 받고 해당 사이트에 있는 Releaset Note를 참고하여 커널 컴파일을 하면 된다. ( http://oss.software.ibm.com/linux/patches/release_notes.php?patch_release_id=670 ) 해당 패치파일을 살펴보면 TSC 관련 설정(Configure.help, config.in)을 수정하며 io_apic.c, time.c 두개의 소스 파일을 수정한다. 참고로 여기서는 linux-2.4.9e.8summit 파일을 기준으로 하였다.
- 내장된 이더넷 카드 드라이버 업데이트 : X440, X335에 내장된 이더넷의 경우 운영체제 설치후 X440은 bcm5700으로 바로 잡히고 x335는 tg3 모듈로 잡힌다. 레드햇외의 배포판은 잘 모르겠지만 AS 2.1과 RH 7.3에 기본적으로 bcm5700 모듈이 들어있다. 그러므로 /etc/modules.conf에서 alias 명을 바꾸어주고 다시 bcm5700으로 모듈을 올리면 bcm5700으로 잡힌다. 그래도 최근 드라이버로 패치할 것을 권장하고 있다.
Broadcom NetXtreme Gigabit Ehernet Drive Update
http://www.pc.ibm.com/qtechinfo/MIGR-43815.html
위 사이트에서 exe 파일을 다운받아 풀면 각 운영체제별로 사용할 수 있는 드라이버가 있다. 리눅스용의 경우는 소스와 SRPM이 있으며 SRPM을 이용하여 RPM을 생성하여 사용하면 편리할 것이다. 리눅스용의 경우 이 글을 쓰는 당시 최신 버전은 2.2.17이며 RH 7.3에는 2.28이 들어있고 AS2.1의 기본 커널인 kernel-2.4.9-e.3.src.rpm에는 2.0.24 버전의 패치가 들어있다 (해당 모듈의 이름은 bcm5700.o).
- AS 2.1은 기본적으로 LVM이 들어있지 않기 때문에 커널 컴파일을 해야한다. RH 7.X에는 기본적으로 LVM이 들어있기때문에 AS 2.1에도 들어있으리라 생각하면 안된다. 

** IBM redbook중 리눅스 관련 자료

http://publib-b.boulder.ibm.com/Redbooks.nsf/e7141c118473e67885256a420076cf40/d4ba397dfcc5f0b585256b41004ca166?OpenDocument

ㅇ 운영체제 설치후 작업
- 네트워크 설정 : 네트워크 인터페이스 확인, /etc/hosts 설정(rac간 접속을 편하게 하기 위해서 필요)
- 필요한 패키지 업데이트 (보안 및 기능 강화)
- 서버 패키지 관련 작업 : wu-ftpd 설치, telnet, ssh, ftp 설정. xinetd.conf 에 접근할 ip 설정(only_from 이용), rsh 서버 설정(rsh는 여러 노드에 동시에 오라클을 설치할 경우 필요하며 설치이후에는 보안을 위하여 disable 해주거나 제거해주는게 좋을 것이다)
- 추가 패키지 설치 작업 : ncftp(기본들어감), rpmfind(rpm 설치 쉽게), hanterm(필요한 경우), mc(디렉토리 작업 편리하게)
- 스토리지를 붙인 경우 로컬의 HDD보다 스토리지의 HDD를 먼저 읽어들이는 경우 부팅에 문제가 생길 수 있다. (부팅을 위해 SCSI 관련 장비를 먼저 initrd에서 올리므로 문제가 발생함) 이런 경우에는 /etc/modules.conf에서 스토리지와 연결하는 어댑터를 없애고 mkinitrd를 이용하여 initrd 파일을 재생성하여 재부팅하면 된다.

ㅇ Oracle RAC 관련 정보
- 타하드웨어에 비해 IBM X440장비는 위와 같이 몇가지 패치가 필요하다. NUMA 패치(TSC disable)를 해주어야 RAC가 제대로 동작한다. 또한 커널 소스를 가지고 있어야 ocfs 모듈을 컴파일할 수 있다.
- xseries에 운영체제를 리눅스로 하여 Oracle RAC를 설정하는 것과 관련된 자료는 IBM사이트에서 검색하면 나온다. (검색어를 +oracle +linux +xseries ) 해당 자료는 아래의 url에서 볼 수 있다.
http://publib-b.boulder.ibm.com/Redbooks.nsf/9445fa5b416f6e32852569ae006bb65f/90c0f610349ed8e485256ab20064c5aa?OpenDocument&Highlight=0,linux
위 자료는 suse linux 7.2를 기준으로 했으며 Oracle RAC 9.0.1.0, IBM FAStT Storage Manager(하드웨어는 FAStT500), IBM Xserver를 이용하여 Oracle RAC를 구성하고 있다. 두개의 노드 기준이다.
- RAC를 구성할 경우 네트워크가 두개로 구성되며 public의 경우는 100M 이더넷, private는 1G 이더넷으로 구성하고 있다. private는 물론 100M 이더넷으로도 구성가능하지만 각 노드간에 빠른 정보전달을 위하여 기가비트 이더넷을 사용한 것이다.
- 리눅스용 Oracle RAC의 경우 클러스터링 소프트웨어는 오라클에서 직접 제공한다.
- Advanced Server 에서 오라클을 설치하는 경우 문제가 발생한다고 나와있다. binutils 관련하여 에러가 있는데 이에 대한 내용은 아래 자료를 참고하면 된다.
Tips and Techniques: Install and Configure Oracle9i on Red Hat Linux Advanced Server, Aug 2002.
http://otn.oracle.com/tech/linux/pdf/installtips_final.pdf
설치시 링크에러가 발생하는 것에 대하여 어떻게 해결을 하는지 나와있고 또한 Advanced Server에 오라클을 설치하는 경우 어떻게 최적화를 하면 될지에 대하여 나와있다. 그런데 위 자료는 Oracle 9.0.1 기준이며 9.2 대에서는 이 문제가 해결된 듯 하다. 왜냐하면 위에서 말한 binutil을 조정할 필요가 없기 때문이다.
이에 관련한 상세한 자료는 다음의 url을 참고한다.
http://database.sarang.net/?inc=read&aid=12063&criteria=oracle&subcrit=tutorials&record_idx=10&currpg=2
- Oracle RAC 9.0 버전의 경우에는 리눅스 운영체제에서 기본 제공하는 watchdog 을 이용하였는데 9.2.0.1.0에 이어 나온 패치(이것은 웹상에서는 직접 제공하지는 않는듯하며 제품을 구입한 고객에게만 제공하는 것 같다. metalink에 들어가면 볼 수 있을듯. 9.2.0.2.0)를 하면 오라클 자체적으로 해당 기능을 구현한다고 한다. (이부분이 hangcheck-timer인 듯 하다. 참고로 hangcheck-timer rpm을 오라클 자체적으로 제공하는데 ocfs와 같이 summit 패치용 rpm은 따로 제공하지 않지만 smp용 모듈을 설치한후 summit에 모듈을 복사해주면 정상 작동했다. ocfs는 커널과 깊은 연관을 맺지만 hangcheck-timer는 그렇지 않아서 별 문제가 없는 것으로 생각이 된다. 그러나 가장 확실한 것은 소스를 가지고 패치하여 사용하는 것이 아닐까? 아니면 ocfs처럼 커널 소스를 가지고 모듈 컴파일을 해서 사용하거나.)
- watchdog과 연관이 있는 부분이라고 생각이 되는데 오라클에서 hangcheck-timer 라는 rpm을 제공한다. 이 부분이 위에서 말을 한 watchdog 기능을 대체한 것으로 생각이 된다. hangcheck-timer 관련하여 레드햇 7.3에는 해당 모듈이 기본 들어있지는 않다. 이에 대한 자료는 더 검색을 해보아야 할 듯하다. (hangcheck-timer 자체는 공개 소스 형태로 진행되는 듯하다) hangchec-timerk도 오라클에서 제공한다.
(뉴스그룹에서 이와 관련한 논의를 하는곳을 구글에서 찾았다. http://www.uwsg.iu.edu/hypermail/linux/kernel/0301.2/0191.html)

** Oracle RAC를 리눅스에 설치하는 것과 관련된 자료
Step-By-Step Installation of RAC on Linux
http://ocpdba.net/oracle9i_rac/stepbystepRAC.html
==>> 설치과정을 상세하게 설명하고 있다. 9.2.0.2.0패치는 metalink로 링크되어있다. 

Tips and Techniques: Install and Configure Oracle9i on Red Hat Linux Advanced Server, Aug 2002.
http://otn.oracle.com/tech/linux/pdf/installtips_final.pdf
==>> AS 2.1에 오라클을 설치하고 최적화하는 방법에 대하여 자세히 나와있다. 

Implementing Oracle9i RAC with Linux on IBM xSeries servers
http://publib-b.boulder.ibm.com/Redbooks.nsf/9445fa5b416f6e32852569ae006bb65f/90c0f610349ed8e485256ab20064c5aa?OpenDocument&Highlight=0,linux
==>> IBM xSeries servers에 linux, Oracle RAC 설정하기

리눅스용 Oracle9i 설치가이드 (한글)
http://otn.oracle.co.kr/products/oracle9i/download/oracle9i_for_linux_install.doc
==>> 한국 otn 사이트에 있는 한글 문서입니다. 개략적인 설명만 되어 있습니다.

Linux용 Oracle9i Database Release2 : Red Hat Linux Advanced Server 2.1에서의 성능, 안정성, 관리성 강화
이 백서에서는 Linux 상에서 실행되는 오라클 플랫폼을 더욱 강화시키는 Red Hat Linux Advanced Server의 주요 기능에 대해 간단히 설명합니다. 이러한 기능에는 고성능, 안정성, 관리성 등이 포함되어 있습니다.
http://otn.oracle.co.kr/tech/linux/pdf/9iR2-on-Linux-Tech-WP_Final2.pdf 

Red Hat Advanced Server2.1의 Linux Virtual Memory와 Oracle의 메모리 사용 특성
Red Hat Linux Advanced Server 커널과 Linux Virtual Memory 아키텍쳐의 단점이 해결 됨으로써, Oracle과 Linux의 통합이 안정성이 매우 높은 고성능 플랫폼을 제공한다는 결과가 나왔습니다.
http://otn.oracle.com/tech/linux/pdf/1_linuxVM_v2_accepted.pdf

Oracle9i Real Application Clusters 사용에 대한 Linux Logical Volume Manager 및 Linux Metadisk Software RAID의 기능 비교
이 백서에서는 Linux용 Oracle9i RAC를 통해 미션 크리티컬한 환경에서 Logical Volume Manager이나 Metadisk Software RAID의 사용이 가능한지에 대해 상세히 조사하였습니다.
http://otn.oracle.com/tech/linux/pdf/lvm_md_comparison.pdf 

일반적인 Linux를 배포해서 인증 받은 오라클 제품 목록을 볼 수 있습니다. 오라클 고객들은 metalink.oracle.com에서 확인해야 합니다.
http://otn.oracle.com/tech/linux/pdf/AllOracleLinux_Certs.pdf

otn 문서자료
http://otn.oracle.co.kr/tech/linux/

Oracle9i Database 에 대한 문서 자료
PDF Oracle9i Database Release 2 Release Notes - Linux
PDF Oracle9i Database Release 2 Install Guide - Linux
PDF Oracle9i Database Release 2 Administrator's Reference Guide
PDF Oracle9i RAC Release 2 Configuration Guide
PDF Oracle9i Database Release Notes Release 9.0.1 for Linux
PDF Oracle9i Database Quick Installation Procedure Release 9.0.1 for Linux
PDF Oracle9i Database Installation Checklist Release 9.0.1for Linux 

Latest Linux Technical Presentations from Oracle World - Nov. 2002, Nov 2002
http://otn.oracle.com/oracleworld/ow_linux.html

Oracle Cluster File System FAQ, Nov 2002
http://otn.oracle.com/tech/linux/htdocs/ocfs_faq_110602.html

ㅇ 기타 참고자료
-LVM설정관련 자료
LVM 사이트 http://www.sistina.com/products_lvm.htm
LVM HOWTO http://tldp.org/HOWTO/LVM-HOWTO/
Linux@Work 2001. 09 엔터프라이즈환경을 위한 소프트웨어 RAID와 LVM(정진호)
http://kldp.org/HOWTO/html/LVM-HOWTO/index.html (LVM 하우투 한글 번역 문서)
http://tunelinux.pe.kr/bbs/read.php?table=linuxinfo&no=62 (마소에 나왔던 LVM 사용법을 옮겨 놓은 것입니다)
http://tunelinux.pe.kr/zboard/view.php?id=tip&no=28 (제가 간단하게 LVM 사용법을 적은 것입니다)
The Logical Volume Manager (incl. Raw I/O tips) : http://www.suse.com/en/business/certifications/certified_software/oracle/docs/lvm_whitepaper.pdf

- watchdog 자료
커널 소스의 문서 디렉토리에도 watchdog 에 대해서는 자세하게 나와 있지 않다. 위에서 설치문서들을 보면 watchdog 설정 부분이 있으므로 어렵지 않게 해결할 수 있을 것이다. 그런데 위에서 설명했듯이 Oracle RAC release 2 패치에서는 watchdog을 대체하는 프로그램을 제공하고 있다.
http://tunelinux.pe.kr/zboard/view.php?id=tip&no=27 (제가 간단하게 watchdog 사용법을 적은 것입니다)

- raw device
레드햇은 raw device를 사용하도록 준비가 이미 되어있다. AS 2.1 설치시 /etc/sysconfig/rawdevice 에 설정을 하고 /etc/rc.d/init.d/rawdevice start 해주면 된다.

- Oracle + PHP + Apache 연동
Apache은 DSO 방식으로 컴파일되어있을 경우 간단하게 PHP와 연동을 할 수 있다.
PHP를 연동할 웹서버에 Oracle Client 가 설치되어 있어야 한다. Oracle client에서 oracle call interface만 설치해주면 된다. ($ORACLE_HOME/rdbms/demo/oci.h 등의 파일이 필요함.)
이에 대한 상세한 내용은 다음의 자료를 참고한다.
http://tunelinux.pe.kr/zboard/view.php?id=tip&no=12
물론 사전에 tnsnames.ora 설정이 제대로 되어 있고 sqlplus를 이용하여 서버로 접속이 가능한지 먼저 점검해야한다.

- suse + Oracle 자료
http://www.suse.com/us/business/certifications/certified_software/oracle/
수세를 이용할 경우 참고하면 될 듯하다.


Trackback 1 Comment 0
2009. 6. 16. 18:59

Installing Oracle Database 10g Release 1 and 2 (32-bit/64-bit) on Linux

728x90
The following procedure is a step-by-step guide (Cookbook) with tips and information for installing Oracle Database 10g on Red Hat Linux.

This guide shows how I installed 10g Database on the following Red Hat systems:


Oracle Database Version Red Hat OS Version Architecture Comments
Oracle 10g R2
(10.2.0.1.0)
Red Hat Enterprise Linux Advanced Server 4 Update 2
(RHEL AS 4 U2)
x86-64 See also Oracle Database Installation Guide 10g Release 2 (10.2) for Linux x86-64
Oracle 10g R2
(10.2.0.1.0)
Red Hat Enterprise Linux Advanced Server 4 Update 2
(RHEL AS 4 U2)
x86 See also Oracle Database Release Notes 10g Release 2 (10.2) for Linux x86
Oracle 10g R2
(10.2.0.1.0)
Red Hat Enterprise Linux Advanced Server 3 Update 5
(RHEL AS 3 U5)
x86 See also Oracle Database Installation Guide 10g Release 2 (10.2) for Linux x86
Oracle 10g R1
(10.1.0.3)
Red Hat Enterprise Linux Advanced Server 4 Update 1
(RHEL AS 4 U1)
x86-64 No certification projected for 10g R1 64-bit on RHEL AS 4 x86_64 at the time of this writing
Oracle 10g R1
(10.1.0.3)
Red Hat Enterprise Linux Advanced Server 4
(RHEL AS 4)
x86 See also Oracle Database Release Notes 10g Release 1 (10.1.0.3.0) for Linux x86
Oracle 10g R1
(10.1.0.3)
Red Hat Enterprise Linux Advanced Server 3 Update 5
(RHEL AS 3 U5)
x86-64 See also Oracle Database Installation Guide 10g Release 1 (10.1.0.3) for Linux x86-64
Oracle 10g R1
(10.1.0.3)
Red Hat Enterprise Linux Advanced Server 3 Update 5
(RHEL AS 3 U5)
x86 See also Oracle Database Installation Guide 10g Release 1 (10.1) for UNIX Systems
Oracle 10g R1
(10.1.0.2)
Red Hat Enterprise Linux Advanced Server 2.1
(RHEL AS 2.1)
x86 See also Oracle Database Installation Guide 10g Release 1 (10.1) for UNIX Systems
Oracle 10g R2
(10.2.0.1.0)
Red Hat Fedora Core 4
(FC 4)
x86 Not supported
Oracle 10g R1
(10.1.0.3)
Red Hat Fedora Core 3
(FC 3)
x86 Not supported
Oracle 10g R1
(10.1.0.2)
Red Hat Fedora Core 3
(FC 3)
x86 Not supported
Oracle 10g R1
(10.1.0.2)
Red Hat Fedora Core 1
(FC 1)
x86 Not supported
Oracle 10g R1
(10.1.0.2)
Red Hat 9
(RH 9)
x86 Not supported

These instructions will also work for Red Hat Enterprise Linux ES 2.1, 3, and 4.


Oracle Database 10g on other Linux Distributions

People recommended this installation guide for:

WhiteBox Linux 3
    Works exactly like on RHEL AS 3.
Mandrake 10.0 Community Edition
    Some files/packages were not included with Mandrake 10 which can be downloaded from:
    ftp://ftp.rediris.es/sites/carroll.cac.psu.edu/mandrake-devel/cooker/i586/Mandrake/RPMS/setarch-1.3-1mdk.i586.rpm
    ftp://194.199.20.114/linux/contrib/openmotif/linux-rpm/openmotif-2.1.30-1_ICS.i386.rpm

Validation/Certification

For Validations/Certifications, go to Oracle's Certification Matrices.


Table of Contents:

* Downloading Oracle10g Software and Burning Oracle10g CDs
* Checking Memory and Swap Space
* Checking /tmp Space
* Checking Software Packages (RPMs)
* Checking Kernel Parameters
* Sizing Disk Space for Oracle10g
* Creating Oracle User Accounts
* Setting Shell Limits for the Oracle User
* Creating Oracle Directories
    Optimal Flexible Architecture (OFA) for 10g (10.1.0.2)
* Setting Oracle Environments
* Installing Oracle10g
    Installing Oracle10g on a Remote Linux Server
    Starting Oracle Universal Installer
    Using Oracle Universal Installer
    Updates after Running Oracle Universal Installer
* Oracle Post-installation Tasks
    Startup and Shutdown of the Oracle10g Database
    Shutdown of other Oracle 10g Background Processes
* Tips and Hints for Oracle10g on Linux
* Oracle10g/Linux Errors and Problems
* References


Downloading Oracle10g Software and Burning Oracle10g CDs

Download Oracle 10g (32-bit and 64-bit) for Linux from OTN to install linux 10g oracle:
http://otn.oracle.com/software/products/database/oracle10g/index.html

NOTE: To install a Oracle Database 10g (without RAC) you only need to download the database file ship.db.lnx32.cpio.gz, or 10201_database_linux_x86_64.cpio etc.

Compute a cyclic redundancy check (CRC) checksum for the downloaded files and compare the checksum numbers against the numbers posted on OTN's website. For example:
cksum ship.db.lnx32.cpio.gz
Uncompress the downloaded file(s):
gunzip ship.db.lnx32.cpio.gz
Unpack ship.db.lnx32.cpio:
$ cpio -idmv < ship.db.lnx32.cpio
Disk1/stage/Components/oracle.server/10.1.0.3.0/1
Disk1/stage/Components/oracle.server/10.1.0.3.0
Disk1/stage/Components/oracle.server
Disk1/stage/Components/oracle.tg/10.1.0.3.0/1/DataFiles
Disk1/stage/Components/oracle.tg/10.1.0.3.0/1
Disk1/stage/Components/oracle.tg/10.1.0.3.0
Disk1/stage/Components/oracle.tg
Disk1/stage/Components/oracle.assistants.dbca/10.1.0.3.0/1/DataFiles/doc.3.1.jar
Disk1/stage/Components/oracle.assistants.dbca/10.1.0.3.0/1/DataFiles/class.jar
...
I executed the following command to burn the Disk1 directory on a CD:
# mkisofs -r Disk1 | cdrecord -v dev=0,0,0 speed=20 -
(Drives' speed varies; you can get the dev numbers when you execute cdrecord -scanbus).

Note that 10g R2 won't fit on a single CD since it has over 780MB.

Checking Memory and Swap Space

Oracle says that the system must have at least 512MB of RAM and 1GB of swap space or twice the size of RAM. And for systems with more than 2 GB of RAM, the swap space can be between one and two times the size of RAM. You might also want to check out Sizing Swap Space.
For test sake I tried to install an Oracle Database 10g (Type: General Purpose Database) on a little PC with 256MB of RAM and 1 GB of swap space. I was able to get a 10g database up and running on this little PC without a problem.

To check the size of physical memory, execute:
grep MemTotal /proc/meminfo
To check the size of swap space, execute:
grep SwapTotal /proc/meminfo

You also can add temporary swap space to your system by creating a temporary swap file instead of using a raw device. Here is the procedure:
su - root
dd if=/dev/zero of=tmpswap bs=1k count=900000
chmod 600 tmpswap
mkswap tmpswap
swapon tmpswap
To disable the temporary swap space execute the following commands:
su - root
swapoff tmpswap
rm tmpswap

Checking /tmp Space

According to Oracle's documentation, the Oracle Universal Installer (OUI) requires up to 400 MB of free space in the /tmp directory. But OUI checks if /tmp is only greater than 80 MB.

To check the space in /tmp, run:
$ df /tmp
If you do not have enough space in the /tmp filesystem, you can temporarily create a tmp directory in another filesystem. Here is how you can do this:
su - root
mkdir /<AnotherFilesystem>/tmp
chown root.root /<AnotherFilesystem>/tmp
chmod 1777 /<AnotherFilesystem>/tmp
export TEMP=/<AnotherFilesystem>           # used by Oracle
export TMPDIR=/<AnotherFilesystem>         # used by Linux programs like the linker "ld"
When you are done with the Oracle installation, shutdown Oracle and remove the temporary /tmp directory:
su - root
rmdir /<AnotherFilesystem>/tmp
unset TEMP
unset TMPDIR

Checking Software Packages (RPMs)

General

Before you install an Oracle Database 10g you need to check the system for required RPMs. On my systems I usually install a minimum list of RPMs which usually requires the installation of additional packages for Oracle databases. Always ensure to use the latest RPMs and kernels!

For 10g R2 (64-bit) on RHEL 4 x86_64, the document Oracle Database Installation Guide 10g Release 2 (10.2) for Linux x86-64 lists the following required package versions or higher:
  binutils-2.15.92.0.2-10.EL4
  compat-db-4.1.25-9
  control-center-2.8.0-12
  gcc-3.4.3-9.EL4
  gcc-c++-3.4.3-9.EL4
  glibc-2.3.4-2
  glibc-common-2.3.4-2
  gnome-libs-1.4.1.2.90-44.1
  libstdc++-3.4.3-9.EL4
  libstdc++-devel-3.4.3-9.EL4
  make-3.80-5
  pdksh-5.2.14-30
  sysstat-5.0.5-1
  xscreensaver-4.18-5.rhel4.2
Also ensure to install the libaio-0.3.96 RPM or a newer version! Otherwise the OUI prerequisite check will fail.

To check if you are running the x86_64 kernel on a x86_64 platform, run:
  # uname -mi
  x86_64 x86_64
To check the RPMs, run:
  rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}  (%{ARCH})\n' \
              binutils compat-db control-center gcc gcc-c++ glibc glibc-common gnome-libs \
              libstdc++ libstdc++-devel make pdksh sysstat xscreensaver libaio
It is important to have these x86_64 RPMs installed. The above command will list the architecture of each binary package. You will see that some RPMs are installed twice when you run this command (x86 RPM and x86_64 RPM). You need to ensure that all required x86-64 RPMs listed here are installed.


For 10g R2 (32-bit) on RHEL 4 x86, the document Oracle Database Release Notes 10g Release 2 (10.2) for Linux x86 lists the following required package versions or higher:
  binutils-2.15.92.0.2-10.EL4
  compat-db-4.1.25-9
  control-center-2.8.0-12
  gcc-3.4.3-9.EL4
  gcc-c++-3.4.3-9.EL4
  glibc-2.3.4-2
  glibc-common-2.3.4-2
  gnome-libs-1.4.1.2.90-44.1
  libstdc++-3.4.3-9.EL4
  libstdc++-devel-3.4.3-9.EL4
  make-3.80-5
  pdksh-5.2.14-30
  sysstat-5.0.5-1
  xscreensaver-4.18-5.rhel4.2
Also ensure to install the libaio-0.3.96 RPM or a newer version! Otherwise the OUI prerequisite check will fail.

To check the RPMs, run:
  rpm -q binutils compat-db control-center gcc gcc-c++ glibc glibc-common gnome-libs \
         libstdc++ libstdc++-devel make pdksh sysstat xscreensaver libaio


For 10g R2 (32-bit) on RHEL 3 x86, the document Oracle Database Installation Guide 10g Release 2 (10.2) for Linux x86 lists the following required package versions or higher:
  make-3.79.1
  gcc-3.2.3-34
  glibc-2.3.2-95.20
  compat-db-4.0.14-5
  compat-gcc-7.3-2.96.128
  compat-gcc-c++-7.3-2.96.128
  compat-libstdc++-7.3-2.96.128
  compat-libstdc++-devel-7.3-2.96.128
  openmotif21-2.1.30-8
  setarch-1.3-1
Also ensure to install the libaio-0.3.96-5 RPM or a newer version! Otherwise the OUI prerequisite check will fail.

To check the RPMs, run:
  rpm -q make gcc glibc compat-db compat-gcc compat-gcc-c++ compat-libstdc++ compat-libstdc++-devel openmotif21 setarch libaio

For 10g R1 (64-bit) on RHEL 3 x86_64, the document Oracle Database Installation Guide 10g Release 1 (10.1.0.3) for Linux x86-64 lists the following required package versions or higher:
  make-3.79.1
  gcc-3.2.3-34
  glibc-2.3.2-95.20
  glibc-devel-2.3.2-95.20
  glibc-devel-2.3.2-95.20   (32 bit)
  compat-db-4.0.14-5
  compat-gcc-7.3-2.96.128
  compat-gcc-c++-7.3-2.96.128
  compat-libstdc++-7.3-2.96.128
  compat-libstdc++-devel-7.3-2.96.128
  gnome-libs-1.4.1.2.90-34.1   (32 bit)
  openmotif21-2.1.30-8
  setarch-1.3-1
  libaio-0.3.96-3
  libaio-devel-0.3.96-3
To check if you are running the x86_64 kernel on a x86_64 platform, run:
  # uname -mi
  x86_64 x86_64
To check the RPMs, run:
  rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}  (%{ARCH})\n' \
              make gcc glibc glibc-devel compat-db compat-gcc compat-gcc-c++ compat-libstdc++ \
              compat-libstdc++-devel gnome-libs openmotif21 setarch libaio libaio-devel
It is important to have the right x86 and x86_64 RPMs installed. The above command will list the architecture of each binary package. And as you can see in the above list, glibc-devel and other RPMs are listed twice. This means that you have to install packages for both architectures, x86 and x86_64.


For 10g R1 (32-bit) on RHEL 3 x86, the document Oracle Database Installation Guide 10g Release 1 (10.1) for UNIX Systems lists the following required package versions or higher:
  make-3.79.1
  gcc-3.2.3-34
  glibc-2.3.2-95.20
  compat-db-4.0.14-5
  compat-gcc-7.3-2.96.128
  compat-gcc-c++-7.3-2.96.128
  compat-libstdc++-7.3-2.96.128
  compat-libstdc++-devel-7.3-2.96.128
  openmotif21-2.1.30-8
  setarch-1.3-1
To check the RPMs, run:
  rpm -q make gcc glibc compat-db compat-gcc compat-gcc-c++ compat-libstdc++ compat-libstdc++-devel openmotif21 setarch

For 10g R1 (32-bit) on RHEL 2.1, the document Oracle Database Installation Guide 10g Release 1 (10.1) for UNIX Systems lists the following required package versions or higher:
  make-3.79.1
  glibc-2.2.4-32
  gcc-2.96-128
  gcc-c++-2.96-128
  libstdc++-2.96-128
  openmotif-2.1.30-11
To check these RPMs, run:
  rpm -q make glibc gcc gcc-c++ libstdc++ openmotif

The installation of an Oracle 10g Database worked fine without installing any compatibility RPMs (e.g. compat-gcc, compat-libstdc++). However, since it's listed as a requirement for RHEL 3 I'd recommend to install it on RHEL3 and on newer releases as well. It's not a requirement for RHEL 2.1 though.

For RHEL 3 and RHEL 2.1 it is also important to have binutils-2.11.90.0.8-12 or a newer version installed. Make sure you have the binutils RPM installed on other releases as well like Fedora Core:
rpm -q binutils

NOTE: OUI for x86 will also complain if the openmotif package is missing (don't confuse it with the openmotif21 package). Also, Red Hat changed the version naming schema from openmotif-2.2.2-16 in the original release to openmotif-2.2.3-5.RHEL3.2 in RHEL3 Update 5. This seems to confuse OUI in RHEL3 U5 since it complaining that it can't find the right openmotif version. I ignored this. The openmotif-2.2.3-5.RHEL3.2 is just a newer version of openmotif-2.2.2-16 which worked fine and I didn't have any problems. To check the RPM, run:
rpm -q openmotif

Also, make sure the redhat-release package is installed. Earlier versions of e.g. RHEL 3 didn't install it by default when you selected a minimum system installation:
rpm -q redhat-release

The setarch utility is new in RHEL4, RHEL3 and Fedora Core. It is used to tell the kernel to report a different architecture than the current one. It is also used to emulate a 3GB virtual address space for applications that don't run properly with a larger virtual address space. To check the RPM, run:
rpm -q setarch


Installing the RPMs


10g R2 on RHEL AS 4 (x86_64)

On my RHEL AS 4 x86_64 system I installed the following RPMs and dependencies:
  rpm -Uvh gcc-3.4.4-2.x86_64.rpm \
           gcc-c++-3.4.4-2.x86_64.rpm \
           libstdc++-devel-3.4.4-2.x86_64.rpm \
           cpp-3.4.4-2.x86_64.rpm \
           glibc-devel-2.3.4-2.13.x86_64.rpm \
           glibc-headers-2.3.4-2.13.x86_64.rpm \
           glibc-kernheaders-2.4-9.1.98.EL.x86_64.rpm

  rpm -Uvh gnome-libs-1.4.1.2.90-44.1.x86_64.rpm \
           compat-db-4.1.25-9.x86_64.rpm \
           ORBit-0.5.17-14.x86_64.rpm \
           gtk+-1.2.10-33.x86_64.rpm \
           imlib-1.9.13-23.x86_64.rpm \
           libpng10-1.0.16-1.x86_64.rpm \
           gdk-pixbuf-0.22.0-16.el4.x86_64.rpm \
           libungif-4.1.3-1.x86_64.rpm

  rpm -Uvh sysstat-5.0.5-1.x86_64.rpm

Note that you also need to install the following i386 and x86_64 RPMs if not already installed, otherwise you will get various different error messages.
For a detailed list of error messages, see Oracle10g/Linux Errors and Problems.
  rpm -Uvh xorg-x11-deprecated-libs-6.8.2-1.EL.13.20.i386.rpm \
           xorg-x11-libs-6.8.2-1.EL.13.20.i386.rpm \
           xorg-x11-Mesa-libGL-6.8.2-1.EL.13.20.i386.rpm \
           expat-1.95.7-4.i386.rpm \
           fontconfig-2.2.3-7.i386.rpm \
           freetype-2.1.9-1.i386.rpm \
           zlib-1.2.1.2-1.2.i386.rpm
  rpm -Uvh libaio-0.3.103-3.x86_64.rpm

  rpm -Uvh compat-libstdc++-33-3.2.3-47.3.x86_64.rpm

  rpm -Uvh glibc-devel-2.3.4-2.13.i386.rpm \
           libgcc-3.4.4-2.i386.rpm

If you haven't installed Update 3 or later, don't forget to install an updated binutils RPM from https://rhn.redhat.com/ or from http://oss.oracle.com/projects/compat-oracle/files/RedHat/:
   rpm -Uvh --force binutils-2.15.92.0.2-13.0.0.0.2.x86_64.rpm
If you don't install a newer binutil RPM from Oracle or RHN, then you will get the following error message:
/usr/bin/ld: /u01/app/oracle/oracle/product/10.2.0/db_1/lib//libirc.a(fast_memcpy.o): 
    relocation R_X86_64_PC32 against `_memcpy_mem_ops_method' can not be usedwhen making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: ld returned 1 exit status
For more information on this bug, see Bugzilla Bug 679.


I don't know why the control-center RPM and the xscreensaver RPM are listed as requirements. On my system I did not install these RPMs since I'm against installing desktop stuff on servers, see list below. When I installed 10g R2 I did not experience any problems when these RPMs were missing. But just for completeness I've listed all the RPMs you may have to install if you want to install the control-center and xscreensaver RPMs unless you ignore dependencies:
   rpm -Uvh control-center-2.8.0-12.rhel4.2.x86_64.rpm \
            xscreensaver-4.18-5.rhel4.9.x86_64.rpm \
            eel2-2.8.1-2.x86_64.rpm \
            gail-1.8.0-2.x86_64.rpm \
            gnome-desktop-2.8.0-5.x86_64.rpm \
            gnome-icon-theme-2.8.0-1.el4.1.3.noarch.rpm \
            libgail-gnome-1.1.0-1.x86_64.rpm \
            libxklavier-1.02-3.x86_64.rpm \
            metacity-2.8.6-2.8.x86_64.rpm \
            nautilus-2.8.1-4.x86_64.rpm \
            startup-notification-0.7-1.x86_64.rpm \
            xloadimage-4.1-34.RHEL4.x86_64.rpm \
            xorg-x11-Mesa-libGLU-6.8.2-1.EL.13.20.x86_64.rpm \
            at-spi-1.6.0-3.x86_64.rpm \
            desktop-backgrounds-basic-2.0-26.2.1E.noarch.rpm \
            eog-2.8.1-2.x86_64.rpm \
            gnome-panel-2.8.1-3.3E.x86_64.rpm \
            gnome-vfs2-smb-2.8.2-8.2.x86_64.rpm \
            hicolor-icon-theme-0.3-3.noarch.rpm \
            libexif-0.5.12-5.1.x86_64.rpm \
            librsvg2-2.8.1-1.x86_64.rpm \
            nautilus-cd-burner-2.8.3-6.x86_64.rpm \
            redhat-artwork-0.120.1-1.2E.x86_64.rpm \
            scrollkeeper-0.3.14-3.x86_64.rpm \
            cdrecord-2.01.1-5.x86_64.rpm \
            docbook-dtds-1.0-25.noarch.rpm \
            evolution-data-server-1.0.2-9.x86_64.rpm \
            intltool-0.31.2-1.x86_64.rpm \
            libcroco-0.6.0-4.x86_64.rpm \
            libgnomeprint22-2.8.0-3.x86_64.rpm \
            libgnomeprintui22-2.8.0-1.x86_64.rpm \
            libgsf-1.10.1-1.x86_64.rpm \
            libwnck-2.8.1-1.rhel4.1.x86_64.rpm \
            mkisofs-2.01.1-5.x86_64.rpm \
            samba-common-3.0.10-1.4E.2.x86_64.rpm \
            ghostscript-7.07-33.x86_64.rpm \
            ghostscript-fonts-5.50-13.noarch.rpm \
            gnutls-1.0.20-3.2.1.x86_64.rpm \
            libgnomecups-0.1.12-5.x86_64.rpm \
            libsoup-2.2.1-2.x86_64.rpm \
            openjade-1.3.2-14.x86_64.rpm \
            perl-XML-Parser-2.34-5.x86_64.rpm \
            sgml-common-0.6.3-17.noarch.rpm \
            urw-fonts-2.2-6.1.noarch.rpm \
            xml-common-0.6.3-17.noarch.rpm \
            VFlib2-2.25.6-25.x86_64.rpm \
            chkfontpath-1.10.0-2.x86_64.rpm \
            perl-URI-1.30-4.noarch.rpm \
            perl-libwww-perl-5.79-5.noarch.rpm \
            xorg-x11-font-utils-6.8.2-1.EL.13.20.x86_64.rpm \
            perl-HTML-Parser-3.35-6.x86_64.rpm \
            xorg-x11-xfs-6.8.2-1.EL.13.20.x86_64.rpm \
            perl-HTML-Tagset-3.03-30.noarch.rpm \
            ttmkfdir-3.0.9-14.1.EL.x86_64.rpm


10g R2 on RHEL AS 4 (x86)

On my RHEL AS 4 x86 system I had to install the following RPMs and dependencies to meet the software requirements:
   rpm -Uvh gcc-3.4.4-2.i386.rpm \
            gcc-c++-3.4.4-2.i386.rpm \
            libstdc++-devel-3.4.4-2.i386.rpm \
            glibc-devel-2.3.4-2.13.i386.rpm \
            glibc-headers-2.3.4-2.13.i386.rpm \
            glibc-kernheaders-2.4-9.1.98.EL.i386.rpm

   rpm -Uvh gnome-libs-1.4.1.2.90-44.1.i386.rpm \
            compat-db-4.1.25-9.i386.rpm \
            ORBit-0.5.17-14.i386.rpm \
            gtk+-1.2.10-33.i386.rpm \
            imlib-1.9.13-23.i386.rpm \
            libpng10-1.0.16-1.i386.rpm \
            gdk-pixbuf-0.22.0-16.el4.i386.rpm \
            libungif-4.1.3-1.i386.rpm \
            alsa-lib-1.0.6-5.RHEL4.i386.rpm \
            audiofile-0.2.6-1.i386.rpm \
            esound-0.2.35-2.i386.rpm

   rpm -Uvh sysstat-5.0.5-1.i386.rpm

   rpm -Uvh libaio-0.3.103-3.i386.rpm

   rpm -Uvh xorg-x11-deprecated-libs-6.8.2-1.EL.13.20.i386.rpm

   rpm -Uvh compat-libstdc++-33-3.2.3-47.3.i386.rpm

I don't know why the control-center RPM and the xscreensaver RPM are listed as requirements. On my system I did not install these RPMs since I'm against installing desktop stuff on servers. When I installed 10g R2 I did not experience any problems when these RPMs were missing. When you want to install control-center RPM and the xscreensaver, then have fun. The list can be very long with all the dependencies like gnome-desktop, cdrecord etc..



10g R1 on RHEL AS 4 (x86_64)

NOTE: No certification has been projected for 10g R1 64-bit on RHEL AS 4 (x86_64) at the time of this writing.

On my RHEL AS 4 x86_64 system I installed the following RPMs and dependencies:
  rpm -Uvh gcc-3.4.3-22.1.x86_64.rpm \
           cpp-3.4.3-22.1.x86_64.rpm \
           glibc-devel-2.3.4-2.9.x86_64.rpm \
           glibc-headers-2.3.4-2.9.x86_64.rpm \
           glibc-kernheaders-2.4-9.1.87.x86_64.rpm

  rpm -Uvh glibc-devel-2.3.4-2.9.i386.rpm

  rpm -Uvh openmotif-2.2.3-9.RHEL4.1.x86_64.rpm \
           xorg-x11-deprecated-libs-6.8.2-1.EL.13.6.x86_64.rpm

  rpm -Uvh xorg-x11-deprecated-libs-6.8.2-1.EL.13.6.i386.rpm \
           xorg-x11-libs-6.8.2-1.EL.13.6.i386.rpm \
           xorg-x11-Mesa-libGL-6.8.2-1.EL.13.6.i386.rpm \
           expat-1.95.7-4.i386.rpm fontconfig-2.2.3-7.i386.rpm \
           freetype-2.1.9-1.i386.rpm zlib-1.2.1.2-1.i386.rpm

   rpm -Uvh libgcc-3.4.3-22.1.i386.rpm
You will get various different error messages during the installation if not all of these RPMs are installed on your system for 10g R1 64-bit.
For more information, see Oracle10g/Linux Errors and Problems.


10g R1 on RHEL AS 4 (x86)

On my RHEL AS 4 x86 system I had to install the following RPMs and dependencies to meet the software requirements:
  rpm -Uvh gcc-3.4.3-9.EL4.i386.rpm          \
            glibc-devel-2.3.4-2.i386.rpm     \
            glibc-headers-2.3.4-2.i386.rpm   \
            glibc-kernheaders-2.4-9.1.87.i386.rpm

  rpm -Uvh openmotif-2.2.3-6.RHEL4.2.i386.rpm \
           xorg-x11-deprecated-libs-6.8.1-23.EL.i386.rpm

Note that the 10g 10.1.0.3 OUI Product-specific Prerequisite check will fail for the gcc, binutils, and openmotif versions. You can ignore these failed checks and proceed.
The redhat-release RPM should already be installed by default. But note that 10.1.0.3.0 OUI does not recognize RHEL AS 4 as a supported release yet. This means you will have to edit the /etc/redhat-release file, see below, or you apply the 4153257 patch for 10g R1 on RHEL 4. 10g R2 does recognise RHEL AS 4 as a supported platform.



10g R1 and R2 on RHEL AS 3 (x86)

On my RHEL AS 3 x86 system I had to install the following RPMs and dependencies to meet the software requirements:
   rpm -Uvh gcc-3.2.3-52.i386.rpm \
           cpp-3.2.3-52.i386.rpm \
           glibc-devel-2.3.2-95.33.i386.rpm \
           glibc-headers-2.3.2-95.33.i386.rpm \
           glibc-kernheaders-2.4-8.34.1.i386.rpm

  rpm -Uvh compat-db-4.0.14-5.1.i386.rpm \
           compat-gcc-7.3-2.96.128.i386.rpm \
           compat-gcc-c++-7.3-2.96.128.i386.rpm \
           compat-libstdc++-7.3-2.96.128.i386.rpm \
           compat-libstdc++-devel-7.3-2.96.128.i386.rpm \
           tcl-8.3.5-92.2.i386.rpm

  rpm -Uvh libaio-0.3.96-5.i386.rpm

  rpm -Uvh openmotif21-2.1.30-9.RHEL3.6.i386.rpm

  rpm -Uvh openmotif-2.2.3-5.RHEL3.2.i386.rpm


10g R1 on RHEL AS 3 (x86_64)

On my RHEL AS 3 x86_64 system I had to install the following RPMs and dependencies to meet the software requirements:
  rpm -Uvh gcc-3.2.3-52.x86_64.rpm \
  cpp-3.2.3-52.x86_64.rpm \
  glibc-devel-2.3.2-95.33.x86_64.rpm \
  glibc-headers-2.3.2-95.33.x86_64.rpm \
  glibc-kernheaders-2.4-8.34.1.x86_64.rpm

  rpm -Uvh glibc-devel-2.3.2-95.33.i386.rpm

  rpm -Uvh compat-db-4.0.14-5.1.x86_64.rpm \
           compat-gcc-7.3-2.96.128.i386.rpm \
           compat-gcc-c++-7.3-2.96.128.i386.rpm \
           compat-libstdc++-7.3-2.96.128.i386.rpm \
           compat-libstdc++-devel-7.3-2.96.128.i386.rpm \
           tcl-8.3.5-92.2.x86_64.rpm \
           libgcc-3.2.3-52.i386.rpm

  rpm -Uvh libaio-0.3.96-5.x86_64.rpm \
           libaio-devel-0.3.96-5.x86_64.rpm

  # RHEL AS 3 x86_64 U5 does not come with a i386 gnome-libs RPM 
  rpm -Uvh gnome-libs-1.4.1.2.90-34.2.x86_64.rpm \
           ORBit-0.5.17-10.4.x86_64.rpm \
           audiofile-0.2.3-7.1.x86_64.rpm \
           esound-0.2.28-6.x86_64.rpm \
           gtk+-1.2.10-31.x86_64.rpm \
           imlib-1.9.13-13.4.x86_64.rpm \
           gdk-pixbuf-0.22.0-12.el3.x86_64.rpm \
           libpng10-1.0.13-15.x86_64.rpm \
           libungif-4.1.0-15.x86_64.rpm

  # RHEL AS 3 x86_64 U5 does not come with a x86_64 openmotif21 RPM 
  rpm -Uvh openmotif21-2.1.30-9.RHEL3.6.i386.rpm \
           XFree86-libs-4.3.0-81.EL.i386.rpm \
           XFree86-Mesa-libGL-4.3.0-81.EL.i386.rpm \
           expat-1.95.5-6.i386.rpm \
           fontconfig-2.2.1-13.i386.rpm \
           freetype-2.1.4-4.0.i386.rpm \
           zlib-1.1.4-8.1.i386.rpm
Make sure to use the right i386 and x86_64 RPMs as listed above!

Note, if you don't install the i386 XFree86-libs RPM, you will get an error message similar to this one:
/tmp/OraInstall2005-06-15_07-36-25AM/jre/1.4.2/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory
For more information, see Oracle10g/Linux Errors and Problems.


10g R1 on RHEL AS 2.1 (x86)

On my RHEL AS 2.1 x86 system I had to install the following RPMs and dependencies to meet the software requirements:
  rpm -Uvh glibc-2.2.4-32.11.i686.rpm \
           glibc-common-2.2.4-32.11.i386.rpm

  rpm -Uvh gcc-2.96-108.1.i386.rpm \
           binutils-2.11.90.0.8-12.i386.rpm \
           cpp-2.96-108.1.i386.rpm \
           glibc-devel-2.2.4-32.11.i386.rpm \
           kernel-headers-2.4.9-e.3.i386.rpm

  rpm -Uvh openmotif-2.1.30-11.i386.rpm

  rpm -Uvh redhat-release-as-2.1AS-4.noarch.rpm

I had to upgrade glibc in order to pass Oracle's "Product-specific Prerequisite" checks. Oracle's recommended glibc version is 2.2.4.31.7 or higher.
There is no setarch RPM for RHEL AS 2.1.
Also, it's important to install a newer kernel version for RHEL AS 2.1. Definitely don't use a kernel older than 2.4.9-e.25. To check the kernel version run uname -r. For more information on upgrading the kernel, see Upgrading the Linux Kernel.


10g R2 on Fedora Core 4 (x86)

On my FC4 system I had to install the following RPMs and dependencies to meet the software requirements:
  rpm -Uvh gcc-4.0.0-8.i386.rpm \
           cpp-4.0.0-8.i386.rpm \
           glibc-devel-2.3.5-10.i386.rpm \
           glibc-headers-2.3.5-10.i386.rpm \
           glibc-kernheaders-2.4-9.1.94.i386.rpm

  rpm -Uvh compat-libstdc++-33-3.2.3-47.fc4.i386.rpm

  rpm -Uvh openmotif-2.2.3-10.i386.rpm \
           xorg-x11-deprecated-libs-6.8.2-31.i386.rpm

  rpm -Uvh openmotif21-2.1.30-14.i386.rpm

  rpm -Uvh libaio-0.3.104-2.i386.rpm

  rpm -Uvh selinux-policy-targeted-1.25.2-4.noarch.rpm

NOTE: I also had to patch the SELinux policy by upgrading the selinux-policy-targeted RPM. You can download the latest version from http://download.fedora.redhat.com/pub/fedora/linux/core/updates/4/i386/. If you don't upgrade to a newer version you will get the following error:
Exception in thread "main" java.lang.UnsatisfiedLinkError: /tmp/OraInstall2005-07-24_09-03-19AM/jre/1.4.2/lib/i386/libawt.so: 
/tmp/OraInstall2005-07-24_09-03-19AM/jre/1.4.2/lib/i386/libawt.so: cannot restore segment prot after reloc: Permission denied
You could also disable SELinux which I don't recommend. For more information, see Oracle10g/Linux Errors and Problems.


10g R1 on Fedora Core 3 (x86)

On my FC3 system I had to install the following RPMs and dependencies to meet the software requirements:
  rpm -Uvh gcc-3.4.2-6.fc3.i386.rpm \
           cpp-3.4.2-6.fc3.i386.rpm \
           glibc-devel-2.3.3-74.i386.rpm \
           glibc-headers-2.3.3-74.i386.rpm \
           glibc-kernheaders-2.4-9.1.87.i386.rpm

  rpm -Uvh openmotif-2.2.3-6.i386.rpm \
           xorg-x11-deprecated-libs-6.8.1-12.i386.rpm

  rpm -Uvh openmotif21-2.1.30-11.i386.rpm

  rpm -Uvh setarch-1.6-1.i386.rpm

The gcc version that comes with FC3 will not pass Oracle's "Product-specific Prerequisite" checks. I ignored this warning on FC3.


10g R1 on Fedora Core 1 (x86)

On my FC1 system I had to install the following RPMs and dependencies to meet the software requirements:
  rpm -Uvh gcc-3.3.2-1.i386.rpm                \
           glibc-devel-2.3.2-101.i386.rpm      \
           cpp-3.3.2-1.i386.rpm                \
           glibc-headers-2.3.2-101.i386.rpm    \
           glibc-kernheaders-2.4-8.36.i386.rpm \
           binutils-2.14.90.0.6-3.i386.rpm

  rpm -Uvh openmotif-2.2.2-16.1.i386.rpm

  rpm -Uvh setarch-1.0-1.i386.rpm

FC1 is not supported by Oracle and you will have a hard time to find the right RPM version for Oracle10g. I tried to use the RPMs that came with the FC1 CDs which are easily available to everyone. I did not had any problems installing an Oracle Database 10g (General Purpose Database) on FC1 with these RPMs.


10g R1 on Red Hat 9 (x86)

On my RH9 system I had to install the following RPMs and dependencies to meet the software requirements:
  rpm -Uvh openmotif-2.2.2-14.i386.rpm

  rpm -Uvh gcc-3.2.2-5.i386.rpm                \
           glibc-devel-2.3.2-5.i386.rpm        \
           cpp-3.2.2-5.i386.rpm                \
           glibc-kernheaders-2.4-8.10.i386.rpm \
           binutils-2.13.90.0.18-9.i386.rpm

There is no setarch RPM for RH9. RH9 is not supported by Oracle.


Checking/Updating the redhat-release File

Verify that the redhat-release RPM is installed on your Red Hat system:
rpm -q redhat-release
This RPM is important for RHEL since RHEL AS 4, RHEL AS 3, and RHEL AS 2.1 are Linux releases supported by Oracle. Without this RPM, Oracle 10g OUI won't be able to recognize it as a supported OS. However, the installer of 10g 10.1.0.3 does not recognize RHEL AS 4 as a supported release yet. This means that you will have to edit the /etc/redhat-release file. You also have to change /etc/redhat-release for unsupported releases like Fedora Core and RH9.

I do not recommend to execute "runInstaller -ignoreSysPrereqs" since this will disable other checks you probably don't want to.

On RHEL AS 4 (for 10g R1), RH9, and FC 1 you have to change the /etc/redhat-release file to make Oracle 10g believe it's running on a supported release.
Regarding RHEL AS 4, the installer for 10g 10.1.0.3 does not recognize RHEL AS 4 as a supported release but 10g R2 OUI does.

To change the /etc/redhat-release file, you can simply copy/paste the following commands:
su - root
cp /etc/redhat-release /etc/redhat-release.orig
cat > /etc/redhat-release << EOF
Red Hat Enterprise Linux AS release 3 (Taroon)
EOF
After you are done with the Oracle10g installation, undo the changes you made to /etc/redhat-release:
su - root
cp /etc/redhat-release.orig /etc/redhat-release

NOTE: On FC3 you don't have to edit /etc/redhat-release since the OUI is not very clever. If OUI finds e.g. digit number "3" in the /etc/redhat-release file, you pass the "operating system version" check since it believes it's a RHEL3 system.

Checking Kernel Parameters

To see all kernel parameters, execute:
su - root
sysctl -a

For Oracle10g, the following kernel parameters have to be set to values greater than or equal to the recommended values which can be changed in the proc filesystem:
shmmax  = 2147483648     (To verify, execute: cat /proc/sys/kernel/shmmax)
shmmni  = 4096           (To verify, execute: cat /proc/sys/kernel/shmmni)
shmall  = 2097152        (To verify, execute: cat /proc/sys/kernel/shmall)   (for 10g R1)
shmmin  = 1              (To verify, execute: ipcs -lm |grep "min seg size")
shmseg  = 10             (It's hardcoded in the kernel - the default is much higher)

semmsl  = 250            (To verify, execute: cat /proc/sys/kernel/sem | awk '{print $1}')
semmns  = 32000          (To verify, execute: cat /proc/sys/kernel/sem | awk '{print $2}')
semopm  = 100            (To verify, execute: cat /proc/sys/kernel/sem | awk '{print $3}')
semmni  = 128            (To verify, execute: cat /proc/sys/kernel/sem | awk '{print $4}')

file-max = 65536         (To verify, execute: cat /proc/sys/fs/file-max)

ip_local_port_range = 1024 65000 
                         (To verify, execute: cat /proc/sys/net/ipv4/ip_local_port_range)

NOTE: Do not change the value of any kernel parameter on a system where it is already higher than listed as minimum requirement.

On RHEL AS 4 x86, RHEL AS 3 U5 x86, RHEL AS 3 U5 x86_64, RHEL AS 2.1, RH9, FC1, FC3, and FC4 I had to increase the kernel parameters shmmax, semopm, and filemax to meet the minimum requirement. On RHEL AS 4 x86_64 I had to increase shmmax and semopm.

Oracle also recommends to set the local port range ip_local_port_range for outgoing messages to "1024 65000" which is needed for high-usage systems. This kernel parameter defines the local port range for TCP and UDP traffic to choose from.

I added the following lines to the /etc/sysctl.conf file which is used during the boot process:
kernel.shmmax=2147483648
kernel.sem=250 32000 100 128
fs.file-max=65536
net.ipv4.ip_local_port_range=1024 65000
Adding these lines to the /etc/sysctl.conf file will cause the system to change these kernel parameters after each boot using the /etc/rc.d/rc.sysinit script which is invoked by /etc/inittab. But in order that these new added lines or settings in /etc/sysctl.conf become effective immediately, execute the following command:
su - root
sysctl -p

Starting with 10g R2 some network settings must be adjusted as well which is checked by OUI. For more information on setting these parameters, see
Changing Network Kernel Settings.

For more information on shmmax, shmmni, shmmin, shmseg, and shmall, see Setting Shared Memory.
For more information on semmsl, semmni, semmns, and semopm, see Setting Semaphores.
For more information on filemax, see Setting File Handles.

Sizing Disk Space for Oracle10g

Oracle says that about 2.5 GB of disk space should be reserved for the Oracle software on Linux.

When I did an Oracle 10g Release 1 (10.1.0.3.0) "General Purpose Database" installation (not including any software from the Oracle Database 10g Companion CD), the Oracle software used about 1.3 GB of disk space, and the preconfigured "General Purpose Database" (datafiles, etc.) used about 710 MB of disk space.
$ du -m -s /u01
1963    /u01
$ du -m -s /u01/app/oracle/oradata
720     /u01/app/oracle/oradata
If you also install additional software from the Oracle Database 10g Companion CD, then add at least 1 GB of free disk space.

So if you install Oracle10g Enterprise Edition and additional software from the Oracle Database 10g Companion CD, then you need about 2.5 GB of disk for the Oracle software. And if you also want to add a preconfigured database on the same filesystem, make sure to add another 1 GB of disk space.

NOTE: If you don't put Oracle10g on a separate filesystems, then make sure the root filesystem "/" has enough disk space. You can check the free space of the root filesystem with the following command:
df -h /

Using Automatic Storage Management (ASM)

For more information on installing and configuring ASM, see Installing and Configuring Automatic Storage Management (ASM) and Disks. And for information on how to make use of ASM disk groups when running OUI, see Installing Oracle Database 10g with Real Application Cluster (RAC).

Creating Oracle User Accounts

To create the oracle account and groups, execute the following commands:
su - root
groupadd dba          # group of users to be granted SYSDBA system privilege
groupadd oinstall     # group owner of Oracle files
useradd -c "Oracle software owner" -g oinstall -G dba oracle
passwd oracle
For more information on the "oinstall" group account, see
When to use "OINSTALL" group during install of oracle.

Setting Shell Limits for the Oracle User

Most shells like Bash provide control over various resources like the maximum allowable number of open file descriptors or the maximum number of processes available to a user. For more information on ulimit for the Bash shell, see man bash and search for ulimit.

If you just install a small test database, then you might be ok with the current settings (note that the limits very often vary). But for (larger) production databases, you should increase the following shell limits to the following values recommended by Oracle:
nofile = 65536     (To verify, execute: ulimit -n)
nproc  = 16384     (To verify, execute: ulimit -u)
The nofile option denotes the maximum number of open file descriptors, and nproc denotes the maximum number of processes available to a single user.

To see all shell limits, execute:
ulimit -a

The following procedures/links show how to increase these parameters for the oracle user account:

For more information on nofile and how to increase the limit, see
Setting Limits for the Maximum Number of Open File Descriptors for the Oracle User. Even though this procedure was written for Oracle9i on RHAS 2.1, it also applies to Oracle10g on RHEL AS 2.1, RHEL AS 3, and other versions.

For more information on nproc and how to increase the limit, see Setting Limits for the Maximum Number of Processes for the Oracle User. Even though this procedure was written for Oracle9i on RHAS 2.1, it also applies to Oracle10g on RHEL AS 2.1, RHEL AS 3, and other versions.

Creating Oracle Directories

For Oracle10g you only need to create the directory for $ORACLE_BASE:
su - root
mkdir -p /u01/app/oracle
chown oracle.oinstall /u01/app/oracle

But if you want to comply with Oracle's Optimal Flexible Architecture (OFA), then you don't want to place the database files in the /u01 directory but in another directory/filesystem/disk like /u02. This is not a requirement but if you want to comply with OFA, then you might want to create the following directories as well:
su - root
mkdir -p /u02/oradata/orcl
chown oracle.oinstall /u02/oradata/orcl
In this example, "orcl" stands for the name of the database which will also be the name of the instance. This is typically the case for single instance databases.


Optimal Flexible Architecture (OFA) for 10g R1 (10.1.0.2)

The OFA standard is a guideline created by Oracle to ensure reliable Oracle installations. For Oracle 10g Database, the OFA recommended Oracle home path has changed.

The home path for the first 10g (10.1.0) database installation on a system would be:
  /u01/app/oracle/product/10.1.0/db_1
If you would install a second Oracle 10g Database 10g (10.1.0) on the same system, the Oracle home directory would be as follows:
  /u01/app/oracle/product/10.1.0/db_2
If the Oracle10g software is not owned by the user oracle but by the user "oraowner", then the path of the Oracle home directory would be:
  /u01/app/oraowner/product/10.1.0/db_1
  /u01/app/oraowner/product/10.1.0/db_2
The standard directory name for Oracle10g is "app":
  /u01/app/oracle/product/10.1.0/db_1

Oracle recommends to use mount points such as /u01, /u02, etc. which complies with the OFA guidelines. But others can be used, for example:
  /disk_1/app/oracle/product/10.1.0/db_1

The subtree for database files not stored in ASM disk groups should be named as follows:
  /u02/oradata/<db_name_1>
  /u02/oradata/<db_name_2>
  /u03/oradata/<db_name_1>
  /u03/oradata/<db_name_2>
The mount point /u01 should be used for the Oracle software only. /u02, /u03, /u04 etc. should be used for the database files. The db_name stands for the DB_NAME initialization parameter which is typically the same as the SID name for single instance databases.

Setting Oracle Environments

Since the Oracle Universal Installer (OUI) "runInstaller" is run from the oracle account, some environment variables must be configured for this account before OUI is started.

Execute the following commands for the Bash shell which is the default shell on Red Hat Linux (to verify your shell run: echo $SHELL):
su - oracle
export ORACLE_BASE=/u01/app/oracle
export ORACLE_SID=orcl

NOTE: If ORACLE_BASE is used, then Oracle recommends that you don't set the ORACLE_HOME environment variable but that you choose the default path suggested by the OUI. You can set and use ORACLE_HOME after you finished running OUI.

Also, the environment variables ORACLE_HOME and TNS_ADMIN should not be set. If you've already set these environment variables, you can unset them by running the following commands:
unset ORACLE_HOME
unset TNS_ADMIN

To have these environment variables set automatically each time you login as oracle, you can add these environment variables to the ~oracle/.bash_profile file which is the user startup file for the Bash shell on Red Hat Linux. To do this you could simply copy/paste the following commands to make these settings permanent for your oracle's Bash shell:
su - oracle
cat >> ~oracle/.bash_profile << EOF
export ORACLE_BASE=/u01/app/oracle
export ORACLE_SID=orcl
EOF

Installing Oracle10g

Installing Oracle10g on a Remote Linux Server

If you don't install Oracle on your local system but on a remote server, then you need to relink X to your local desktop. The easiest way to do this is to use the "X11 forwarding" feature of ssh. This means that you don't have to run xhost and set the DISPLAY environment variable.

Here is an example how to make use of the "X11 forward" feature of ssh. Simply run the following command from your local desktop:
$ ssh -X oracle@oracle_remote_server_name
Now when you try to run any GUI tool on the remote server, it will automatically be relinked to your local desktop. If this is not working, verify that the ForwardX11 setting is not set to "no" in /etc/ssh/ssh_config on the remote server:
su - root
# grep ForwardX11 /etc/ssh/ssh_config | grep -v "^#"
        ForwardX11 yes
#
If you are using telnet, however, you will have to set DISPLAY manually, see my other article
Starting runInstaller for more information.


Starting Oracle Universal Installer

Insert the Oracle CD that contains the image of the downloaded file ship.db.lnx32.cpio, or change to the directory that contains the image directory Disk1.

If you install Oracle10g from a CD, mount the CD by running the following commands in another terminal:
su - root
mount /mnt/cdrom
For RHEL AS 4, RHEL AS 3, and FC3 you have to execute:
su - root
mount /media/cdrom

Before you execute runInstaller, make sure the Oracle environment variables are set, see
Setting Oracle Environments. You can verify the settings by running the set command:
su - oracle
oracle$ set

To execute runInstaller from the mounted CD, run the following command as the oracle user:
oracle$ /mnt/cdrom/runInstaller
On RHEL AS 4, RHEL AS 3, and FC3 run the following command:
oracle$ /media/cdrom/runInstaller


Using Oracle Universal Installer (OUI)

The following example shows how to install x86 Oracle 10g Release 1 Database Software and a "General Purpose" database:
(Note, the screens and questions will look different if you install 10g R2 or 64-bit 10g R1 database)
 - Welcome Screen:
                     - Basic Installation:       Checked it which is the default
                     - Oracle Home Location:     Use default: /u01/app/oracle/product/10.1.0/db_1
                     - Installation Type:        I used the default: Enterprise Edition
                     - UNIX DBA Group:           Use default: dba
                     - Create Starter Databases: I checked it for this example which is the default
                       - Global Database Name:     orcl
                       - Database password:        Type in the password for SYS, SYSTEM, SYSMAN, and DBSNMP accounts
                     - Advanced Installation:    For this article I did not check it
                     Click Next

 - Specify Inventory directory and credentials:
                     - Full path of the inventory directory: Use default: /u01/app/oracle/oraInventory
                     - Specify Operating System group name:  Use default: oinstall
                     Click Next

 - A window pops up to run the orainstRoot.sh script:
                     Run the script in another terminal:
                       su - root
                       # /u01/app/oracle/oraInventory/orainstRoot.sh
                       Creating the Oracle inventory pointer file (/etc/oraInst.loc)
                       Changing groupname of /u01/app/oracle/oraInventory to oinstall.
                       #
                     Click Continue

 - Product-specific Prerequisite Checks:
                     Verify that all checks have been passed.
                     Make sure that the status of each Check is set to "Succeeded".
                     On RHEL AS 4 ignore the warnings for binutils, gcc, and openmotif and proceed.
                     If a check failed, see Oracle10g Installation Errors on Linux.
                     Note that the "Retry" button doesn't work after you fixed one of the failed checks.
                     Click Next

 - Select Database Configuration:
                     I selected "General Purpose".
                     Click Next

 - Specify Database Configuration Options:
                     - Global Database Name: I used "orcl".
                     - SID: I used "orcl".
                     Click Next

 - Select Database Management Option:
                     I selected "Use Database Control for Database Management".
                     Click Next

 - Specify Database File Storage Option:
                     I selected "File System".
                     - File System
                       - Specify Database file location: /u01/app/oracle/oradata/
                           If you want to comply with OFA, you might want to select another mount point
                           than '/u01', e.g. /u02/oradata.
                     Click Next

 - Specify Backup and Recovery Options:
                     For my test installation I selected "Do no enable Automated Backups".
                     Click Next

 - Specify Database Schema Passwords:
                     Make sure that the password(s) don't start with a digit number! Otherwise you
                     will later get error message(s) like "ORA-00988 missing or invalid password".
                     Click Next

 - Summary:          Click Install

                     If Enterprise manager configuration fails due to port allocation problems,
                     check out Oracle10g/Linux Errors and Problems.


                     When a window pops up to run the root.sh script, execute the script
                     in another terminal as root:

                       su - root
                       # /u01/app/oracle/product/10.1.0/db_1/root.sh
                       Running Oracle10 root.sh script...
                       \nThe following environment variables are set as:
                           ORACLE_OWNER= oracle
                           ORACLE_HOME=  /u01/app/oracle/product/10.1.0/db_1

                       Enter the full pathname of the local bin directory: [/usr/local/bin]:
                          Copying dbhome to /usr/local/bin ...
                          Copying oraenv to /usr/local/bin ...
                          Copying coraenv to /usr/local/bin ...

                       \nCreating /etc/oratab file...
                       Adding entry to /etc/oratab file...
                       Entries will be added to the /etc/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.
                       /var/opt/oracle does not exist. Creating it now.
                       /etc/oracle does not exist. Creating it now.
                       Successfully accumulated necessary OCR keys.
                       Creating OCR keys for user 'root', privgrp 'root'..
                       Operation successful.
                       Oracle Cluster Registry for cluster has been initialized

                       Adding to inittab
                       Checking the status of Oracle init process...
                       Expecting the CRS daemons to be up within 600 seconds.
                       CSS is active on these nodes.
                               mars
                       CSS is active on all nodes.
                       Oracle CSS service is installed and running under init(1M)
                       #

                     Click OK

 - End of Installation:
                     Click Exit


Updates after Running Oracle Universal Installer

After Oracle10g has been installed, make sure that ORACLE_HOME, PATH, and LD_LIBRARY_PATH are set for the oracle account.

Note that the path for ORACLE_HOME might be different on your system!
Also note that LD_LIBRARY_PATH is needed for some Oracle binaries such as sysresv!

For 10g R1 (10.1.0.3) I added the following lines to the ~oracle/.bash_profile file:
export ORACLE_HOME=$ORACLE_BASE/product/10.1.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin 
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
For 10g R2 (10.2.0.1.0) I added the following lines to the ~oracle/.bash_profile file:
export ORACLE_HOME=$ORACLE_BASE/oracle/product/10.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
After that run the following command to set all environment variables in ~oracle/.bash_profile:
$ . ~oracle/.bash_profile
This commmand will add the environment variables to the ~oracle/.profile and source in the file for the current shell by executing ". ~oracle/.bash_profile".

NOTE: Do not add a trailing "/" on the ORACLE_HOME environment variable. Otherwise you will get the error "ORACLE not available" when you try to connect to sys, see
Oracle10g/Linux Errors and Problems for more information.

Oracle Post-installation Tasks

Before you continue, make sure you followed the steps at Updates after Running Oracle Universal Installer.


Startup and Shutdown of the Oracle10g Database

To startup the database:
oracle$ sqlplus /nolog
SQL> connect / as sysdba
SQL> startup
To shutdown the database:
oracle$ sqlplus /nolog
SQL> connect / as sysdba
SQL> shutdown
The slash connects you to the schema owned by SYS. In the above example you will be connected to the schema owned by SYS with the privilege SYSDBA. SYSDBA gives you the following privileges:
  - sysoper privileges WITH ADMIN OPTION
  - create database
  - recover database until


Shutdown of other Oracle 10g Background Processes

If you installed a preconfigured database using OUI, then several Oracle background processes are now running on your server. Execute the following command to see the background processes:
ps -ef

To shutdown the Oracle background processes after an Oracle Database 10g installation, you can execute the following commands:

  • iSQL*Plus
      To stop iSQL*Plus, run:
      su - oracle
      isqlplusctl stop
  • Database Management Processes
      During the installation of Oracle 10g, OUI offered two Database Management Options:

      If you selected "Database Control for Database Management", then the Oracle Enterprise Manager Database Control (Database Control) can be shutdown with the following command which stops both the agent and the Oracle Containers for Java (OC4J) management service:
      su - oracle
      emctl stop dbconsole
      If you selected "Grid Control for Database Management" which is used for full "Grid Control" installations, then the Oracle Management Agent (standalone agent) for the Oracle Enterprise Manager Grid Control (Grid Control) can be stopped with the following command:
      su - oracle
      emctl stop agent
  • Oracle Net Listener
      To stop the listener, run:
      su - oracle
      lsnrctl stop
  • Cluster Synchronization Services (CSS)
      To shutdown Oracle CSS daemon, run:
      su - root
      /etc/rc.d/init.d/init.cssd stop

    Tips and Hints for Oracle10g on Linux

  • To reinstall Oracle10g after a failed installation attempt, you might want to execute the following commands.
      Make sure you first used the De-installation option in OUI.
      su - root
      
      export ORACLE_HOME=/u01/app/oracle/product/10.1.0/db_1
      . $ORACLE_HOME/bin/localconfig delete    # stops the Oracle CSS daemon and deletes configuration
      
      rm -rf /u01/app/oracle/*
      
      rm -f /etc/oraInst.loc /etc/oratab
      rm -rf /etc/oracle
      rm -f /etc/inittab.cssd
      rm -f /usr/local/bin/coraenv /usr/local/bin/dbhome /usr/local/bin/oraenv
      
      Make also sure to unset and uncomment ORACLE_HOME from ~oracle/.bash_profile.

    Oracle10g/Linux Errors and Problems

    Here is a list of common Oracle10g installation problems and other issues.

    Note that most of the issues are due to not following correctly the installation procedure. And some errors are due to not using an Oracle supported Linux OS.

    The Installation log file can be found in $ORACLE_BASE/oraInventory/logs.
    The Database Creation log file can be found in $ORACLE_BASE/admin/$ORACLE_SID/create.

    
    
  • Starting Oracle Universal Installer... Checking installer requirements... Checking operating system version: must be redhat-2.1, UnitedLinux-1.0 or redhat-3 Failed <<<< Exiting Oracle Universal Installer, log for this session can be found at ...
    • See Checking/Updating the redhat-release File for more information.
    
    
  • Checking for gcc-2.96; found Not found. Failed <<<<
    • See Checking Software Packages (RPMs) for more information.

      Note that "Retry" in the "Product-specific Prerequisite Checks" window does not work. So you either set it manually to Passed or you restart OUI.
    
    
  • Checking for openmotif-2.1.30-11; found Not found. Failed <<
    • See Checking Software Packages (RPMs) for more information.

      Note that "Retry" in the "Product-specific Prerequisite Checks" window does not work. So you either set it manually to Passed or you restart OUI.
    
    
  • Checking for shmmax=2147483648; found shmmax=33554432. Failed <<<<
    • Increase the shmmax kernel parameter.

      For more information on shmmax, see Checking Kernel Parameters.

      Note that "Retry" in the "Product-specific Prerequisite Checks" window does not work. So you either set it manually to Passed or you restart OUI.
    
    
  • Checking for semopm=100; found semopm=32. Failed <<<<
    • Increase the semopm kernel parameter.

      For more information on semopm, see Checking Kernel Parameters.

      Note that "Retry" in the "Product-specific Prerequisite Checks" window does not work. So you either set it manually to Passed or you restart OUI.
    
    
  • Checking for filemax=65536; found filemax=26163. Failed <<<<
    • Increase the file-max kernel parameter:

      For more information on file-max, see Checking Kernel Parameters.

      Note that "Retry" in the "Product-specific Prerequisite Checks" window does not work. So you either set it manually to Passed or you restart OUI.
    
    
  • ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist Linux Error: 2: No such file or directory or ORA-01034: ORACLE not available
    • First check if ORACLE_SID is set correctly.
      If ORACLE_SID is set correctly, then you probably have a trailing slash "/" on the ORACLE_HOME environment variable. Remove it and try again to connect to sys (e.g from ORACLE_HOME=/u01/app/oracle/product/10.1.0/db_1/ to ORACLE_HOME=/u01/app/oracle/product/10.1.0/db_1).
    
    
  • ORA-00988 missing or invalid password(s).
    • During the Oracle10g installation you probably provided a password for the Oracle database accounts that started with a digit number. Ignore this error message and change the password when you are done with the Oracle10g installation.

  • $ sysresv -i sysresv: error while loading shared libraries: libclntsh.so.10.1: cannot open shared object file: No such file or directory
    • Make sure LD_LIBRARY_PATH is set to $ORACLE_HOME/lib:
      oracle$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib

    
    
  • X11 connection rejected because of wrong authentication. X connection to localhost:10.0 broken (explicit kill or server shutdown).
    • To rectify this problem, try to login to the remote Oracle server again by using the "X11 forward" feature of ssh. Execute the following command from your local desktop:
      $ ssh -X oracle@oracle_remote_server_name
      Now when you try to run any GUI tool on the remote server, it will automatically be relinked to your local desktop. If this is not working, verify that the ForwardX11 setting is not set to "no" in /etc/ssh/ssh_config on your remote server:
      su - root
      # grep ForwardX11 /etc/ssh/ssh_config | grep -v "^#"
              ForwardX11 yes
      #
      NOTE: If you use for example Red Hat Fedora Core 3 as your desktop and you want to install the database on another machine, then you need to set the DisallowTCP entry in /etc/X11/gdm/gdm.conf for the GNOME Display Manager to read:
      DisallowTCP=false
      After that you need to restart your X server. I usually do this with the init command:
      su - root
      init 3
      init 5
      
      If you are using telnet, however, you will have to set DISPLAY manually, see my other article Starting runInstaller for more information.

  • Recovery Manager rman hangs
      You are probably running the wrong rman binary which belongs to the XFree86-devel RPM:
      $ which rman
      /usr/X11R6/bin/rman
    
    
  • ORA-00988 missing or invalid password(s).
    • During the Oracle10g installation you probably provided a password for the Oracle database accounts that started with a digit number. Ignore this error message and change the password when you are done with the Oracle10g installation.

  • $ ./runInstaller ... Exception java.lang.UnsatisfiedLinkError: /tmp/OraInstall2005-06-15_07-36-25AM/jre/1.4.2/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory occurred.. java.lang.UnsatisfiedLinkError: /tmp/OraInstall2005-06-15_07-36-25AM/jre/1.4.2/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1560) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1477) ...
    • You may get this error message on RHEL3 x86_64, RHEL4 x86_64, and on other systems. Even though you most probably have /usr/X11R6/lib64/libXp.so.6 installed on your system, this error messages is complaining that it can't find the libXp.so.6 shared library for i386:
       /tmp/OraInstall2005-06-15_07-36-25AM/jre/1.4.2/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory
      
      
      On my RHEL3 x86_64 system for 10g (10.1.0.3) I had to install the i386 XFree86-libs package (XFree86-libs-4.3.0-81.EL.i386.rpm). In order to satisfy dependencies for this i386 package, I had to install a few other i386 RPMs as well:
      # rpm -ivh XFree86-libs-4.3.0-81.EL.i386.rpm \
            XFree86-Mesa-libGL-4.3.0-81.EL.i386.rpm \
            expat-1.95.5-6.i386.rpm \
            fontconfig-2.2.1-13.i386.rpm \
            freetype-2.1.4-4.0.i386.rpm \
            zlib-1.1.4-8.1.i386.rpm
      
      
      On my RHEL4 x86_64 U1 system for 10g (10.1.0.3) I had to install the i386 xorg-x11-deprecated-libs package (xorg-x11-deprecated-libs-6.8.2-1.EL.13.6.i386.rpm). In order to satisfy dependencies for this i386 package, I had to install a few other i386 RPMs as well:
      # rpm -Uvh xorg-x11-deprecated-libs-6.8.2-1.EL.13.6.i386.rpm \
            xorg-x11-libs-6.8.2-1.EL.13.6.i386.rpm \
            xorg-x11-Mesa-libGL-6.8.2-1.EL.13.6.i386.rpm \
            expat-1.95.7-4.i386.rpm \
            fontconfig-2.2.3-7.i386.rpm \
            freetype-2.1.9-1.i386.rpm \
            zlib-1.2.1.2-1.i386.rpm
      
      
      On my RHEL4 x86_64 U2 system for 10g R2 (10.2.0.1.0) I had to install the i386 xorg-x11-deprecated-libs package (xorg-x11-deprecated-libs-6.8.2-1.EL.13.20.i386.rpm). In order to satisfy dependencies for this i386 package, I had to install a few other i386 RPMs as well:
      rpm -Uvh xorg-x11-deprecated-libs-6.8.2-1.EL.13.20.i386.rpm \
            xorg-x11-libs-6.8.2-1.EL.13.20.i386.rpm \
            xorg-x11-Mesa-libGL-6.8.2-1.EL.13.20.i386.rpm \
            expat-1.95.7-4.i386.rpm \
            fontconfig-2.2.3-7.i386.rpm \
            freetype-2.1.9-1.i386.rpm \
            zlib-1.2.1.2-1.2.i386.rpm
      
      
      On my RHEL4 x86 U2 system for 10g R2 (10.2.0.1.0) I had to install the following RPM:
      rpm -Uvh xorg-x11-deprecated-libs-6.8.2-1.EL.13.20.i386.rpm
      
      
      If you get this error message on Fedora Core 3 x86, install the xorg-x11-deprecated-libs RPM. For example:
      # rpm -Uvh xorg-x11-deprecated-libs-6.8.1-12.FC3.21
      
      
      After I installed these RPMs I had to restart the installation. If you know a more elegant way to continue, please drop me an email.

  • make -f /u01/app/oracle/OraHome_1/sysman/lib/ins_sysman.mk relink_sharedobj SHAREDOBJ=libnmemso make[1]: Entering directory `/u01/app/oracle/OraHome_1/sysman/lib' gcc -o /u01/app/oracle/OraHome_1/sysman/lib/libnmemso.so -m32 ... ... /usr/bin/ld: crti.o: No such file: No such file or directory collect2: ld returned 1 exit status make[1]: *** [/u01/app/oracle/OraHome_1/sysman/lib/libnmemso.so] Error 1
    • You may get this error message or a similar one when installing 64-bit 10g on RHEL4 x86_64.

      On my RHEL4 U1 x86_64 system for 10g (10.1.0.3) I installed the following i386 RPM to fix this problem:
      # rpm -Uvh glibc-devel-2.3.4-2.9.i386.rpm
      On my RHEL4 U2 x86-64 system for 10g R2 (10.2.0.1.0) I installed the following i386 RPM to fix this problem:
      # rpm -Uvh glibc-devel-2.3.4-2.13.i386.rpm

  • make -f /u01/app/oracle/OraHome_1/sysman/lib/ins_sysman.mk relink_sharedobj SHAREDOBJ=libnmemso make[1]: Entering directory `/u01/app/oracle/OraHome_1/sysman/lib' gcc -o /u01/app/oracle/OraHome_1/sysman/lib/libnmemso.so -m32 ... ... /usr/bin/ld: cannot find -lgcc_s_32 collect2: ld returned 1 exit status make[1]: Leaving directory `/u01/app/oracle/OraHome_1/sysman/lib' make[1]: *** [/u01/app/oracle/OraHome_1/sysman/lib/libnmemso.so] Error 1
    • You may get this error message or a similar one when installing 64-bit 10g on RHEL4 x86_64.

      On my RHEL4 U1 x86_64 system for 10g (10.1.0.3) I installed the following i386 RPM to fix this problem:
      # rpm -Uvh libgcc-3.4.3-22.1.i386.rpm
      On my RHEL4 U2 x86_64 system for 10g R2 (10.2.0.1.0) I installed the following i386 RPM to fix this problem:
      # rpm -Uvh libgcc-3.4.4-2.i386.rpm

  • error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
    • Make sure the libaio RPM is installed.

      For example in RHEL 3 x86:
      # rpm -Uvh libaio-0.3.96-5.i386.rpm
      For example in RHEL 4 U2 x86_64:
      # rpm -Uvh libaio-0.3.103-3.x86_64.rpm

  • $ ./runInstaller ... Exception in thread "main" java.lang.UnsatisfiedLinkError: /tmp/OraInstall2005-07-24_09-03-19AM/jre/1.4.2/lib/i386/libawt.so: /tmp/OraInstall2005-07-24_09-03-19AM/jre/1.4.2/lib/i386/libawt.so: cannot restore segment prot after reloc: Permission denied at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(Unknown Source) at java.lang.ClassLoader.loadLibrary(Unknown Source) ...
    • I saw this error when I installed 10g R2 on Fedora Core 4. I fixed it by patchting/upgrading the SELinux policy:
      # rpm -Uvh selinux-policy-targeted-1.25.2-4.noarch.rpm
      
      You can download the latest selinux-policy-targeted RPM from http://download.fedora.redhat.com/pub/fedora/linux/core/updates/4/i386/.

      You could also disable SELinux which I DO NOT recommend:
      # /usr/sbin/setenforce 0
      

  • Error in invoking target 'all_no_orcl' of makefile '/u01/app/oracle/oracle/product/10.2.0/db_1/rdbms/lib/ins_rdbms.mk'. See '/u01/app/oracle/oraInventory/logs/installActions2005-11-13_01-07-04AM.log' for details.
    • The log file showed the following error:
      INFO: gcc:
      INFO: /usr/lib64/libstdc++.so.5: No such file or directory
      INFO:
      
      INFO: /u01/app/oracle/oracle/product/10.2.0/db_1/bin/genorasdksh: Failed to link liborasdkbase.so.10.2
      
      INFO: make: *** [liborasdkbase] Error 1
      
      
      On my RHEL4 U2 x86_64 system for 10g R2 (10.2.0.1.0) I installed the following x86_64 RPM to fix this problem:
      # rpm -Uvh compat-libstdc++-33-3.2.3-47.3.x86_64.rpm
      Note that you may already have the "i386" compat-libstdc++-33 RPM installed on your systems but you need the "x86_64" RPM to fix this problem. To verify which compat-libstdc++-33 RPM you have installed on your system, run:
      # rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}  (%{ARCH})\n' compat-libstdc++-33

  • Error in invoking target 'all_no_orcl ihsodbc' of makefile '/u01/app/oracle/oracle/product/10.2.0/db_1/rdbms/lib/ins_rdbms.mk'. See '/u01/app/oracle/oraInventory/logs/installActions2005-07-24_09-25-22AM.log' for details.
    • The log file showed the following error:
      INFO: Creating /u01/app/oracle/oracle/product/10.2.0/db_1/lib/liborasdkbase.so.10.2
      
      INFO: gcc:
      INFO: /usr/lib/libstdc++.so.5: No such file or directory
      INFO:
      
      INFO: /u01/app/oracle/oracle/product/10.2.0/db_1/bin/genorasdksh: Failed to link liborasdkbase.so.10.2
      
      
      This means that the "33" version of the compat-libstdc++ RPM is missing.

      On my RHEL 4 U2 x86 system for 10g R2 (10.2.0.1.0) I installed the following RPM to fix this problem:
      # rpm -Uvh compat-libstdc++-33-3.2.3-47.3.i386.rpm
      
      NOTE: You need the "33" version of the compat-libstdc++ RPM. For i386 there is also a "296" version of the compat-libstdc++ RPM. Here are the two compat-libstdc++ RPMs that come with RHEL 4 U2:
      compat-libstdc++-296-2.96-132.7.2.i386.rpm
      compat-libstdc++-33-3.2.3-47.3.i386.rpm
      
      
      In Fedora Core 4 x86 I installed the following RPM to fix this problem:
      # rpm -Uvh compat-libstdc++-33-3.2.3-47.fc4.i386.rpm
      
      NOTE: You need the "33" version of the compat-libstdc++ RPM. For i386 there is also a "296" version of the compat-libstdc++ RPM. Here are the two compat-libstdc++ RPMs that come with FC4:
      compat-libstdc++-296-2.96-132.fc4.i386.rpm
      compat-libstdc++-33-3.2.3-47.fc4.i386.rpm
      
      
      After that hit Retry in the error dialog window.

  • Error in invoking target 'all_no_orcl' of makefile '/u01/app/oracle/oracle/product/10.2.0/db_1/rdbms/lib/ins_rdbms.mk'. See '/u01/app/oracle/oraInventory/logs/installActions2005-11-13_01-25-49AM.log' for details.
    • The log file showed the following error:
      INFO: /usr/bin/ld: /u01/app/oracle/oracle/product/10.2.0/db_1/lib/libirc.a(fast_memcpy.o): 
          relocation R_X86_64_PC32 against `_memcpy_mem_ops_method' can not be used when making a shared object; recompile with -fPIC
      /usr/bin/ld: final link failed: Bad value
      collect2: ld returned 1 exit status
      
      INFO: /u01/app/oracle/oracle/product/10.2.0/db_1/bin/genorasdksh: Failed to link liborasdkbase.so.10.2
      
      
      This error comes up when installing 10g R2 (10.2.0.1.0) on RHEL4 x86_64. Make sure to upgrade to RHEL4 U3 or to download the binutils RPM from https://rhn.redhat.com/ or from http://oss.oracle.com/projects/compat-oracle/files/RedHat/:
      # rpm -Uvh --force binutils-2.15.92.0.2-13.0.0.0.2.x86_64.rpm
      For more information on this bug, see Bugzilla Bug 679.

  • ORA-12547: TNS:lost contact
    • There can be many reasons for this error. For example, this can happen during ASM instance startup when the libaio RPM is not installed on the system.

  • $ lsnrctl start ... Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC))) TNS-12547: TNS:lost contact TNS-12560: TNS:protocol adapter error TNS-00517: Lost contact Linux Error: 104: Connection reset by peer Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=centauri)(PORT=1521))) TNS-12547: TNS:lost contact TNS-12560: TNS:protocol adapter error TNS-00517: Lost contact Linux Error: 104: Connection reset by peer
    • Make sure the loopback entry in /etc/hosts is not missing when you start the listener:
      127.0.0.1       localhost.localdomain   localhost
      Now try to run lsnrctl start as oracle again.

    References

    Oracle Database Documentation Library
    Werner's Oracle Linux Page
  • Copyright © 2007 puschitz.com


    Trackback 1 Comment 0
    2009. 6. 6. 21:53

    SYSLINUX - bootloaders for FAT filesystems

    728x90

    What is SYSLINUX?

    SYSLINUX is a boot loader for the Linux operating system which operates off an MS-DOS/Windows FAT filesystem. It is intended to simplify first-time installation of Linux, and for creation of rescue- and other special-purpose boot disks.

    SYSLINUX can be used, when properly set up, to completely eliminate the need for distribution of raw diskette images for boot floppies. A SYSLINUX floppy can be manipulated using standard MS-DOS (or any other OS that can access an MS-DOS filesystem) tools once it has been created.


    Options

    These are the options common to all versions of the SYSLINUX installer:

    	-s	Safe, slow, stupid: uses simpler code that boots better. 
    		  This version may work on some very buggy BIOSes on which SYSLINUX would otherwise fail. 
    		  If you find a machine on which the -s option is required to make it boot reliably, 
    		  please send as much info about your machine as you can, and include the failure mode.
    	-f	Force installing.
    	-r	Raid mode:
    		  If boot fails, tell the BIOS to boot the next device in the boot sequence
    		  (usually the next hard disk), instead of stopping with an error message.
    		  This is useful for RAID-1 booting.
    

    These are only available in the Windows version:

    	-m	MBR: install a bootable MBR sector to the beginning of the drive.
    	-a	Active: marks the partition used active (=bootable)
    

    This is can only be used in the linux version:

    	-o      Specifies the byte offset of the filesystem image in the file.
    		  It has to be used with a disk image file.
    

    Creating a Bootable Disk

    Installing SYSLINUX to the disk will alter the boot sector on the disk and copy a file named LDLINUX.SYS into its root directory.

    On boot time, by default, the kernel will be loaded from the image named LINUX on the boot disk. This default can be changed, see the section on the SYSLINUX config file.

    If the Shift or Alt keys are held down during boot, or the Caps or Scroll locks are set, SYSLINUX will display a LILO-style "boot:" prompt. The user can then type a kernel file name followed by any kernel parameters. The SYSLINUX loader does not need to know about the kernel file in advance; all that is required is that it is a file located in the root directory on the disk.

    In order to create a bootable disk using SYSLINUX, prepare a normal MS-DOS formatted disk. Copy one or more Linux kernel files to it, then execute:


    NT/2K/XP

    Syntax:
    syslinux.exe [-sfmar][-d directory] <drive>: [bootsecfile]
    Floppy: (a: in this example)
    syslinux.exe a:
    HardDrive/FlashDrive/etc: (z: in this example)
    syslinux.exe -m -a -d /boot/syslinux z:
    * In the above example syslinux.cfg would be expected to be in z:\boot\syslinux
    * NOTE: Under NT/2K you may get a dialog box about not getting exclusive access and with Abort/Retry/Ignore buttons; selecting "Ignore" makes the command complete correctly.

    DOS

    Syntax:
    syslinux.com [-sfmar][-d directory] <drive>: [bootsecfile]
    Example:
    syslinux.com a:

    Linux

    Syntax:
    syslinux [-sfr][-d directory][-o offset] <DeviceOrImage>
    Example:
    syslinux /dev/fd0

    The -o option (if specified) is used with a disk image file and specifies the byte offset of the filesystem image in the file.


    How do I Configure SYSLINUX?

    All the configurable defaults in SYSLINUX can be changed by putting a file called syslinux.cfg.

    SYSLINUX searches for the SYSLINUX.CFG file in the following order:

    /boot/syslinux/syslinux.cfg
    /syslinux/syslinux.cfg
    /syslinux.cfg

    All filenames inside the config file are assumed to be relative to the same directory than the directory in which SYSLINUX.CFG resides, unless preceded with a slash or backslash.

    This syslinux.cfg file is a text file in either UNIX or DOS format, containing one or more of the keywords listed below. Case is insensitive for keywords; upper case is used here to indicate that a word should be typed verbatim.

    Here is a simple example syslinux.cfg file, with one entry to boot a Linux kernel:

     DEFAULT linux
     LABEL linux
     SAY Now booting the kernel from SYSLINUX...
     KERNEL vmlinuz.img
     APPEND ro root=/dev/sda1 initrd=initrd.img
    

    Note that while LILO uses the syntax:

    image = mykernel
      label = mylabel
      append = "myoptions"
    

    ... whereas SYSLINUX uses the syntax:

    label mylabel
      kernel mykernel
      append myoptions
    

    All options here applies to PXELINUX, ISOLINUX and EXTLINUX as well as SYSLINUX unless otherwise noted.

    INCLUDE filename

    Inserts the contents of another file at this point in the configuration file. Files can currently be nested up to 16 levels deep, but it is not guaranteed that more than 8 levels will be supported in the future.

    LABEL command

    Select a human-readable string to describe a kernel and other options. The default LABEL is called "linux", but you can change this with the "DEFAULT" keyword.

    Labels are mangled as if they were filenames, and must be unique after mangling. For example, two labels "v2.1.30" and "v2.1.31" will not be distinguishable under SYSLINUX, since both mangle to the same DOS filename.

    KERNEL file

    Select the file that SYSLINUX will boot. The "kernel" doesn't have to be a Linux kernel; it can be a boot sector or a COMBOOT file.

    Chain loading requires the boot sector of the foreign operating system to be stored in a file in the root directory of the filesystem. Because neither Linux kernels, boot sector images, nor COMBOOT files have reliable magic numbers, Syslinux will look at the file extension. The following extensions are recognized (case insensitive):

     none or other	Linux kernel image
     .0		PXE bootstrap program (NBP) [PXELINUX only]
     .bin		"CD boot sector" [ISOLINUX only]
     .bs		Boot sector [SYSLINUX only]
     .bss		Boot sector, DOS superblock will be patched in [SYSLINUX only]
     .c32		COM32 image (32-bit COMBOOT)
     .cbt		COMBOOT image (not runnable from DOS)
     .com		COMBOOT image (runnable from DOS)
     .img		Disk image [ISOLINUX only]
    

    Using one of these keywords instead of KERNEL forces the filetype, regardless of the filename:

    LINUX image

    You can use this, instead of using KERNEL file to boot an linux kernel image.

    BOOT image

    Bootstrap program (.bs, .bin)

    BSS image

    BSS image (.bss)

    PXE image

    PXE Network Bootstrap Program (.0)

    FDIMAGE image

    Floppy disk image (.img)

    COMBOOT image

    COMBOOT program (.com, .cbt)

    COM32 image

    COM32 program (.c32)

    CONFIG image

    CONFIG will restart the boot loader using a different configuration file.


    APPEND options...

    Add one or more options to the kernel command line. These are added both for automatic and manual boots. The options are added at the very beginning of the kernel command line, usually permitting explicitly entered kernel options to override them. This is the equivalent of the LILO "append" option.

    APPEND -

    Append nothing. APPEND with a single hyphen as argument in a LABEL section can be used to override a global APPEND.

    IPAPPEND flag_val [PXELINUX only]

    The IPAPPEND option is available only on PXELINUX. The flag_val is an OR of the following options:

    1: indicates that an option of the following format should be generated and added to the kernel command line:

    ip=<client-ip>:<boot-server-ip>:<gw-ip>:<netmask>
    

    ... based on the input from the DHCP/BOOTP or PXE boot server.

    The use of this option is not recommended. If you have to use it, it is probably an indication that your network configuration is broken. Using just ip=dhcp on the kernel command line is a preferrable option, or, better yet, run dhcpcd/dhclient, from an initrd if necessary.

    2: indicates that an option of the following format should be generated and added to the kernel command line:

    BOOTIF=<hardware-address-of-boot-interface>
    

    ... in dash-separated hexadecimal with leading hardware type (same as for the configuration file; see PXELINUX documentation).

    This allows an initrd program to determine from which interface the system booted.

    LABEL label 
    KERNEL image
     APPEND options...
     IPAPPEND flag_val [PXELINUX only] 
     Indicates that if "label" is entered as the kernel to boot, SYSLINUX should instead boot "image", and the specified APPEND and IPAPPEND options should be used instead of the ones specified in the global section of the file (before the first LABEL command.) The default for "image" is the same as "label", and if no APPEND is given the default is to use the global entry (if any). Up to 128 LABEL entries are permitted. (for ISOLINUX, 64 LABEL entries.) 
    

    LOCALBOOT type [ISOLINUX, PXELINUX]

    On PXELINUX, specifying "LOCALBOOT 0" instead of a "KERNEL" option means invoking this particular label will cause a local disk boot instead of booting a kernel.

    The argument 0 means perform a normal boot. The argument 4 will perform a local boot with the Universal Network Driver Interface (UNDI) driver still resident in memory. Finally, the argument 5 will perform a local boot with the entire PXE stack, including the UNDI driver, still resident in memory. All other values are undefined. If you don't know what the UNDI or PXE stacks are, don't worry -- you don't want them; just specify 0.

    On ISOLINUX, the "type" specifies the local drive number to boot from; 0x00 is the primary floppy drive and 0x80 is the primary hard drive. The special value -1 causes ISOLINUX to report failure to the BIOS, which, on recent BIOSes, should mean that the next boot device in the boot sequence should be activated.

    INITRD initrd_file

    Starting with version 3.71, an initrd can be specified in a separate statement (INITRD) instead of as part of the APPEND statement; this functionally appends "initrd=initrd_file" to the kernel command line.

    It supports multiple filenames separated by commas. This is mostly useful for initramfs, which can be composed of multiple separate cpio or cpio.gz archives. Note: all files except the last one are zero-padded to a 4K page boundary. This should not affect initramfs.


    DEFAULT command

    Sets the default command line. If SYSLINUX boots automatically, it will act just as if the entries after DEFAULT had been typed in at the "boot:" prompt, except that the option "auto" is automatically added, indicating an automatic boot.

    If no configuration file is present, or no DEFAULT entry is present in the config file, the default is kernel name "linux", with no options.

    UI module options...

    Selects a specific user interface module (typically menu.c32 or vesamenu.c32). The command-line interface treats this as a directive that overrides the DEFAULT and PROMPT directives.

    PROMPT flag_val

    If flag_val is 0, display the boot: prompt only if the Shift or Alt key is pressed, or Caps Lock or Scroll lock is set (this is the default). If flag_val is 1, always display the boot: prompt.

    NOESCAPE flag_val

    If flag_val is set to 1, ignore the Shift/Alt/Caps Lock/Scroll Lock escapes. Use this (together with PROMPT 0) to force the default boot alternative.

    NOCOMPLETE flag_val

    If flag_val is set to 1, the Tab key does not display labels at the boot: prompt.

    IMPLICIT flag_val

    If flag_val is 0, do not load a kernel image unless it has been explicitly named in a LABEL statement. The default is 1.

    ALLOWOPTIONS flag_val

    If flag_val is 0, the user is not allowed to specify any arguments on the kernel command line. The only options recognized are those specified in an APPEND statement. The default is 1.

    TIMEOUT timeout

    Indicates how long to wait at the boot: prompt until booting automatically, in units of 1/10 s. The timeout is cancelled as soon as the user types anything on the keyboard, the assumption being that the user will complete the command line already begun. A timeout of zero will disable the timeout completely, this is also the default.

    NOTE: The maximum possible timeout value is 35996; corresponding to just below one hour.

    TOTALTIMEOUT timeout

    Indicates how long to wait until booting automatically, in units of 1/10 s. This timeout is *not* cancelled by user input, and can thus be used to deal with serial port glitches or "the user walked away" type situations. A timeout of zero will disable the timeout completely, this is also the default.

    Both TIMEOUT and TOTALTIMEOUT can be used together, for example:

    # Wait 5 seconds unless the user types something, but
    # always boot after 15 minutes.
    TIMEOUT 50
    TOTALTIMEOUT 9000
    

    ONTIMEOUT kernel options...

    Sets the command line invoked on a timeout. Normally this is the same thing as invoked by DEFAULT. If this is specified, then DEFAULT is used only if the user presses <Enter> to boot.

    ONERROR kernel options...

    If a kernel image is not found (either due to it not existing, or because IMPLICIT is set), run the specified command. The faulty command line is appended to the specified options, so if the ONERROR directive reads as:

    ONERROR xyzzy plugh 
    

    ... and the command line as entered by the user is:

    foo bar baz 
    

    ... SYSLINUX will execute the following as if entered by the user:

    xyzzy plugh foo bar baz
    

    SERIAL port [[baudrate] flowcontrol]

    Enables a serial port to act as the console. "port" is a number (0 = /dev/ttyS0 = COM1, etc.) or an I/O port address (e.g. 0x3F8); if "baudrate" is omitted, the baud rate defaults to 9600 bps. The serial parameters are hardcoded to be 8 bits, no parity, 1 stop bit.

    "flowcontrol" is a combination of the following bits:

    0x001 - Assert DTR
    0x002 - Assert RTS
    0x010 - Wait for CTS assertion
    0x020 - Wait for DSR assertion
    0x040 - Wait for RI assertion
    0x080 - Wait for DCD assertion
    0x100 - Ignore input unless CTS asserted
    0x200 - Ignore input unless DSR asserted
    0x400 - Ignore input unless RI asserted
    0x800 - Ignore input unless DCD asserted
    

    All other bits are reserved.

    Typical values are:

        0 - No flow control (default)
    0x303 - Null modem cable detect
    0x013 - RTS/CTS flow control
    0x813 - RTS/CTS flow control, modem input
    0x023 - DTR/DSR flow control
    0x083 - DTR/DCD flow control
    

    For the SERIAL directive to be guaranteed to work properly, it should be the first directive in the configuration file.

    NOTE: "port" values from 0 to 3 means the first four serial ports detected by the BIOS. They may or may not correspond to the legacy port values 0x3F8, 0x2F8, 0x3E8, 0x2E8.

    CONSOLE flag_val

    If flag_val is 0, disable output to the normal video console. If flag_val is 1, enable output to the video console (this is the default.) Some BIOSes try to forward this to the serial console and sometimes make a total mess thereof, so this option lets you disable the video console on these systems.

    FONT filename

    Load a font in .psf format before displaying any output (except the copyright line, which is output as ldlinux.sys itself is loaded.) SYSLINUX only loads the font onto the video card; if the .psf file contains a Unicode table it is ignored. This only works on EGA and VGA cards; hopefully it should do nothing on others.

    KBDMAP keymap

    Install a simple keyboard map. The keyboard remapper used is very simplistic (it simply remaps the keycodes received from the BIOS, which means that only the key combinations relevant in the default layout -- usually U.S. English -- can be mapped) but should at least help people with QWERTZ or AZERTY keyboard layouts and the locations of = and , (two special characters used heavily on the Linux kernel command line.)

    The included program keytab-lilo.pl from the LILO distribution can be used to create such keymaps. The file keytab-lilo.doc contains the documentation for this program.

    Syslinux also ships a comboot module named kbdmap.c32 which allows to change the keyboard mappings on the fly, making it possible to add a keyboard-selection menu and/or keyboard-selection labels from within the syslinux config file.

    SAY message

    Prints the message on the screen.

    DISPLAY filename

    Displays the indicated file on the screen at boot time (before the boot: prompt, if displayed). Please see the section below on DISPLAY files.

    NOTE: If the file is missing, this option is simply ignored. 
    

    F[1-12] filename

    F1 filename
    F2 filename
      ...etc...
    F9 filename
    F10 filename
    F11 filename
    F12 filename 
    

    Displays the indicated file on the screen when a function key is pressed at the boot: prompt. This can be used to implement pre-boot online help (presumably for the kernel command line options).

    Please see the section below on DISPLAY files.


    When using the serial console, press <Ctrl-F><digit> to get to the help screens:

    <Ctrl-F><1>			to get the F1 screen
    <Ctrl-F><2>			to get the F2 screen
       ...etc...
    <Ctrl-F><9>			to get the F9 screen
    <Ctrl-F><A> (or <Ctrl-F><0>)	to get the F10 screen
    <Ctrl-F><B>			to get the F11 screen
    <Ctrl-F><B>			to get the F11 screen
    <Ctrl-F><C>			to get the F12 screen


    In the configuration file blank lines and comment lines beginning with a hash mark (#) are ignored.

    Note that the configuration file is not completely decoded. Syntax different from the one described above may still work correctly in this version of SYSLINUX, but may break in a future one.


    Can SYSLINUX Handle Large Kernels?

    This version of SYSLINUX supports large kernels (bzImage format), eliminating the 500K size limit of the zImage kernel format. bzImage format kernels are detected automatically and handled transparently to the user.

    This version of SYSLINUX also supports a boot-time-loaded ramdisk (initrd). An initrd is loaded from a DOS file if the option "initrd=filename" (where filename is the filename of the initrd image; the file must be located in the root directory on the boot floppy) is present on the processed command line (after APPEND's have been added, etc.). If several initrd options are present, the last one has precedence; this permits user-entered options to override a config file APPEND. Specifying "initrd=" without a filename inhibits initrd loading. The file specified by the initrd= option will typically be a gzipped filesystem image.

    EXAMPLE (extlinux):

     append ro root=/dev/hda1 initrd=/boot/initrd.img
    

    NOTE: One of the main advantages with SYSLINUX is that it makes it very easy to support users with new or unexpected configurations, especially in a distribution setting. If initrd is used to extensively modularize the distribution kernel, it is strongly recommended that a simple way of adding drivers to the boot floppy be provided. The suggested manner is to let the initrd system mount the boot floppy and look for additional drivers in a predetermined location.

    To bzImage and recent zImage kernels, SYSLINUX 1.30 and higher will identify using the ID byte 0x31. PXELINUX identifies using the ID byte 0x32, ISOLINUX 0x33, and EXTLINUX 0x34. The ID range 0x35-0x3f is reserved for future versions of derivatives of SYSLINUX.


    What is the DISPLAY File Format?

    DISPLAY and function-key help files are text files in either DOS or UNIX format (with or without <CR>). In addition, the following special codes are interpreted:

    Clear the screen, home the cursor:

    <FF>  <FF> = <Ctrl-L> = ASCII 12
    

    Note that the screen is filled with the current display color.

    Set the display colors to the specified background and foreground colors:

    <SI><bg><fg>  <SI> = <Ctrl-O> = ASCII 15
    

    where <bg> and <fg> are hex digits, corresponding to the standard PC display attributes:

    0 = black               8 = dark grey
    1 = dark blue           9 = bright blue
    2 = dark green          a = bright green
    3 = dark cyan           b = bright cyan
    4 = dark red            c = bright red
    5 = dark purple         d = bright purple
    6 = brown               e = yellow
    7 = light grey          f = white
    

    Picking a bright color (8-f) for the background results in the corresponding dark color (0-7), with the foreground flashing.

    Colors are not visible over the serial console.

    Example: color.txt file:

    ^O9eBlinking Yellow on Blue Background
    
    # xxd color.txt
    0000000: 0f39 6542 6c69 6e6b 696e 6720 5965 6c6c  .9eBlinking Yell
    0000010: 6f77 206f 6e20 426c 7565 2042 6163 6b67  ow on Blue Backg
    0000020: 726f 756e 640a                           round.
    

    Display graphic from filename:

    <CAN>filename<newline>  <CAN> = <Ctrl-X> = ASCII 24
    

    If a VGA display is present, enter graphics mode and display the graphic included in the specified file. The file format is an ad hoc format called LSS16; the included Perl program "ppmtolss16" can be used to produce these images. This Perl program also includes the file format specification.

    The image is displayed in 640x480 16-color mode. Once in graphics mode, the display attributes (set by <SI> code sequences) work slightly differently: the background color is ignored, and the foreground colors are the 16 colors specified in the image file. For that reason, ppmtolss16 allows you to specify that certain colors should be assigned to specific color indices.

    Color indices 0 and 7, in particular, should be chosen with care: 0 is the background color, and 7 is the color used for the text printed by SYSLINUX itself.

    Return to text mode:

    <EM>  <EM> = <Ctrl-Y> = ASCII 25
    

    If we are currently in graphics mode, return to text mode. Select to which modes to print a certain part of the message:

    <DLE>..<ETB>  <Ctrl-P>..<Ctrl-W> = ASCII 16-23
    

    These codes can be used to select which modes to print a certain part of the message file in. Each of these control characters select a specific set of modes (text screen, graphics screen, serial port) for which the output is actually displayed:

    Character                       Text    Graph   Serial
    ------------------------------------------------------
    <DLE> = <Ctrl-P> = ASCII 16     No      No      No
    <DC1> = <Ctrl-Q> = ASCII 17     Yes     No      No
    <DC2> = <Ctrl-R> = ASCII 18     No      Yes     No
    <DC3> = <Ctrl-S> = ASCII 19     Yes     Yes     No
    <DC4> = <Ctrl-T> = ASCII 20     No      No      Yes
    <NAK> = <Ctrl-U> = ASCII 21     Yes     No      Yes
    <SYN> = <Ctrl-V> = ASCII 22     No      Yes     Yes
    <ETB> = <Ctrl-W> = ASCII 23     Yes     Yes     Yes
    

    For example:

    <DC1>Text mode<DC2>Graphics mode<DC4>Serial port<ETB>
    

    will actually print out which mode the console is in!

    End of file:

    <SUB>  <SUB> = <Ctrl-Z> = ASCII 26
    

    End of file (DOS convention).

    Beep:

    <BEL>  <BEL> = <Ctrl-G> = ASCII 7
    

    Beep the speaker.


    원문 : http://syslinux.zytor.com/


    Trackback 8 Comment 0