數據庫系統入門 | Oracle Linux上部署Oracle 11g服務,並實現SSH遠程登錄管理


寫在前面

貼上與這次安裝相關文件、安裝包的鏈接:

如遇鏈接失效,Mail To nanzhouieATqq.com!

一、實驗內容

  1. 安裝 virtualbox 虛擬機(我更喜歡的是VMware);
  2. 在虛擬機上安裝Oracle Linux
  3. Oracle Linux上安裝Oracle 11g
  4. 配置虛擬機的網絡,數據庫服務器的監聽,TNS,使得可以遠程訪問數據庫服務器。
  5. 采用遠程登錄方式,使用ssh登錄數據庫服務器,進行數據庫實例管理。
  6. 采用遠程訪問方式,使用 i*sqlplus或者第三方管理軟件登錄服務器,進行數據庫實例管理。
  7. 建立HR的模式(建議使用官方腳本)。

二、實驗前期准備

1.軟件目錄

名稱 版本號
Vmware虛擬機 15.0.0-full-10134415-64bit
linux_11gR2_database_1of2 11.2.0.1.0 - 64bit
Putty.exe Release 0.70-64bit
Toad for oracle 12.8.0.49 -32bit
Oracle_11gR2_client 11g Release2 (11.2)-32bit
Oracle Linux文件(DOC-1002902.ova) Oracle Linux x64

2.准備一些配置文件、腳本文件

  • 在Oracle服務器端建立HR(Human Resource)模式所需的腳本執行文件;
  • Oracle客戶端配置TNS服務所需要的tnsname.oralistener.ora文件。

ps:以上這些安裝、配置、腳本文件在上面我分享的百度雲鏈接文件中都能找到。

三、實驗方案(具體步驟)

(一)在虛擬機上安裝Oracle Linux

1.在虛擬機中導入老師提供的 DOC-1002902.ova文件,由於實驗室32位PC機的原因,導入過程總是以失敗結束;因此改選64位PC機(配載VM虛擬機)來操作。


2.在VM虛擬機成功安裝Oracle linux(我的賬戶登錄密碼 oracle ),可以去設置語言、時區、用戶名及密碼等。

(二)在Linux上安裝Oracle 11g R2(服務器端)

1. 前期准備
1.1 硬件環境監測
Content Instruction
檢查物理內存 grep MemTotal /proc/meminfo
查看交換分區 grep SwapTotal /proc/meminfo
查看當前內存使用情況 free

PS:這一類指令可以有很多,但其實只要在之前導入虛擬機文件過程沒有什么異常,不是很有必要去了解這些硬件環境信息,那么這一步可以跳過。

1.2 檢查各種補丁包、函數依賴包
  • 方法:通過上網查找到需要的函數依賴包有以下這些:
    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
    
  • 通過類似重復以下的操作,借助root用戶終端 yum search/install 命令將這些未安裝的依賴包全部安裝到服務端。

  • 然后,再使用yum快速安裝oracle預裝環境——yum install oracle-rdbms-server-11gR2-preinstall
1.3 修改用戶環境配置等參數文件
  • 通過vi .bash_profile命令進入編輯界面,點擊i進入insert模式,就可以寫入以下數據了,寫完數據后,點擊ESC退出insert模式敲入:wq 保存本次修改並回到終端。
    #!/bin/bash
    ORACLE_BASE=/u01/app/oracle
    ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
    ORACLE_SID=prod 			#這個位置填寫的是Service_name
    
  • 修改 /etc/hosts ,增加 ip地址主機名 的對應關系,按照和上面同樣的方法,添加下面這條:
    192.168.216.128  docker.oracleworld.com  #ip地址 hostname
    

注意:如果出現 其他IP地址hostname 的對應關系,應當在前面加上#注釋掉或者直接刪掉。

  • 同樣的方法,通過終端vi mk_dir.sh 添入以下數據
    mkdir -p /u01/app/oraInventory
    chmod -R 775 /u01/app/oraInventory
    mkdir -p /u01/app/oracle
    mkdir /u01/app/oracle/cfgtoollogs
    chown -R oracle:oinstall  /u01
    chmod -R 775 /u01/app/oracle
    mkdir -p /u01/app/oracle/product/11.2.0/db_1
    chown -Roracle:oinstall/u01/app/oracle/product/11.2.0/db_1
    chmod -R 775 /u01/app/oracle/product/11.2.0/db_1
    
1.4 切換到Oracle用戶

去設置里面找到users,解鎖並修改已經生成的oracle用戶密碼,再切換用戶登錄到oracle下。

2. 安裝Oracle 11g

在終端輸入命令:unzip oracle11g 11.2.0.4 兩個安裝文件(也可以手動合並到同一個文件夾下),進入安裝文件中的目錄database,運行命令: ./runInstaller

同時,如果由於環境配置的原因,發現隨后安裝界面出現亂碼,那么最好在執行安裝之前添上這樣一條語句:export LANG=en_US_UTF-8

在隨后出現的安裝界面中,依次選擇如下:

  • 注意:過程中可能省去了一些安裝界面(默認Next即可)
  • 這里不填email等直接next,出現彈窗點擊Yes
  • 在接下來的界面中,依次選 install software only
  • 選擇單實例類型的數據庫
  • 選擇oracle的語言,選擇英文
  • 數據庫類型選擇企業版
  • 這里注意查看Oracle_Base路徑和Oracle_home路徑,必須保證和用戶的初始化參數文件一致
  • 設置 INVENTORY DIRECTORY
  • 檢查oracle用戶所屬的組
  • preinstall檢查階段,監測oracle所依賴的軟件包,重新安裝缺失的軟件包,如果仍然有錯誤,那么全部忽略即可
  • 最后一步監測oracle的情況
  • 久違的安裝界面
    安裝到這個步驟,基本上問題不多了, copying files 階段時,root模式下開一個終端,進入安裝目錄下的sysman/lib,編輯ins_emagent.mk文件。把 $(MK_EMAGENT_NMECTL)替換成$(MK_EMAGENT_NMECTL) -lnnz11

    同時這個過程中有可能會有一個提示對話框,然后按照指定路徑及說明方法運行兩個腳本。
    打開終端,通過su – root切換到root用戶,再通過bash命令依次執行對應目錄的兩個腳本,然后再來這個彈窗界面點擊OK即可。

  • 隨后,就可以點擊next,出現如下界面,表示在虛擬機這邊安裝服務端的Oracle 11g就已經成功了
3. 服務端NETCA創建配置監聽程序
3.1 執行netca指令

3.2 接下來的界面彈窗中直接默認Next

在選擇TCP/IP端口號時,可能會出現一個彈窗提示:默認的1521端口可能被占用。通過查找並沒有發現被占用問題,因此選擇Yes繼續。

4. 建立一個數據庫實例DBCA建庫

在這里插入圖片描述

4.1 設置數據庫名和SID

4.2 不啟用OEM

4.3 設置密碼

4.4 不需修改、直接next

4.5 不啟用快速恢復區、不啟用歸檔

4.6 不需修改、直接next

至此,Oracle服務端實例數據庫創建完畢。

5. 服務端啟用ssh服務

(三)在主機上安裝Oracle 11g Client(客戶端)

檢查ssh服務是否正常

下載putty.exe,打開以后,安裝下圖填入相對應信息(虛擬機IP地址可以在網絡設置中找到,同時,建議虛擬機端網絡連接方式選擇僅主機模式)進行測試(確保虛擬機處於開啟狀態)。

(四)安裝Oracle客戶端並配置本地網絡服務監聽

1. 點擊setup.exe啟動安裝
  • 安裝過程中,除修改安裝路徑外,其余直接默認Next即可。
  • 選擇管理員選項
2. 配置前的一些准備
  • 將之前准備好的 listener.oratnsnames.ora文件(兩個文件里面的內容如下所示)放到如下所示目錄下。
  • 同時,在環境變量中添加以下系統變量。
  • 在ssh服務控制終端執行如下(開啟數據庫、開啟監聽)
3. 本地網絡服務名配置

在所有程序中找到Net Configuration Assistant,進入配置界面操作如下。在測試連接過程中更改登錄如果忘了數據庫服務端密碼(以sys用戶為例),則需要重新給sys設置密碼(詳見后面的實驗問題及解決辦法)。

(五)第三方軟件Toad for Oracle連接數據庫

1. TNS檢測

進入cmd測試如下,說明數據庫監聽配置無誤

2. 使用Toad連接

打開Toad for Oracle中的toad.exe啟動,輸入數據庫服務端用戶名以及密碼后成功連接會出現如下的工作界面。

(六)建立HR的模式(服務器端進行)

1. 准備腳本文件

在如下所示目錄中,將已准備好的腳本文件粘貼過來

2. 執行腳本文件

進入數據庫層面,按照下面流程執行hr_main.sql這個腳本文件設置參數,就可以解鎖HR用戶並構建HR模式,且數據表中都有初始樣例數據。

四、實驗出現的問題及解決辦法

  1. 第一次嘗試安裝時,總是在Linking Text File出失敗,且界面卡死在那里。
  • 解決辦法:
    虛擬機重新啟動並通過恢復快照這一特性重新進行安裝,主要在對那些依賴包的安裝過程要尤為注意,一個一個一次檢查確保已安裝,雖然方法很笨拙,但至少不會出錯。
    同時,在Prerequisite Checks階段忽略所有錯誤繼續下一步,隨后完成安裝。
  1. 整個過程中經常會出現各種類型的錯誤,下面列出一些我遇到的這類問題
錯誤類型 錯誤原因 解決方案
ORA-12162 TNS:net service name is incorrectly specified 給出ORACLE_SID(可賦臨時值或是去host文件添加參數),重新嘗試登錄數據庫服務端
TNS-12545 Connect failed because target host or object does not exist 服務端root模式下修改host和listener.ora文件(即host文件里添上一條“IP地址 主機名”,listener文件里將host賦為修改后的主機名)
ORA-01078、LRM-00109 Failure in processing system parameters $ORACLE_BASE/admin/ 數據庫名稱 /pfile目錄下的init.ora.\********形式的文件copy到$ORACLE_HOME/dbs目錄下 initoracle.ora即可
ORA-12514 TNS 監聽程序當前無法識別連接描述符中請求服務 listener.ora中添加:(SID_DESC = (GLOBAL_DBNAME=全局數據庫名) (ORACLE_HOME =依照相對應的路徑來填) (SID_NAME = 數據庫服務名) )
ORA-12154 TNS無法解析指定的連接標識符 重新進行配置網絡,在服務端查詢此數據庫服務下的服務名,並重新檢查配置,填寫相對應虛擬機的IP地址,對於賬號、口令登陸的問題,需要去sysdba用戶下去設置。
  1. 用戶忘記了數據庫服務端的口令,導致在本地客戶端進行配置網絡服務時總是出現口令錯誤的提示
  • 解決辦法:按照下面的操作步驟進行,這樣使用修改后的用戶名和口令就可以測試成功了。

    只能選擇用戶狀態是open的用戶進行重新設置口令的處理

參考文章

最后一點說明

這是我有史以來寫過的最長最長的一篇安裝配置教程了,大部分的內容步驟都還是大三選修所記錄的實驗報告內容。這段時間需要准備數據庫知識的復習,這才重新拾起來,大體按照上面的步驟依次給重現了。讓我意外的是,當時竟然沒有po出一份安裝配置教程放網上。所以,這次趕緊加了把勁,整理了這篇。

這里面有些地方可能比較混亂,一是因為圖片量太大了,可能會有一些偏差,還有就是我得承認文中有用了幾張別的地方的圖片;二是因為這次的整個安裝配置過程相當繁瑣,很多地方可能會出現報錯、失敗等等,我還記得當年選修這門課第一個實驗就是弄這個,當時Linux指令等一些知識還不夠嫻熟,好像前后花了三天時間才完事。

最后,我想說的就是,教程寫的再完美,實際去操作的時候,每個人可能都難免會出現這樣那樣的問題,放在這篇來講,出現最多的就是形如 “ORA-××××××” 的類似問題,出了問題並不可怕,去某度和谷歌搜一下“ORA-××××××”,只要不是特別棘手,基本上都能解決。

貼張圖!!!
提神醒腦


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM