我的Oracle中创建了多个数据库,我应该如何在数据库之间进行切换呢

我的Oracle中创建了多个数据库,我应该如何在数据库之间进行切换呢,第1张

1、在不退出sqlplus的情况下,直接在命令行输入conn username/password;即可完成切换。

2、在退出sqlplus的情况下,windows下:set ORACLE_SID=db_namelinux下:export ORACLE_SID = db_name再登录相应的用户即可完成切换。

3、创建用户命令:create user usernamer identified by passwd;

4、给用户赋权限:grant connect,resource,dba to username

oracle数据库主机的RAC机制是可以把两个实例互相切换,目的就是保证数据库正常使用,和weblogic没有关系;

除非数据库停了,weblogic中间件才会报错,否则,weblogic无需重新启动!

你这个属于主、备机切换

1. 察看主库状态

select switchover_status from v$database

收集主库上的临时表空间的情况,原因是备库激活后临时文件可能丢失,需要手工建上去:

col file_name format a40

select file_name,tablespace_name,bytes/1024/1024 from dba_temp_files

FILE_NAME                                TABLESPACE_NAME      BYTES/1024/1024

---------------------------------------- -------------------- ---------------

/data/oradata/alihr/temp01.dbf           TEMP                            2048

2.切换主库到standby

alter database commit to switchover to physical standby

或:

ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN

shutdown immediate

startup nomount

alter database mount standby database

3.验证要被切换的standby是否接收到switch to 通知

SELECT SWITCHOVER_STATUS FROM V$DATABASE 

以前的状态就是SESSIONS ACTIVE,现在就变为TO PRIMARY

4.切换物理standby到主用模式,检查redo log是否创建好

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY

shutdown immediate

startup

5. standby数据库切换成主库后,检查是否需要、对临时表空间增加临时文件:

先检查临时文件是否丢失:

col file_name format a60

select file_name,tablespace_name from dba_temp_files

把结果前面原主库上的临时文件进行对比,如有丢失则使用如下命令增加:

alter tablespace temp add tempfile '/data/oradata/alihr/temp02.dbf' size 2048M reuse

正常情况下,如果db_file_name_convert参数设置正确的话,11g会自动建立temp file

6.在新的standby机器上

alter system set log_archive_dest_state_2='defer'

alter database recover managed standby database disconnect from session

7.检查主备库中fal参数

fal_server服务名是在standby机器的tnsnames中,指向主库,fal_client是在主库上的tnsnames中,指向standby。

fal参数只在standby机器上生效,所以在standby机器上fal_server指向主库,fal_client机器指向备库.

而主库上的fal参数虽然不生效,但为了避免主库切换成standby时,我们还要修改fal参数,所以现在就设置好,

让fal_server指向现在的standby数据库,fal_client指向自己。

8.在新的主库

alter system set log_archive_dest_state_2='enable'

alter system archive log current 

然后到备库上检查备库机器上日志是否正常的传过来了。

9.检查和调整主备库两台机器中的crontab中的数据库备份脚本和删除归档脚本。

=================oracle11g的最大保护和最大可用模式下的切换==================

如果主库是意外宕机的,则直接把备库切换成主库:

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH

shutdown immediate

connect / as sysdba

startup mount

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY

shutdown immediate

connect / as sysdba

startup mount

ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE AVAILABILITY

alter database open

注意:上面 *** 作中是手工的把数据库重新置成MAXIMIZE AVAILABILITY,否则数据库起来后是最大性能模式。

检查数据库的角色:

select database_role from v$database

原有主库启动后,如果不是硬盘坏,主库上的数据还存在,则把主库转换成standby就可以了:

主库上:

startup mount

recover automatic database

ALTER DATABASE CONVERT TO PHYSICAL STANDBY

shutdown immediate

注意千万不要把主库打开了,否则会导致主库的SCN发生变化,无法转换成standby数据库了。

在把原先的主库转化为standby时,有时可能报如下错误:

SQL> alter database recover managed standby database finish

alter database recover managed standby database finish

*

ERROR at line 1:

ORA-00283: recovery session canceled due to errors

ORA-19909: datafile 1 belongs to an orphan incarnation

ORA-01110: data file 1: '/opt/oracle/oradata/oratest/system01.dbf'

这里把到rman中:

list incarnation of database

reset database to incarnation 1

recover database

reset database to incarnation 2

=========================================================

failover在物理standby的切换

1.检查standby看是否使用了standby log

2.有standby log,执行下面的命令

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH

2.1 没有standby log则不执行上面的

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH SKIP STANDBY LOGFILE

3. 切换

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY

3.1 如果上面3步骤失败,则

ALTER DATABASE ACTIVATE STANDBY DATABASE

4. 重启db

shutdown immediate

startup

switchover的方法:

主库和物理standby的切换

1.察看主库状态

SELECT SWITCHOVER_STATUS FROM V$DATABASE

2.切换

ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY

3.原主库

shutdown immediate

startup nomount

alter database mount standby database

4.验证要被切换的standby是否接收到switch to 通知

SELECT SWITCHOVER_STATUS FROM V$DATABASE 

增加online redo日志

5.切换物理standby到主

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY

shutdown immediate

startup

6.在新的standby机器(也就是老的主库)

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION

7.在新的主库

alter system archive log current 

========active standby database===========

当:

alter database activate standby database

原来的主库只能通过闪回转化成standby database,但要求数据库的flashback打开。

在新主库上:

select to_char(standby_became_primary_scn) from v$database

在旧主库上:

SHUTDOWN IMMEDIATE

STARTUP MOUNT

FLASHBACK DATABASE TO SCN standby_became_primary_scn

ALTER DATABASE CONVERT TO PHYSICAL STANDBY

select max(sequence#) from v$log_history where RESETLOGS_TIME=(select max(RESETLOGS_TIME) from v$log_history) 

实例恢复:

recover managed standby database disconnect using current logfile

=================lgwr设置====================================

alter system set log_archive_dest_3 = 'location=/disk3/arch/bopscha reopen=2 MAX_FAILURE=3'

alter system set log_archive_dest_state_3 = alternate

alter system set log_archive_dest_1 = 'location=/disk2/arch/bopscha alternate=log_archive_dest_3 reopen=60 MAX_FAILURE=5' 

*.log_archive_dest_2='SERVICE=DTMRT LGWR ASYNC  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DTMRT'

alter database add standby logfile group 4 ('/oracle/u02/ORA10GDG/STANDBYRD01.LOG') size 200M

select group#,thread#,sequence#,archived,status from v$standby_log

alter database set standby database to maximize {availability | performance | protection}

select protection_mode from v$database

ORA-19527:

LOG_FILE_NAME_CONVERT='/u02/oracle/oradata/oract/','/u02/oracle/oradata/oract/'

alter system set log_archive_dest_2='SERVICE=bopsteststb lgwr sync affirm'

select frequency, duration from v$redo_dest_resp_histogram where dest_id=2 and frequency>1

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL

SQL> ALTER DATABASE OPEN

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT 

alter database convert to snapshot standby

alter database convert to physical standby

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT

alter database commit to switchover to physical standby

alter database activate standby database finish apply

alter database recover managed standby database finish 

旧主库转换成standby的步骤:

在新主库上:

select to_char(standby_became_primary_scn) from v$database

在旧主库上:

SHUTDOWN IMMEDIATE

STARTUP MOUNT

FLASHBACK DATABASE TO SCN standby_became_primary_scn

ALTER DATABASE CONVERT TO PHYSICAL STANDBY

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10038278.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存