ITPub博客

首页 > 数据库 > 数据库开发技术 > 逻辑数据库的管理

逻辑数据库的管理

原创 数据库开发技术 作者:imlihj2007 时间:2008-08-27 16:19:33 0 删除 编辑

逻辑数据库的管理

一:逻辑数据库的角色切换

1,把数据库切换到逻辑备数据库的角色

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO LOGICAL STANDBY;

2, 停止远程的归档操作

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=DEFER SCOPE=BOTH;

3, 把其中的一个备库切换到主库的角色.

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

4 ,打开远程归档操作

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE SCOPE=BOTH;

5 ,在新的备库上创建到主数据库的连接

  1. 创建连接

SQL> EXECUTE DBMS_LOGSTDBY.GUARD_BYPASS_ON;

SQL> CREATE DATABASE LINK location1

2> CONNECT TO user-name IDENTIFIED BY password USING 'location1';

SQL> EXECUTE DBMS_LOGSTDBY.GUARD_BYPASS_OFF;

  1. 测试数据库连接.

SQL> SELECT * FROM DBA_LOGSTDBY_PARAMETERS@location1;

6, 打开SQL应用在新的备库上.

SQL> ALTER DATABASE START LOGICAL STANDBY APPLY NEW PRIMARY location1;

7 ,主库上做日杂归档操作,并测试角色切换成功

SQL> ALTER SYSTEM ARCHIVE LOG START;

SQL> ALTER SYSTEM SWITCH LOGFILE;

二:逻辑数据库的故障启动

如果DATA GUARD 的主数据库不能够启动 那么有必要把备库启动起来,暂时或者永久代替主库!

SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;

SQL> ALTER DATABASE ACTIVATE LOGICAL STANDBY DATABASE;

然后做数据库的恢复或者其他响应的操作

或者是角色转换如上!

三:归档日志手工注册

如果DATA GUARD 的主数据库的归档日志由于不确定不可以预测的原因使的归档日志不能够传到备库上!那么就需要手工添加注册到备库上!

  1. 确定丢失的归档日志

SQL> COLUMN FILE_NAME FORMAT a55;

SQL> SELECT THREAD#, SEQUENCE#, FILE_NAME FROM DBA_LOGSTDBY_LOG L

2> WHERE NEXT_CHANGE# NOT IN

3> (SELECT FIRST_CHANGE# FROM DBA_LOGSTDBY_LOG WHERE L.THREAD# = THREAD#)

4> ORDER BY THREAD#,SEQUENCE#;

THREAD# SEQUENCE# FILE_NAME

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

1 6 /disk1/oracle/dbs/log-1292880008_6.arc

1 10 /disk1/oracle/dbs/log-1292880008_10.arc

  1. 拷贝丢失的归档日志到备库上.

拷贝文件

  1. 注册不完整的归档日志

SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE

2> '/disk1/oracle/dbs/log-1292880008_7.arc';

Database altered.

SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE

2> '/disk1/oracle/dbs/log-1292880008_11.arc';

Database altered.

四:常用的查询语句

1, 查询数据库的角色

Select database_role from v$database;

2, 确定重做日志是否应用到备库上

Select applied_scn,newest_scn from dba_logstdby_progress;

3, 确认重做数据的注册

SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME, DICT_BEGIN, DICT_END FROM DBA_LOGSTDBY_LOG ORDER BY SEQUENCE#;

4, 确认重做数据的应用

             SELECT NAME, VALUE FROM V$LOGSTDBY_STATS WHERE NAME = 'coordinator state';
      5,     data guard 访问模式
select guard_status from v$database;

五:归档日志的管理

           在data guard的具体的实际应用中,有大量的归档日志的产生,对他们也要进行合理的管理!

六:其他管理

1:在逻辑备库上运行DDL语句
SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;
Database altered.
SQL> EXECUTE DBMS_LOGSTDBY.GUARD_BYPASS_ON;
PL/SQL procedure successfully completed.
SQL> ALTER TABLE SCOTT.EMP ADD CONSTRAINT EMPID UNIQUE (EMPNO);
Table altered.
SQL> EXECUTE DBMS_LOGSTDBY.GUARD_BYPASS_OFF;
PL/SQL procedure successfully completed.
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY;
Database altered.
2:在逻辑数据库上添加数据文件
在主数据库上执行数据文件的添加或者修改的操作时候,如果备库上根本没有响应的路径或者没有符合的空间剩余,备库上的执行操作就会失败
SQL> select event,status_code,status from dba_logstdby_events;
SQL> EXECUTE DBMS_LOGSTDBY.GUARD_BYPASS_ON;
SQL> ALTER TABLESPACE t_table ADD DATAFILE 'dbs/t_db.f' SIZE 60M;
Tablespace altered.
SQL> EXECUTE DBMS_LOGSTDBY.GUARD_BYPASS_off;
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY;
Database altered.
[@more@]
                                                    

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9879835/viewspace-1009657/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-05-25

  • 博文量
    109
  • 访问量
    1577025