阿里云服务器安装oracle11g-整理实战各路大神汇总
Oracle靜默安裝,是一種高效、便捷的安裝方法。很多時候我們在服務(wù)器上安裝oracle,只有終端環(huán)境,用不了OUI(即圖形界面)的安裝方式,只能采用靜默安裝。
一、安裝前準(zhǔn)備
1.檢查swap
關(guān)于swap是什么就不贅述了,可以自行百度
**Linux下有兩種類型的swap空間,swap分區(qū)和swap文件,他們有各自的特點(diǎn):
(1)swap分區(qū)上面由于沒有文件系統(tǒng),所以相當(dāng)于內(nèi)核直接訪問連續(xù)的磁盤空間,效率相對要高點(diǎn),但由于swap分區(qū)一般安裝系統(tǒng)時就分配好了了,后期要縮減空間和擴(kuò)容都很不方便。
加一個交換分區(qū)
步驟如下:
$1 使用fdisk來創(chuàng)建交換分區(qū)(假設(shè) /dev/sdb2 是創(chuàng)建的交換分區(qū))
$2 使用 mkswap 命令來設(shè)置交換分區(qū):
# mkswap /dev/sdb2
$13啟用交換分區(qū):
# swapon /dev/sdb2
$14寫入/etc/fstab,以便在引導(dǎo)時啟用:
/dev/sdb2swap swap defaults 0 0
---------------------------------------------------------------------------------------------------
(2)swap文件放在指定分區(qū)的文件系統(tǒng)里面,所以有可能受文件系統(tǒng)性能的影響,但據(jù)說2.6版本以后的內(nèi)核可以直接訪問swap文件對應(yīng)的物理磁盤地址,相當(dāng)于跳過了文件系統(tǒng)直接訪問磁盤,不過如果swap文件在磁盤上的物理位置不連續(xù)時,還是會對性能產(chǎn)生不利影響,但其優(yōu)點(diǎn)就是靈活,隨時可以增加和移除swap文件。
創(chuàng)建swap分區(qū)交換文件: 阿里云的ECS默認(rèn)是不啟用swap分區(qū)的,但是安裝Oracle又必須要這個分區(qū)。那我們就來創(chuàng)建一個
$1.dd if=/dev/zero of=/mnt/swap bs=1M count=1024。dd:用指定大小的塊拷貝一個文件,并在拷貝的同時進(jìn)行指定的轉(zhuǎn)換。linux下mnt目錄的作用:mount 可直接理解為“掛載”掛接光驅(qū)、USB設(shè)備的目錄,加載后,會在mnt里多出相應(yīng)設(shè)備的目錄。
$2.將該文件的權(quán)限設(shè)置為 600 這樣只有 root 用戶可以訪問這個文件
sudo chmod 600 /swapfile1
$2.格式化swap分區(qū) mkswap /mnt/swap
$3.啟用swap分區(qū) swapon /mnt/swap
$4.將新創(chuàng)建的交換文件添加到 fstab 文件中,這樣交換分區(qū)空間的修改即使在重啟后也可以生效。
vi /etc/fstab
/mnt/swap swap swap defaults 0 0
(
( - 要掛載的分區(qū)或存儲設(shè)備.
- 的掛載位置。
- 要掛載設(shè)備或是分區(qū)的文件系統(tǒng)類型,支持許多種不同的文件系統(tǒng):ext2, ext3, ext4, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap 及 auto。 設(shè)置成auto類型,mount 命令會猜測使用的文件系統(tǒng)類型,對 CDROM 和 DVD 等移動設(shè)備是非常有用的。
- 掛載時使用的參數(shù),注意有些mount 參數(shù)是特定文件系統(tǒng)才有的。
dump 工具通過它決定何時作備份. dump 會檢查其內(nèi)容,并用數(shù)字來決定是否對這個文件系統(tǒng)進(jìn)行備份。 允許的數(shù)字是 0 和 1 。0 表示忽略, 1 則進(jìn)行備份。大部分的用戶是沒有安裝 dump 的 ,對他們而言 應(yīng)設(shè)為 0。
fsck 讀取 的數(shù)值來決定需要檢查的文件系統(tǒng)的檢查順序。允許的數(shù)字是0, 1, 和2。 根目錄應(yīng)當(dāng)獲得最高的優(yōu)先權(quán) 1, 其它所有需要被檢查的設(shè)備設(shè)置為 2. 0 表示設(shè)備不會被 fsck 所檢查。)
(命令解釋:if=文件名:輸入文件名,缺省為標(biāo)準(zhǔn)輸入。即指定源文件。< if=input file >
of=文件名:輸出文件名,缺省為標(biāo)準(zhǔn)輸出。即指定目的文件。< of=output file >
/dev/zero也是一個偽文件,但它實(shí)際上產(chǎn)生連續(xù)不斷的null的流(二進(jìn)制的零流,而不是ASCII型的)。寫入它的輸出會丟失不見,/dev/zero主要的用處是用來創(chuàng)建一個指定長度用于初始化的空文件,像臨時交換文件。
mkswap命令用于在一個文件或者設(shè)備上建立交換分區(qū)
bs=1M:同時設(shè)置讀入/輸出的塊大小為1M。
count=blocks:僅拷貝blocks個塊
/etc/fstab是用來存放文件系統(tǒng)的靜態(tài)信息的文件, 當(dāng)系統(tǒng)啟動的時候,系統(tǒng)會自動地從這個文件讀取信息,并且會自動將此文件中指定的文件系統(tǒng)掛載到指定的目錄。)
注:本人買的阿里云ECS服務(wù)器事先已經(jīng)分好了區(qū),且云服務(wù)器一般swap都是為0,因此需要且只能采用第二種swap文件方式,或者有經(jīng)濟(jì)實(shí)力的土豪也可以再購買一個硬盤掛載到服務(wù)器上,采用第一種方式設(shè)置swap分區(qū)。
**查看linux的swap大小
(1)free -h命令
(2)使用命令swapon -s即可查看系統(tǒng)中在用的swap
**cat /proc/sys/vm/swappiness
有時我們桌面環(huán)境確實(shí)配置了比較充裕的內(nèi)存,并且也配置了swap空間,這個時候就希望盡量減少swap空間的使用,避免對系統(tǒng)性能造成影響,Linux早就幫我們考慮到這種情況了,在2.6內(nèi)核中,增加了一個叫做swappiness的參數(shù),用于配置需要將內(nèi)存中不常用的數(shù)據(jù)移到swap中去的緊迫程度。這個參數(shù)的取值范圍是0~100,0告訴內(nèi)核盡可能的不要將內(nèi)存數(shù)據(jù)移到swap中,也即只有在迫不得已的情況下才這么做,而100告訴內(nèi)核只要有可能,盡量的將內(nèi)存中不常訪問的數(shù)據(jù)移到swap中。
Ubuntu的desktop和server的默認(rèn)配置都是60(可能會隨著版本變化),對于桌面環(huán)境來說,界面的響應(yīng)速度直接關(guān)系到系統(tǒng)的流暢程度,如果內(nèi)存比較充裕的話,可以將這個值設(shè)置的小一點(diǎn),這樣就盡可能的把數(shù)據(jù)留在內(nèi)存中,從而喚醒后臺界面程序會更快一些,Ubuntu desktop建議將該值設(shè)置為10,當(dāng)然大家可以根據(jù)swap空間的實(shí)際使用情況,任意調(diào)整這個參數(shù),直到自己滿意的水平為止。對于服務(wù)器來說,主要性能衡量標(biāo)準(zhǔn)是整體的處理能力,而不是具體某一次的響應(yīng)速度,能把更多的內(nèi)存用來做I/O cache可能效果更好,所以Ubuntu server建議保持60的默認(rèn)值。
**修改swap大小
*修改swappiness的值
臨時性修改,系統(tǒng)重啟后會失效:sysctl vm.swappiness=10或者echo 10 >/proc/sys/vm/swappiness
永久修改:在/etc/sysctl.conf 文件里添加如下參數(shù):vm.swappiness=10
(sysctl命令用于運(yùn)行時配置內(nèi)核參數(shù),這些參數(shù)位于/proc/sys目錄下。sysctl配置與顯示在/proc/sys目錄中的內(nèi)核參數(shù)
/proc/sys目錄下存放著大多數(shù)內(nèi)核參數(shù),并且可以在系統(tǒng)運(yùn)行時進(jìn)行更改,不過重新啟動機(jī)器就會失效。/etc/sysctl.conf是一個允許改變正在運(yùn)行中的Linux系統(tǒng)的接口,它包含一些TCP/IP堆棧和虛擬內(nèi)存系統(tǒng)的高級選項(xiàng),修改內(nèi)核參數(shù)永久生效。也就是說/proc/sys下內(nèi)核文件與配置文件sysctl.conf中變量存在著對應(yīng)關(guān)系。)
2.安裝依賴包,需要的依賴可以看
rpm -q 可以查看某個需要的包是否已經(jīng)被安裝以及對應(yīng)的版本
(可以通過該命令查看需要的安裝包是否已經(jīng)被安裝
rpm -q binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc+±devel make sysstat unixODBC unixODBC-devel)
rpm -ivh example.rpm 安裝 example.rpm 包并在安裝過程中顯示正在安裝的文件信息及安裝進(jìn)度(-i, --install安裝,-v,–verbose顯示詳細(xì), -h,–hash顯示進(jìn)度)
rpm -Uvh 升級一個rpm包(-U,–upgrade更新)
*下載rpm包可以到pkgs.org,下載到本地再弄到服務(wù)器上/執(zhí)行 yum install 出現(xiàn)下載列表并提示 【y/d/n】,這里選擇d,d是僅下載不安裝的意思。會下載到/var/cache/yum/x86_64/7/目錄的相應(yīng)位置。(/var/cache應(yīng)用程序本身運(yùn)作過程中會產(chǎn)生的一些暫存檔)
*建議使用yum而不是rpm去安裝對應(yīng)的包,因?yàn)橛胷pm安裝對應(yīng)的依賴,整天安裝會提示某個依賴會被安裝,很麻煩,而yum會自動幫你發(fā)現(xiàn)并安裝這些依賴
創(chuàng)建用戶和組
groupadd oinstall:創(chuàng)建osintall組
groupadd dba:創(chuàng)建dba組
useradd -g oinstall -G dba oracle -d /home/db :創(chuàng)建oracle用戶并指定所屬組、附加組、用戶目錄
passwd oracle :給oracle用戶設(shè)置密碼
(-g 用戶所屬組,-G 用戶附加組
一個用戶只能且必須屬于一個g,可以屬于多個G。 用戶testuser 同時用戶所屬g和G的權(quán)限
-d<登入目錄> 指定用戶登入時的起始目錄)
cat /etc/passed:查看用戶信息
cat /etc/group :查看組信息
groups oracle:查詢oracle用戶屬于哪個組
(1)oracle清單組(一般為oinstall)
oinstall組的成員被視為oracle軟件的“所有者”,擁有對oracle中央清單(oraInventory)的寫入權(quán)限。在一個Linux系統(tǒng)上首次安裝Oracle軟件時,OUI會創(chuàng)建/etc/oraInst.loc文件。該文件指定Oracle清單組的名稱(默認(rèn)為oinstall)以及Oracle中央清單目錄的路徑、
(2)數(shù)據(jù)庫管理員(OSDBA,一般為dba)
OSDBA組的成員可通過操作系統(tǒng)身份驗(yàn)證使用SQL以SYSDBA身份連接到一個Oracle實(shí)例。該組的成員可以執(zhí)行關(guān)鍵的數(shù)據(jù)庫管理任務(wù),如創(chuàng)建數(shù)據(jù)庫,啟動,關(guān)閉實(shí)例。該組的默認(rèn)名稱為dba。SYSDBA系統(tǒng)權(quán)限甚至再數(shù)據(jù)庫未打開時也允許訪問數(shù)據(jù)庫實(shí)例。對此權(quán)限的控制完全超出了數(shù)據(jù)庫本身的范圍。
不要混淆SYSDBA系統(tǒng)權(quán)限和數(shù)據(jù)庫角色DBA。DBA角色不包括SYSDBA或SYSOPER系統(tǒng)權(quán)限。
(3)數(shù)據(jù)庫操作員組(OSOPER,一般為oper)
OSOPER組的成員可通過操作系統(tǒng)身份驗(yàn)證使用SQL以SYSOPER身份連接到一個Oracle實(shí)例。這個可選組的成員擁有一組有限的數(shù)據(jù)庫管理權(quán)限,如管理和運(yùn)行備份。該組的默認(rèn)名稱未oper。SYSOPER系統(tǒng)權(quán)限甚至再數(shù)據(jù)庫未打開時也允許訪問數(shù)據(jù)庫實(shí)例。對此權(quán)限的控制完全超出了數(shù)據(jù)庫本身的范圍。要使用該組,選擇Advanced安裝類型來安裝Oracle數(shù)據(jù)庫軟件。
無論安裝什么版本的Oracle,在安裝之前,都需要配置 /etc/pam.d/login /etc/profile /etc/security/limits.conf這三個文件,那這三個文件究竟是做什么用的呢?答案就是設(shè)置對oracle用戶的shell limits.
Linux PAM(插件式認(rèn)證模塊,Pluggable Authentication Modules)
為安全起見,計算機(jī)系統(tǒng)只有經(jīng)過授權(quán)的合法用戶才能訪問。這就需要程序提供鑒別登陸用戶身份信息的代碼。原本實(shí)現(xiàn)鑒別功能的代碼是作為應(yīng)用程序的一部分,這種情況下,如果發(fā)現(xiàn)所用算法存在某些缺陷或想采用另一種鑒別方法時,用戶不得 不重寫然后重新編譯原本的整個程序。很顯然這種鑒別方式缺乏靈活性。因此,人們開始尋找一種更好的鑒別方案:一方面,要把鑒別功能代碼從應(yīng)用中獨(dú)立出來,形成獨(dú)立模塊,單獨(dú)進(jìn)行維護(hù),另一方面,為這些鑒別模塊建立標(biāo)準(zhǔn)API,以便各應(yīng)用程序能方便地使用他們提供的各種功能。插件式鑒別模塊(PAM)機(jī)制采用模塊化設(shè)計和插件功能,使得我們可以輕易地在應(yīng)用程序中插入新的鑒別模塊或替換原先的組件,而不必對應(yīng)用程序做任何修改,從而使軟件的定制、維持和升級更加輕松
1995年SUN公司提出PAM方式,實(shí)現(xiàn)了以上要求,達(dá)到了應(yīng)用程序和鑒別機(jī)制的分離,并且PAM可以集成多種鑒別機(jī)制,輕松實(shí)現(xiàn)應(yīng)用程序的鑒別部分的靈活性。
除了具體實(shí)現(xiàn)不同外,各種版本 Unix 系統(tǒng)上的 PAM 的框架是相同的,所以我們在這里介紹的 Linux PAM 框架知識具有普遍性。因此在本文介紹其框架的過程中可以看到,我們并沒有刻意區(qū)分 PAM 與 Linux-PAM 這兩個術(shù)語。PAM 為了實(shí)現(xiàn)其插件功能和易用性,它采取了分層設(shè)計思想:讓各鑒別模塊從應(yīng)用程序中獨(dú)立出來,然后通過PAM API作為兩者聯(lián)系的紐帶,這樣應(yīng)用程序就可以根據(jù)需要靈活地在其中"插入"所需鑒別功能模塊,從而真正實(shí)現(xiàn)了"鑒別功能,隨需應(yīng)變"。
在rhel中,
**PAM的驗(yàn)證模塊,存放位置在/lib/security,如pam_limits.so、pam_group.so等
**PAM驗(yàn)證模塊的配置文件,存放位置 /etc/security中,如pam_limits.so驗(yàn)證模塊對應(yīng)的配置文件limits.conf,pam_group.so驗(yàn)證模塊對應(yīng)的配置文件group.conf。
**PAM驗(yàn)證模塊和應(yīng)用程序的對應(yīng)關(guān)系,存放位置/etc/pam.d文件夾。通過修改此文件夾下的配置文件,可以為應(yīng)用選定具體的驗(yàn)證模塊
4.修改內(nèi)核參數(shù)
修改內(nèi)核參數(shù)
vi /etc/sysctl.conf
追加如下內(nèi)容:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmni = 4096
kernel.shmmax 參數(shù)設(shè)置為物理內(nèi)存的一半
kernel.shmmax = 1073741824
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 = 1048586
#使修改立即生效
sysctl -p
5.限制oracle用戶的shell權(quán)限,實(shí)現(xiàn)對用戶資源進(jìn)行限制,如進(jìn)程數(shù)/文件數(shù)等等。
vi /etc/security/limits.conf
#末尾追加
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
limits.conf的格式如下:
–domain:username|@groupname 設(shè)置需要被限制的用戶名或組,組名前面加@和用戶名區(qū)別;也可以用通配符*來做所有用戶的限制。
–type:有 soft,hard 和 - 。soft 指的是當(dāng)前系統(tǒng)生效的設(shè)置值(警告)
hard 表明系統(tǒng)中所能設(shè)定的最大值(錯誤)。soft 的限制不能比har 限制高,- 表明同時設(shè)置了 soft 和 hard 的值。
–item:有以下幾種
core - 限制內(nèi)核文件的大小(KB)
date - 最大數(shù)據(jù)大小(KB)
fsize - 最大文件大小(KB)
memlock - 最大鎖定內(nèi)存地址空間(KB)
nofile - 打開的文件描述符的最大數(shù)目**(經(jīng)常設(shè)置)**
rss - 最大持久設(shè)置大小(KB)
stack - 最大堆棧大小(KB)
cpu - 最大CPU時間(min)
noproc - 過程最大數(shù)量
as - 地址空間限制(KB)
maxlogins - 此用戶的最大登錄數(shù)量
maxsyslogins - 在系統(tǒng)上登錄的最大數(shù)目
priority - 優(yōu)先級運(yùn)行用戶進(jìn)程
locks - 文件的最大數(shù)量鎖定用戶可容納
sigpending - 最大掛起信號的數(shù)量
msgqueue - 通過POSIX消息隊(duì)列使用的最大內(nèi)存(字節(jié))
nice - 最大不錯優(yōu)先允許提高到值:[-20,19]
rtprio - 最大實(shí)時優(yōu)先
6.修改用戶驗(yàn)證選項(xiàng)
要使/etc/security/limits.conf 文件配置生效,必須要確保 PAM驗(yàn)證模塊pam_limits.so 文件被加入到啟動文件中
vi /etc/pam.d/login
#末尾追加
session required /lib64/security/pam_limits.so
session required pam_limits.so
Pam.d文件夾下配置文件的語法為
Service model_type control_flag model_path options
(1)Service :使用PAM驗(yàn)證模塊的應(yīng)用程序,如ftp、telnet、login等。其中other一行指本文件中沒有單獨(dú)列出的其他應(yīng)用程序
驗(yàn)證模塊的類型,主要有以下幾種
auth :鑒別類模塊 account:賬戶類模塊
session:會話類模塊 password:口令類模塊
每行只能指定一中類型模塊,如果應(yīng)用程序需要多種模塊組合使用,則需要在多行中分別規(guī)定。
(2)Control_flag:對模塊驗(yàn)證成功或者失敗的結(jié)果的處理情況
Required:該模塊驗(yàn)證成功是用戶通過鑒別的必要條件。只有當(dāng)應(yīng)用程序?qū)?yīng)的所有帶有required標(biāo)記的模塊全部成功后,該應(yīng)用程序才能通過 鑒別。同時,如果任何帶有required標(biāo)記的模塊出現(xiàn)了錯誤,PAM并不立刻將錯誤信息返回給應(yīng)用程序,而是在所有模塊都調(diào)用完畢后,再將錯誤信息返回給調(diào)用它的應(yīng)用程序。
Requisite:與required相似,只有帶有此標(biāo)記的模塊返回成功后,用戶才能通過鑒別,不同之處在于,一旦失敗就不再執(zhí)行堆中后面的其他模塊,并且鑒別過程到此結(jié)束。
(3)Optiona: 即使該模塊驗(yàn)證失敗,用戶仍能通過鑒別。在PAM體系中,帶有該標(biāo)記的模塊失敗后,將繼續(xù)處理下一模塊。
7.為oracle用戶在bash和ksh中設(shè)定資源限制
修改/etc/profile文件,全局環(huán)境變量文件
vi /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
讓修改立即生效
source /etc/profile
8.創(chuàng)建對應(yīng)安裝目錄
[root@oracledb ~]# mkdir -p /home/db/oracle/product/11.2.0:仍然是Oracle RDBMS的軟件存放目錄。
[root@oracledb ~]# mkdir /home/db/oracle/oradata:存放數(shù)據(jù)文件
[root@oracledb ~]# mkdir /home/db/oracle/oraInventory:oraInventory存放的是Oracle軟件安裝的目錄信息,Oralce的安裝升級都需要用到這個目錄,
[root@oracledb ~]# mkdir /home/db/oracle/fast_recovery_area:閃回恢復(fù)區(qū),存放回閃恢復(fù)需要的文件的一塊磁盤大小,缺省2G
[root@oracledb ~]# chown -R oracle:oinstall /home/db/oracle:chown將指定文件的擁有者改為指定的用戶或組,用戶可以是用戶名或者用戶ID。-R:處理指定目錄以及其子目錄下的所有文件
[root@oracledb ~]# chmod -R 775 /home/oracle
9.下載oracle11g_R2包
官網(wǎng)下載的有兩個包,不知道為啥分個兩個
linux.x64_11gR2_database_1of2_4.zip
linux.x64_11gR2_database_2of2.zip
首先將兩個壓縮包放到同一目錄,先后解壓
unzip linux.x64_11gR2_database_1of2_4.zip
unzip linux.x64_11gR2_database_2of2.zip
20.編輯數(shù)據(jù)庫安裝文件db_install.rsp
解壓完成后會生成database目錄,解壓后的文件中database/response下有有db_install.rsp、dbca.rsp和netca.rsp三個應(yīng)答文件,
db_install.rsp:分別數(shù)據(jù)庫安裝文件、
dbca.rsp:建立數(shù)據(jù)庫實(shí)例
netca.rsp:監(jiān)聽配置安裝文件
隨便挑個目錄,拷貝這三個文件,我選擇的是和oracle安裝的同級目錄(安裝包的同級目錄)mkdir /home/db/oracle/etc
cp /home/db/oracle/database/response/* /home/db/oracle/etc
這個響應(yīng)文件其實(shí)就是配置文件,里面可以配置一些安裝的細(xì)節(jié),在DBCA圖形界面中能夠看到的安裝選項(xiàng),在響應(yīng)文件中都有體現(xiàn)。可以通過響應(yīng)文件來設(shè)置安裝企業(yè)版、個人版、標(biāo)準(zhǔn)版、安裝的語言包、字符集等。
vim db_install.rsp
#標(biāo)注響應(yīng)文件版本,這個版本必須和要#安裝的數(shù)據(jù)庫版本相同,安裝檢驗(yàn)無法通過,不能更改
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
#選擇安裝類型:1. INSTALL_DB_SWONLY只裝數(shù)據(jù)庫軟件 2.INSTALL_DB_AND_CONFIG安裝數(shù)據(jù)庫軟件并建庫 3.UPGRADE_DB升級數(shù)據(jù)庫
oracle.install.option=INSTALL_DB_SWONLY
#指定操作系統(tǒng)主機(jī)名,通過hostname命令獲得
ORACLE_HOSTNAME=SunnyBlog
#指定oracle inventory目錄的所有者,通常會是oinstall或者dba
UNIX_GROUP_NAME=oinstall
#指定產(chǎn)品清單oracle inventory目錄的路徑,如果是Win平臺下可以省略
INVENTORY_LOCATION=/home/db/oracle/oraInventory
#指定數(shù)據(jù)庫語言,可以選擇多個,用逗號隔開。選擇en, zh_CN(英文和簡體中文)
SELECTED_LANGUAGES=en,zh_CN
#設(shè)置ORALCE_HOME的路徑
ORACLE_HOME=/home/db/oracle/product/11.2.0
#設(shè)置ORALCE_BASE的路徑
ORACLE_BASE=/home/db/oracle
#選擇Oracle安裝數(shù)據(jù)庫軟件的版本(企業(yè)版,標(biāo)準(zhǔn)版,標(biāo)準(zhǔn)版1),不同的版本功能不同EE: EnterpriseEdition SE:Standard Edition SEONE:Standard Edition OnePE: Personal Edition (WINDOWS ONLY)
oracle.install.db.InstallEdition=EE
#是否自定義Oracle的組件,如果選擇false,則會使用默認(rèn)的組件,如果選擇true否則需要自己在下面一條參數(shù)將要安裝的組件一一列出。安裝相應(yīng)版權(quán)后會安裝所有的組件,后期如果缺乏某個組件,再次安裝會非常的麻煩
oracle.install.db.isCustomInstall=false
#手工選擇需要安裝組件的話(設(shè)置了oracle.install.db.isCustomInstall=true)
oracle.install.db.customComponents=oracle.server:11.2.0.1.0,oracle.sysman.ccr:10.2.7.0.0,oracle.xdk:11.2.0.1.0,oracle.rdbms.oci:11.2.0.1.0,oracle.network:11.2.0.1.0,oracle.network.listener:11.2.0.1.0,oracle.rdbms:11.2.0.1.0,oracle.options:11.2.0.1.0,oracle.rdbms.partitioning:11.2.0.1.0,oracle.oraolap:11.2.0.1.0,oracle.rdbms.dm:11.2.0.1.0,oracle.rdbms.dv:11.2.0.1.0,orcle.rdbms.lbac:11.2.0.1.0,oracle.rdbms.rat:11.2.0.1.0
#指定擁有OSDBA、OSOPER權(quán)限的用戶組,通常會是dba組
oracle.install.db.DBA_GROUP=dba
#oper用戶組
oracle.install.db.OPER_GROUP=oinstall
#選擇數(shù)據(jù)庫的用途,一般用途/事物處理,數(shù)據(jù)倉庫
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
#指定globalDBName
oracle.install.db.config.starterdb.globalDBName=orcl
#指定SID
oracle.install.db.config.starterdb.SID=orcl
#自動管理內(nèi)存的最小內(nèi)存(M)
oracle.install.db.config.starterdb.memoryLimit=800
#設(shè)定所有數(shù)據(jù)庫用戶使用同一個密碼
oracle.install.db.config.starterdb.password.ALL=oracle
#設(shè)置安全更新(貌似是有bug,這個一定要選true,否則會無限提醒郵件地址有問題,終止安裝。PS:不管地址對不對)
DECLINE_SECURITY_UPDATES=true
11.配置 oracle 用戶環(huán)境變量
每個用戶都可使用該文件輸入專用于自己使用的shell信息,當(dāng)用戶登錄時,該文件僅僅執(zhí)行一次!默認(rèn)情況下,他設(shè)置一些環(huán)境變量,執(zhí)行用戶的.bashrc文件.
此文件類似于/etc/profile,也是需要需要重啟才會生效,/etc/profile對所有用戶生效,~/.bash_profile只對當(dāng)前用戶生效。
先切換到oracle用戶,su - oracle
編輯 bash_profile ,輸入命令:vi .bash_profile,添加如下環(huán)境變量。
[oracle@oracledb ~]$ vim .bash_profile
#在末尾添加
ORACLE_BASE=/home/db/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0
ORACLE_SID=orcl
PATH=PATH:PATH:PATH:ORACLE_HOME/bin 修改path的值,將oracle的bin路徑添加到PATH環(huán)境變量中
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
12.根據(jù)靜默文件安裝oracle11g
cd /home/db/database
./runInstaller -silent -responseFile /home/db/oracle/etc/db_install.rsp -ignorePrereq
安裝過程可能比較長,別管它,再開一個窗口,tail -f /home/db/oracle/oraInventory/logs/installActions2021-07-27_11-34-06PM.log查看安裝日志
當(dāng)原安裝窗口出現(xiàn)Successfully Setup Software.
說明安裝成功
打開新的終端,以root身份登錄,執(zhí)行腳本:
[root@oracledb oraInventory]# sh /home/db/oracle/oraInventory/orainstRoot.sh
[root@oracledb 11.2.0]# sh /home/db/oracle/product/11.2.0/root.sh
orainstRoot.sh:
設(shè)置產(chǎn)品目錄位置與擁有該目錄的操作系統(tǒng)組,并產(chǎn)生/etc/oraInst.loc。
root.sh:
用來設(shè)置必要的操作系統(tǒng)權(quán)限,并將orahome,oraenv,coraenv復(fù)制到/usr/local/bin目錄下。生成/etc/oratab,其中存放一些數(shù)據(jù)庫相關(guān)信息。
https://blog.csdn.net/qq_36856983/article/details/105906662?utm_medium=distribute.pc_relevant_download.none-task-blog-2defaultBlogCommendFromBaidudefault-1.test_version_3&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-2defaultBlogCommendFromBaidudefault-1.test_version_
切換回oracle用戶
su oracle
$ORACLE_HOME/bin/netca /silent /responseFile /home/db/oracle/etc/netca.rsp
用戶可以靜默模式運(yùn)行netca 命令去配置并啟動 Oracle 網(wǎng)絡(luò)監(jiān)聽( listener.ora )、配置命名方式和配置配置網(wǎng)絡(luò)服務(wù)名( tnsnames.ora )。Oracle 提供了一個響應(yīng)文件模板,叫做 netca.rsp 。這里的netca命令是oracle的,先前配置了環(huán)境變量,因此可以使用。
命令運(yùn)行后提示:
Parsing command line arguments:
Parameter “silent” = true
Parameter “responsefile” = /home/db/oracle/etc/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Profile configuration complete.
Oracle Net Listener Startup:
Running Listener Control:
/home/db/oracle/product/11.2.0/bin/lsnrctl start LISTENER
Listener Control complete.
Listener started successfully.
Listener configuration complete.
Oracle Net Services configuration successful. The exit code is 0
成功運(yùn)行后,在/opt/oracle/product/11.2.0/network/admin中生成listener.ora和sqlnet.ora
查看端口是否占用/監(jiān)聽狀態(tài):
$ ss -tnl|grep 1521
$ lsnrctl status
lsnrctl:oracle命令
lsnrctl start:啟動指定的監(jiān)聽器
lsnrctl stop:關(guān)閉指定的監(jiān)聽器
lsnrctl status:顯示監(jiān)聽器的狀態(tài)。status命令顯示監(jiān)聽器是不是活動的,日志與跟蹤文件的位置,監(jiān)聽器已經(jīng)持續(xù)運(yùn)行了多長時間,以及監(jiān)聽器所監(jiān)聽的任務(wù)。
ss命令可以用來獲取socket統(tǒng)計信息,它可以顯示和netstat類似的內(nèi)容。但ss的優(yōu)勢在于它能夠顯示更多更詳細(xì)的有關(guān)TCP和連接狀態(tài)的信息,而且比netstat更快速更高效。ss是Socket Statistics的縮寫。
-t, --tcp #顯示tcp套接字
-n, --numeric #不解析服務(wù)名
-l, --listening #顯示監(jiān)聽狀態(tài)的socket
15…以靜默方式建立新庫,同時也建立一個對應(yīng)的實(shí)例(安裝數(shù)據(jù)庫)
su - oracle
vim /home/db/oracle/etc/dbca.rsp
模板1這是我本來想用的,后來報錯,用了簡單的模板2就行了
[GENERAL]
oracle版本,不能更改
RESPONSEFILE_VERSION = “11.2.0”
Description : Type of operation
操作類型:可選有創(chuàng)建數(shù)據(jù)庫,從數(shù)據(jù)庫創(chuàng)建模版,創(chuàng)建克隆模版,刪除數(shù)據(jù)庫,配置數(shù)據(jù)庫,添加實(shí)例(只限RAC),刪除實(shí)例(只限RAC),創(chuàng)建pdb,拔出pdb,刪除pdb,配置pdb
OPERATION_TYPE = “createDatabase”
[CREATEDATABASE]
Description : Global database name of the database
全局?jǐn)?shù)據(jù)庫的名字=SID+主機(jī)域名
第三方工具鏈接數(shù)據(jù)庫的時候使用的service名稱
GDBNAME = “orcl”
Description : System identifier (SID) of the database
對應(yīng)的實(shí)例名字
SID = “orcl”
Description : Name of the template
建庫用的模板文件
TEMPLATENAME = “General_Purpose.dbc”
Description : Password for SYS user
SYS, 數(shù)據(jù)庫管理帳戶
SYSPASSWORD = “oracle”
Description : Password for SYSTEM user
SYSTEM, 數(shù)據(jù)庫管理帳戶
SYSTEMPASSWORD = “oracle”
Description : Password for SYSMAN user
SYSMAN,企業(yè)管理器帳戶
SYSMANPASSWORD = “oracle”
Description : Password for DBSNMP user
DBSNMP,目錄集成平臺用戶
DBSNMPPASSWORD = “oracle”
Description : Location of the data file’s
數(shù)據(jù)文件存放目錄
DATAFILEDESTINATION =/home/db/oracle/oradata
Description : Location of the data file’s
恢復(fù)數(shù)據(jù)存放目錄
RECOVERYAREADESTINATION=/home/db/oracle/fast_recovery_area
Description : Character set of the database
字符集,重要!!! 建庫后一般不能更改,所以建庫前要確定清楚。
(CHARACTERSET = “AL32UTF8” NATIONALCHARACTERSET= “UTF8”)
CHARACTERSET = “AL32UTF8”
Description : total memory in MB to allocate to Oracle
oracle內(nèi)存1638MB,物理內(nèi)存2G*80%
TOTALMEMORY = “1638”
模板2:
[GENERAL]
RESPONSEFILE_VERSION = “11.2.0”
OPERATION_TYPE = “createDatabase”
[CREATEDATABASE]
GDBNAME = “orcl”
SID = “orcl”
TEMPLATENAME = “/home/db/oracle/product/11.2.0/assistants/dbca/templates/General_Purpose.dbc”
CHARACTERSET = “AL32UTF8”
開始安裝數(shù)據(jù)庫實(shí)例:
dbca -silent -responseFile /home/db/oracle/etc/dbca.rsp
模板一執(zhí)行后報錯
Exception in thread “main” java.lang.NullPointerException
at oracle.sysman.assistants.util.INIFileIniPair.<init>(INIFile.java:88)atoracle.sysman.assistants.util.INIFileIniPair.<init>(INIFile.java:88) at oracle.sysman.assistants.util.INIFileIniPair.<init>(INIFile.java:88)atoracle.sysman.assistants.util.INIFileIniSection.addPair(INIFile.java:225)
at oracle.sysman.assistants.util.INIFile.readINIFile(INIFile.java:827)
at oracle.sysman.assistants.util.INIFile.getProfileString(INIFile.java:439)
at oracle.sysman.assistants.dbca.backend.CommandLineArguments.processResponseFile(CommandLineArguments.java:4340)
at oracle.sysman.assistants.dbca.backend.CommandLineArguments.process(CommandLineArguments.java:3564)
at oracle.sysman.assistants.dbca.Dbca.execute(Dbca.java:109)
at oracle.sysman.assistants.dbca.Dbca.main(Dbca.java:184)
百度了問題是沒有安裝jdk,于是安裝了java se以后,還是報這個錯…
百度說/home/db/oracle/cfgtoollogs/下可看日志,結(jié)果也沒找到,后來使用模板2,執(zhí)行成功了,Copying database files
1% complete
3% complete
11% complete
18% complete
26% complete
37% complete
Creating and starting Oracle instance
40% complete
45% complete
50% complete
55% complete
56% complete
60% complete
62% complete
Completing Database Creation
66% complete
70% complete
73% complete
85% complete
96% complete
100% complete
Look at the log file “/opt/oracle/cfgtoollogs/dbca/orcl/orcl.log” for further details.
安裝完進(jìn)行實(shí)例進(jìn)程檢查:
ps -ef | grep ora_ | grep -v grep
oracle 3977 1 0 22:44 ? 00:00:00 ora_pmon_orcl
oracle 3979 1 0 22:44 ? 00:00:00 ora_vktm_orcl
oracle 3983 1 0 22:44 ? 00:00:00 ora_gen0_orcl
oracle 3985 1 0 22:44 ? 00:00:00 ora_diag_orcl
oracle 3987 1 0 22:44 ? 00:00:00 ora_dbrm_orcl
oracle 3989 1 0 22:44 ? 00:00:00 ora_psp0_orcl
oracle 3991 1 0 22:44 ? 00:00:00 ora_dia0_orcl
oracle 3993 1 0 22:44 ? 00:00:00 ora_mman_orcl
oracle 3995 1 0 22:44 ? 00:00:00 ora_dbw0_orcl
oracle 3997 1 0 22:44 ? 00:00:00 ora_lgwr_orcl
oracle 3999 1 0 22:44 ? 00:00:00 ora_ckpt_orcl
oracle 4001 1 0 22:44 ? 00:00:00 ora_smon_orcl
oracle 4003 1 0 22:44 ? 00:00:00 ora_reco_orcl
oracle 4005 1 0 22:44 ? 00:00:00 ora_mmon_orcl
oracle 4007 1 0 22:44 ? 00:00:00 ora_mmnl_orcl
oracle 4009 1 0 22:44 ? 00:00:00 ora_d000_orcl
oracle 4011 1 0 22:44 ? 00:00:00 ora_s000_orcl
再次查看監(jiān)聽狀態(tài):
$ lsnrctl status
**在查看監(jiān)聽狀態(tài)是可能會有以下錯誤
(1)TNS-12545: Connect failed because target host or object does not exist
這個是修改了機(jī)器的主機(jī)名,但host和listener.ora文件并沒有修改,因此需要修改、etc/host和監(jiān)聽/home/db/oracle/product/11.2.0/network/adminlistener.ora。使得其與hostname命令查看的結(jié)果一致。修改后,執(zhí)行l(wèi)snrctl start重新啟動監(jiān)聽
名詞解釋:
**數(shù)據(jù)庫實(shí)例
用Oracle官方描述:實(shí)例是訪問Oracle數(shù)據(jù)庫所需的一部分計算機(jī)內(nèi)存和輔助處理后臺進(jìn)程,是由進(jìn)程和這些進(jìn)程所使用的內(nèi)存(SGA)所構(gòu)成一個集合。
其實(shí)就是用來訪問和使用數(shù)據(jù)庫的一塊進(jìn)程,它只存在于內(nèi)存中。就像Java中new出來的實(shí)例對象一樣。
我們訪問Oracle都是訪問一個實(shí)例,但這個實(shí)例如果關(guān)聯(lián)了數(shù)據(jù)庫文件,就是可以訪問的,如果沒有,就會得到實(shí)例不可用的錯誤。
實(shí)例名指的是用于響應(yīng)某個數(shù)據(jù)庫操作的數(shù)據(jù)庫管理系統(tǒng)的名稱。她同時也叫SID。實(shí)例名是由參數(shù)instance_name決定的。
查詢當(dāng)前數(shù)據(jù)庫實(shí)例名:
select instance_name from v$instance;
數(shù)據(jù)庫實(shí)例名(instance_name)用于對外部連接。在操作系統(tǒng)中要取得與數(shù)據(jù)庫的聯(lián)系,必須使用數(shù)據(jù)庫實(shí)例名。比如我們作開發(fā),要連接數(shù)據(jù)庫,就得連接數(shù)據(jù)庫實(shí)例名:
jdbc:oracle:thin:@localhost:1521:orcl(orcl就為數(shù)據(jù)庫實(shí)例名)
一個數(shù)據(jù)庫可以有多個實(shí)例,在作數(shù)據(jù)庫服務(wù)集群的時候可以用到。
15.6、linux下創(chuàng)建oracle用戶表空間
就是在已有的數(shù)據(jù)庫實(shí)例上創(chuàng)建一個新的帳號,訪問一些新的表。安裝完之后是沒有自定義的用戶名賬號的。
操作步驟如下:
(1)登錄linux,以oracle用戶登錄(如果是root用戶登錄的,登錄后用 su - oracle命令切換成oracle用戶)
(2)以sysdba方式來打開sqlplus,命令如下: sqlplus “/as sysdba”
(3)查看我們常規(guī)將用戶表空間放置位置:執(zhí)行如下sql:
select name from v$datafile
(4)創(chuàng)建用戶表空間:
CREATE TABLESPACE NOTIFYDB DATAFILE ‘/home/oracle/app/oradata/orcl/scsdb.dbf’ SIZE 200M AUTOEXTEND ON EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
(5)創(chuàng)建用戶,指定密碼和上邊創(chuàng)建的用戶表空間
CREATE USER scs IDENTIFIED BY scs DEFAULT TABLESPACE NOTIFYDB;
(6)賦予權(quán)限
grant connect,resource to scs;
grant unlimited tablespace to scs;
grant create database link to scs;
grant select any sequence,create materialized view to scs;
–經(jīng)過以上操作,我們就可以使用scs/scs登錄指定的實(shí)例,創(chuàng)建我們自己的表了
ps:第一次執(zhí)行sql得時候提示了:
ERROR at line 1:ORA-01109: database not open
百度了一下,發(fā)現(xiàn)是數(shù)據(jù)庫實(shí)例狀態(tài)不對,執(zhí)行 select status from v$instance查看數(shù)據(jù)庫實(shí)例狀態(tài)為mounted,執(zhí)行alter database open將實(shí)例狀態(tài)置為open就能順利執(zhí)行sql了。
實(shí)例狀態(tài):nomount->mount->open
nomount:此時實(shí)例開啟,分配SGA、啟動一些后臺程序
mount:連接上數(shù)據(jù)庫,但此時僅限數(shù)據(jù)庫管理員操作數(shù)據(jù)庫
open:Oracle數(shù)據(jù)可以真正的對外服務(wù)
15.7使用plsql遠(yuǎn)程連接服務(wù)器oracle服務(wù)
一開始配置好了plsql后死活都連接不上oracle服務(wù),還覺得奇怪,ps一下進(jìn)程也是正常運(yùn)行,netstat端口也起來了,后來telnet一下1521端口發(fā)現(xiàn)不通,發(fā)現(xiàn)是防火墻攔截住了,放開一下就行;另外如果使用得得是云服務(wù)器,需要在網(wǎng)絡(luò)安全組策略中放開1521端口得訪問,否則依然是不能被訪問到。
總結(jié)
以上是生活随笔為你收集整理的阿里云服务器安装oracle11g-整理实战各路大神汇总的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新款云开发趣味测试小程序源码+功能超多
- 下一篇: 动态时间规整算法: 从DTW到FastD