天天看點

[CentOS] Oracle10g安裝部署Oracle 10g安裝部署

文章目錄

  • Oracle 10g安裝部署
    • 一.軟體版本
    • 二.安裝前準備
        • 1)禁用防火牆
        • 2)禁用 SELinux
        • 3)安裝依賴包
        • 4)建立Oracle使用者組和使用者
        • 5)配置Oracle使用者可暫時擁有root權限
        • 6)配置系統核心參數
        • 7)配置資源限制檔案
        • 8)配置PAM子產品
        • 9)配置linux環境變量檔案
        • 10)修改linux發行版本
        • 11)建立Oracle安裝檔案夾和資料存放檔案夾
        • 13)登出root使用者
        • 14)配置Oracle使用者環境變量
    • 三.安裝 Oracle,并進行相關配置
        • 1)解壓縮Oracle安裝檔案
        • 2)設定系統環境語言
        • 3)開始安裝
        • 4)安裝過程
        • 5)簡單的測試
    • 四、設定開機自啟動
    • 五、修改Oracle配置
        • 1)修改Oracle監聽端口
        • 2)重新開機執行個體
        • 3)表空間、使用者、角色權限的管理
        • 4)導入資料
        • 5)資料備份

Oracle 10g安裝部署

一.軟體版本

  • oracle版本:10201_database_linux_x86_64.cpio

作業系統:CentOS-7-x86_64-DVD-1804.iso

記憶體:4G

磁盤:128G(建議16G及以上)

二.安裝前準備

  • 使用 root 使用者登入系統進行操作
  • # 表示注釋或root使用者執行
  • $ 表示除root以外的使用者
  • SQL> 表示sqlplus操作

1)禁用防火牆

  • 如果目前機器未安裝 iptables 防火牆,則跳過
#--檢查是否開啟
# systemctl status iptables.service
           
  • 未安裝提示
[[email protected] ~]$ systemctl status iptables.service
Unit iptables.service could not be found.
           
  • 關閉 iptables 防火牆
#--重新開機後生效
#--開啟
# systemctl enable iptables.service
#--關閉 (== 目前操作建議使用 ==)
# systemctl disable iptables.service

#--即時生效,重新開機後失效
#--開啟
# systemctl start iptables.service
#--關閉
# systemctl stop iptables.service
           

2)禁用 SELinux

  • 編輯 /etc/selinux/config 檔案,修改 SELINUX=disabled
# vim /etc/selinux/config
           
#--原内容
SELINUX=enforcing

#--修改後
SELINUX=disabled
           
  • 重新開機機器

3)安裝依賴包

  • Oracle官網文檔要求安裝的依賴包
https://docs.oracle.com/cd/E11882_01/install.112/e47689/pre_install.htm#LADBI1111
# yum -y install libXp

#-- 如果後面安裝時報錯,有下面幾個包名時,可運作以下指令
# yum -y install libXp.i686
# yum -y install libXt.i686
# yum -y install libXtst.i686
           
  • 運作指令時,要換行(可先拷貝到txt,把換行删除)
yum -y install binutils compat-libcap1 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 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel libstdc++-devel.i686 libaio libaio.i686 libaio-devel libaio-devel.i686 make sysstat
           

4)建立Oracle使用者組和使用者

  • 建立 使用者組

    oinstall

# groupadd oinstall
           
  • 建立使用者組

    dba

# groupadd dba
           
  • 新增使用者

    orauser

    ,并加入使用者組

    oinstall

    dba

# useradd -m -g oinstall -G dba orauser
           
  • 測試使用者

    orauser

    是否建立成功
# id orauser
           
  • 修改

    orauser

    的密碼
# passwd orauser
           

5)配置Oracle使用者可暫時擁有root權限

  • 編輯 /etc/sudoers檔案
# vim /etc/sudoers
           
  • 找到
root    ALL=(ALL)       ALL
           
  • 在下一行寫入
orauser    ALL=(ALL)       ALL
           

6)配置系統核心參數

  • 編輯

    /etc/sysctl.conf

    檔案
#--表示系統一次可以使用的共享記憶體總量(以頁為機關)。預設值就是2097152,通常不需要修改
kernel.shmall = 4294967296
#--定義了共享記憶體段的最大尺寸(以位元組為機關)。預設為32M,對于oracle來說,該預設值太低了,通常将其設定為2G
kernel.shmmax = 68719476736
#--用于設定系統範圍内共享記憶體段的最大數量。該參數的預設值是 4096 。通常不需要更改
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
#--這裡1002是oracle使用者組dba的gid,即運作 #id orauser 時,dba旁邊的資料
#--例如:uid=1001(orauser) gid=1001(oinstall) 組=1001(oinstall),1002(dba)
vm.hugetlb_shm_group=1002
           
  • 執行目前配置
# sysctl -p
           

7)配置資源限制檔案

  • 編輯

    /etc/security/limits.conf

    檔案
# vim /etc/security/limits.conf
           
  • 寫入以下内容:(格式:username|@groupname type resource limit)
orauser soft nproc 2047 
orauser hard nproc 16384 
orauser soft nofile 1024 
orauser hard nofile 65536
           

8)配置PAM子產品

  • 編輯

    /etc/pam.d/login

    檔案
# vim /etc/pam.d/login
           
  • 寫入以下内容:
session required /lib64/security/pam_limits.so 
session required pam_limits.so
           

9)配置linux環境變量檔案

  • 編輯

    /etc/profile

    檔案
# vim /etc/profile
           
  • 寫入以下内容:(1.注意 if 、 [] 、= 的兩邊是需要空格的,否則執行會報錯;2.

    if [ $USER = "orauser" ]; then

    orauser

    是Oracle使用者名)
if [ $USER = "orauser" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
fi
           
  • 寫入位置
pathmunge () {
    case ":${PATH}:" in
        *:"$1":*)
            ;;
        *)
            if [ "$2" = "after" ] ; then
                PATH=$PATH:$1
            else
                PATH=$1:$PATH
            fi
    esac
}

##--寫入位置開始
if [ $USER = "orauser" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
fi
##--寫入位置結束

if [ -x /usr/bin/id ]; then
    if [ -z "$EUID" ]; then
        # ksh workaround
        EUID=`/usr/bin/id -u`
        UID=`/usr/bin/id -ru`
    fi
    USER="`/usr/bin/id -un`"
    LOGNAME=$USER
    MAIL="/var/spool/mail/$USER"
fi
           

10)修改linux發行版本

  • 由于 Oracle 10g發行時,CentOS7并未發行,是以,需要修改linux發行版本,應對Oracle安裝時的檢測
  • 編輯

    /etc/redhat-release

    檔案
# vim /etc/redhat-release
           
  • 寫入以下内容:
#--原檔案内容
CentOS Linux release 7.5.1804 (Core)

#--修改後檔案内容
redhat 4
           

11)建立Oracle安裝檔案夾和資料存放檔案夾

#--建立檔案夾
# mkdir /opt/oracle
# mkdir /opt/oracle/102
#-- 修改目錄及子目錄所有檔案的擁有者
# chown -R orauser:dba /opt/oracle
           

12)配置主機名靜态查詢表

  • 輸出

    /etc/hosts

    檔案内容
# cat /etc/hosts
           
  • 如果有以下内容,則不需要修改(確定 127.0.0.1 是存在的,否則,在配置Oracle監聽時會無法啟動監聽)
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
           

13)登出root使用者

  • 登出 root 使用者,使用 orauser 重新登入系統
  • 注意不是運作 # su orauser 指令

14)配置Oracle使用者環境變量

  • 進入使用者

    orauser

    的使用者目錄(一般是打開終端時的路徑)
$ cd /home/orauser
           
  • 編輯

    .bash_profile

    檔案
$ vim .bash_profile
           
  • 寫入以下内容:
#--上面建立的Oracle安裝檔案夾
ORACLE_BASE=/opt/oracle
ORACLE_HOME=$ORACLE_BASE/102
#--執行個體ID可以根據實際情況進行修改
ORACLE_SID=orcl
LD_LIBRARY_PATH=$ORACLE_HOME/lib
PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH PATH
           
  • 執行 source 指令,使檔案生效
$ source .bash_profile
           

三.安裝 Oracle,并進行相關配置

1)解壓縮Oracle安裝檔案

  • 将 10201_database_linux_x86_64.cpio 安裝包拷貝到 /opt/oracle 檔案夾下
  • 解壓縮Oracle安裝檔案
$ cpio -idmv < 10201_database_linux_x86_64.cpio
           
  • 進入解壓目錄
$ cd database
           

2)設定系統環境語言

  • 如果目前CentOS的環境是中文,需要設定為英文,防止Oracle安裝界面亂碼
$ export LANG=en_US
           

3)開始安裝

$ ./runInstaller
           
  • 如果出現安裝視窗顯示太小,或隻有一小條邊框時,可以配置使用者目錄下的

    .bash_profile

    檔案(沒有就跳過)
#--orauser為使用者目錄
$ vim /home/orauser/.bash_profile
           
  • 配置内容如下:
export LANG=en_US
export JAVA_FONTS=/usr/share/fonts/zh_CN/TrueType
           
  • 運作安裝指令時,多加一個參數
$ ./runInstaller -ignoreSysPrereqs
           

4)安裝過程

  • 配置 Oracle Home Location(預設):

    /opt/oracle/102

  • UNIX DBA Group(預設):

    dba

  • 配置執行個體名、管理者

    sys

    的密碼
  • **下一步 **
  • Enter the full path of the inventory directory(預設):

    /opt/oracle/oraInventory

  • Specify Operating System group name(使用者選擇):

    dba

  • 下一步
  • 未驗證通過的檢查項,手動勾選驗證,勾選後 Status 變為

    User Verified

  • **下一步 **
  • 點選 Install 進行安裝(如果Oracle安裝過程有出錯,可以直接忽略,點選 Continue )

出現的錯誤提示:

Error in invoking target ‘all_no_orcl’ of makefile ‘/opt/oracle/102/rdbms/lib/ins_rdbms.mk’.See’/opt/oracle/oraInventory/logs/installActions2018-10-22-01-14-29PM.log’ for details.

Error in invoking target ‘collector’ of makefile ‘/opt/oracle/102/rdbms/lib/ins_rdbms.mk’.See’/opt/oracle/oraInventory/logs/installActions2018-10-22-01-14-29PM.log’ for details.
  • 等待 Database Configuration Assistant 視窗配置資料庫
  • (一般不會出現,可跳過)如果這裡出現如下異常:
OUI-25031:Some of the configuration assistants failed.

解決:添加ip和主機名的映射

#--查詢主機名
$ hostnamectl status

#--編輯/etc/hosts
$ vim /etc/hosts
           
#--原檔案内容
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

#--修改後檔案内容
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.31.10   localhost.localdomain
           
  • Database Configuration Assistant 配置完成後,點選 OK
  • 稍等會彈出 Execute Configuration scripts 視窗(不要關閉)
  • 重新打開一個終端,切換到使用者root,執行上面視窗的.sh檔案,(可直接複制視窗的檔案路徑)
# su root
# /opt/oracle/oraInventory/orainstRoot.sh
# /opt/oracle/102/root.sh
           
  • 遇到下面指令行提示,直接按Enter鍵
Enter the full pathname of the local bin directory: [/usr/local/bin]:
           
  • 點選 OK 鍵
  • 點選 Oracle Universal Installer: End of Installation 視窗的Exit 鍵,彈出是否退出的視窗,點選 Yes 鍵(如果出現隻有一小條視窗的情況,把滑鼠移到小條視窗上,調節視窗大小)

5)簡單的測試

#--輸出目前執行個體
$ echo $ORACLE_SID
#--多個執行個體時,指定目前執行個體
$ export ORACLE_SID=orcl

#--啟動監聽
$ lsnrctl start
#--檢視監聽狀态
$ lsnrctl status

#--啟動sqlplus
$ sqlplus /nolog
#--dba登入
SQL> conn / as sysdba

#--啟動目前執行個體
SQL> startup
#--檢查目前執行個體是否啟動成功(出現一排的ora_XXX_執行個體名,說明啟動成功)
$ ps -ef|grep ora_

           

四、設定開機自啟動

  • 使用使用者 root 進行登入系統

1)配置

/etc/oratab

檔案

# vim /etc/oratab
           
  • 找到以下内容:
orcl:/opt/oracle/102:N
           
  • 改為:
orcl:/opt/oracle/102:Y
           

2)配置

/etc/rc.d/rc.local

檔案

# vim /etc/rc.d/rc.local
           
  • 寫入以下内容:(orauser=使用者名,後面是安裝路徑)
su orauser -lc "/opt/oracle/102/bin/lsnrctl start"
su orauser -lc /opt/oracle/102/bin/dbstart
           
  • 設定

    rc.local

    的可執行權限
# chmod +x /etc/rc.d/rc.local
           
  • 重新開機機器(啟動後,使用上面指令檢查)

五、修改Oracle配置

1)修改Oracle監聽端口

  • 停止Oracle監聽
#--停止監聽
$ lsnrctl stop
#--檢視監聽狀态
$ lsnrctl status
#--檢視指定端口狀态
$ netstat -an|grep 15215
#--啟動監聽
$ lsnrctl start
           
  • 修改

    listener.ora

    監聽配置檔案
#--端口由 1521 改為 15215 | $ORACLE_HOME需要配置環境變量
$ vim $ORACLE_HOME/network/admin/listener.ora
           
#--原配置
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )

#--修改後
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 15215))
    )
  )

           
  • 登入 sqlplus,修改 system 表的 local_listener 參數,設定 port=15215
#--啟動sqlplus
$ sqlplus /nolog
#--dba登入
SQL> conn / as sysdba

#--查詢 local_listener 屬性的Value是否為空字元串
SQL> show parameter local_listener;
#--修改 local_listener 屬性
SQL> alter system set local_listener='(address = (protocol = tcp)(host = localhost)(port = 15215))';
           

2)重新開機執行個體

#--多個執行個體時,切換到需要操作的執行個體
$ export ORACLE_SID=orcl
#--進入sqlplus控制台
$ sqlplus /nolog
#--以管理者身份登入
SQL> connect / as sysdba
#--停止資料庫執行個體
SQL> shutdown abort
#--啟動執行個體
SQL> startup
#--退出sqlplus
SQL> exit
           

3)表空間、使用者、角色權限的管理

  • oracle 預設表空間 system
  • oracle 預設臨時表空間 temp
  • 建立表空間
#--登入sqlplus,查詢資料檔案位置
SQL> select name from v$datafile;

#--建立臨時表空間,temp_orcl 表示臨時表空間名稱
SQL> create temporary tablespace temp_orcl tempfile '/opt/oracle/oradata/orcl/temp_orcl.dbf' size 512M autoextend on next 128M maxsize unlimited extent management local;

#--建立表空間,db_orcl 表示表空間名稱
SQL> create tablespace db_orcl logging datafile '/opt/oracle/oradata/orcl/db_orcl.dbf' size 512M autoextend on next 128M maxsize unlimited extent management local;
           
  • 建立使用者,并指定表空間資訊(user後面接

    使用者名

    ,identified後面接

    密碼

    ,db_orcl表示表空間,temp_orcl表示臨時表空間)
#--建立使用者
SQL> create user testuser identified by test123 account unlock default tablespace db_orcl temporary tablespace temp_orcl;

#--級聯删除,cascade表示如果使用者testuser下有其它對象,也會一并删除(強制删除)
SQL> drop user testuser cascade

#--修改使用者testuser的密碼
SQL> alter user testuser identified by 123456;
           
  • 配置角色權限
#--把connect,resources角色賦予使用者testuser
SQL> grant connect,resource to testuser;
#--把dba角色賦予使用者testuser
SQL> grant dba to testuser;

#--撤銷角色
SQL> revoke connect,resource to testuser
           

4)導入資料

#-- 使用者=testuser,密碼=test123,監聽端口=15215
$ imp testuser/[email protected]:15215/db_orcl file=/home/orauser/upload/test.dmp full=y
           
  • 生成drop語句(或者删除使用者,重新建立)
SQL> select 'drop table '||table_name||';' from cat where table_type='TABLE';
           

5)資料備份

  • 建議使用Oracle使用者(具有sudo權限)
  • 查詢目前資料庫字元集,避免備份後亂碼情況(選其一)
SQL> select * from nls_database_parameters t where t.parameter='NLS_CHARACTERSET';
SQL> select * from v$nls_parameters where parameter='NLS_CHARACTERSET';
           
  • 建立相關備份目錄(根據實際情況設定)
#--建立資料備份目錄,`-p`=建立多級目錄
# mkdir -p /opt/oracle/backup
#--建立備份腳本目錄
# mkdir -p /opt/oracle/backup/shell
#--建立導出資料日志目錄
# mkdir -p /opt/oracle/backup/logs
           
  • 建立備份腳本檔案
# vim /opt/oracle/backup/shell/orabak.sh
           
  • orabak.sh

    腳本内容如下:

    1. Oracle安裝路徑、備份路徑、Oracle使用者和密碼、執行個體名等資訊需要根據情況進行修改

    2. 注釋的腳本是,每次備份資料庫時自動删除30天之前的資料庫檔案

    3. 腳本中使用

    NLS_LANG

    設定導出資料庫檔案字元集
#!/bin/sh
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export DATA_DIR=/opt/oracle/backup
export LOGS_DIR=/opt/oracle/backup/log
#export DELTIME=`date -d "30 days ago" +%Y%m%d`
export BAKUPTIME=`date +%Y%m%d%H%M%S`
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
mkdir -p $DATA_DIR
mkdir -p $LOGS_DIR
echo "Starting bakup..."
echo "Bakup file path $DATA_DIR/$BAKUPTIME.dmp"
exp testuser/[email protected]/orcl file=$DATA_DIR/ORCL$BAKUPTIME.dmp log=$LOGS_DIR/ORCL$BAKUPTIME.log
#echo "Delete the file bakup before 30 days..."
#rm -rf $DATA_DIR/ORCL$DELTIME*.dmp
#rm -rf $LOGS_DIR/ORCL$DELTIME*.log
#echo "Delete the file bakup successfully. "
echo "Bakup completed."
           
  • 修改腳本檔案的可執行權限,并測試腳本是否可執行
#--修改腳本檔案權限
# chmod 777 dbbak.sh
#--測試腳本
# cd /opt/oracle/backup/shell
# ./orabak.sh
           
  • 設定定時任務
# vim /etc/crontab
           
  • 配置内容如下:

    1. 配置内容格式: 時間 + 執行操作的系統使用者 + 腳本檔案的全路徑

    2. 下面配置表示淩晨1點執行資料庫備份腳本

00 1 * * * orauser /opt/oracle/backup/shell/orabak.sh
           

繼續閱讀