下面是主备库的DB_UNIQUE_NAME和Oracle Net Service Name
|
Database DB_UNIQUE_NAME Oracle Net Service Name Primary atfdb atfdb Physical standby atfdbdg atfdbdg |
|
select * from V$NLS_PARAMETERS p where p.parameter like '%CHARACTER%';
NLS_CHARACTERSET ZHS16GBK NLS_NCHAR_CHARACTERSET AL16UTF16
show parameter compatible NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ compatible string 11.2.0.0.0 |
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 |
|
#使用root用户登录 service iptables status service iptables stop chkconfig iptables off
#然后输入以下命令,禁用SELinux: vi /etc/selinux/config SELINUX=disabled |
|
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 |
|
/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 cd
scp .bash_profile oracle@beiku_ip:/home/oracle |
|
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 #增加以下内容: I f [ $USER = "oracle" ] ; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi umask 022 fi |
|
mkdir -p /u01/app/oracle/product/11.2.0/db_1 chown -R oracle:oinstall /u01/app/oracle chmod -R 775 /u01
#创建数据库文件目录 mkdir /data #创建数据库日志目录 mkdir /log #创建归档日志目录 mkdir /arc |
|
#使用oracle用户登录 #首先解压安装文件: unzip p10404530_112030_Linux-x86-64_1of7.zip unzip p10404530_112030_Linux-x86-64_2of7.zip #打开图形设置,打开Xmanager4 的 Passive模式。 export DISPLAY=ip:0.0 #此ip不是服务器的ip,为自己的笔记本ip #然后进入解压后的database目录,执行以下命令: ./runInstaller |
ALTER DATABASE FORCE LOGGING;
作用:不管什么操作都会生成redo日志
特点:1.在数据库mount状态和open状态都可以启动force logging模式
2.临时表空间和临时回滚段动作不会生成redo日志
|
cd $ORACLE_HOME/dbs sqlplus / as sysdba create pfile from spfile; exit
#备份参数文件 cp initatfdb1.ora /home/oracle/initatfdb1.ora_bak |
|
*.db_unique_name=atfdb *.LOG_ARCHIVE_DEST_1='LOCATION=+FRA VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=atfdb' *.log_archive_config='DG_CONFIG=(atfdb,atfdbdg)' *.LOG_ARCHIVE_DEST_2= 'SERVICE=atfdbdg ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=atfdbdg' *.LOG_ARCHIVE_DEST_STATE_1=ENABLE *.LOG_ARCHIVE_DEST_STATE_2=ENABLE #更改之前的archive log format *.LOG_ARCHIVE_FORMAT = log%d_%t_%s_%r.arc *.LOG_ARCHIVE_MAX_PROCESSES=30 *.fal_server=atfdbdg *.STANDBY_FILE_MANAGEMENT=AUTO |
|
#用新编辑的PFILE生成SPFILE,并重启数据库 cd $ORACLE_HOME/dbs create spfile='+DATA/atfdb/spfileatfdb.ora' from pfile = 'initatfdb1.ora';
#在两个节点下,分别在init.ora下面增加下列参数,确保dbs目录下没有spfile.ora和spfile.ora文件,有的话需要改名
#重启数据库 srvctl stop database –d atfdb –o immediate srvctl start database –d atfdb |
|
ALTER DATABASE ADD STANDBY LOGFILE GROUP 17 SIZE 200M; ALTER DATABASE ADD STANDBY LOGFILE GROUP 18 SIZE 200M; ALTER DATABASE ADD STANDBY LOGFILE GROUP 19 SIZE 200M; ALTER DATABASE ADD STANDBY LOGFILE GROUP 20 SIZE 200M; |
作用:主库切换到备库角色时接收主库redo日志
检查:
|
SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM GV$STANDBY_LOG; |
特点:
1. standby logfile和online redolog大小应一致,管理方便
2. 如果是单实例数据库那么standby logfile组比online redolog组的个数多一个;如果是rac架构那么standby logfile组个数=rac节点数*(online redolog组个数+1)
|
cd $ORACLE_HOME/network/admin vi tnsnames.ora
#modified by neo for the data guard on date
ATFDBDG = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ATFDBDG)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = atfdbdg) ) ) |
2.5 创建主库数据文件的备份
|
#登录到主库的RAC节点2 #建立备份存放目录 mkdir /home/oracle/backup rman tareget / run { allocate channel d1 type disk; backup tag 'dbfull' format '/home/oracle/backup/dbfull_%d_%s_%p.bck' database include current controlfile; backup tag 'logfull' format '/home/oracle/backup/logfull_%d_%s_%p.bck' archivelog all; release channel d1;} exit |
|
#登录到节点2 su – oracle sqlplus / as sysdba shutdown immediate STARTUP MOUNT; ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/home/oracle/backup/controlfile.ctl'; ALTER DATABASE OPEN; #在备库建立对应的备份存放目录 mkdir /home/oracle/backup scp /home/oracle/backup/* oracle@ip:/home/oracle/backup |
|
cd $ORACLE_HOME/dbs scp orapwatfdb1 oracle@ip:/u01/app/oracle/product/11.2.0/db_1/dbs/ |
|
cd scp init* oracle@ip:/u01/app/oracle/product/11.2.0/db_1/dbs/ |
atfdb1.__db_cache_size=10670309376
这样的参数改为一个,如
*.__db_cache_size=10670309376
去掉下面参数
atfdb1.instance_number=1
atfdb2.instance_number=2
atfdb1.instance_number=1
atfdb2.instance_number=2
*.cluster_database=true
*.remote_listener='rac-scan:1521'
|
*.db_name='atfdb' DB_UNIQUE_NAME=atfdbdg *.db_create_file_dest='/data' *.db_create_online_log_dest_1='/log' *.db_create_online_log_dest_2='/log' *.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=/arc VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=atfdbdg' LOG_ARCHIVE_DEST_2= 'SERVICE=misdb ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=atfdb' FAL_SERVER=atfdb LOG_ARCHIVE_CONFIG='DG_CONFIG=(atfdb,atfdbdg)' STANDBY_FILE_MANAGEMENT=AUTO |
su - root
vi /etc/hostsvi listener.ora
|
# Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = atfdbdg) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1) (SID_NAME = atfdb1) ) )
LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ATFDBDG)(PORT = 1521)) ) ADR_BASE_LISTENER = /u01/app/oracle |
vi tnsnames.ora
|
ATFDBDG = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ATFDBDG)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = atfdbdg) ) )
ATFDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ATFDB )(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = atfdb) ) ) |
lsnrctl start
3.3 通过RMAN恢复从主库传送过来的备份文件在备库下创建spfile
|
cd $ORACLE_HOME/dbs sqlplus / as sysdba create spfile from pfile= 'initatfdb1.ora_bak'; |
|
CATALOG START WITH '/home/oracle/backup/'; |
|
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION; SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
|
|
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; |
|
select database_role,switchover_status,open_mode from v$database; |
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26506993/viewspace-1810725/ ,如需转载,请注明出处,否则将追究法律责任。