操作系統: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)這句註釋掉就可以了