Linux上实现oracle双机实时备份DataGuard 更改机器名
Hostname 机器名(自己启,两台机器不能一样,建议用dataguard1和dataguard2) vi /etc/sysconfig/network 文件里面的hostname 然后vi /etc/hosts 添加本地hosts
安装数据库
在RHEL5下安装oracle 10g 1、添加组和用户
# /usr/sbin/groupadd oinstall # /usr/sbin/groupadd dba
# /usr/sbin/useradd -g oinstall -G dba oracle # passwd oracle
2、添加以下内容到/etc/sysctl.conf kernel.shmall = 2097152
kernel.shmmax = 2147483648 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 = 1048576 net.core.rmem_max = 1048576 net.core.wmem_default = 262144 net.core.wmem_max = 262144
3、添加以下内容到/etc/security/limits.conf oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
4、添加以下内容到/etc/pam.d/login
session required /lib/security/pam_limits.so session required pam_limits.so
5、添加以下内容到/etc/profile if [ $USER = \if [ $SHELL = %ulimit -p 16384 ulimit -n 65536 else
ulimit -u 16384 -n 65536 fi
fi
6、创建安装目录
# mkdir -p /u01/app/oracle
# chown -R oracle:oinstall /u01/app/oracle # chmod -R 775 /u01/app/oracle
7、修改oracle环境变量,首先进入oracle用户模式,vi ~/.bash_profile ,在里面加入以下内容 export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 export ORACLE_SID=DB99
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib export LC_CTYPE=en_US.UTF-8
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK export LANG=AMERICAN_AMERICA.ZHS16GBK export LC_ALL=C
8、安装数据库
# gunzip 10201_database_linux_x86_64.cpio.gz (64位) # cpio -idmv < 10201_database_linux_x86_64.cpio # vi database/install/oraparam.ini [Certified Versions]
Linux=redhat-3,SuSE-9,redhat-4,redhat-5,UnitedLinux-1.0,asianux-1,asianux-2] 再添加:
[Linux-redhat-5.0-optional] TEMP_SPACE=80 SWAP_SPACE=150
MIN_DISPLAY_COLORS=256
vi /etc/sysconfig/vncservers
添加
VNCSERVERS=\
VNCSERVERARGS[1]=\使用oracle用户(su – oracle)启动vnc服务(vncserver) 将.vnc/.xstart中的twm &改成gnome-session &
,然后用vnc viewer连接服务器运行database目录下的runinstaller 第一个界面选择Advanced Installation
第三个界面需要在语言选项中添加中文支持
在提示是否创建新库时,选择install database software only
安装结束时注意安装程序会提示用root用户执行下面两条命令: /u01/app/oracle/oraInventory/orainstRoot.sh /u01/app/oracle/product/10.2.0/db_1/root.sh
主数据库(简称dbtest1)备用数据库(简称dbtest2)
在dbtest1上安装数据库环境并创建数据库(数据库sid为DB99,安装目录为/u01/app/)
在dbtest2上只安装数据库环境,不创建数据库
下面是dbtest1上的配置
首先用 sqlplus / as sysdba 进入sql查询模式 主库启用FORCE LOGGING
SQL>ALTER DATABASE FORCE LOGGING;
SQL>select FORCE_LOGGING from v$database;
主库检查密码文件
这个默认安装完之后都有,文件在/u01/app/oracle/product/10.2.0/db_1/dbs/orapwDB99
文件名格式为orapw${sid}
主库添加standby redo log
SQL>alter database add standby logfile group 4 ('/u01/app/oracle/oradata/DB99/redo04.log') size 50m;
SQL>alter database add standby logfile group 5 ('/u01/app/oracle/oradata/DB99/redo05.log') size 50m;
SQL>alter database add standby logfile group 6 ('/u01/app/oracle/oradata/DB99/redo06.log') size 50m;
SQL>alter database add standby logfile group 7 ('/u01/app/oracle/oradata/DB99/redo07.log') size 50m;
查看日志情况
sql>select * from v$logfile;
执行后应该能看到你新加的这四个日志相关信息
修改主数据库初始化参数
先执行SQL>create pfile from spfile;
这样就会有/u01/app/oracle/product/10.2.0/db_1/dbs/initDB99.ora文件 直接编辑这个文件 加入以下参数
*.db_unique_name=dbtest1 *.fal_server='dbtest1' *.fal_client='dbtest2'
*.standby_file_management=auto
*.db_file_name_convert='/u01/app/oracle/oradata/DB99/','/u01/app/oracle/oradata/DB99/' *.log_file_name_convert='/u01/app/oracle/oradata/DB99/','/u01/app/oracle/oradata/DB99/' *.log_archive_config='dg_config=(dbtest1,dbtest2)' *.log_archive_dest_2='service=dbtest2 LGWR SYNC AFFIRM valid_for=(online_logfiles,primary_role) db_unique_name=dbtest2' *.log_archive_dest_state_2='ENABLE'
这样初始化参数改好了 使用命令
Sql>shutdown immediate Sql>create spfile from pfile;
修改/u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora下的监听文件 listener.ora文件如下 SID_LIST_LISTENER = (SID_LIST = (SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1) (PROGRAM = extproc) )
(SID_DESC =
(SID_NAME = DB99)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1) ) )
LISTENER =
(DESCRIPTION_LIST = (DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC2))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.21)(PORT = 1521)) ) )
修改/u01/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora 文件如下 DB99 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.21)(PORT = 1521)) (CONNECT_DATA =
(SERVER = DEDICATED) (SERVICE_NAME = DB99) ) )
#LISTENER_DB99 =
# (ADDRESS = (PROTOCOL = TCP)(HOST = localhoenorthdb1)(PORT = 1521)) DBTEST2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.24)(PORT = 1521)) )
(CONNECT_DATA =
(SERVICE_NAME = DB99) ) )
DBTEST1 =
(DESCRIPTION = (ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.21)(PORT = 1521)) )
(CONNECT_DATA =
(SERVICE_NAME = DB99) ) )
EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC2)) )
(CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )
这样参数文件就改完了
主库启用归档日志
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG; SQL> ALTER DATABASE OPEN;
SQL> Alter database set standby database to maximize availability;
注意执行过alter database archivelog;后以后就不用再执行这个命令了,以后直接用startup启动数据库就可以了
用rman备份主库数据文件、归档日志、控制文件 在oracle用户环境下,执行 rman target /