oracle11G靜默安裝過程——linux環境
1.操作系統及Oracle版本
Linux版本:CentOS release 6.8 (Final)
Oracle版本:Oracle Database 11g Release 2 (11.2.0.1.0) for Linux x86-64 (linux.x64_11gR2_database_1of2.zip、linux.x64_11gR2_database_2of2.zip)
2.硬件檢測:
物理內存不少於1G
硬盤可以空間不少於5G
swap分區空間不少於2G
支持256色以上顯卡
cpu主頻不小於550mHZ
cat /etc/issue
uname -r
grep MemTotal /proc/meminfo
grep SwapTotal /proc/meminfo
grep "model name" /proc/cpuinfo
free
df -k /tmp
df -k
3.檢查安裝依賴系統包
操作系統依賴的具體包,請參考官方安裝文檔。
以下為 Asianux 3, Oracle Linux 5, Red Hat Enterprise Linux 5, CentOS 5 操作系統依賴的包
binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
compat-libstdc++-33-3.2.3 (32 bit)
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
gcc-4.1.2
gcc-c++-4.1.2
glibc-2.5-24
glibc-2.5-24 (32 bit)
glibc-common-2.5
glibc-devel-2.5
glibc-devel-2.5 (32 bit)
glibc-headers-2.5
ksh-20060214
libaio-0.3.106
libaio-0.3.106 (32 bit)
libaio-devel-0.3.106
libaio-devel-0.3.106 (32 bit)
libgcc-4.1.2
libgcc-4.1.2 (32 bit)
libstdc++-4.1.2
libstdc++-4.1.2 (32 bit)
libstdc++-devel 4.1.2
make-3.81
sysstat-7.0.2
unixODBC-2.2.11 (32-bit) or later
unixODBC-devel-2.2.11 (64-bit) or later
unixODBC-2.2.11 (64-bit) or later
檢查依賴包
rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc-2.5 glibc-common glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel
如果包有顯示is not installed(沒安裝),就用yum install 命令安裝,如:
yum install compat-libstdc++-33
4.創建所需的操作系統組和用戶
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
設置oracle用戶密碼
passwd oracle
5.修改內核參數
在/sbin/sysctl.conf 文件中,使用文本編輯器或vi命令增加或修改以下參數
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
修改后,使設置生效
/sbin/sysctl -p
6.修改用戶限制
在/etc/security/limits.conf 文件中,使用文本編輯器或vi命令增加或修改以下參數
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
在/etc/pam.d/login 文件中,使用文本編輯器或vi命令增加或修改以下內容
session required /lib/security/pam_limits.so
session required pam_limits.so
在/etc/profile 文件中,使用文本編輯器或vi命令增加或修改以下內容
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
使設置生效
source /etc/profile
7.創建安裝目錄(可根據情況,選擇比較多空間的目錄創建)
mkdir -p /usr/oracle
chown -R oracle:oinstall /usr/oracle
chmod -R 775 /usr/oracle
8.創建/etc/oraInst.loc文件,內容如下
nventory_loc=/usr/oracle/oraInventory
inst_group=oinstall
更改文件的權限
chown oracle:oinstall /etc/oraInst.loc
chmod 664 /etc/oraInst.loc
9.設置oracle環境變量
su - oracle
vi ~/.bash_profile
在最后加上以下內容
export ORACLE_BASE=/usr/oracle
export ORACLE_SID=orcl
注意,除了ORACLE_BASE和ORACLE_SID,( /etc/profile和.bash_profile中)不設置任何oracle相關環境變量(ORACLE_HOME, PATH, LD_LIBRARY_PATH等)。
使設置生效
source /home/oracle/.bash_profile
檢查環境變量:
env
10.解壓oracle安裝文件
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
11.復制響應文件模板
mkdir etc
cp /home/oracle/database/response/* /home/oracle/etc/
設置響應文件權限
su - root
chmod 700 /home/oracle/etc/*.rsp(注意所有者,oinstall)
12.靜默安裝Oracle軟件
su - oracle
修改安裝Oracle軟件的響應文件/home/oracle/etc/db_install.rsp
oracle.install.option=INSTALL_DB_SWONLY // 29 安裝類型
ORACLE_HOSTNAME=db // 37 主機名稱(hostname查詢)
UNIX_GROUP_NAME=oinstall // 42 安裝組
INVENTORY_LOCATION=/usr/oracle/oraInventory //47 INVENTORY目錄(不填就是默認值)
SELECTED_LANGUAGES=en,zh_CN,zh_TW // 78 選擇語言
ORACLE_HOME=/usr/oracle/product/11.2.0/db_1 // 83 oracle_home
ORACLE_BASE=/usr/oracle // 88 oracle_base
oracle.install.db.InstallEdition=EE // 99 oracle版本
oracle.install.db.isCustomInstall=false //自定義安裝,否,使用默認組件
oracle.install.db.DBA_GROUP=dba // 143 dba用戶組
oracle.install.db.OPER_GROUP=oinstall // 147 oper用戶組
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE // 160 數據庫類型
oracle.install.db.config.starterdb.globalDBName=orcl // 165 globalDBName
oracle.install.db.config.starterdb.SID=orcl // 170 SID
oracle.install.db.config.starterdb.memoryLimit=81920 // 200 自動管理內存的內存(M)
oracle.install.db.config.starterdb.password.ALL=oracle // 233 設定所有數據庫用戶使用同一個密碼
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false // 376(手動寫了false)
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false // 376(手動寫了false)
DECLINE_SECURITY_UPDATES=true // 385 設置安全更新(貌似是有bug,這個一定要選true,否則會無限提醒郵件地址有問題,終止安裝。PS:不管地址對不對)
開始靜默安裝
cd database
./runInstaller -silent -force -responseFile /home/oracle/etc/db_install.rsp
這個命令,一直執行失敗,失敗錯誤:
(
解決:
參考下面,我是直接加入了
-ignorePrereq命令,就可以了。
解決oracle在linux 純字符界面安裝問題:
一、注意 在安裝錢檢測目錄權限的問題 (盡量把用戶安裝的數據放到oracle用戶下操作)
drwxrwxrwx 12 oracle oinstall 4096 Aug 17 2009 doc
drwxrwxrwx 4 oracle oinstall 4096 Aug 15 2009 install
drwxrwxrwx 2 oracle oinstall 4096 Jul 4 14:16 response
drwxrwxrwx 2 oracle oinstall 4096 Aug 15 2009 rpm
-rwxrwxrwx 1 oracle oinstall 3226 Aug 15 2009 runInstaller
drwxrwxrwx 2 oracle oinstall 4096 Aug 15 2009 sshsetup
drwxrwxrwx 14 oracle oinstall 4096 Aug 15 2009 stage
-rwxrwxrwx 1 oracle oinstall 5402 Aug 18 2009 welcome.html
二、[FATAL] [INS-13013] Target environment do not meet some mandatory requirements
上面的參考文章解決是:安裝命令中加入選項-ignorePrereq
官網對這個錯誤的解釋是:
INS-13013: Target environment do not meet some mandatory requirements.
Cause: Some of the mandatory prerequisites are not met. See logs for details. string
Action: Identify the list of failed prerequisite checks from the log: string. Then either from the log file or from installation manual find the appropriate configuration to meet the prerequisites and fix it manually.
大概的意思還是叫你看日志,從安裝手冊中找到合適的配置,手工修復 。
看了日志,太多warnings 跟其他的配置文件有關系。不想修改了,我還是很懶,看了參考文章的不影響后來的,能忽略就忽略哈!嘿嘿!
三、安裝完畢遇到了,啟動監聽失敗
一般情況下是 oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
hostname出錯了,修改為ip 就可以解決
我之前在設置環境變量的時候 用的主機名, 這里也出現圖形界面安裝時候的問題 電信ip…
上面這些就是我安裝時候遇到的問題
估計您安裝的時候還會遇到其他的問題
)
從新修改安裝命令:
./runInstaller -ignorePrereq -silent -force -responseFile /home/oracle/etc/db_install.rsp
解決了問題,安裝完成之后,就會出現如下界面:
OK,安裝完成!!!
安裝中,如果提示[WARNING]不必理會,此時安裝程序仍在進行,如果出現[FATAL],則安裝程序已經停止了。
查看安裝日志信息了解安裝進度
cd $ORACLE_BASE/oraInventory/logs
tail -100f installActions*.log
出現類似如下提示表示安裝完成:
cd $ORACLE_BASE/oraInventory/logs
tail -f installActions*.log
出現類似如下提示表示安裝完成:
#-------------------------------------------------------------------
/usr/oracle/oraInventory/orainstRoot.sh
/usr/oracle/product/11.2.0/db_1/root.sh
To execute the configuration scripts:
1. Open a terminal window
2. Log in as "root"
3. Run the scripts
4. Return to this window and hit "Enter" key to continue
Successfully Setup Software.
#-------------------------------------------------------------------
使用root用戶執行腳本
這里是有兩個腳本要執行,跑一下就好
這里是有兩個腳本要執行,跑一下就好
su root
/usr/oracle/product/11.2.0/db_1/root.sh
/usr/oracle/oraInventory/orainstRoot.sh
/usr/oracle/oraInventory/orainstRoot.sh
增加oracle環境變量
su - oracle
vi ~/.bash_profile
在最后加上以下內容
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export LIBPATH=${CLASSPATH}:$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib
export ORACLE_OWNER=oracle
export SPFILE_PATH=$ORACLE_HOME/dbs
export ORA_NLS10=$ORACLE_HOME/nls/data
使設置生效
source /home/oracle/.bash_profile
(
13.靜默配置網絡
$ORACLE_HOME/bin/netca /silent /responseFile /home/oracle/etc/netca.rsp
14.靜默安裝數據庫
修改僅安裝數據庫的響應文件/home/oracle/etc/dbca.rsp
GDBNAME="orcl.java-linux-test"
//78 行 全局數據庫的名字=SID+主機域名
SID="orcl"
//149行 SID
CHARACTERSET="AL32UTF8"
//415行 編碼
NATIONALCHARACTERSET="UTF8"
//425行 編碼
進行靜默安裝數據庫
$ORACLE_HOME/bin/dbca -silent -responseFile
/home/oracle/etc/dbca.rsp
建庫后實例檢查
ps -ef | grep ora_ | grep -v grep | wc -l
ps -ef | grep ora_ | grep -v grep
建庫后監聽檢查
lsnrctl status
如果出現以下錯誤
lsnrctl: error while loading shared libraries: /u01/app/oracle/product/11.2.0/db_1/lib/libclntsh.so.11.1: cannot restore segment prot after reloc: Permission denied
解決辦法:在root用戶下執行以下命令
su - root
setenforce 0
15.修改oracle啟動配置文件
su - oracle
vi /etc/oratab
orcl:/usr/oracle/product/11.2.0/db_1:Y //把“N”改成“Y”
這樣就可以通過dbstart 啟動此實例,監聽器。
dbstart $ORACLE_HOME
此時所有oracle的進程關閉,監聽器也停止。
dbshut $ORACLE_HOME
再次查看監聽器狀態。
lsnrctl status
如果使用歸檔日志
sqlplus / as sysdba
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database flashback on; (如果要啟用數據庫閃回功能則執行)
SQL> alter database open;
SQL> execute utl_recomp.recomp_serial(); (重新編譯所有可能失效對象)
SQL> alter system archive log current; (手工歸檔測試)
)
select table_name from dba_tables;
成功!!!
==================以下未測試成功=====================
到這里,oracle11g的數據庫實例就算是裝好了,接下來配置數據庫實例的基本參數文件~
cd $ORACLE_HOME/dbs
找到默認的init.ora,然后創建一個新的init.ora:
cat init.ora | grep -V ^# | grep -V ^$ | > init$ORACLE_SID.ora
修改新參數文件里面的<$ORACLE_HOME>為絕對路徑,然后把db_name之類的東西改成自己的就好~
然后就可以啟動oracle實例了,用sqlplus "/as sysdba"登錄進去,然后startup nomount;
如果說MEMORY_TARGET太大了,那么可以在參數文件里面改小一點(這里設置的是81960M,80G),或者修改shm的大小、
用df -h能看到/dev/shm的大小
用mount -o size=102400M -o nrinodes=1000000 -o noatime,nodiratime -o remount /dev/shm來修改shm的大小
然后創建spfile
create spfile from pfile;(具體的這兩個東西的資料可以參考我的另一篇文章,spfile和pfile那點事)
如果一切正常,那么會顯示出數據庫的一些池和緩存的信息,接下來就是創建數據庫了,
先創建必要目錄
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump
mkdir -p $ORACLE_BASE/oradata
PS:稍微注意一下的是,/usr/local/bin下面,幾個目錄的權限,記得要改成oracle和oinstall的(chown -R oracle:oinstall *),否則啟動的時候會提示錯誤,權限啊,目錄操作失敗雲雲
建庫腳本如下:
CREATE DATAB ASE orcl
USER SYS IDENTIFIED BY sys
USER SYSTEM IDENTIFIED BY system
LOGFILE
GROUP 1 ('/usr/oracle/oradata/redo01.log') SIZE 1024M,
GROUP 2 ('/usr/oracle/oradata/redo02.log') size 1024m,
GROUP 3 ('/usr/oracle/oradata/redo03.log') size 1024m,
GROUP 4 ('/usr/oracle/oradata/redo04.log') size 1024m,
GROUP 5 ('/usr/oracle/oradata/redo05.log') size 1024m
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 200
MAXDATAFILES 10000
MAXINSTANCES 1
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
datafile '/usr/oracle/oradata/system01.dbf' size 2048M REUSE
EXTENT MANAGEMENT LOCAL
sysaux datafile '/usr/oracle/oradata/sysaux01.dbf' size 2048M REUSE
default temporary tablespace temp
tempfile '/usr/oracle/oradata/temp01.dbf' size 2048M REUSE
undo tablespace UNDOTBS1
datafile '/usr/oracle/oradata/undotbs01.dbf' size 4096M REUSE
AUTOEXTEND off
default tablespace DATA
datafile '/usr/oracle/oradata/data01.dbf' size 8192M REUSE
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;
使用Extend和Segment的管理,懶人+水B表示自己管理的技巧暫時沒空學,全部交給oracle自己管理.....
如果沒問題,接下來就創建數據字典和pl/sql包,
sqlplus "/as sysdba"
SQL>@?/rdbms/admin/catalog.sql;
SQL>@?/rdbms/admin/cataproc.sql;
SQL>@?/rdbms/admin/utlrp.sql;
SQL>conn system/*****;
SQL>@?/sqlplus/admin/pupbld.sql;
(這幾個腳本放在$ORACLE_HOME/rdbms/admin下,也可以先進這個目錄,然后直接@腳本就好)
最后shutdown immediate 然后startup吧~
數據庫正確open之后,就是配置監聽器了,
把\network\admin\listener.ora 和\network\admin\tnsname.ora里面的LOCALHOST改成IP,把SID SID_NAME改成實例名,重啟數據庫,重啟監聽
PS:參數文件的service和監聽器的service要對上!
然后用sqlplus,使用sys或者system登錄進去,show parameter;或者select table_name from dba_tables看看是否正常~~
The End! Happy Oracle 11g~
PS:由於我是從oracle官網下載的oracle11g,不知道是否是這個原因,導致數據庫類型不寫GENERAL_PURPOSE 的話,安裝一定會因為電子郵件地址的緣故終止╮(╯_╰)╭
cd $ORACLE_HOME/dbs
找到默認的init.ora,然后創建一個新的init.ora:
cat init.ora | grep -V ^# | grep -V ^$ | > init$ORACLE_SID.ora
修改新參數文件里面的<$ORACLE_HOME>為絕對路徑,然后把db_name之類的東西改成自己的就好~
然后就可以啟動oracle實例了,用sqlplus "/as sysdba"登錄進去,然后startup nomount;
如果說MEMORY_TARGET太大了,那么可以在參數文件里面改小一點(這里設置的是81960M,80G),或者修改shm的大小、
用df -h能看到/dev/shm的大小
用mount -o size=102400M -o nrinodes=1000000 -o noatime,nodiratime -o remount /dev/shm來修改shm的大小
然后創建spfile
create spfile from pfile;(具體的這兩個東西的資料可以參考我的另一篇文章,spfile和pfile那點事)
如果一切正常,那么會顯示出數據庫的一些池和緩存的信息,接下來就是創建數據庫了,
先創建必要目錄
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump
mkdir -p $ORACLE_BASE/oradata
PS:稍微注意一下的是,/usr/local/bin下面,幾個目錄的權限,記得要改成oracle和oinstall的(chown -R oracle:oinstall *),否則啟動的時候會提示錯誤,權限啊,目錄操作失敗雲雲
建庫腳本如下:
CREATE DATAB ASE orcl
USER SYS IDENTIFIED BY sys
USER SYSTEM IDENTIFIED BY system
LOGFILE
GROUP 1 ('/usr/oracle/oradata/redo01.log') SIZE 1024M,
GROUP 2 ('/usr/oracle/oradata/redo02.log') size 1024m,
GROUP 3 ('/usr/oracle/oradata/redo03.log') size 1024m,
GROUP 4 ('/usr/oracle/oradata/redo04.log') size 1024m,
GROUP 5 ('/usr/oracle/oradata/redo05.log') size 1024m
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 200
MAXDATAFILES 10000
MAXINSTANCES 1
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
datafile '/usr/oracle/oradata/system01.dbf' size 2048M REUSE
EXTENT MANAGEMENT LOCAL
sysaux datafile '/usr/oracle/oradata/sysaux01.dbf' size 2048M REUSE
default temporary tablespace temp
tempfile '/usr/oracle/oradata/temp01.dbf' size 2048M REUSE
undo tablespace UNDOTBS1
datafile '/usr/oracle/oradata/undotbs01.dbf' size 4096M REUSE
AUTOEXTEND off
default tablespace DATA
datafile '/usr/oracle/oradata/data01.dbf' size 8192M REUSE
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;
使用Extend和Segment的管理,懶人+水B表示自己管理的技巧暫時沒空學,全部交給oracle自己管理.....
如果沒問題,接下來就創建數據字典和pl/sql包,
sqlplus "/as sysdba"
SQL>@?/rdbms/admin/catalog.sql;
SQL>@?/rdbms/admin/cataproc.sql;
SQL>@?/rdbms/admin/utlrp.sql;
SQL>conn system/*****;
SQL>@?/sqlplus/admin/pupbld.sql;
(這幾個腳本放在$ORACLE_HOME/rdbms/admin下,也可以先進這個目錄,然后直接@腳本就好)
最后shutdown immediate 然后startup吧~
數據庫正確open之后,就是配置監聽器了,
把\network\admin\listener.ora 和\network\admin\tnsname.ora里面的LOCALHOST改成IP,把SID SID_NAME改成實例名,重啟數據庫,重啟監聽
PS:參數文件的service和監聽器的service要對上!
然后用sqlplus,使用sys或者system登錄進去,show parameter;或者select table_name from dba_tables看看是否正常~~
The End! Happy Oracle 11g~
PS:由於我是從oracle官網下載的oracle11g,不知道是否是這個原因,導致數據庫類型不寫GENERAL_PURPOSE 的話,安裝一定會因為電子郵件地址的緣故終止╮(╯_╰)╭
啟動oracle實例:
su - oracle
vi /etc/oratab
racl:/u01/app/oracle/product/11.2.0/db_1:Y //把“N”改成“Y”
這樣就可以通過dbstart 啟動此實例,監聽器。
dbstart $ORACLE_HOME
此時所有oracle的進程關閉,監聽器也停止。
dbshut $ORACLE_HOME
再次查看監聽器狀態。
lsnrctl status
PL/SQL連接錯誤:
linux上安裝了oracle11gR2,配置好監聽后可用,由於網絡原因修改ip后再次啟動客戶端連接時提示連接失敗,把/home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora中HOSTNAME改為固定ip后再次連接,出現ORA-12505異常
- 狀態: 失敗 -測試失敗: Listener refused the connection with the following error:
- ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
查了下資料,把listener.ora中的sid重新指定,改為如下后,再次連接正確
- # listener.ora Network Configuration File: /usr/oracle/product/11.2.0/db_1/network/admin/listener.ora
- # Generated by Oracle configuration tools.
- LISTENER =
- (DESCRIPTION_LIST =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.104)(PORT = 1521))
- )
- )
- SID_LIST_LISTENER =
- (SID_LIST =
- (SID_DESC =
- # (GLOBAL_DBNAME = ORCL)
- (ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_1)
- (SID_NAME = orcl)
- )
- )
- ADR_BASE_LISTENER = /home/oracle/app
地址改成自己的,即可。解決了!!!
