吐血貢獻——centos6.5 64位靜默安裝oracle 10G R2


操作系統:CentOS release 6.5 (Final) 64位

oracle版本:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit



一、下載必須安裝包:


# yum -y install binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat


# yum install libXp


# yum -y install libXp.i686


# yum -y install libXt.i686


# yum -y install libXtst.i686



二、 修改 sysctl.conf 配置文件:


# vim /etc/sysctl.conf


   在文件末尾添加一下內容:


#use for Oracle

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 1024 65000

net.core.rmem_default = 4194304

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 262144


立即執行修改:


# sysctl -p



三、 修改 limits.conf 配置文件. 此文件用於設置系統資源限制.


# vi /etc/security/limits.conf


在文件末尾加上以下內容:


oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536



四、 編輯 /etc/pam.d/login 文件:


# vi /etc/pam.d/login


在文件末尾加上以下內容:


session required /lib/security/pam_limits.so

session required pam_limits.so



五、創建oraInst.loc


# vim /etc/oraInst.loc


inventory_loc=/u01/oracle/oraInventory

inst_group=oinstall

更改屬組及權限

chown oracle:oinstall /etc/oraInst.loc

chmod 664 /etc/oraInst.loc



六、 創建相應的用戶名和用戶組:


# groupadd oinstall


# groupadd dba


# useradd -g oinstall -G dba oracle


修改密碼:


# passwd oracle



七、 修改 /etc/profile 限制其他用戶使用:


# vim /etc/profile


在文件末尾加入以下內容:


if [ $USER = "oracle" ]; then


    if [ $SHELL = "/bin/ksh" ]; then


        ulimit -p 16384


        ulimit -n 65536


    else


        ulimit -u 16384 -n 65536


    fi

fi



八、修改Linux 發行版本. 因爲Oracle10G發行的時候, Centos6.5還沒有發行. 所以必須修改:


# vim /etc/redhat-release


刪除文件本身內容, 重新錄入以下內容:


redhat-4



九、 創建oralce安裝目錄以及數據存放目錄.


# mkdir -p /home/oracle/ora10g


# chown -R oracle:oinstall /home/oracle/ora10g/


# chmod -R 775 /home/oracle/ora10g/



十、 配置Oracle用戶環境變量:


# vi /home/oracle/.bash_profile


在文件末尾加入以下內容:


#Oracle Settings


export TMP=/tmp;

export TMPDIR=$TMP;

export ORACLE_BASE=/home/oracle/ora10g ;

export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1;

export ORACLE_SID=orcl10g;

export ORACLE_TERM=xterm;

export PATH=/usr/sbin:$PATH;

export PATH=$ORACLE_HOME/bin:$PATH;

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;

export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;



十一、 使配置生效:


# source /home/oracle/.bash_profile



十二、 解壓安裝文件


將下載的10201_database_linux_x86_64.cpio.gz(數據庫安裝文件) 複製到 /home/oracle/ora10g/目錄下.


# cp /usr/local/src/10201_database_linux_x86_64.cpio.gz /home/oracle/ora10g/


首先解壓gz包.


# gzip -d 10201_database_linux_x86_64.cpio.gz


在使用cpio解壓出文件.


# cpio -idmv < 10201_database_linux_x86_64.cpio



十三、更改解壓出來的database文件件及文件的所有者和用戶組爲oracle和oinstall.


# chown -R oracle:oinstall /home/oracle/ora10g/database/



十四、編輯安裝需要的應答文件

(1) 以root身份登錄

(2) 靜默模式(Silent)安裝必須指定一個應答文件來完成安裝過程所須的各類參數。

    在Oracle安裝目錄的response子目錄裏有enterprise.rsp、standard.rsp和custom.rsp三個應答文件,分別對應企業版、標準版和定製的安裝。

(3) 以enterprise.rsp爲例,用任意的文本編輯器打它,修改以下這些項目的值。


配置enterprise.rsp文件

vi /home/oracle/ora10g/database/response/enterprise.rsp

修改以下值  紅色爲必須修改項,其他按需要

RESPONSEFILE_VERSION=2.2.1.0.0

UNIX_GROUP_NAME="oinstall"

ORACLE_HOME_NAME="OraDb10g_home1"

ORACLE_HOME="/home/oracle/ora10g/product/10.2.0/db_1"

SHOW_INSTALL_PROGRESS_PAGE= true

SHOW_END_OF_INSTALL_MSGS= true

COMPONENT_LANGUAGES={"zh_CN"}   默認en

s_nameForDBAGrp= "dba"                         如設置無效組,會出現權限不夠錯誤

s_nameForOPERGrp="dba"

INSTALL_TYPE="EE"

n_configurationOption=3                    安裝類型(1爲在安裝後創建數據庫, 2爲安裝後創建一個自動存儲管理實例, 3爲只安裝服務器軟件),這裏我選擇3。

RESTART_SYSTEM=false

RESTART_REMOTE_SYSTEM=false

說明:這幾項要視情況而定比如說 UNIX_GROUP_NAME="oinstall" 和s_nameForDBAGrp= "dba" s_nameForOPERGrp="dba"還有環境變量都要參照前面自己定義好的來



十五、開始安裝

(1) 用oracle用戶登錄,然後在Oracle安裝目錄裏執行

    $ ./runInstaller -ignoreSysPrereqs -silent -responseFile <應答文件的絕對路徑>

(2) 接下來就是等待安裝結束了。

各安裝參數的含義如下:

-ignoreSysPrereqs 讓Oracle忽略系統檢查,因爲Oracle官方聲明只支持Linux服務器產品,所以要在非服務器產品的Linux上安裝就必須指定此參數。

-silent 表示以靜默方式安裝,不會有任何提示

-force 允許安裝到一個非空目錄

-noconfig 表示不運行配置助手netca

-responseFile 表示使用哪個響應文件,必需使用絕對路徑


在這裏我輸入:

./runInstaller -silent -ignoreSysPrereqs -responseFile /home/oracle/ora10g/database/response/enterprise.rsp



十六、系統初始化

(1) 以root用戶登錄

(2) 運行以下兩個腳本:

    /home/oracle/ora10g/oraInventory/orainstRoot.sh

    /home/oracle/ora10g/product/10.2.0/db_1/root.sh



十七、安裝網絡監聽器

vi ./response/netca.rsp

(1) 以oracle登陸

(2) 沒有網絡監聽器,客戶端就無法通過網絡連接Oralce服務器。要在命令行安裝網絡監聽器,也只能使用靜默模式。

(3) 編輯Oracle安裝目錄裏response子目錄下的應答文件 netca.rsp, 修改以下項目:

INSTALL_TYPE=""CUSTOM"" 安裝的類型,這裏我使用默認值

LISTENER_NUMBER=1 監聽器數量,這裏我使用默認值

LISTENER_NAMES={"LISTENER"} 監聽器的名稱列表,這裏我使用默認值

LISTENER_PROTOCOLS={"TCP;1521"} 監聽器使用的通訊協議列表,這裏我使用默認值

LISTENER_START=""LISTENER"" 監聽器啓動的名稱,這裏我使用默認值

(4) 然後運行

    $ORACLE_HOME/bin/netca /silent /responseFile <應答文件的絕對路徑>

 這裏我輸入的命令爲:

$ORACLE_HOME/bin/netca /silent /responseFile /home/oracle/ora10g/database/response/netca.rsp



十八、修改dbstart

(1) 以oracle身份登錄

(2) 打開 $ORACLE_HOME/bin/dbstart,將

    ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle

 改爲

    ORACLE_HOME_LISTNER=$ORACLE_HOME

    否則網絡監聽器可能無法自動啓動。



十九、安裝數據庫實例

vi ./response/dbca.rsp


OPERATION_TYPE = "createDatabase"

GDBNAME = "oracle10g"

SID = "orcl10g"

TEMPLATENAME = "General_Purpose.dbc"   如不設置會出現“靜默DBCA創建數據庫時遭遇模板不存在問題

SYSPASSWORD = "oracle"

SYSTEMPASSWORD = "oracle"

CHARACTERSET = "ZHS16GBK"


運行以下命令安裝實例

$ORACLE_HOME/bin/dbca -silent –responseFile /home/oracle/ora10g/database/response/dbca.rsp -cloneTemplate



二十、修改Oracle啓動配置文件:/etc/oratab

(1) 以oracle用戶登錄

(2) 然後編輯 /etc/oratab

    將<Oracle的SID>:<Oracle的主目錄>:N

    修改爲ora10g:/app/oracle/10g:Y

    使數據庫實例能夠自動啓動。



二十一、 啓動和關閉監聽


  啓動監聽:lsnrctl start


  關閉監聽:lsnrctl stop


    檢查監聽:lsnrctl status


二十二、啓動Oracle實例


su - oracle


export ORACLE_SID=orcl10g


以sysdba身份登入數據庫,輸入:


sqlplus '/ as sysdba'


SQL> startup


就可以正常的啓動數據庫了。


備註:也可以用$ORACLE_HOME/bin/dbstart啓動數據庫實例



二十三、關閉數據庫實例


SQL> shutdown immediate


備註:也可以用 $ORACLE_HOME/bin/dbstart 啓動數據庫實例



二十四、創建用戶


create user test identified by test account unlock;


grant resource,connect to test;



二十五、其他

#創建表空間

create TEMPORARY TABLESPACE AFINITOR_TEMP TEMPFILE '/u01/app/oracle/oradata/orcl/AFINITOR_TEMP.ORA' SIZE 32M AUTOEXTEND ON NEXT 32M MAXSIZE 2048M EXTENT MANAGEMENT LOCAL;

#創建臨時表空間

create TABLESPACE AFINITOR LOGGING DATAFILE '/u01/app/oracle/oradata/orcl/AFINITOR.DBF' SIZE 32M AUTOEXTEND ON NEXT 32M MAXSIZE 2048M EXTENT MANAGEMENT LOCAL;

#創建用戶

create user afinitor identified by afinitor default tablespace AFINITOR temporary tablespace AFINITOR_TEMP;

#給用戶授權

grant resource,connect,EXP_FULL_DATABASE,IMP_FULL_DATABASE,CREATE SESSION to afinitor;

grant dba to afinitor;

#授權導入導出

GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,DBA,CONNECT,RESOURCE,CREATE SESSION TO afinitor;

#數據導入

cd /home

wget –c http://nadmin.haott.com/afinitor_db.dmp (此處是在另一服務器下載所需要的數據庫dmp文件)

su – oracle

imp afinitor/afinitor@orcl file=/home/afinitor_data_20131206.dmp full=y ignore=y #導入命令




#監聽文件

 [oracle@localhost admin]$  cat listener.ora


SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = orcl10g)

      (ORACLE_HOME = /home/oracle/ora10g/product/10.2.0/db_1)

#      (PROGRAM = extproc)           要註釋掉,否則會出現ORA-28547:連接服務器失敗,可能是Net8管理錯誤”          

    )

  )


LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

    )

  )



#tnsnames文件

[oracle@localhost admin]$ cat tnsnames.ora

EXTPROC_CONNECTION_DATA =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = oracle10g)

    )

  )



二十六、安裝排障總結


故障一

ORA-01078: failure in processing system parameters

LRM-00123: invalid character 0 found in the input file

LRM-00109: could not open parameter file '/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora

   經查:pfile目錄下無參數文件,SORACLE_HOME/dbs下無密碼文件,flash_recovery_area下無相關實例文件

   解決:實例未創建成功,dbca重新創建實例即可,如果有實例情況下,則拷貝pfile下參數文件到dbs下並命名即可。



故障二

     ORA-01031: insufficient privileges

     原因一:組配置錯誤

[oracle@wz_oracle2 ~]$ cat enterprise.rsp | egrep -i "grp|group"

UNIX_GROUP_NAME="dba"

s_nameForDBAGrp="oracle"

s_nameForOPERGrp="oracle"

   解決:

[oracle@wz_oracle2 ~]$ cat $ORACLE_HOME/rdbms/lib/config.c

/*  SS_DBA_GRP defines the UNIX group ID for adminstrative access.  */

/*  Refer to the Installation and User's Guide for further information.  */




#define SS_DBA_GRP "oracle"  /* 改成 dba */

#define SS_OPER_GRP "oracle"  /* 改成 dba */




char *ss_dba_grp[] = {SS_DBA_GRP, SS_OPER_GRP};

然後

[oracle@wz_oracle2 ~]$ relink all




故障三


 ORA-01031: insufficient privileges

 原因:system無法登陸,sys和其他普通登陸能正常登陸,經查是登陸驗證問題

 解決:cat /home/oracle/ora10g/product/10.2.0/db_1/network/admin/sqlnet.ora

      SQLNET.AUTHENTICATION_SERVICES   不設置即可



故障四

使用Oracle 10g的dbca.rsp文件靜默創建數據庫的時候遭遇模板不存在的問題


[oracle@newadm database]$ dbca -silent -responseFile /home/oracle/database/response/dbca.rsp

Template General Purpose does not exist. Please specify an existing template for database creation.


解決:更改dbca.rsp文件中的General Purpose爲 General_Purpose.dbc即可

    TEMPLATENAME = "General_Purpose.dbc"



故障五

ORA-27125: unable to create shared memory segment


查詢了一下,發現問題和linux上的hugetbl有關。


解決方法也很簡單,首先檢查oracle用戶的組信息:


[oracle@yans1 ~]$ id oracle


uid=500(oracle) gid=502(oinstall) groups=502(oinstall),501(dba)


[oracle@yans1 ~]$ more /proc/sys/vm/hugetlb_shm_group


0


下面用root執行下面的命令,將dba組添加到系統內核中:


# echo 501 > /proc/sys/vm/hugetlb_shm_group


然後啓動數據庫,問題消失。


但以上這種方式在重啓操作系統後失效, /proc/sys/vm/hugetlb_shm_group又變爲了0,建議採用以下方式解決:


加入vm.hugetlb_shm_group = 501 到/etc/sysctl.conf中來解決:


# vi /etc/sysctl.conf


加入如下的內容,其中501爲dba組號,需要根據你實際的情況進行改變。


vm.hugetlb_shm_group = 501

# sysctl -p



故障六

遠程客戶端連接oracle出現錯誤:ORA-28547:連接服務器失敗,可能是Net8管理錯誤

將listener.ora中的(PROGRAM = extproc)這句註釋掉就可以了










發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章