step1.安裝oracle enterprise linux as 4(節點一, 主庫所在節點)
ip = 192.168.1.188
hosts = note1
節點1連接字符串 = LSNODE1
防火墻基本配置:
⊙ 無防火墻
⊙ 是否啟用 SELinux:已禁用
安裝方式的選項:
⊙ 定制要安裝的軟件包(C)
桌面選項:
(√) X窗口系統 (選取默認)
(√) GNOME桌面環境 (選取默認)
(√) KDE桌面環境 (選取默認)
應用程序選項:
( ) 工程和科學 (選取默認)
( ) 圖形化互聯網 (選取默認)
(√) 基于文本的互聯網 (選取默認)
( ) 辦公/生產率 (選取默認)
服務器選項:
(√) 服務器配置工具 (選取全部)
( ) 萬維網服務器 (選取全部)
(√) Windows文件服務器 (選取全部)
( ) DNS服務器 (選取全部)
開發選項:
(√) 開發工具 (選擇全部)
系統選項:
(√) 管理工具 (選取默認)
(√) 打印支持 (選取默認)
-----------------------------------------------------------------------------------------------------------------------------------
step2.安裝oracle 10g R2
二、系統軟硬件需求(可以略過,需要時可以參考)
1、硬件概述
CPU:
內存: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)
內核版本:Linux 2.6.9-22.EL #1(#uname –a)
數據庫:oracle10g
3、系統需求
A、硬件環境需求
檢查內容 最小值 檢查命令參考
物理內存 512M # grep MemTotal /proc/meminfo
交換空間 1.0 GB或2倍內存大小 # grep SwapTotal /proc/meminfo
/tmp 空間 400 MB # df -k /tmp
軟件所需空間 2.5 GB # df -k (空間越大越好,如果是正式系統,應該進行詳盡的規劃)
數據庫文件 1.2 GB # df -k (空間越大越好,如果是正式系統,應該進行詳盡的規劃)
B、軟件環境需求(如果按照第一步安裝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
應該包含下列的包:
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的安裝前準備:
1、配置系統內核參數,以root用戶登錄,修改在/etc/sysctl.conf文件,在該文件中添加以下參數:
(設置是可以拷貝,但是完了以后最好用vi來查看一下有沒有什么特殊符號)
kernel.shmall = 2097152
kernel.shmmax = 2147483648 (以字節為單位,物理內存數量*1024*1024*2, 為內存的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
保存退出執行以下命令使配置馬上生效
# sysctl –p
如果沒有錯誤提示到下一步。
2、 設置oracle對文件的要求
(設置是可以拷貝,但是完了以后最好用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 加入以下語句(可能應該加在最后一條規則之前):
session required /lib/security/pam_limits.so
3、創建安裝數據庫時所需要使用的用戶組oinstall,dba及Oracle用戶,并將oinstall,dba組定義成oracle用戶的主次組。
命令參考如下:
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle (設定oracle用戶為oinstall、dba用戶組的成員)
# passwd oracle (設定oracle用戶的密碼)
4、以root用戶身份登錄系統創建Oracle系統的安裝目錄和數據庫文件存放的目錄。例如:/opt/oracle,及改變以上目錄的屬性
令參考如下:
# mkdir -p /opt/oracle/product/10.2.0 (創建數據目錄)
# chown -R oracle.oinstall /opt/oracle (設定目錄所屬的用戶組和用戶)
# chmod -R 775 /opt/oracle(設定目錄的讀寫權限)
5、 以oracle 用戶身份登錄系統,復制和解壓10201_database_linux32.zip文件到/home/oracle下:
# cp 10201_database_linux32.zip /home/oracle/ (復制文件到oracle個人目錄內)
# unzip /home/oracle/10201_database_linux32.zip (解壓zip文件)
6、 配置oracle用戶環境,以oracle用戶登錄,修改oracle用戶下的 .bash_profile 文件。增加以下參數:
vi .bash_profile (執行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
# 以下是我們所需配置的內容(設置是可以拷貝,但是完了以后最好用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
安裝好后再配置以下環境變量
export LANG=zh_CN.GBK
export NLS_LANG='SIMPLIFIED CHINESE_CHINA.ZHS16GBK'
7、$ source .bash_profile 使環境文件馬上生效
8、找到相應目錄運行runInstaller命令開始安裝(可用戶oracle帳號登錄系統安裝)
9、使用dbca創建數據庫,操作和windows上雷同,這里不再詳細介紹
10、使用netca命令啟動Net Configuration Assistant配置監聽程序listener
11、使用Net Configuration Assistant本地Net服務名
注意;以上10、11點也可以用netmgr命令打開Net Manager工具來進行配置
12、使用sqlplus來測試連接
---------------------------------------------------------------------------------------------------------------------------------------------------------
step3 在節點一添加備庫重做日志且為臨時表空間添加新的數據文件.
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 在節點一創建歸檔目錄, 修改listener.ora, tnsnames.ora, 且通過節點一復制生成節點二(當用vmware做該實驗時)
# mkdir /opt/oracle/oradata/arch
# vi tnsnames.ora
# vi listener.ora
復制節點二(vmware虛擬機之間復制)
---------------------------------------------------------------------------------------------------------------------------------------------------------
step5 在節點一強迫節點一主庫做日志且修改節點一主庫的參數
sql>alter database force logging;
配置節點一主庫參數, db_unique_name為區分主庫備庫的邏輯定義; lsnode1, lsnode2為連接符, 它對應tnsnames.ora
//為每個數據庫指定一個唯一的名字。這個名字與數據庫綁定不會更改,即使主和備數據庫交換角色。并非數據庫的實例名或全局名.
SQL> alter system set db_unique_name='uqn_node1' scope=spfile;
該參數通過DG_CONFIG 屬性羅列同一個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 以運行重做傳輸服務傳送重做數據到指定的目的地。
SQL> alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE scope=spfile;
指定ENABLE 以運行重做傳輸服務傳送重做數據到指定的目的地。
SQL> alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=spfile;
配置節點一備庫參數, lsnode1, lsnode2為連接符, 對應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 把節點一主庫設為歸檔模式, 且拷貝oradata目錄, 靜態參數文件, 口令文件, admin目錄到節點二; 在節點二上應用在節點一生成的備庫控制文件
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'; 在節點一生成的備庫控制文件, 在節點二上應用在節點一生成的備庫控制文件
拷貝節點一整個oradata目錄包括在節點一生成的備庫控制文件及其下的歸檔目錄arch, 整個/opt/oracle/admin目錄, 靜態參數文件initdgdemo.ora, 口令文
件./product/10.2.0/dbs/orapwdgdem到節點二
scp -r ... root@192.168.1.189:/opt/... -r 表示拷貝目錄
-------------------------------------------------------------------------------------------------------------------------------------------------------
step7 在節點二的備庫中替換拷貝過來的目錄和文件且重建spfile
節點二
# 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 修改節點二及備庫參數
節點二
ip = 192.168.1.189
hosts = note2
oracle_sid = dgdemo
節點2連接字符串 = LSNODE2
配置節點二主庫參數
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;
配置節點二備庫參數
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 在節點一啟動偵聽且打開主庫
啟動節點一主庫偵聽
#lsnrctl start
啟動主庫, 打開主庫
SQL> startup mount;
SQL> alter database open;
---------------------------------------------------------------------------------------------------------------------------------------------------------
step11 在節點二啟動偵聽及備庫
啟動節點二備庫偵聽
#lsnrctl start
重新關閉備節點數據庫并以standby方式啟動到mount狀態下:
SQL> startup nomount;
SQL> alter database mount standby database;
將備庫節點更改到接受主庫節點redo日志模式下:
SQL> alter database recover managed standby database disconnect from session;
查看切換狀態:
SQL> select switchover_status from v$database;
---------------------------------------------------------------------------------------------------------------------------------------------------------
step12 測試節點一上主庫與節點二備庫
在節點一主庫切換日志
SQL> alter system switch logfile;
在節點一主庫及節點二備庫查看是否已應用切換的日志
SQL> select name from v$archived_log;
停止節點二備庫應用主庫日志
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;