11201 PHYSICAL STANDBY rolling upgrade 11203

测试使用11的新特性将数据库从11201升级到11203

1、备库上安装11203的软件,使用silent方式安装

2、将备库上的密码文件,参数文件,监听文件等,cp到新路径下
[oracle@oracle11g-std dbs]$ cp spfileora11.ora snapcf_ora11.f orapwora11 initora11.ora hc_ora11.dat /home/oracle/app/product/11.2.0.3/dbs/
[oracle@oracle11g-std admin]$ cp  listener.ora tnsnames.ora /home/oracle/app/product/11.2.0.3/network/admin/

3、主库打开flashback功能
做这一步的主要作用是:因为建立日志字典表的时候需要打开flashback功能
SQL> select DATABASE_ROLE from v$database;


DATABASE_ROLE
----------------
PRIMARY


SQL> select FLASHBACK_ON from v$database;


FLASHBACK_ON
------------------
NO


SQL> shut immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.


Total System Global Area  304807936 bytes
Fixed Size                  2212856 bytes
Variable Size             184552456 bytes
Database Buffers          113246208 bytes
Redo Buffers                4796416 bytes
Database mounted.
SQL> ALTER DATABASE FLASHBACK ON;

/* 同时创建保证还原点以保证升级失败时可以回退 */

SQL> create restore point pre_rolling_upgrd guarantee flashback database;

下面就是讲物理库转化为逻辑库:

取消物理库的日志应用
SQL> alter database recover managed  standby database cancel;


Database altered.
备库的日志输出
ORA-16037: user requested cancel of managed recovery operation
MRP0: Background Media Recovery process shutdown (ora11)
Waiting for MRP0 pid 1897 to terminate
Managed Standby Recovery Canceled (ora11)
Completed: alter database recover managed  standby database cancel

SQL> shut immediate
ORA-01109: database not open




Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.


Total System Global Area  304807936 bytes
Fixed Size                  2212856 bytes
Variable Size             134220808 bytes
Database Buffers          163577856 bytes
Redo Buffers                4796416 bytes
Database mounted.

需要在Primary Database中创建Logminer dictionary日志挖掘字典:

SQL>  EXECUTE DBMS_LOGSTDBY.BUILD;


PL/SQL procedure successfully completed.


接下来就是讲物理库转化为逻辑库:
SQL> alter database recover managed standby database cancel;


Database altered.

SQL> ALTER DATABASE RECOVER TO LOGICAL STANDBY KEEP IDENTITY;


Database altered.


SQL> 
注意在进行转化的时候必须关闭日志应用,否则会报错



SQL> select database_role from v$database;


DATABASE_ROLE
----------------
LOGICAL STANDBY

禁止在逻辑备库端删除外籍日志 

SQL> EXECUTE DBMS_LOGSTDBY.APPLY_SET('LOG_AUTO_DELETE', 'FALSE');
BEGIN DBMS_LOGSTDBY.APPLY_SET('LOG_AUTO_DELETE', 'FALSE'); END;


      *
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00201: identifier 'DBMS_LOGSTDBY.APPLY_SET' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored




SQL>  @?/rdbms/admin/dbmslsby.sql
CREATE OR REPLACE PACKAGE sys.dbms_logstdby AUTHID CURRENT_USER IS
*
ERROR at line 1:
ORA-01109: database not open

禁止删除日志的时候报:dbms包没有,创建的时候说数据库没有打开,接下来就打开数据库

SQL> alter database open;


Database altered.



SQL> @?/rdbms/admin/dbmslsby.sql


Package created.


No errors.


Synonym created.




PL/SQL procedure successfully completed.




Grant succeeded.


CREATE ROLE logstdby_administrator
            *
ERROR at line 1:
ORA-01921: role name 'LOGSTDBY_ADMINISTRATOR' conflicts with another user or
role name






Grant succeeded.




Grant succeeded.




Grant succeeded.




Library created.

SQL>  EXECUTE DBMS_LOGSTDBY.APPLY_SET('LOG_AUTO_DELETE', 'FALSE');


PL/SQL procedure successfully completed.



执行以下语句可以将逻辑备库不支持的而又在主库上运行过的事务记录到DBA_LOGSTDBY_EVENTS中

SQL> EXECUTE DBMS_LOGSTDBY.APPLY_SET('MAX_EVENTS_RECORDED',DBMS_LOGSTDBY.MAX_EVENTS);


PL/SQL procedure successfully completed.

启动在逻辑备库上的SQL APPLY:

以下是输出日志
Thread 1 advanced to log sequence 4 (LGWR switch)
  Current log# 1 seq# 4 mem# 0: /home/oracle/app/oradata/ora11/redo01.log
Wed May 02 00:01:29 2012
Archived Log entry 25 added for thread 1 sequence 3 ID 0x2b47d37c dest 1:
Wed May 02 00:01:36 2012
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_TAB$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_TS$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_OBJ$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_IND$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_ICOL$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_COL$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_USER$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_CDEF$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_CCOL$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_LOB$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_PROPS$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_ENC$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_COLTYPE$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_SUBCOLTYPE$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_ATTRCOL$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_TYPE$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_ATTRIBUTE$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_NTAB$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_REFCON$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_OPQTYPE$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_KOPM$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_PARTOBJ$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_TABPART$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_INDPART$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_TABSUBPART$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_INDSUBPART$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_TABCOMPART$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_INDCOMPART$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_LOBFRAG$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_LOGMNR_BUILDLOG have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_SEED$ have been marked unusable
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_DICTIONARY$ have been marked unusable
Indexes of table  SYSTEM.LOGMNR_ATTRCOL$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_ATTRIBUTE$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_CCOL$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_CDEF$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_COL$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_COLTYPE$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_DICTIONARY$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_ENC$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_ICOL$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_IND$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_INDCOMPART$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_INDPART$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_INDSUBPART$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_KOPM$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_LOB$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_LOBFRAG$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_LOGMNR_BUILDLOG have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_NTAB$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_OBJ$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_OPQTYPE$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_PARTOBJ$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_PROPS$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_REFCON$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_SEED$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_SUBCOLTYPE$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_TAB$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_TABCOMPART$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_TABPART$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_TABSUBPART$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_TS$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_TYPE$ have been rebuilt and are now usable
Indexes of table  SYSTEM.LOGMNR_USER$ have been rebuilt and are now usable
Wed May 02 00:02:11 2012
Thread 1 advanced to log sequence 5 (LGWR switch)
  Current log# 2 seq# 5 mem# 0: /home/oracle/app/oradata/ora11/redo02.log
Wed May 02 00:02:13 2012
Archived Log entry 26 added for thread 1 sequence 4 ID 0x2b47d37c dest 1:
Wed May 02 00:02:42 2012
LOGMINER: End mining logfiles during dictionary load for session 1
Wed May 02 00:02:45 2012
LSP2 started with pid=38, OS id=2229 
Wed May 02 00:02:51 2012
LOGMINER: Begin mining logfile for session 1 thread 1 sequence 91, /home/oracle/archivelog/1_91_781653794.dbf
Wed May 02 00:02:54 2012
LOGSTDBY Analyzer process AS00 started with server id=0 pid=39 OS id=2231
Wed May 02 00:02:55 2012
Wed May 02 00:02:55 2012
LOGSTDBY Apply process AS01 started with server id=1 pid=40 OS id=2233
Wed May 02 00:02:55 2012
LOGSTDBY Apply process AS02 started with server id=2 pid=41 OS id=2235
LOGSTDBY Apply process AS03 started with server id=3 pid=42 OS id=2237
Wed May 02 00:02:55 2012
LOGSTDBY Apply process AS05 started with server id=5 pid=44 OS id=2241
Wed May 02 00:02:55 2012
LOGSTDBY Apply process AS04 started with server id=4 pid=43 OS id=2239
Wed May 02 00:03:13 2012
LOGMINER: End   mining logfile for session 1 thread 1 sequence 91, /home/oracle/archivelog/1_91_781653794.dbf
LOGMINER: Begin mining logfile for session 1 thread 1 sequence 92, /home/oracle/archivelog/1_92_781653794.dbf
LOGMINER: End   mining logfile for session 1 thread 1 sequence 92, /home/oracle/archivelog/1_92_781653794.dbf
LOGMINER: Begin mining logfile for session 1 thread 1 sequence 93, /home/oracle/archivelog/1_93_781653794.dbf
LOGMINER: End   mining logfile for session 1 thread 1 sequence 93, /home/oracle/archivelog/1_93_781653794.dbf
LOGMINER: Begin mining logfile for session 1 thread 1 sequence 94, /home/oracle/archivelog/1_94_781653794.dbf
LOGMINER: End   mining logfile for session 1 thread 1 sequence 94, /home/oracle/archivelog/1_94_781653794.dbf

接下来进行升级:

停止日志应用

SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;


Database altered.

将原监听,密码文件、参数文件、spfile文件拷贝到相应的目录下,修改oracle用户的bash_profile文件
SQL> startup upgrade;
ORACLE instance started.


Total System Global Area  304807936 bytes
Fixed Size                  2227864 bytes
Variable Size             134218088 bytes
Database Buffers          163577856 bytes
Redo Buffers                4784128 bytes
Database mounted.
Database opened.
@?/rdbms/admin/catupgrd

进行数据字典升级

升级完成之后脚本会自动down数据库
此时重启数据库
[oracle@oracle11g-std ~]$ sqlplus '/as sysdba'


SQL*Plus: Release 11.2.0.3.0 Production on Wed May 2 04:13:02 2012


Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to an idle instance.


SQL> startup
ORACLE instance started.


Total System Global Area  304807936 bytes
Fixed Size                  2227864 bytes
Variable Size             264241512 bytes
Database Buffers           33554432 bytes
Redo Buffers                4784128 bytes
Database mounted.
Database opened.
SQL> 

cd /home/oracle/app/product/11.2.0.3/rdbms/admin/

SQL>@utlu112s.sql

SQL>@catuppst.sql

编译各组件----耗时比较长,接近1个小时
SQL> @utlrp.sql


TIMESTAMP
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_BGN  2012-05-02 04:17:44


DOC>   The following PL/SQL block invokes UTL_RECOMP to recompile invalid
DOC>   objects in the database. Recompilation time is proportional to the
DOC>   number of invalid objects in the database, so this command may take
DOC>   a long time to execute on a database with a large number of invalid
DOC>   objects.
DOC>
DOC>   Use the following queries to track recompilation progress:
DOC>
DOC>   1. Query returning the number of invalid objects remaining. This
DOC>      number should decrease with time.
DOC>         SELECT COUNT(*) FROM obj$ WHERE status IN (4, 5, 6);
DOC>
DOC>   2. Query returning the number of objects compiled so far. This number
DOC>      should increase with time.
DOC>         SELECT COUNT(*) FROM UTL_RECOMP_COMPILED;
DOC>
DOC>   This script automatically chooses serial or parallel recompilation
DOC>   based on the number of CPUs available (parameter cpu_count) multiplied
DOC>   by the number of threads per CPU (parameter parallel_threads_per_cpu).
DOC>   On RAC, this number is added across all RAC nodes.
DOC>
DOC>   UTL_RECOMP uses DBMS_SCHEDULER to create jobs for parallel
DOC>   recompilation. Jobs are created without instance affinity so that they
DOC>   can migrate across RAC nodes. Use the following queries to verify
DOC>   whether UTL_RECOMP jobs are being created and run correctly:
DOC>
DOC>   1. Query showing jobs created by UTL_RECOMP
DOC>         SELECT job_name FROM dba_scheduler_jobs
DOC>            WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>
DOC>   2. Query showing UTL_RECOMP jobs that are running
DOC>         SELECT job_name FROM dba_scheduler_running_jobs
DOC>            WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>#


PL/SQL procedure successfully completed.




TIMESTAMP
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_END  2012-05-02 04:53:16


DOC> The following query reports the number of objects that have compiled
DOC> with errors (objects that compile with errors have status set to 3 in
DOC> obj$). If the number is higher than expected, please examine the error
DOC> messages reported with each object (using SHOW ERRORS) to see if they
DOC> point to system misconfiguration or resource constraints that must be
DOC> fixed before attempting to recompile these objects.
DOC>#


OBJECTS WITH ERRORS
-------------------
                  0


DOC> The following query reports the number of errors caught during
DOC> recompilation. If this number is non-zero, please query the error
DOC> messages in the table UTL_RECOMP_ERRORS to see if any of these errors
DOC> are due to misconfiguration or resource constraints that must be
DOC> fixed before objects can compile successfully.
DOC>#


ERRORS DURING RECOMPILATION
---------------------------
                          0




Function created.




PL/SQL procedure successfully completed.




Function dropped.




PL/SQL procedure successfully completed.

查看各组件状态
SQL> col comp_name for a30;
SQL> col namespace for a20;
SQL> col version for a15;
SQL> col status for a10; 
SQL> SELECT COMP_NAME,namespace,VERSION, STATUS FROM SYS.DBA_REGISTRY;


COMP_NAME                      NAMESPACE            VERSION         STATUS
------------------------------ -------------------- --------------- ----------
OWB                            SERVER               11.2.0.1.0      VALID
Oracle Application Express     SERVER               3.2.1.00.10     VALID
Oracle Enterprise Manager      SERVER               11.2.0.3.0      VALID
OLAP Catalog                   SERVER               11.2.0.3.0      INVALID
Spatial                        SERVER               11.2.0.3.0      VALID
Oracle Multimedia              SERVER               11.2.0.3.0      VALID
Oracle XML Database            SERVER               11.2.0.3.0      VALID
Oracle Text                    SERVER               11.2.0.3.0      VALID
Oracle Expression Filter       SERVER               11.2.0.3.0      VALID
Oracle Rules Manager           SERVER               11.2.0.3.0      VALID
Oracle Workspace Manager       SERVER               11.2.0.3.0      VALID


COMP_NAME                      NAMESPACE            VERSION         STATUS
------------------------------ -------------------- --------------- ----------
Oracle Database Catalog Views  SERVER               11.2.0.3.0      VALID
Oracle Database Packages and T SERVER               11.2.0.3.0      VALID
总计一下升级步骤:
1、安装新的db
2、将物理库切换成逻辑库
3、修改用户的环境变量
4、startup upgrade
5、运行@$ORACLE_HOME/rdbms/admin/utlu112i.sql----显示各组件状态以及升级各组件大约消耗的时间
6、运行真正的升级脚本@$ORACLE_HOME/rdbms/admin/catupgrd.sql
7、运行数据库检查脚本:@$ORACLE_HOME/rdbms/admin/utlu112i.sql:改脚本是检查没有升级之前各组件的状态
8、运行@$ORACLE_HOME/rdbms/admin/utlrp.sql---为了保证数据字典的有效性和完整性,在运行完升级脚本后,建议运行该脚本,编译剩余存储的PL/SQL和JAVA代码
9、运行@$ORACLE_HOME/rdbms/admin/catuppst.sql---定位ORACLE_HOME/rdbms/admin目录用的,不需要进入upgrade模式了。所以直接运行。
/utlu112i.sql----脚本说明:
The Post-Upgrade Status Tool, which is the utlu112s.sql script, displays the status of the database components in the upgraded database and the time required to complete each component upgrade. Any errors that occur during the upgrade are listed with each component and must be addressed. The utlu112s.sql script can be run any time after you run catupgrd.sql, but not after running utlrp.sql.
以上就是原物理备库转化为逻辑库并且升级结束
后续就是进行贮备切换,以及原主机进行升级


主库:
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO LOGICAL STANDBY;


Database altered.


SQL> 



备库:
SQL> show user;
USER is "SYS"
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;


Database altered.


SQL> 

此时的主备库之间已经不能应用日志了,因为低版本的db应用不老高版本的log

接下来就升级原主库:
关闭数据库
SQL> shut immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> 
修改环境变量,加载最新的oracle_home路径

将原主库在新的环境变量的情况下mount起来
[oracle@oracle11 admin]$ sqlplus '/as sysdba'


SQL*Plus: Release 11.2.0.3.0 Production on Wed May 2 19:55:11 2012


Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to an idle instance.


SQL> startup mount;
ORACLE instance started.


Total System Global Area  304807936 bytes
Fixed Size                  2227864 bytes
Variable Size             184549736 bytes
Database Buffers          113246208 bytes
Redo Buffers                4784128 bytes
Database mounted.
SQL> select database_role from v$database;


DATABASE_ROLE
----------------
LOGICAL STANDBY
此时是逻辑库,将逻辑库转化为物理库

SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY;


Database altered.

SQL> shut immediate
ORA-01507: database not mounted




ORACLE instance shut down.
SQL> 
SQL> Error 45 initializing SQL*Plus
Internal error
[oracle@oracle11 ~]$ 
启动redo应用
[oracle@oracle11 ~]$ sqlplus '/as sysdba'


SQL*Plus: Release 11.2.0.3.0 Production on Wed May 2 21:52:50 2012


Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to an idle instance.


SQL> startup mount;
ORACLE instance started.


Total System Global Area  304807936 bytes
Fixed Size                  2227864 bytes
Variable Size             184549736 bytes
Database Buffers          113246208 bytes
Redo Buffers                4784128 bytes
Database mounted.
SQL> alter database recover managed standby database using current logfile disconnect from session;


Database altered.


SQL> select database_role from v$database;


DATABASE_ROLE
----------------
PHYSICAL STANDBY

然后进行主备库切换,将新备库再切换成原来的主库


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值