停机升级的步骤和注意事项(从11.2.0.1升级到11.2.0.3)
Oracle 升级的步骤都差不多。 先升级Oracle software,然后升级Oracle instance
1.安装11.2.0.3的软件,放在不同的目录下 (主从都需要)
原$ORACLE_HOME:/home/oracle/app/oracle/product/11.2.0/dbhome_1
新$ORACLE_HOME:/home/oracle/app/oracle/product/11.2.0/dbhome_2
(1)将pfile文件,orapw文件复制到/home/oracle/app/oracle/product/11.2.0/dbhome_2/dbs (检查相关参数是否合理)
(2)将SystemInfo64.3.0.so 复制到/home/oracle/app/oracle/product/11.2.0/dbhome_2/lib
(3)修改listener.ora 连同tnsnames.ora sqlnet.ora ,复制到/home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin
检查数据库是否有patch需要更新,若有则打上最新的patch
unzip p14275605_11203_<platform>.zip
cd 14275605
opatch prereq CheckConflictAgainstOHWithDetail -ph ./
opatch apply
2.过多的审计信息可能会导致升级速度下降,可以在升级前将审计数据导出,并清理审计字典基表:
截断SYS.AUD$基表:
SQL>TRUNCATE TABLE SYS.AUD$;
3.同样的有必要清理10g后出现的回收站:
清理DBA回收站:
SQL>purge DBA_RECYCLEBIN;
SQL>purge user_RECYCLEBIN;
4.升级数据库有两种方法,一种是将服务切换到只读从库上,然后主库停机升级,将服务切换到主库,然后升级从库。
另一种方案是将主库的表空间置为只读,激活从库,升级从库,将服务切换到从库,然后升级主库。后面一种方案的好处
是万一升级过程遇到问题,可以直接将主库置为可读写,避免从库激活为主库可能出现的问题。
主库
alter system switch logfile;
alter tablespace USERS read only;
alter tablespace TESTINDEX read only;
alter tablespace TESTDATA read only;
alter system switch logfile;
alter system set log_archive_dest_state_2='defer' scope=both;
5.暂时关闭报警服务,从库激活为主库(激活过程正常,下面的描述是为了更完整些)
检查Gap:
sql> select thread#, low_sequence#, high_sequence# from v$archive_gap;
如果有,将对应的归档文件copy到备库,在注册它
sql>alter database register physical logfile 'filespec1';
激活:
SQL> alter database commit to switchover to primary;
SQL> shutdown immediate;
SQL> startup
当我们正常切换的时候,提示我们需要介质恢复的时候,就需要使用强行激活standby 库。 如:
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY
*
ERROR at line 1:
ORA-16139: media recovery required
强制激活备库:
sql> alter database recover managed standby database cancel;
sql> recover standby database until cancel;
------------------------------------------------
sql>alter database activate standby database;
sql>shutdown immediate;
sql>startup
6.添加两组大的归档文件
alter database add logfile group 7 size 1G;
alter database add logfile group 8 size 1G;
7.在升级前运行参数检查工具(注意:此步骤一定要在升级前的低版本中运行,执行的脚本必须在新软件的目录下)
sqlplus / as sysdba
SQL> SPOOL upgrade_info.log
SQL> @/home/oracle/app/oracle/product/11.2.0/dbhome_2/rdbms/admin/utlu112i.sql
SQL> SPOOL OFF
检查upgrade_info.log中的warning和error。
8.关闭数据库,关闭监听
shutdown immediate
lsnrctl stop
9.启动数据库
修改 ~/.bash_profile $ORACLE_HOME
create spfile from pfile;
STARTUP UPGRADE
10。开始数据库升级(耗时25分钟)
SPOOL upgrade.log
@?/rdbms/admin/catupgrd.sql
SPOOL off
11.重起数据库,检查数据库日志是否正确(2分钟)
shutdown immediate
startup
12、运行升级后工具(不用在upgrade模式下运行,1分钟)
@?/rdbms/admin/utlu112s.sql
@?/rdbms/admin/catuppst.sql
13、重编译:(2分钟 )
@?/rdbms/admin/utlrp.sql
14、检查数据库元件的状态(1分钟)
SELECT COMP_NAME, VERSION, STATUS FROM SYS.DBA_REGISTRY;
col namespace for a20;
col version for a15;
col comments for a40;
select namespace,version,comments from registry$history;
NAMESPACE VERSION COMMENTS
------------------------------ ------------------------------ --------------------------------------------------------------------------------
SERVER 11.2.0.1 BP10
view invalidation
SERVER 11.2.0.3.0 Upgraded from 11.2.0.1.0
SERVER 11.2.0.3 PSU 11.2.0.3.4
SERVER 11.2.0.3 PSU 11.2.0.3.4
15、重起数据库,检查数据库日志是否正确
shutdown immediate;
startup;
16、启动监听(1分钟)
lsnrctl start
17、检查关键sql的执行计划是否正确
18、通知应用开启服务
19、开启数据库报警
20. 修改/etc/oratab
21.删除两组大的redo log
alter database drop logfile group 7;
alter database drop logfile group 8;
22.重新搭建从库
23. 查看flashback_on
主库关闭闪回,从库开启闪回。
24. 修改备份
备份在从库上进行,主库定期删除归档文件。