step1.安裝oracle enterprise linux as 4(節(jié)點(diǎn)一, 主庫所在節(jié)點(diǎn))
ip = 192.168.1.188
hosts = note1
節(jié)點(diǎn)1連接字符串 = LSNODE1
防火墻基本配置:
⊙ 無防火墻
⊙ 是否啟用 SELinux:已禁用
安裝方式的選項(xiàng):
⊙ 定制要安裝的軟件包(C)
桌面選項(xiàng):
(√) X窗口系統(tǒng) (選取默認(rèn))
(√) GNOME桌面環(huán)境 (選取默認(rèn))
(√) KDE桌面環(huán)境 (選取默認(rèn))
應(yīng)用程序選項(xiàng):
( ) 工程和科學(xué) (選取默認(rèn))
( ) 圖形化互聯(lián)網(wǎng) (選取默認(rèn))
(√) 基于文本的互聯(lián)網(wǎng) (選取默認(rèn))
( ) 辦公/生產(chǎn)率 (選取默認(rèn))
服務(wù)器選項(xiàng):
(√) 服務(wù)器配置工具 (選取全部)
( ) 萬維網(wǎng)服務(wù)器 (選取全部)
(√) Windows文件服務(wù)器 (選取全部)
( ) DNS服務(wù)器 (選取全部)
開發(fā)選項(xiàng):
(√) 開發(fā)工具 (選擇全部)
系統(tǒng)選項(xiàng):
(√) 管理工具 (選取默認(rèn))
(√) 打印支持 (選取默認(rèn))
-----------------------------------------------------------------------------------------------------------------------------------
step2.安裝oracle 10g R2
二、系統(tǒng)軟硬件需求(可以略過,需要時(shí)可以參考)
1、硬件概述
CPU:
內(nèi)存:2GB (#grep MemTotal /proc/meminfo)
SWAP:2GB (grep SwapTotal /proc/meminfo)
DISK:18GB
2、軟件概述
Linux版本:RedHat Enterprise Linux AS release4(Nahant updatea2)(#cat /etc/issue)
內(nèi)核版本:Linux 2.6.9-22.EL #1(#uname –a)
數(shù)據(jù)庫:oracle10g
3、系統(tǒng)需求
A、硬件環(huán)境需求
檢查內(nèi)容 最小值 檢查命令參考
物理內(nèi)存 512M # grep MemTotal /proc/meminfo
交換空間 1.0 GB或2倍內(nèi)存大小 # grep SwapTotal /proc/meminfo
/tmp 空間 400 MB # df -k /tmp
軟件所需空間 2.5 GB # df -k (空間越大越好,如果是正式系統(tǒng),應(yīng)該進(jìn)行詳盡的規(guī)劃)
數(shù)據(jù)庫文件 1.2 GB # df -k (空間越大越好,如果是正式系統(tǒng),應(yīng)該進(jìn)行詳盡的規(guī)劃)
B、軟件環(huán)境需求(如果按照第一步安裝linux這些包都已安裝)
# rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' binutils compat-db compat-libstdc++-296 control-center gcc gcc-c++ glibc glibc-common gnome-libs
libstdc++ libstdc++-devel make pdksh sysstat xscreensaver setarch
應(yīng)該包含下列的包:
binutils-2.15.92.0.2-13.EL4
compat-db-4.1.25-9
compat-libstdc++-296-2.96-132.7.2
control-center-2.8.0-12
gcc-3.4.3-22.1.EL4
gcc-c++-3.4.3-22.1.EL44
glibc-2.3.4-2.9
glibc-common-2.3.4-2.9
gnome-libs-1.4.1.2.90-44.1
libstdc++-3.4.3-22.1
libstdc++-devel-3.4.3-22.1
make-3.80-5
pdksh-5.2.14-30
xscreensaver-4.18-5.rhel4.2
setarch-1.6-1
三、Oracle的安裝前準(zhǔn)備:
1、配置系統(tǒng)內(nèi)核參數(shù),以root用戶登錄,修改在/etc/sysctl.conf文件,在該文件中添加以下參數(shù):
(設(shè)置是可以拷貝,但是完了以后最好用vi來查看一下有沒有什么特殊符號)
kernel.shmall = 2097152
kernel.shmmax = 2147483648 (以字節(jié)為單位,物理內(nèi)存數(shù)量*1024*1024*2, 為內(nèi)存的2倍)
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
保存退出執(zhí)行以下命令使配置馬上生效
# sysctl –p
如果沒有錯誤提示到下一步。
2、 設(shè)置oracle對文件的要求
(設(shè)置是可以拷貝,但是完了以后最好用vi來查看一下有沒有什么特殊符號)
編輯文件:vi /etc/security/limits.conf 加入以下語句:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
編輯文件:vi /etc/pam.d/login 加入以下語句(可能應(yīng)該加在最后一條規(guī)則之前):
session required /lib/security/pam_limits.so
3、創(chuàng)建安裝數(shù)據(jù)庫時(shí)所需要使用的用戶組oinstall,dba及Oracle用戶,并將oinstall,dba組定義成oracle用戶的主次組。
命令參考如下:
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle (設(shè)定oracle用戶為oinstall、dba用戶組的成員)
# passwd oracle (設(shè)定oracle用戶的密碼)
4、以root用戶身份登錄系統(tǒng)創(chuàng)建Oracle系統(tǒng)的安裝目錄和數(shù)據(jù)庫文件存放的目錄。例如:/opt/oracle,及改變以上目錄的屬性
令參考如下:
# mkdir -p /opt/oracle/product/10.2.0 (創(chuàng)建數(shù)據(jù)目錄)
# chown -R oracle.oinstall /opt/oracle (設(shè)定目錄所屬的用戶組和用戶)
# chmod -R 775 /opt/oracle(設(shè)定目錄的讀寫權(quán)限)
5、 以oracle 用戶身份登錄系統(tǒng),復(fù)制和解壓10201_database_linux32.zip文件到/home/oracle下:
# cp 10201_database_linux32.zip /home/oracle/ (復(fù)制文件到oracle個(gè)人目錄內(nèi))
# unzip /home/oracle/10201_database_linux32.zip (解壓zip文件)
6、 配置oracle用戶環(huán)境,以oracle用戶登錄,修改oracle用戶下的 .bash_profile 文件。增加以下參數(shù):
vi .bash_profile (執(zhí)行vi命令來修改.bash_profile)
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
Fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
unset USERNAME
# 以下是我們所需配置的內(nèi)容(設(shè)置是可以拷貝,但是完了以后最好用vi來查看一下有沒有什么特殊符號)
umask=022
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0
export ORACLE_SID=dgdemo
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:/usr/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
安裝好后再配置以下環(huán)境變量
export LANG=zh_CN.GBK
export NLS_LANG='SIMPLIFIED CHINESE_CHINA.ZHS16GBK'
7、$ source .bash_profile 使環(huán)境文件馬上生效
8、找到相應(yīng)目錄運(yùn)行runInstaller命令開始安裝(可用戶oracle帳號登錄系統(tǒng)安裝)
9、使用dbca創(chuàng)建數(shù)據(jù)庫,操作和windows上雷同,這里不再詳細(xì)介紹
10、使用netca命令啟動Net Configuration Assistant配置監(jiān)聽程序listener
11、使用Net Configuration Assistant本地Net服務(wù)名
注意;以上10、11點(diǎn)也可以用netmgr命令打開Net Manager工具來進(jìn)行配置
12、使用sqlplus來測試連接
---------------------------------------------------------------------------------------------------------------------------------------------------------
step3 在節(jié)點(diǎn)一添加備庫重做日志且為臨時(shí)表空間添加新的數(shù)據(jù)文件.
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/opt/oracle/oradata/dgdemo/sredo01.log') SIZE 50M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/opt/oracle/oradata/dgdemo/sredo02.log') SIZE 50M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/opt/oracle/oradata/dgdemo/sredo03.log') SIZE 50M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('/opt/oracle/oradata/dgdemo/sredo04.log') SIZE 50M;
sql> alter tablespace temp add tempfile '/opt/oracle/oradata/dgdemo/temp02.dbf' size 100M reuse;
---------------------------------------------------------------------------------------------------------------------------------------------------------
step4 在節(jié)點(diǎn)一創(chuàng)建歸檔目錄, 修改listener.ora, tnsnames.ora, 且通過節(jié)點(diǎn)一復(fù)制生成節(jié)點(diǎn)二(當(dāng)用vmware做該實(shí)驗(yàn)時(shí))
# mkdir /opt/oracle/oradata/arch
# vi tnsnames.ora
# vi listener.ora
復(fù)制節(jié)點(diǎn)二(vmware虛擬機(jī)之間復(fù)制)
---------------------------------------------------------------------------------------------------------------------------------------------------------
step5 在節(jié)點(diǎn)一強(qiáng)迫節(jié)點(diǎn)一主庫做日志且修改節(jié)點(diǎn)一主庫的參數(shù)
sql>alter database force logging;
配置節(jié)點(diǎn)一主庫參數(shù), db_unique_name為區(qū)分主庫備庫的邏輯定義; lsnode1, lsnode2為連接符, 它對應(yīng)tnsnames.ora
//為每個(gè)數(shù)據(jù)庫指定一個(gè)唯一的名字。這個(gè)名字與數(shù)據(jù)庫綁定不會更改,即使主和備數(shù)據(jù)庫交換角色。并非數(shù)據(jù)庫的實(shí)例名或全局名.
SQL> alter system set db_unique_name='uqn_node1' scope=spfile;
該參數(shù)通過DG_CONFIG 屬性羅列同一個(gè)Data Guard 中所有DB_UNIQUE_NAME(含primary db 及standby db),以逗號分隔
例如:LOG_ARCHIVE_CONFIG='DB_CONFIG=(uqn_node1,uqn_node2)'
SQL>alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(uqn_node1,uqn_node2)' scope=spfile;
主庫歸檔文件的生成路徑
SQL> alter system set log_archive_dest_1='location=/opt/oracle/oradata/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=uqn_node1' scope=spfile;
備庫歸檔文件的生成路徑
SQL> alter system set LOG_ARCHIVE_DEST_2='SERVICE=lsnode2 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=uqn_node2' scope=spfile;
指定ENABLE 以運(yùn)行重做傳輸服務(wù)傳送重做數(shù)據(jù)到指定的目的地。
SQL> alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE scope=spfile;
指定ENABLE 以運(yùn)行重做傳輸服務(wù)傳送重做數(shù)據(jù)到指定的目的地。
SQL> alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=spfile;
配置節(jié)點(diǎn)一備庫參數(shù), lsnode1, lsnode2為連接符, 對應(yīng)tnsnames.ora
SQL> alter system set FAL_SERVER='lsnode2' scope=spfile;
SQL> alter system set FAL_CLIENT='lsnode1' scope=spfile;
SQL> alter system set STANDBY_FILE_MANAGEMENT=AUTO scope=spfile;
------------------------------------------------------------------------------------------------------------------------------------------------------
step6 把節(jié)點(diǎn)一主庫設(shè)為歸檔模式, 且拷貝oradata目錄, 靜態(tài)參數(shù)文件, 口令文件, admin目錄到節(jié)點(diǎn)二; 在節(jié)點(diǎn)二上應(yīng)用在節(jié)點(diǎn)一生成的備庫控制文件
sql>shutdown immediate;
sql>startup mount;
sql>alter database archivelog;
sql>alter database open;
sql>shutdown immediate
sql>startup mount;
sql>alter database create standby controlfile as '/opt/oracle/oradata/standbyctl.ctl'; 在節(jié)點(diǎn)一生成的備庫控制文件, 在節(jié)點(diǎn)二上應(yīng)用在節(jié)點(diǎn)一生成的備庫控制文件
拷貝節(jié)點(diǎn)一整個(gè)oradata目錄包括在節(jié)點(diǎn)一生成的備庫控制文件及其下的歸檔目錄arch, 整個(gè)/opt/oracle/admin目錄, 靜態(tài)參數(shù)文件initdgdemo.ora, 口令文
件./product/10.2.0/dbs/orapwdgdem到節(jié)點(diǎn)二
scp -r ... root@192.168.1.189:/opt/... -r 表示拷貝目錄
-------------------------------------------------------------------------------------------------------------------------------------------------------
step7 在節(jié)點(diǎn)二的備庫中替換拷貝過來的目錄和文件且重建spfile
節(jié)點(diǎn)二
# chown -R oracle:oinstall * 改變拷貝過來目錄/文件的屬主
SQL> startup pfile='/opt/oracle/product/10.2.0/dbs/initdgdemo.ora' nomount;
SQL> create spfile from pfile='/opt/oracle/product/10.2.0/dbs/initdgdemo.ora';
SQL> shutdown immediate;
-------------------------------------------------------------------------------------------------------------------------------------------------------
step8 修改節(jié)點(diǎn)二及備庫參數(shù)
節(jié)點(diǎn)二
ip = 192.168.1.189
hosts = note2
oracle_sid = dgdemo
節(jié)點(diǎn)2連接字符串 = LSNODE2
配置節(jié)點(diǎn)二主庫參數(shù)
SQL> alter system set db_unique_name='uqn_node2' scope=spfile;
SQL>alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(uqn_node1,uqn_node2)' scope=spfile;
SQL> alter system set log_archive_dest_1='location=/opt/oracle/oradata/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=uqn_node2' scope=spfile;
SQL> alter system set LOG_ARCHIVE_DEST_2='SERVICE=lsnode1 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=uqn_node1' scope=spfile;
SQL> alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE scope=spfile;
SQL> alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=spfile;
配置節(jié)點(diǎn)二備庫參數(shù)
fal_server=lsnode1
SQL> alter system set FAL_SERVER='lsnode1' scope=spfile;
fal_client=lsnode2
SQL> alter system set FAL_CLIENT='lsnode2' scope=spfile;
STANDBY_FILE_MANAGEMENT=AUTO
SQL> alter system set STANDBY_FILE_MANAGEMENT=AUTO scope=spfile;
***
修改備庫控制文件類型為standby, 即用standbyctl.ctl替換**1.ctl, **2.ctl
SQL> alter system set control_files='/opt/oracle/oradata/standbyctl.ctl' scope=spfile;
---------------------------------------------------------------------------------------------------------------------------------------------------------
step9 在節(jié)點(diǎn)一啟動偵聽且打開主庫
啟動節(jié)點(diǎn)一主庫偵聽
#lsnrctl start
啟動主庫, 打開主庫
SQL> startup mount;
SQL> alter database open;
---------------------------------------------------------------------------------------------------------------------------------------------------------
step11 在節(jié)點(diǎn)二啟動偵聽及備庫
啟動節(jié)點(diǎn)二備庫偵聽
#lsnrctl start
重新關(guān)閉備節(jié)點(diǎn)數(shù)據(jù)庫并以standby方式啟動到mount狀態(tài)下:
SQL> startup nomount;
SQL> alter database mount standby database;
將備庫節(jié)點(diǎn)更改到接受主庫節(jié)點(diǎn)redo日志模式下:
SQL> alter database recover managed standby database disconnect from session;
查看切換狀態(tài):
SQL> select switchover_status from v$database;
---------------------------------------------------------------------------------------------------------------------------------------------------------
step12 測試節(jié)點(diǎn)一上主庫與節(jié)點(diǎn)二備庫
在節(jié)點(diǎn)一主庫切換日志
SQL> alter system switch logfile;
在節(jié)點(diǎn)一主庫及節(jié)點(diǎn)二備庫查看是否已應(yīng)用切換的日志
SQL> select name from v$archived_log;
停止節(jié)點(diǎn)二備庫應(yīng)用主庫日志
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;