雙機熱備實戰完全手冊
2024-07-21 02:35:49
供稿:網友
10.0.0.11是我主服務器的ip,10.0.0.111是我從服務器的ip, testdbase是數據庫的sid號,操作系統的版本是RedHat linux 8.0 數據庫版本是Oracle 9.2.0.1
1. 建立oracle用戶
[root@test2 etc]#groupadd oinstall
[root@test2 etc]#groupadd dba
[root@test2 etc]#useradd –g oinstall –G dba oracle
2. 設置oracle用戶環境變量 #主從服務器的環境變量最好一致,以下是一個oracle用戶環境變量范本
[oracle@test2 oracle]$ more .bash_PRofile
eXPort LD_ASSUME_KERNEL=2.4.1 #RedHat AS 3.0必須加此參數
export ORACLE_BASE=/opt/oracle #根據實際情況設定ORACLE_BASE
export ORACLE_HOME=/opt/oracle/prodUCt/9.2.0 #根據實際情況設定ORACLE_HOME
export ORACLE_SID=testdbase
export ORACLE_TERM=xterm
export NLS_LANG=american_america. ZHS16GBK; #繁體中文字符集是ZHT16BIG5
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH
export PATH=$PATH:$ORACLE_HOME/bin
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib:$ORACLE_HOME/jdbc/lib/classes12.jar
export CLASSPATH
java_HOME=/usr/java/j2sdk1.4.1_02 #根據實際情況設定JAVA_HOME的路徑
export JAVA_HOME
PATH=$PATH:$JAVA_HOME:$JAVA_HOME/bin:$JAVA_HOME/jre:$ORACLE_HOME/bin
export PATH
umask 022
3. 安裝java
4. 建立.bash_profile相關文件夾
[root@test2 etc]#chown oracle.oinstall –Rf /opt #將/opt目錄的屬主改為oracle.oinstall
[root@test2 etc]# su – oracle
[oracle@test2 oracle]$ mkdir -p /opt/oracle/product/9.2.0/ocommon/nls/admin/data
[oracle@test2 oracle]$ mkdir -p /opt/oracle/product/9.2.0/lib
[oracle@test2 oracle]$ mkdir -p /opt/oracle/product/9.2.0/network/jlib
[oracle@test2 oracle]$ mkdir -p /opt/oracle/product/9.2.0/jdbc/lib/
5. 在備用服務器上安裝oracle
備用服務器在安裝的時候不需要建庫,只需安裝Software
假如安裝的是oracle9201版本,在安裝到84%的時候,會有一個編譯錯誤"Error in invoking target install of makefile /opt/oracle/product/9.2.0/ctx/lib/ins_ctx.mk",此時打開這個文
件:$ORACLE_HOME/ctx/lib/env_ctx.mk,把"$(LDLIBFLAG)dl"加到如下位置:
INSO_LINK = -L$(CTXLIB) $(LDLIBFLAG)m $(LDLIBFLAG)dl $(LDLIBFLAG)sc_ca
$(LDLIBFLAG)sc_fa $(LDLIBFLAG)sc_ex $(LDLIBFLAG)sc_da $(LDLIBFLAG)sc_ut
$(LDLIBFLAG)sc_ch $(LDLIBFLAG)sc_fi $(LLIBCTXHX) $(LDLIBFLAG)c
-Wl,-rpath,$(CTXHOME)lib $(CORELIBS)然后按重試,就可以繼續安裝下去了。
。。
假如主服務器的操作系統版本和目錄結構和備用服務器一模一樣,并且主服務器的ORACLE沒有建庫,可以直接將主服務器的$ORACLE_BASE、$ ORACLE_HOME拷貝到備用服務器
6. 查看主服務器數據庫是否使用spfile #這一步可有可無
[oracle@cqcncdb oracle]$ sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Production on Wed Jul 21 11:54:42 2004
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn / as sysdba;
Connected.
SQL> show parameter spfile
NAME TYPE VALUE
spfile string ?/dbs/spfile@.ora
7. 在主服務器上將主數據庫的數據文件、redo log、temp文件拷貝到備用服務器上(冷備份方式)
[oracle@cqcncdb oracle]$ sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Production on Wed Jul 21 12:03:58 2004
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn / as sysdba;
Connected.
SQL> select * from v$dbfile;
FILE#----------NAME---------------------------------
10
/opt/oracle/oradata/testdbase/xdb01.dbf
9
/opt/oracle/oradata/testdbase/users01.dbf
2
/opt/oracle/oradata/testdbase/undotbs01.dbf
FILE#----------NAME---------------------------------
8
/opt/oracle/oradata/testdbase/tools01.dbf
1
/opt/oracle/oradata/testdbase/system01.dbf
7
/opt/oracle/oradata/testdbase/odm01.dbf
FILE#----------NAME---------------------------------
/opt/oracle/oradata/testdbase/indx01.dbf
5
/opt/oracle/oradata/testdbase/example01.dbf
4
/opt/oracle/oradata/testdbase/drsys01.dbf
FILE#----------NAME-----------------------------------
3
/opt/oracle/oradata/testdbase/cwmlite01.dbf
11
/opt/oracle/oradata/testdbase/TONG.dbf
12
/opt/oracle/oradata/testdbase/SPAPP.dbf
FILE#----------NAME----------------------------------
13
/opt/oracle/oradata/testdbase/WTSPALL.dbf
14
/opt/oracle/oradata/testdbase/SZJLT.dbf
15
/opt/oracle/oradata/testdbase/JLTGAME.dbf
15 rows selected.
SQL> select * from v$logfile;
GROUP# STATUS TYPE---------- ------- -------MEMBER
------------------------------------------------------
3 ONLINE
/opt/oracle/oradata/testdbase/redo03.log
2 ONLINE
/opt/oracle/oradata/testdbase/redo02.log
1 ONLINE
/opt/oracle/oradata/testdbase/redo01.log
SQL> select * from v$tempfile;
FILE# CREATION_CHANGE# CREATION_ TS# RFILE# STATUS ENABLED
---------- ---------------- --------- ---------- ----------
BYTES BLOCKS CREATE_BYTES BLOCK_SIZE
---------- ---------- ------------ ----------
NAME
-----------------------------------------
1 0 2 1 ONLINE READ WRITE
225443840 27520 41943040 8192
/opt/oracle/oradata/testdbase/temp01.dbf
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
將以上列出的文件拷貝到備用服務器相應的目錄下,或者直接將/opt/oracle/oradata/testdbase/目錄下所有的文件直接拷貝到備用服務器的/opt/oracle/oradata/testdbase/目錄下
8. 在主服務器打開主庫數據庫,修改為歸檔方式 (假如主數據庫已經是歸檔方式,則不用修改了)
手工在主服務器創建歸檔目錄
$cd $ORACLE_BASE #$ORACLE_BASE 所指向的目錄是/opt/oracle/,可參看第4步的ORACLE用戶環境變量的具體設置
$mkdir -p oradata/testdbase/archive
[oracle@cqcncdb testdbase]$ sqlplus /nolog
SQL> conn / as sysdba;
Connected.
SQL> startup mount;
SQL> alter database archivelog;
SQL> archive log start;
SQL> archive log list;
SQL> alter database open;
SQL> alter system set LOG_ARCHIVE_DEST_1='LOCATION= /opt/oracle/oradata/testdbase/archive';
SQL> alter system set log_archive_format='%t_%s.dbf' scope=spfile;
SQL> alter system set log_archive_start=true scope=spfile;
重新啟動數據庫,使修改結果生效
SQL> shutdown immediate;
察看歸檔模式
SQL> startup
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /opt/oracle/oradata/testdbase/archive
Oldest online log sequence 565
Next log sequence to archive 567
Current log sequence 567
9. 在主庫上制作從庫control file
SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/opt/oracle/product/9.2.0/dbs/control01.ctl';
Database altered.
將/opt/oracle/product/9.2.0/dbs/control01.ctl拷貝到備用服務器的/opt/oracle/oradata/testdbase/目錄下
10. 配置主庫和從庫的tnsnames.ora
將主庫的tnsnames.ora拷貝到從庫相應的目錄下
[oracle@test2 admin]$ vi tnsnames.ora #編輯從庫tnsnames.ora
我的主庫和從庫的tnsnames.ora如下:
# TNSNAMES.ORA Network Configu