十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
环境
成都创新互联公司长期为上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为路南企业提供专业的成都网站设计、成都网站制作,路南网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
目前环境10.2.0.4
OS版本 linux5.5
新环境数据库版本:11.2.0.4.17
OS 版本: linx6.5
一.安装
在192.0.2.12机器上安装软件
11.2.0.4 并打上11.2.0.4.170418
注意:在11.2.0.4上打上最新的PSU,
这样就不用跑两次catbundle.sql,减少停机时间。
二 检查
1. 在升级之前,确保所有的组件和对象都是valid:
select substr(comp_name,1,40) comp_name, status, substr(version,1,10) version from dba_registry order by comp_name;
COMP_NAME STATUS VERSION
-------------------------------------------------------------------------------- ---------------------- --------------------
JServer JAVA Virtual Machine VALID 10.2.0.4.0
OLAP Analytic Workspace VALID 10.2.0.4.0
OLAP Catalog VALID 10.2.0.4.0
Oracle Data Mining VALID 10.2.0.4.0
Oracle Database Catalog Views VALID 10.2.0.4.0
Oracle Database Java Packages VALID 10.2.0.4.0
Oracle Database Packages and Types VALID 10.2.0.4.0
Oracle Enterprise Manager VALID 10.2.0.4.0
Oracle Expression Filter VALID 10.2.0.4.0
Oracle interMedia VALID 10.2.0.4.0
Spatial VALID 10.2.0.4.0
SQL> select substr(object_name,1,40) object_name,substr(owner,1,15) owner,object_type
from dba_objects where status='INVALID' order by owner,object_type;
no rows selected --针对对象
如果有invalid的对象,运行utlrp.sql重新编译对象。
三、升级前工作
1.
从11gR2的Oracle Home下拷贝以下文件至一个临时文件夹:
$ORACLE_HOME/rdbms/admin/utlu112i.sql
2.
SQL> ! pwd
/home/oracle10g
SQL> spool upgrade_info.log
SQL> set time on
18:34:03 SQL> set timing on
18:34:09 SQL> @/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/admin/utlu112i.sql
**********************************************************************
Elapsed: 00:00:04.40
18:34:41 SQL> spool off ;
保存此文件upgrade_info.log
3.检查脚本
set timing on
SQL> set time on
19:35:54 SQL> @/u03/arch/dbupgdiag.sql
Enter location for Spooled output:
Enter value for 1: /u03/arch/
Upload db_upg_diag_erpdb_11_Jul_2017_0736.log from "/u03/arch/" directory
Elapsed: 00:00:00.00
编译失效对象
SQL> @utlrp.sql
四:异机恢复
1.备份数据库
脚本如下:
run{
crosscheck archivelog all;
crosscheck backup;
delete noprompt obsolete;
delete noprompt expired backup;
allocate channel d1 type disk ;
allocate channel d2 type disk;
backup format '/u03/bk/%T_%d_%s_%p.bk' tag 'full_data' database ;
backup format '/u03/bk/%T_%d_%s_%p.arc' tag 'full_arc' archivelog all delete all input ;
backup format '/u03/bk/%T_%d_%s_%p.ctl' tag 'full_ctl' current controlfile;
release channel d1;
release channel d2;
}
2. 把pfile initerpdb.ora 和密码文件orapwerpdb scp到192.0.2.12 上
3.把备份文件mount到192.0.2.12上,省去copy耗时间的麻烦。
4.修改pfile文件添加
_optim_dict_stats_at_db_cr_upg = false-此参数为了在运行catupgrd.sql慢的问题
5.在192.0.2.102
启数据库
startup nomount
rman target /
startup nomount
restore controlfile from '/u03/bk/20170712_ERPDB_12_1.ctl'
run
{
set newname for datafile 1 to '/u01/app/oracle/oradata/erpdb/sys01.bdf';--- 如果是asm可以改为磁盘组'+dgdata'
set newname for datafile 2 to '/u01/app/oracle/oradata/erpdb/syu02.bdf';
set newname for datafile 3 to '/u01/app/oracle/oradata/erpdb/sy03.bdf';
set newname for datafile 4 to '/u01/app/oracle/oradata/erpdb/sy04.bdf';
restore database;
switch datafile all;
recover database;
}
6.在生产库手动切3-4归档, (一下操作需要停生产库的业务)
如果数据库量大的话,备份归档日志
backup format '/u03/bk/%T_%d_%s_%p.arc' tag 'full_arc' archivelog all delete all input ; --
并应用日志。
7. catalog backuppiece '/u03/bk/20170712_ERPDB_17_1.arc'; --注册备份集
restore archivelog from sequence 48 until sequence 52; 还原
recover database;
8.临时表空间
Select 'alter database rename file '''||NAME||''' to'''||'/目录/tempfile/'||''';' from v$tempfile;
alter database rename file '/u03/app/oracle/oradata/erpdb/temp01.dbf' to'/u01/app/oracle/oradata/erpdb/temp01.dbf';
9.redo日志
select 'alter database rename file '''||MEMBER||''' to'''||'目录/redofile/'||''';'from v$logfile;
alter database rename file '/u03/app/oracle/oradata/erpdb/redo03.log' to'/u01/app/oracle/oradata/erpdb/redo03.log';
alter database rename file '/u03/app/oracle/oradata/erpdb/redo02.log' to'/u01/app/oracle/oradata/erpdb/redo02.log';
alter database rename file '/u03/app/oracle/oradata/erpdb/redo01.log' to'/u01/app/oracle/oradata/erpdb/redo01.log';
10. alter database open resetlogs upgrade;
spool upgrade.log
@?/rdbms/admin/catupgrd.sql --此步骤时间比较长(本测试在95分钟)
spool off ;
创建spfile文件
create spfile from pfile ;
startup
ALTER SYSTEM SET compatible='11.2.0.0.0' SCOPE=SPFILE;
exec dbms_stats.gather_dictionary_stats;
编译对象
@?/rdbms/admin/utlrp.sql
数据库层面应用PSU
SQL> @?/rdbms/admin/catbundle.sql psu apply
说明:
至此10gR2升级到11.2.0.4完成。其实在生产数据库升级时,升级性能测试比较重要也会和业务配合,需要考虑很多问题如:
1.应用中间件jdk
2.应用在10g-11R2的特性的用法。
3.压力测试
4.sql语句的性能(SPA测试)
参考文档
手动升级到 Oracle Database 11gR2 (11.2)的完整核对清单 (文档 ID 1674333.1)
数据库 升级/降级 兼容性矩阵 (文档 ID 1577660.1)
收集数据库升级/迁移诊断信息的脚本 (dbupgdiag.sql) (文档 ID 1577288.1)
如何下载并运行Oracle数据库预升级实用程序 (文档 ID 1577379.1)
Script. to Collect DB Upgrade/Migrate Diagnostic Information (dbupgdiag.sql) [ID 556610.1]
During A Manual Database Upgrade To 11.2, Gathering DictionaryStatistics Takes Too Long (catupgrd.sql, cmpupend.sql) [ID 1425763.1