Oracle數據庫部署

Oracle數據庫部署

前言:前面我們學習過微軟的sqlserver,還有甲骨文公司的mysql,也理解了數據庫系統的作用,這兩種數據庫管理系統適用於軟件,網站,遊戲等後臺數據庫,例如我們在學習mysql的時候搭建過動態網站。但oracle屬於非常安全、完善的大型數據庫管理軟件,在電信、銀行、證券等大型應用場合擁有着絕對的優勢。那麼今天就給搭建介紹oracle的安裝和基本的使用。Oracle可以安裝到windowslinux系統上,但企業更多采用在linux上安裝,接下來我就以redhat6.5爲例。

關於oracle

最流行的大型關係數據庫 wKioL1kvbH6QXXTdAAP7PAlOv0E716.png-wh_50

spacer.gif 由甲骨文公司出品,目前最新版本爲Oracle12c

spacer.gif 本課程以64位企業版Oracle11gR2爲例 

spacer.gif 官方網站:http://www.oracle.com/

spacer.gif 採用C/S模式、支持SQL查詢語言 

spacer.gif 在穩定性、高性能、安全性等方面優於其他數據庫,因此常用於政府及企業 

spacer.gif Oracle的優點:支持sql語句、C/S模式、高性能、安全性高

 

一、安裝oracle的準備工作

1、系統及配置要求

1)確認linux系統的版本

wKiom1kvbJjBFXfQAABQ2B4WIa8599.png-wh_50 

 

2)物理內存:必須高於1G

物理內存應不少於1GB,對於VMWARE虛擬機建議不少於1200MB.對於系統中的交換分區設置,應參以下約定:物理內存爲1GB~2GB時,交換分區爲物理內存的1.5~2倍;物理內存爲2GB~16GB時,交換分區與物理內存大小相同;物理內存超過16GB時,交換分區使用16GB就可以了。

wKiom1kvbKvTdO4MAABzSzYITn4221.png-wh_50 

 

3)硬盤空間:企業版需要5.65G,還要確保/tmp目錄所在的分區空間不少於1G,建議總的空間給10G以上

wKiom1kvbL6yjHgJAABGBayPjsI373.png-wh_50 

 

4)確定主機名之後修改hosts文件(安裝好oracle之後再修改主機名會導致數據庫啓動失敗)

wKioL1kvbNSDOBMjAAB34DrhQeY160.png-wh_50 

 

2、配置yum,安裝支持包

Vim  oracle.repo

wKioL1kvbOrTg-LRAAAvJ27J4jQ255.png-wh_50 

 

wKiom1kvbP2Qyo-YAABEisJXfk8287.png-wh_50 

 

還需要安裝pdksh包,但是Redhat6.5光盤中的ksh存在兼容性衝突,所以需要單獨安裝pdksh-5.2.14-37.el5_8.1.x86_64.rpm,使用rpm安裝即可。(需要單獨安裝,通過wget下載)

wKiom1kvbQ_zI1xRAAA8fEap7G0584.png-wh_50 

 

 

3、調整內核參數

內核參數調整體現在/etc/sysctl.conf文件中。主要包括對內存調度、端口範圍、打開文件數、I/O請求等相關的一些設置,相關數值不可低於安裝要求。修改完畢後通過執行sysctl p命令使新配置立即生效。

vim  /etc/sysctl.conf   在文件尾部添加如下內容:

fs.aio-max-nr  = 1048576

fs.file-max = 6815744

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 = 5194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048586

在下面的三行前面加上#註釋。

#net.bridge.bridge-nf-call-ip6tables = 0

#net.bridge.bridge-nf-call-iptables = 0

#net.bridge.bridge-nf-call-arptables = 0

各參數詳解:

fs.aio-max-nr

此參數限制併發未完成的請求,應該設置避免I/O子系統故障。

fs.file-max

該參數決定了系統中所允許的文件句柄最大數目,文件句柄設置代表linux系統中可以打開的文件的數量。

kernel.shmall

該參數控制可以使用的共享內存的總頁數。Linux共享內存頁大小爲4KB,共享內存段的大小都是共享內存頁大小的整數倍。一個共享內存段的最大大小是16G,那麼需要共享內存頁數是16GB/4KB=16777216KB /4KB=4194304(頁),也就是64Bit系統下16GB物理內存,設置kernel.shmall = 4194304才符合要求.

kernel.shmmax

是核心參數中最重要的參數之一,用於定義單個共享內存段的最大值。設置應該足夠大,設置的過低可能會導致需要創建多個共享內存段,這樣可能導致系統性能的下降。至於導致系統下降的主要原因爲在實例啓動以及ServerProcess創建的時候,多個小的共享內存段可能會導致當時輕微的系統性能的降低(在啓動的時候需要去創建多個虛擬地址段,在進程創建的時候要讓進程對多個段進行“識別”,會有一些影響),但是其他時候都不會有影響。

官方建議值:

32linux系統:可取最大值爲4GB4294967296bytes-1byte,即4294967295。建議值爲多於內存的一半,所以如果是32爲系統,一般可取值爲4294967295

64linux系統:可取的最大值爲物理內存值-1byte,建議值爲多於物理內存的一半,例如,如果爲12GB物理內存,可取12*1024*1024*1024-1=12884901887 

kernel.shmmni

該參數是共享內存段的最大數量。shmmni缺省值4096,一般肯定是夠用了。

kernel.sem

kernel.sem = 250 32000 100 128爲例:

       250是參數semmsl的值,表示一個信號量集合中能夠包含的信號量最大數目。

       32000是參數semmns的值,表示系統內可允許的信號量最大數目。

       100是參數semopm的值,表示單個semopm()調用在一個信號量集合上可以執行的操作數量。

       128是參數semmni的值,表示系統信號量集合總數。

net.ipv4.ip_local_port_range

表示應用程序可使用的IPv4端口範圍。

net.core.rmem_default

表示套接字接收緩衝區大小的缺省值。

net.core.rmem_max

表示套接字接收緩衝區大小的最大值。

net.core.wmem_default

表示套接字發送緩衝區大小的缺省值。

net.core.wmem_max

表示套接字發送緩衝區大小的最大值。

 

4oracle用戶要求

Oracle需要固定的運行用戶oracle,安裝組oinstall,管理組dba,這些賬號需要提前建立好。此外用來存放oracle程序及數據庫文件的基本目錄/opt/oracle也應該提前創建好。

1)建立用戶和組

[root@rhel1 ~]# groupadd oinstall

[root@rhel1 ~]# groupadd dba

[root@rhel1 ~]# useradd -g oinstall -G dba oracle

[root@rhel1 ~]# passwd oracle

wKiom1kvbTCivI6LAAANM0Jh69k210.png-wh_50 

2)建立相關目錄

[root@rhel1 ~]# mkdir /opt/oracle

[root@rhel1 ~]# chown -R  oracle:oinstall /opt/oracle

[root@rhel1 ~]# chmod -R 755 /opt/oracle

[root@rhel1 ~]# sudo mkdir /opt/tmp

[root@rhel1 ~]# sudo chmod a+wr /opt/tmp

wKiom1kvbUKw8NkZAAAMZDS4608952.png-wh_50 

5Oracle11g的安裝任務應以運行用戶oracle的身份執行,需適當調整oracle用戶的環境配置以便滿足要求。Oracle11g安裝界的語言類型取決於環境變量LANG,若希望用中文安裝界面,則應確保LANG變量的值爲zh_CN.UTF-8。中文安裝界面有時會因缺少字體、字體配置不當等原因導致界面亂碼。這時可以改用en_US.UTF-8英文環境以迴避類似問題。

vim ~oracle/.bash_profile

export PATH

umask 022

export ORACLE_BASE=/opt/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2/db_1

export ORACLE_SID=orcl

export.UTL-8

export NLS_LANG="AMERICAN_AMERICA".ZHS16GBK

export PATH=$ORACLE_HOME/bin:$PATH

export DISPLAY=:0.0

wKiom1kvbVqDtikGAAAQIO908Cw429.png-wh_50 

6oracle用戶設置Shell限制爲了優化性能,需要添加oracle用戶限制參數。進程會話限制可以採用pam_limits認證模塊來實現,通過修改登錄程序loginPAM設置以啓用該認證。

修改/etc/security/limits.conf將用戶oracle能夠打開的進程數、進程使用的文件數加在。加入如下內容:

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

1行是設置進程數軟限制;第2行是設置進程數硬限制;第3行是設置文件數軟限制;第4行是設置文件數硬限制

修改/etc/pam.d/login,加入如下內容

session required /lib/security/pam_limits.so

session required pam_limits.so

7、配置oracle用戶資源限制,不配置也不會影響oracle數據庫的成功安裝,但是考慮到若有糟糕的sql語句對服務器資源的無限佔用,導致長時間對用戶請求無響應,建議提前限制oracle用戶資源。

配置方法如下:

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

wKioL1kvbXOzMFaaAAAI4u0hP98465.png-wh_50 

8、解決中文亂碼問題

RHEL6.5中安裝oracle11g時,中文安裝界面亂碼,解決方法:

Linux命令提示符下執行以下命令,把字體庫安裝到相應位置即可

注:在這裏zysong.ttf包裹需要自行下載

[root@rhel1 ~]# mkdir -p /usr/share/fonts/zh_CN/TrueType

[root@rhel1 ~]# cp /mnt/zysong.ttf /usr/share/fonts/zh_CN/TrueType/

[root@rhel1 ~]# chmod o+r /usr/share/fonts/zh_CN/TrueType/zysong.ttf

關閉防火牆和selinux,並設置永久ip地址和主機名wKioL1kvbYjiQdc0AAAX-Ji7Uus781.png-wh_50

準備工作完成之後重新啓動系統

二、正式安裝oracle

1.下載oracle11g軟件包到系統/home/oracle

[root@rhel1 ~]# su - oracle

[oracle@rhel1 ~]$ ls  /mnt

linux.x64_11gR2_database_1of2.zip  linux.x64_11gR2_database_2of2.zip  p8670579_112010_LINUX.zip  zysong.ttf

[oracle@rhel1 ~]$ cp /mnt/linux.x64_11gR2_database_1of2.zip .

[oracle@rhel1 ~]$ cp /mnt/linux.x64_11gR2_database_2of2.zip .

[oracle@rhel1 ~]$

2.解壓縮軟件包 (壓縮包可以從官方網站下載wget

[oracle@rhel1 ~]$ unzip linux.x64_11gR2_database_1of2.zip

[oracle@rhel1 ~]$ unzip linux.x64_11gR2_database_2of2.zip

3.授權允許用戶oracle使用圖形終端,例如執行:xhost + oracle@localhost,表示允許用戶oracle從本機訪問,或者執行xhost + 表示取消所有限制,這裏執行xhost +即可。

 

4.執行安裝程序

1、配置安全更新

wKiom1kvbaKCWJHrAADa64K2Uz4213.png-wh_50 

 

2、安裝選項,選擇“創建和配置數據庫” wKioL1kvbbXzvnfxAADCGaNPpN8760.png-wh_50

 

7、在系統類中選擇“服務器類”

wKiom1kvbcnSiUuQAAD6OtkDCtM114.png-wh_50 

 

8、網格選項中選擇“單實例數據庫安裝

wKioL1kvbdzAVXlfAADDJX8PkCI296.png-wh_50 

9、安裝類型選擇“典型安裝”。如果爲各種管理賬號分別設置口令,或者選擇語言版本,設置自動備份,存儲管理等,則應選擇“高級安裝”。

wKiom1kvbe6h_M6eAADvxg0tz4I851.png-wh_50 

 

10、典型安裝的配置,必須設置管理員口令,其它參數採用默認值,系統將自動創建3個用戶,分別是:超級管理員syssystem和數據庫所有者sysman,當選擇高級安裝時,可以爲3個用戶分別設置口令,否則將使用同一個管理口令。

wKiom1kvbgCTCCqsAAEa7d3r3d8536.png-wh_50 

 

11、創建產品清單,將清單目錄修改爲/opt/oracle/oralnventory,以便oracle用戶有權限寫入oracle數據庫的清單信息。

wKiom1kvbhXTyHI5AAEnPZJtywE369.png-wh_50 

 

12、先決條件檢查及概要,出現下面的程序包狀態失敗,因爲這些包是32位的包,而我們的系統是64位的,所以不用理會,點擊“全部忽略”。然後點擊“下一步”。

wKiom1kvbinQdAJSAAEPw-jB7Js304.png-wh_50 

 

wKioL1kvbjuSNoh8AAEiJbmMf1Q625.png-wh_50 

 

可以保存響應文件,以後安裝oracle時可以使用這個腳本執行安裝,就不用配置這麼多了。

 

13、安裝中......

wKiom1kvbk-C7EYkAADY5qc58TE005.png-wh_50 

wKioL1kvbmKCNzi2AAEIrcw6fkY615.png-wh_50 

 

14、當彈出“口令管理”的窗口時,單擊“口令管理”按鈕,將用戶scott解鎖,修改完成後,單擊“確定”按鈕。

wKiom1kvbnfSfIrxAAHjImlWlow906.png-wh_50 wKiom1kvboyyVMNAAAC1EhdyfmM840.png-wh_50

 

 

 

15、完成安裝

文件複製及相關部署結束之後,會彈出“執行配置腳本”對話框,根據提示切換爲root用戶並以此執行腳本,如下所示。

wKioL1kvbqLCZ5iQAAC2-KpYTAY410.png-wh_50 

 

wKioL1kvbrbT9crIAAEOwqDegyI879.png-wh_50 

最後單擊“確定”按鈕,會提示訪問https://oracleserver:1158/em/,使用此地址訪問OEM(企業管理器)平臺,以便對oracle數據庫實例進行管理。

 

 

wKioL1kvbsmRq9tpAAC56VEVeQs577.png-wh_50 

1、訪問OEM平臺(OEM平臺可以進行圖像化管理oracle,比較方便)。

在瀏覽器中輸入:https://oracleserver:1158/em/,輸入用戶名:sys,密碼pwd123,連接身份選擇SYSDBA

wKiom1kvbt7QYMcWAACRtNRnPjY950.png-wh_50 

 

 

wKioL1kvbvKQYVeaAAEp8urBZOM793.png-wh_50 

 

2、使用sqlplus命令行訪問oracle數據庫

首先,解決sqlplus命令行方向鍵不能用問題

安裝過程:

[root@oradb temp]# tar -xvf rlwrap-0.28.tar

[root@oradb temp]# cd rlwrap-0.28

[root@oradb rlwrap-0.28]# ./configure

[root@oradb rlwrap-0.28]# make

[root@oradb rlwrap-0.28]# make install

這樣就可以使用 rlwarp .

[oracle@oradb ~]$ rlwrap sqlplus "/ as sysdba"

這樣登錄數據庫 , 就可以使用上 下 鍵查找上次執行的命令.

如果每次都需要輸入 rlwrap 感覺麻煩的話 , 還可以加入到 .bash_profile , 就不用每次都輸入了.

alias sqlplus='rlwrap sqlplus'

alias rman='rlwrap rman'

1.在命令行界面中輸入:sqlplus  sys/pwd123 AS SYSDBA

wKiom1kvbwjizSTYAACxWw7flqY920.png-wh_50 

或者:

wKiom1kvbxnA9yqFAABA7zwLABM066.png-wh_50 

 

1)執行HELP INDEX命令查看所有可以使用的命令

 

 wKiom1kvb13Rpfg_AADmRG9hhOw008.png-wh_50

2)執行SHOW USER可以查看當前登錄的用戶

 

 wKioL1kvb53gSB4uAAAc1XljyLI077.png-wh_50

3建立oracle服務的啓動腳本:(補充)

雖然通過各種服務組件程序能夠啓動、停止整個oracle11g數據庫系統,但顯然還不夠方便,在RHEL6服務器中,更好的做法是將相關操作編寫爲服務腳本,交給chkconfig工具來管理,從而實現隨系統開、關機自動啓動、停止oracle數據庫。

vi /etc/init.d/oracle ,輸入如下內容:

wKiom1kvb7LCQr0tAAFO7BP2uKk475.png-wh_50 

 

拷貝到/etc/init.d下,並設置權限。

wKioL1kvb8bggfEZAABJKpK6dCw736.png-wh_50 

 

給腳本設置權限並添加爲系統服務

wKiom1kvb9ejhwDsAABd8M7hkoE404.png-wh_50 

 

添加好oracle服務後,就可以通過腳本的start、stop、status、restart參數來控制oracle數據庫的啓動、停止、查看狀態、重啓了。

六、常見系統控制命令

1、執行lsnrctl start命令可以啓動oracle監聽器。

2、執行lsnrctl status命令可以查看oracle監聽器的狀態。

3、執行emctl stop dbconsole命令可以關閉OEM管理控制檯。

4、執行dbshut $ORACLE_HOME命令可以停止數據庫實例。

5、執行dbstart  $ORACLE_HOME命令可以啓動數據庫實例。

6、使用sqlplus命令工具時,若以超級管理員sys登錄,則在SQL>環境中執行STARTUP;SHUTDOWN IMMEDIATE;指令也可以啓用、關閉默認的數據庫實例。

wKioL1kvb-qRu29SAADJCX7TmrY143.png-wh_50 

七:創建數據庫

如果在安裝oracle產品時選擇不建立數據庫,那麼要使用oracle系統就必須先創建數據庫,如果在安裝oracle產品時選擇建立數據庫,也可以再創建第二個數據庫。

創建數據庫有兩種方法:一種通過圖形界面;另一種採用create  database命令,下面介紹圖形界面的方法。

linux中,運行數據庫配置助手(DBCA),執行$ORACLE_HOME/bin目錄下執行DBCA

 

1、執行netca啓用監聽的方法(如果沒有啓用需要做這一步)(爲了使客戶端能連接到oracle實例,以及有些命令也需要啓用監聽)

wKioL1kvb__SnZGtAAGcXu06U28901.png-wh_50 

wKiom1kvcBayYBaJAAFWR6hTdWw155.png-wh_50 

wKioL1kvcDfC-S-DAAEzNx0pdWQ609.png-wh_50 

wKioL1kvcErjuyQgAAFSsXJeO9M502.png-wh_50 

 

後面下一步即可。

 

或者使用命令啓動監聽:

wKioL1kvcGTgCLOsAACkjpdBfng794.png-wh_50 

 

1)啓用監聽

wKiom1kvcHqgraHvAABNzb_zKPE336.png-wh_50 

 

wKiom1kvcI2zoDnEAADI6T8adZE496.png-wh_50 

 

6)使用oem如何連接不同的oracle服務器

export ORACLE_SID=benet
emctl status dbconsole
如果沒有啓動則啓動:
emctl start dbconsole

wKioL1kvcKHSSu3yAABXHcLWrNs185.png-wh_50 

 

八:啓動關閉數據庫

1、數據庫的啓動

啓動(startup)一個數據庫需要3個步驟

1)啓動oracle實例

2)由實例安裝數據庫

3)打開數據庫

startup命令中,可以通過不同的選項來控制數據庫的不同的啓動步驟。

 

 

NOMOUNT選項:

nomount:已經通過參數文件知道控制文件在哪個位置,但是還沒有讀取控制文件。主要的作用就是啓動一個實例,讀取init.ora初始化參數文件,啓動後臺進程,初始化全局SGA

MOUNT選項:

讀取了控制文件,通過控制文件知道了其他文件(數據文件和日誌文件),此時並沒有讀取數據文件和日誌文件,這個狀態叫mount狀態。啓動實例並且安裝了數據庫,但沒有打開數據庫。這種打開方式常在數據庫維護操作中使用,例如對數據文件更名,改變重做日誌及打開歸檔方式等,在這種打開方式下,除了可以看到SGA系統列表以外,系統還會給出“數據庫裝載完畢”提示。


Open選項:

讀取完控制文件之後,找到了數據文件和日誌文件,數據庫就處於OPEN狀態了。

startupnomount|mount|open

shudownnormal|immedieate|transactional|abort

 

注意:如果僅僅執行startup命令,將會完成啓動實例,安裝實例和打開數據庫的所有3個步驟,這是系統出了可以看到前面startup mount方式下所有提示外,還會給出一個“數據庫已經打開”的提示,此時,數據庫系統處於正常的工作狀態,可以接收用戶請求。

 

如果使用startup  nomount 命令或者startup  mount命令,必須採用alter  database命令執行打開數據庫操作,例如:如果以startup nomount方式打開數據庫,也就是說實例已經啓動,但是數據庫沒有安裝和打開,這是必須運行下面的兩條命令,數據庫才能正確啓動。
ALTER DATABASE MOUNT;

ALTER DATABASE OPEN;

 

如果以startup  mount方式啓動數據庫,只需要運行下面一條命令即可打開數據庫

ALTER DATABASE OPEN

 

2、執行startup命令

wKioL1kvcLuysv0hAACZ5-o15ZQ754.png-wh_50 

wKiom1kvcM2BbkuUAAApmMnilOY432.png-wh_50 

可以看出數據庫已經打開

 

注意:

oracle11g數據庫在執行dbca或者調整sga後重啓oracle的時候可能會出現ORA-00845 MEMORY_TARGET not supported on this system 錯誤。

究其原因就是Linux系統的shm的大小比SGA設置的小,造成的,距離來說,SGA設置4G,而shm可能只有1G

解決辦法:

調整shm的大小,具體操作如下:

vi /etc/fstab

修改如下行的設置

tmpfs /dev/shm tmpfs defaults 0 0

改成

tmpfs /dev/shm tmpfs defaults,size=6G 0 0

保存退出

重新mountshm使其生效

mount -o remount /dev/shm

 

 

 

3、關閉數據庫

 

 

wKioL1kvcOqTKBMmAAA8rQ9fSc8321.png-wh_50 

 

4、開始startup  nomount狀態

 wKiom1kvcQGREhCrAAB-7esUzyo393.png-wh_50

可以看出現在處於STARTED狀態

wKioL1kvcRWygr7eAAA5LH-_uIA739.png-wh_50 

5、修改數據庫到open狀態

wKiom1kvcS2wOd0sAACXyC44phg255.png-wh_50 

 

6、數據庫的關閉

normal:這是默認選項,使用該選項時,不允許任何新的用戶連接,但是允許繼續當前的所有連接,只有所有用戶(自願的)退出登錄時,數據庫才能真正的關閉

通常,正常的數據庫關閉是沒有意義的,即使只剩下database control在運行,也總是存在未退出登錄的用戶。也許關閉一個數據庫需要幾天或更長的事件(如果用戶一直沒有自己關閉)

immediate使用這個選項時,不允許任何新的用戶連接,當前的所有連接的會話都被終止。任何活動的事務都會都將回滾,隨後數據庫會被關閉。是一種常用的關閉數據庫方式,快速關閉數據庫。

transactional:使用這個選項時,不允許任何新的用戶連接,沒有存在於某個事務中的現有會話被終止,允許當前位於某個事務中的會話在完成該事務之後終止。一但所有會話終止,數據就會被關閉(使用shutdown  immediate

abort:oracle而言,使用這個選項相當於斷電。實例被立即終止。此時,任何數據都不會被寫入磁盤。但是在下一次啓動數據庫的時候,速度比較慢(需要實例恢復)。建議在以下情況使用這種方式。

1)數據庫一直處於非正常的工作狀態,不能用shutdown normal或者shutdown  immediate命令關閉。

2)需要立即關閉數據庫

3)在啓動數據庫實例時遇到問題

 

 

如果你改了忘記了,可以利用如下方法重置:
1)進入cmd
2sqlplus / as sysdba
3alter user sys identified by 新密碼;

說明:oracle有兩種登錄方式,一種是系統賬戶,一種是oracle,修改sys口令的時候Oracle採用的是操作系統認證方式,當屬於操作系統DBA組用戶登陸到數據庫服務器,那麼Oracle認爲這樣的用戶就可以授權以SYSDBA身份登錄數據庫,這時的用戶名和密碼隨便輸什麼,都能連上庫,使用show user命令查看登陸用戶,其實都是SYS用戶。

 


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