安装oracle并建库
设置主机名
[root@hzlh-yz-rfid-p1 ~]# cat /etc/hosts
添加:
10.157.37.61 hzlh-yz-rfid-p1
[root@hzlh-yz-rfid-p1 ~]# cat /etc/sysconfig/network
NETWORKING=yes
#HOSTNAME=localhost.localdomain
HOSTNAME=hzlh-yz-rfid-p1
创建 oracle 用户及组并赋权
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
echo oracle | passwd oracle
[root@localhost home]# id oracle
uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)
chown oracle.oinstall /u01/
chown -R oracle:oinstall /data
chown -R oracle:oinstall /backup/
chown -R oracle:oinstall /arch
chown oracle.oinstall /home/database/
修改参数
[root@localhost home]#
echo "
fs.aio-max-nr =1048576
fs.file-max =6815744
kernel.shmall = 2097152
kernel.shmmax = 4296729594
kernel.shmmni =4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range=9000 65500
net.core.rmem_default =262144
net.core.rmem_max = 4194304
net.core.wmem_default =262144
net.core.wmem_max = 1048586
" >> /etc/sysctl.conf
[root@oracle2 opt]#
echo "
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
" >> /etc/security/limits.conf
[root@hzlh-yz-rfid-p2 opt]# sysctl -p
设置环境变量
[root@localhost home]# su - oracle
vi /home/oracle/.bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/usr/X11R6/lib64/
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
#export LD_ASSUME_KERNEL=2.6.18
#export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
umask 022
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
source .bash_profile
mkdir -p /u01/app/oracle
安装数据库软件
检查安装包:
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}(%{ARCH})\n' binutils \
compat-libcap1 \
compat-libstdc++-33 \
elfutils-libelf \
elfutils-libelf-devel \
gcc \
gcc-c++ \
glibc \
glibc-common \
glibc-devel \
glibc-headers \
pdksh \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
make \
sysstat \
unixODBC \
unixODBC-devel
参数如下:
./runInstaller -silent -ignorePrereq \
-responseFile /home/oracle/database/response/db_install.rsp \
oracle.install.option=INSTALL_DB_SWONLY \
UNIX_GROUP_NAME=oinstall \
INVENTORY_LOCATION=/u01/oraInventory \
SELECTED_LANGUAGES=en,zh_CN,zh_TW \
ORACLE_HOME=/u01/app/oracle/11gr2 \
ORACLE_BASE=/u01/app/oracle \
oracle.install.db.InstallEdition=EE \
oracle.install.db.EEOptionsSelection=true \
oracle.install.db.DBA_GROUP=dba \
oracle.install.db.OPER_GROUP=oinstall \
DECLINE_SECURITY_UPDATES=true \
oracle.installer.autoupdates.option=skip_updates
vnc连接
1.关闭防火墙:service iptables stop
2.安装vncsrver服务:yum install vnc
查看所有安装包yum grouplist
yum groupinstall Desktop -y
yum装包Xwindow,Desktop
若沒有 "Xwindow"則安裝 "X Windows System"
yum groupinstall "X Window System" -y
3.命令:vncserver
设置密码即可
vnc连接即可
关闭连接:
vncserver -kill :1
连接后
执行xhost + 把图形界面给其他用户使用
netca安装监听器 (一路回车即可 )或netmgr。
建库
手動管理數據文件:
DG搭建实例
主库:10.207.238.212
备库:10.207.238.211
主库安装oracle软件,建立监听,建立数据库。
oracle 用户配置环境变量并创建路径
[oracle@db ~]$ vi .bash_profile
# .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
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=rfid
#export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/usr/X11R6/lib64/
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
#export LD_ASSUME_KERNEL=2.6.18
#export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
umask 022
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
mkdir -p /u01/app/oracle
备库安装oracle软件,建立监听(同主库)
1.设置主备库监听文件listener.ora和tnsnames.ora
主库:
[oracle@db admin]$ cat listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = testdb)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = testdb)
)
)
[oracle@db admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
TESTDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =10.207.238.212)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testdb)
)
)
LISTENER_DB =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
TESTSTD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.207.238.211)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = teststd)
)
)
备库:
[oracle@dg admin]$ cat listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.207.238.211)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = teststd)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = teststd)
)
)
[oracle@dg admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
TESTDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =10.207.238.212)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testdb)
)
)
LISTENER_DB =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
TESTSTD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.207.238.211)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = teststd)
)
)
listener.ora中:
测试:tnsping IP
[oracle@db admin]$ tnsping 10.207.238.211
[oracle@dg admin]$ tnsping 10.207.238.212
参数文件修改
添加备用日志组
主库执行:
alter database add standby logfile group 11 ('/data/RFID/onlinelog/sredo11.log','/FRA/RFID/onlinelog/sredo11.log') size 500M;
alter database add standby logfile group 12 ('/data/RFID/onlinelog/sredo12.log','/FRA/RFID/onlinelog/sredo12.log') size 500M;
alter database add standby logfile group 13 ('/data/RFID/onlinelog/sredo13.log','/FRA/RFID/onlinelog/sredo13.log') size 500M;
alter database add standby logfile group 14 ('/data/RFID/onlinelog/sredo14.log','/FRA/RFID/onlinelog/sredo14.log') size 500M;
alter database add standby logfile group 15 ('/data/RFID/onlinelog/sredo15.log','/FRA/RFID/onlinelog/sredo15.log') size 500M;
alter database add standby logfile group 16 ('/data/RFID/onlinelog/sredo16.log','/FRA/RFID/onlinelog/sredo16.log') size 500M;
SQL>
SQL> alter system set db_unique_name=RFID scope=spfile;(需重启)
SQL> alter system set log_archive_config='DG_CONFIG=(RFID,RFIDSTD)' scope=both;(必須)(DB_NAME)
SQL> alter system set log_archive_dest_2='service=RFIDSTD reopen=120 lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=RFIDSTD' scope=both;(必須)
SQL> alter system set db_file_name_convert='/data/RFID','/data/RFIDSTD/' scope=spfile;(非必須)
SQL> alter system set log_file_name_convert='/data/RFID/onlinelog/','/data/RFIDSTD/onlinelog/','/FRA/RFID/onlinelog/','/FRA/RFIDTDB/onlinelog/' scope=spfile;(非必須)
SQL> show parameter standby;
SQL> alter system set standby_file_management=auto scope=both;
SQL> shutdown immediate
SQL> startup
注:目錄轉換是在備庫上完成的。
修改备库参数文件
[oracle@hzlh-yz-rfid-p2 dbs]$ vi initrfid.ora
rfid.__db_cache_size=33822867456
rfid.__java_pool_size=939524096
rfid.__large_pool_size=536870912
rfid.__oracle_base='/u/app/oracle'#ORACLE_BASE set from environment
rfid.__pga_aggregate_target=26575110144
rfid.__sga_target=39594229760
rfid.__shared_io_pool_size=0
rfid.__shared_pool_size=3758096384
rfid.__streams_pool_size=134217728
*.audit_file_dest='/u/app/oracle/admin/RFIDSTD/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/data/RFIDSTD/controlfile/o1_mf_d9x1so52_.ctl','/FRA/fast_recovery_area/RFIDSTD/controlfile/o1_mf_d9x1so5m_.ctl'
*.db_block_size=8192
*.db_create_file_dest='/data/RFID/'
*.db_domain=''
*.db_file_name_convert='/data/RFID/','/data/RFIDSTD/','/data/RFID/datafile/mes/','/data/RFIDSTD/datafile/mes/','/data/RFID/datafile/mes_indx/','/data/RFIDSTD/datafile/mes_indx/','/data/RFID/datafile/small_tbs','/data/RFIDSTD/datafile/small_tbs','/data/RFID/datafile/small_tbs_idx','/data/RFIDSTD/datafile/small_tbs_idx'
*.db_name='RFID'
*.db_recovery_file_dest='/FRA/fast_recovery_area/'
*.db_recovery_file_dest_size=107374182400
*.db_unique_name='RFIDSTD'
*.diagnostic_dest='/u/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=rfidstdXDB)'
*.fal_client='RFIDSTD'
*.fal_server='RFID'
*.log_archive_config='DG_CONFIG=(RFID,RFIDSTD)'
*.log_archive_dest_1='LOCATION=/arch/RFIDSTD'
*.log_archive_dest_2='service=RFID reopen=60 lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=RFID'
*.log_archive_format='%t_%s_%r.dbf'
*.log_file_name_convert='/data/RFID/onlinelog/','/data/RFIDSTD/onlinelog/','/FRA/fast_recovery_area/RFID/onlinelog/','/FRA/fast_recovery_area/RFIDSTD/onlinelog/'
*.memory_target=66057142272
*.open_cursors=300
*.processes=1000
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=1105
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'
mkdir -p /data/RFID/onlinelog/
mkdir -p /FRA/fast_recovery_area/RFID/onlinelog/
mkdir -p /FRA/fast_recovery_area/RFID/controlfile/
mkdir -p /u/app/oracle/admin/RFIDSTD/adump
拷贝密码文件到备库(不改名字)
在主库上duplicate拷贝到备库
[oracle@hzlh-yz-rfid-p1 ~] vim /u01/oracle/scripts/duplicatetostandby.rcv
RUN {
ALLOCATE CHANNEL d1 TYPE DISK;
ALLOCATE CHANNEL d2 TYPE DISK;
ALLOCATE AUXILIARY CHANNEL cnv1 TYPE DISK;
ALLOCATE AUXILIARY CHANNEL cnv2 TYPE DISK;
DUPLICATE TARGET DATABASE
FOR STANDBY
FROM ACTIVE DATABASE
DORECOVER
NOFILENAMECHECK;
}
[oracle@oracle1 scripts]$rman target sys/oracle@rfid auxiliary sys/oracle@rfidstd cmdfile=/u01/oracle/scripts/duplicatetostandby.rcv log=/u01/oracle/scripts/duplicatetostandby.log
RMAN> 2> 3> 4> 5> 6> 7> 8> 9> 10> 11> 12>
在从库执行自动恢复状态
alter database recover managed standby database using current logfile disconnect from session;
alter database recover managed standby database disconnect from session;
或 rman備份拷貝到備庫
主庫進行rman備份
backup as compressed backupset format '/db1/rman/backup/%d_db_0_%T_%t_%U' database include current controlfile for standby;
將備份文件拷貝到備庫相同目錄下(因為控制文件中有記錄備份目錄)
在主庫創建備庫控制文件:
SQL> alter database create standby controlfile as '/db1/rman/dg1_control01.ctl';
Database altered.
拷貝到備庫:
[oracle@hzhn-rfid-db-n2 ~]$ scp /db1/rman/dg1_control01.ctl 10.195.7.87:/db2/rfiddg1/controlfile/control01.ctl
[oracle@hzhn-rfid-db-n2 ~]$ scp /db1/rman/dg1_control01.ctl 10.195.7.87:/db2/rfiddg1/controlfile/control02.ctl
啟動備庫:
SQL> startup nomount pfile=/tmp/rfid.ora;
利用備庫控制文件將庫啟動到mount狀態
SQL> alter database mount;
Database altered.
rman恢復備庫:
restore database;
15:35開始恢復 歷時4:48分
alter database recover managed standby database disconnect from session;
SQL> alter database recover managed standby database cancel;
Database altered.
检测是否同步
备库上执行
SQL> select process,status,sequence# from v$managed_standby;
PROCESS STATUS SEQUENCE#
------------------ ------------------------ ----------
ARCH CONNECTED 0
ARCH CONNECTED 0
ARCH CONNECTED 0
ARCH CONNECTED 0
MRP0 WAIT_FOR_LOG 107069
RFS IDLE 0
RFS IDLE 107069
7 rows selected.
主库上执行
alter system switch logfile;
备库上查看
SQL> select process,status,sequence# from v$managed_standby;
PROCESS STATUS SEQUENCE#
------------------ ------------------------ ----------
ARCH CONNECTED 0
ARCH CONNECTED 0
ARCH CONNECTED 0
ARCH CONNECTED 0
MRP0 WAIT_FOR_LOG 107070
RFS IDLE 0
RFS IDLE 107070
7 rows selected.
查看归档日志error信息
SQL> select dest_id,status,destination,error from v$archive_dest;
DEST_ID STATUS DESTINATION ERROR
---------- --------- ------------------------------ -----------------------------------------------------------------
1 INACTIVE
2 VALID db_standby
3 INACTIVE
4 INACTIVE
5 INACTIVE
6 INACTIVE
7 INACTIVE
8 INACTIVE
9 INACTIVE
10 VALID /arch
详见4,检测DG是否同步
检测DG是否同步
service="stanewsfc", LGWR ASYN C NOAFFIRM delay=0 optional co mpression=disable
max_failure= 0
max_connections=1
reopen=300 db_unique_name="snewsfc"
net_ timeout=30,
valid_for=(all_log files,primary_role)
1、在standby库启动redo应用进程
在oracle11g中standby库是mount或open状态都可以执行,但是oracle10g只能在mount阶段执行。
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
(SQL> alter database recover managed standby database disconnect from session;)
SQL> alter database recover managed standby database using current logfile disconnect from session;
oracle database 9i:
SQL> alter database mount standby database;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
2、在standby库取消redo应用进程
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
(SQL> alter database recover managed standby database cancel;)
3、在primary库查询最大的日志号
SQL> select * from v$log;
4、在主备库檢查歸檔日誌
SQL> SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#) OVER (PARTITION BY thread#) AS LAST from V$ARCHIVED_LOG;
SQL> select distinct THREAD#,max(SEQUENCE#) over(partition by thread#) SEQUENCE# from v$archived_log;
THREAD# MAX(SEQUENCE#)OVER(PARTITIONBYTHREAD#)
1 163968
5、查看DG進程MRP和RFS
SQL> select process,status,client_process,thread#,sequence# from v$managed_standby;
PROCESS STATUS CLIENT_P THREAD# SEQUENCE#
ARCH CONNECTED ARCH 0 0
ARCH CONNECTED ARCH 0 0
ARCH CONNECTED ARCH 0 0
ARCH CONNECTED ARCH 0 0
RFS IDLE LGWR 1 24
RFS IDLE UNKNOWN 0 0
RFS IDLE ARCH 0 0
MRP0 WAIT_FOR_LOG N/A 1 24
RFS IDLE UNKNOWN 0 0
6、在standby库检测所有归档是否都完全应用
SQL> select distinct THREAD#,max(SEQUENCE#) over(partition by THREAD#),applied from v$archived_log order by 2;
THREAD# MAX(SEQUENCE#)OVER(PARTITIONBYTHREAD#) APPLIED
1 189744 NO
1 189744 YES
SQL>
SQL> select THREAD#,SEQUENCE#,applied from v$archived_log order by 2;
THREAD# SEQUENCE# APPLIED
1 163658 YES
1 163659 YES
1 163660 YES
1 163661 YES
1 163662 YES
1 163663 YES
1 163664 YES
1 163665 YES
2560 rows selected.
7、查看归档日志error信息
SQL> select dest_id,status,destination,error from v$archive_dest;
DEST_ID STATUS DESTINATION ERROR
1 INACTIVE
2 VALID db_standby
3 INACTIVE
4 INACTIVE
5 INACTIVE
6 INACTIVE
7 INACTIVE
8 INACTIVE
9 INACTIVE
10 VALID /arch
SQL>
8、检查standby归档文件是否连续
STANDBY> select thread#, low_sequence#, high_sequence# from v$archive_gap;
no rows selected
这一步很重要,必须确保所有已生成的归档文件都已传到standby服务器。
如果上述语句有返回结果,则必须把缺失的归档文件从primary端复制到standby端,然后註冊歸檔日誌到控制文件。
9、standby註冊归档文件到控制文件
SQL>alter database register physical logfile 'filespec'
10、检查standby归档文件是否完整
STANDBY> SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#) OVER (PARTITION BY thread#) AS LAST from V$ARCHIVED_LOG;
THREAD LAST
1 479
通过上述语句可以查出standby目前序号最大的归档日志为479,如果在primary端有比479更大的归档日志,把它们拷贝过来,然后通过以下命令将其加入数据库:
STANDBY>alter database register physical logfile 'filespec';
11、主备切换,需要先在primary库切换
检测主库的状态
SQL> select database_role, protection_mode,switchover_status from v$database;
DATABASE_ROLE PROTECTION_MODE SWITCHOVER_STATUS
PRIMARY MAXIMUM PERFORMANCE TO STANDBY
12、primary库切换为standby库
SQL> alter database commit to switchover to physical standby with session shutdown;
13、standby库切换为primary库
SQL> alter database commit to switchover to primary with session shutdown;
14、Failover是指由于Primary故障无法短时间恢复,Standby不得不充当Primay的角色,如果处于最高性能模式,这种切换很有可能导致数据丢失。
SQL> alter database recover managed standby database finish force;
FORCE关键字将会停止当前活动的RFS进程,以便立刻执行failover。
或者:
SQL> alter database recover managed standby database finish skip standby logfile;
switchover主备库互换
一、检查环境:
确认主库和从库间网络连接通畅;
确认没有活动的会话连接在数据库中;
PRIMARY数据库处于打开的状态,STANDBY数据库处于MOUNT状态;
确保STANDBY数据库处于ARCHIVELOG模式;
如果设置了REDO应用的延迟,那么将这个设置去掉;
确保配置了主库和从库的初始化参数,使得切换完成后,DATA GUARD机制可以顺利的运行。
如果是最大保护模式,先变成最大性能模式:
SQL> select OPEN_MODE,PROTECTION_MODE,PROTECTION_LEVEL,SWITCHOVER_STATUS from v$database;
OPEN_MODE PROTECTION_MODE PROTECTION_LEVEL SWITCHOVER_STATUS
READ WRITE MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE TO STANDBY
SQL> SELECT COUNT(*) FROM V$SESSION WHERE USERNAME IS NOT NULL;
COUNT(*)
1
在切换前,杀掉所有的数据库连接 观察SWITCHOVER_STATUS,如果是 TO STANDBY,则可以直接切换
如果SESSIONS ACTIVE ,则用
alter database commit to switchover to physical standby with session shutdown;
二、主庫切備庫
1、查看primary库转换状态
select switchover_status from v$database
(A 如果switchover_status为TO_STANDBY说明可以转换,直接转换
alter database commit to switchover to physical standby;
B 如果switchover_status为SESSIONS ACTIVE 则关闭会话
SQL>alter database commit to switchover to physical standby with session shutdown; )
SQL> alter database commit to switchover to physical standby ;
Database altered.
SQL> shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup nomount ;
ORACLE instance started.
Total System Global Area 3242987696 bytes
Fixed Size 733360 bytes
Variable Size 1174405120 bytes
Database Buffers 2063597568 bytes
Redo Buffers 4251648 bytes
SQL> alter database mount standby database;
Database altered.
SQL> alter database recover managed standby database disconnect from session;
Database altered.
5、再次查看witchover_status状态
如果为TO PRIMARY ,表示primary切换成standby成功,如果不是请查看配置文件
三、備庫切主庫:
1、查看switchover_status状态
select switchover_status from v$database;
(A 如果switchover_status为TO_PRIMARY 说明标记恢复可以直接转换为primary库
SQL>alter database commit to switchover to primary
B 如果switchover_status为SESSION ACTIVE 就应该断开活动会话
SQL > alter database commit to switchover to primary with session shutdown;
C 如果switchover_status为NOT ALLOWED 说明切换标记还没收到,此时不能
执行转换。)
SQL> alter database commit to switchover to primary;
Database altered.
SQL> shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup ;
ORACLE instance started.
Total System Global Area 3242987696 bytes
Fixed Size 733360 bytes
Variable Size 1174405120 bytes
Database Buffers 2063597568 bytes
Redo Buffers 4251648 bytes
Database mounted.
Database opened.
failover ( 備庫 ) :
alter database recover managed standby database finish;
alter database commit to switchover to primary;