本文共 10580 字,大约阅读时间需要 35 分钟。
1 安装备库的数据库软件 1.1 安装时使用的字符集 NLS_CHARACTERSET ZHS16GBK NLS_NCHAR_CHARACTERSET AL16UTF16 1.2 检查备库的系统参数是否满足安装要求 #查看主机内存 grep MemTotal /proc/meminfo #交换空间,如果物理内存在16G以上,推荐交换空间至少为16G grep SwapTotal /proc/meminfo free #检查机器的硬件名称 uname -m #检查临时表空间,至少1G df -h /tmp df -h #检查 linux 版本 cat /proc/version lsb_release -id #检查内核 uname - r 1.3 禁用防火墙和SELINUX #使用root用户登录 service iptables status service iptables stop chkconfig iptables off #然后输入以下命令,禁用SELinux: vi /etc/selinux/config SELINUX=disabled 1.4 检查软件包 rpm -q --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" binutils compat-libstdc elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel 1.5 创建组和用户 /usr/sbin/groupadd oinstall /usr/sbin/groupadd -g 502 dba /usr/sbin/groupadd -g 503 oper id oracle /usr/sbin/useradd -u 502 -g oinstall -G dba,oper oracle passwd oracle 1.6 设置环境变量,从rac的其中一个节点拷贝环境变量文件到备库上面 #登录主库的节点1 cd $ORACLE_HOME/dbs scp bash_profile oracle@beiku_ip:/home/oracle/.bash_profile 1.7 设置内核参数 vi /etc/sysctl.conf #增加或者修改以下内容: fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 4194304 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 #使用以下命令验证配置: sysctl -p #修改用户oracle的shell限制: vi /etc/security/limits.conf #增加以下内容: grid soft nproc 2047 grid hard nproc 16384 grid soft nofile 1024 grid hard nofile 65536 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 #修改登录参数,执行以下操作: vi /etc/pam.d/login #增加以下内容: session required /lib64/security/pam_limits.so session required pam_limits.so #同样执行以下操作: vi /etc/profile #增加以下内容: if [ $USER = "oracle" ] ; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi umask 022 fi 1.8 创建文件目录 mkdir -p /u01/app/oracle/product/11.2.0/db_1 chown -R oracle:oinstall /u01/app/oracle/product/11.2.0/db_1 #创建快速恢复区目录 mkdir -p /ORADATA/fast_recovery chown -R oracle:oinstall /ORADATA/fast_recovery #创建数据库文件目录 mkdir -p /ORADATA/data chown -R oracle:oinstall /ORADATA/data #创建数据库日志目录 mkdir -p /ORADATA/redolog chown -R oracle:oinstall /ORADATA/redolog #创建归档日志目录 mkdir -p /ORADATA/arc chown -R oracle:oinstall /ORADATA/arc #创建audit目录 mkdir -p /u01/app/oracle/admin/gtfdb/adump chown -R oracle:oinstall /u01/app/oracle/admin/gtfdb/adump 1.9 安装Oracle软件,此步骤不建库 #使用oracle用户登录 #首先解压安装文件: unzip p10404530_112030_Linux-x86-64_1of7.zip unzip p10404530_112030_Linux-x86-64_2of7.zip #打开图形设置,打开Xmanager4 的 Passive模式。 export DISPLAY=10.230.1.215:0.0 #此ip不是服务器的ip,为自己的笔记本ip #然后进入解压后的database目录,执行以下命令: ./runInstaller 2. DataGuard 主库的相关配置 2.1 主库打开FORCE LOGGING模式 ALTER DATABASE FORCE LOGGING; 作用:不管什么操作都会生成redo日志 特点:1.在数据库mount状态和open状态都可以启动force logging模式 2.临时表空间和临时回滚段动作不会生成redo日志 创建文件目录 mkdir -p /u01/app/oracle/product/11.2.0/db_1 chown -R oracle:oinstall /u01/app/oracle/product/11.2.0/db_1 #创建快速恢复区目录 mkdir -p /ORADATA/fast_recovery chown -R oracle:oinstall /ORADATA/fast_recovery #创建数据库文件目录 mkdir -p /ORADATA/data chown -R oracle:oinstall /ORADATA/data #创建数据库日志目录 mkdir -p /ORADATA/redolog chown -R oracle:oinstall /ORADATA/redolog #创建归档日志目录 mkdir -p /ORADATA/arc chown -R oracle:oinstall /ORADATA/arc chown -R oracle:oinstall /ORADATA #创建audit目录 mkdir -p /u01/app/oracle/admin/gtfdb/adump chown -R oracle:oinstall /u01/app/oracle/admin/gtfdb/adump 2.2 配置主库的参数文件 在主库节点一上执行 cd $ORACLE_HOME/dbs sqlplus / as sysdba create pfile from spfile; exit #备份参数文件 cp initgtfdb2.ora /home/oracle/initgtfdb2.ora_bak 在线修改参数文件 alter system set log_archive_config='DG_CONFIG=(gtfdb,gtfdbdg)' scope=both sid='*'; alter system set LOG_ARCHIVE_DEST_1='LOCATION=+FRA VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=gtfdb' scope=both sid='*'; alter system set LOG_ARCHIVE_DEST_2='SERVICE=gtfdbdg ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=gtfdbdg' scope=both sid='*'; alter system set LOG_ARCHIVE_DEST_STATE_1=enable scope=both sid='*'; alter system set LOG_ARCHIVE_DEST_STATE_2=enable scope=both sid='*'; alter system set LOG_ARCHIVE_FORMAT = 'log%d_%t_%s_%r.arc' scope=both sid='*'; alter system set LOG_ARCHIVE_MAX_PROCESSES=30 scope=both sid='*'; alter system set fal_server=gtfdbdg scope=both sid='*'; alter system set STANDBY_FILE_MANAGEMENT=AUTO scope=both sid='*'; alter system set fal_server=gtfdb scope=both sid='*'; ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE; alter system set log_archive_dest_2='service=bhoms02 async valid_for=(online_logfiles,primary_role) db_unique_name=bhoms02'; alter system set LOG_ARCHIVE_DEST_2='SERVICE=gtfdbdg ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=gtfdbdg' scope=both sid='*'; alter system set log_archive_dest_2='service=gtfdbdg async valid_for=(online_logfiles,primary_role) db_unique_name=gtfdbdg'; 2.3 创建standby logfile 在对应的ASM盘上创建日志目录 su - grid asmcmd cd DATA cd GTFDB mkdir standbylog exit sqlplus / as sysdba ALTER DATABASE ADD STANDBY LOGFILE thread 1 GROUP 9 '+DATA/gtfdb/standbylog/standby_group_01.log' SIZE 512M; ALTER DATABASE ADD STANDBY LOGFILE thread 1 GROUP 10 '+DATA/gtfdb/standbylog/standby_group_02.log' SIZE 512M; ALTER DATABASE ADD STANDBY LOGFILE thread 1 GROUP 11 '+DATA/gtfdb/standbylog/standby_group_03.log' SIZE 512M; ALTER DATABASE ADD STANDBY LOGFILE thread 1 GROUP 12 '+DATA/gtfdb/standbylog/standby_group_04.log' SIZE 512M; ALTER DATABASE ADD STANDBY LOGFILE thread 1 GROUP 13 '+DATA/gtfdb/standbylog/standby_group_05.log' SIZE 512M; ALTER DATABASE ADD STANDBY LOGFILE thread 2 GROUP 14 '+DATA/gtfdb/standbylog/standby_group_06.log' SIZE 512M; ALTER DATABASE ADD STANDBY LOGFILE thread 2 GROUP 15 '+DATA/gtfdb/standbylog/standby_group_07.log' SIZE 512M; ALTER DATABASE ADD STANDBY LOGFILE thread 2 GROUP 16 '+DATA/gtfdb/standbylog/standby_group_08.log' SIZE 512M; ALTER DATABASE ADD STANDBY LOGFILE thread 2 GROUP 17 '+DATA/gtfdb/standbylog/standby_group_09.log' SIZE 512M; ALTER DATABASE ADD STANDBY LOGFILE thread 2 GROUP 18 '+DATA/gtfdb/standbylog/standby_group_10.log' SIZE 512M; 作用:主库切换到备库角色时接收主库redo日志 检查: SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM GV$STANDBY_LOG; 2.4 在主库各节点分别配置TNS 在主库的/etc/hosts里面,添加备库ip的解析 cd $ORACLE_HOME/network/admin vi tnsnames.ora #modified by jjn for the data guard on 2015/10/28 GTFDBDG = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = GTFDBDG)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = gtfdbdg) ) ) GTFDB1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = GTFDB1-vip )(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = gtfdb) (SID=gtfdb1) ) ) GTFDB2 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = GTFDB2-vip )(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = gtfdb) (SID=gtfdb2) ) ) 2.5 拷贝主库密码文件到备库上 cd $ORACLE_HOME/dbs scp orapwgtfdb1 oracle@10.100.20.71:/u01/app/oracle/product/11.2.0/db_1/dbs/ #如果备库密码文件有问题,则把主库两节点的密码文件均拷贝到备库,并把其中一个密码文件复制成备库的SID格式。 #在备库上更改密码文件名称 mv orapwgtfdb1 orapwgtfdb 2.6 拷贝主库的参数文件到备库 cd $ORACLE_HOME/dbs scp initgtfdb2.ora oracle@10.100.20.71:/u01/app/oracle/product/11.2.0/db_1/dbs/ 3. 配置Dataguard备库的相关配置 3.1 配置备库的参数文件 vi initgtfdb2.ora gtfdb2.__db_cache_size=10670309376 gtfdb1.__db_cache_size=10670309376 这样的参数改为一个,如 *.__db_cache_size=10670309376 去掉下面参数 gtfdb1.instance_number=1 gtfdb2.instance_number=2 gtfdb2.thread=2 gtfdb1.thread=1 *.cluster_database=true *.remote_listener='rac-scan:1521' # 修改.db_recovery_file_dest='+FRA'为存在的文件目录 增加下面参数 DB_UNIQUE_NAME=gtfdbdg *.db_create_file_dest='/ORADATA/data' *.db_create_online_log_dest_1='/ORADATA/redolog' *.db_create_online_log_dest_2='/ORADATA/redolog' *.control_files='/u01/app/oracle/product/11.2.0/db_1/dbs/controlfile01.ctl', '/u01/app/oracle/product/11.2.0/db_1/dbs/controlfile02.ctl' LOG_ARCHIVE_DEST_1= 'LOCATION=/ORADATA/arc VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=gtfdbdg' LOG_ARCHIVE_DEST_2= 'SERVICE=gtfdb ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=gtfdb' FAL_SERVER=gftdb LOG_ARCHIVE_CONFIG='DG_CONFIG=(gftdb,gtfdbdg)' *.LOG_ARCHIVE_DEST_STATE_1=ENABLE *.LOG_ARCHIVE_DEST_STATE_2=ENABLE *.LOG_ARCHIVE_FORMAT = log%d_%t_%s_%r.arc *.LOG_ARCHIVE_MAX_PROCESSES=30 STANDBY_FILE_MANAGEMENT=AUTO 3.2 配置备库的监听 在备库的/etc/hosts里面,添加主库ip的解析 su - root vi /etc/hosts GTFDB ip GTFDB1 ip GTFDB2 ip GTFDBDG ip cd $ORACLE_HOME/network/admin vi listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = gtfdbdg) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1) (SID_NAME = gtfdb) ) ) LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = GTFDBDG)(PORT = 1521)) ) ADR_BASE_LISTENER = /u01/app/oracle vi tnsnames.ora GTFDBDG = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = GTFDBDG)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = gtfdbdg) ) ) GTFDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = GTFDB )(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = gtfdb) ) ) GTFDB1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = GTFDB1 )(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = gtfdb) (SID=gtfdb1) ) ) GTFDB2 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = GTFDB2 )(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = gtfdb) (SID=gtfdb2) ) ) lsnrctl stop lsnrctl start 3.3 通过duplicate命令进行复制 cd /home/oracle/script nohup sh dup_db.sh & cd $ORACLE_HOME/dbs sqlplus / as sysdba create spfile from pfile='initgtfdb2.ora'; startup nomount exit rman target sys/Sys#2013@gtfdb1 auxiliary sys/Sys#2013@gtfdbdg run { allocate channel ch1 type disk; allocate auxiliary channel ch2 type disk; duplicate target database for standby nofilenamecheck from active database; release channel ch1; release channel ch2; } #查收日志状态 select group#,thread#,bytes,archived,status from v$standby_log; 3.4 备库启动日志应用 sqlplus / as sysdba ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION; --检查归档日志的同步情况 SELECT SEQUENCE#,THREAD#,APPLIED FROM GV$ARCHIVED_LOG ORDER BY SEQUENCE#; 3.5 启动数据库日志实时应用 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; ALTER DATABASE OPEN; ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION; 3.6 检查备库数据库状态 select database_role,switchover_status,open_mode from v$database; select * from v$dataguard_stats; select * from v$managed_standby; 来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26506993/viewspace-2107327/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26506993/viewspace-2107327/