文章目錄
- 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
是Oracle使用者名)orauser
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