OS:sunos 10
DB:11.1.0.6.0
这个库(HA的)性能较差,收集一个100M左右表的统计信息就要10分钟左右。 写的很零散
要求将11.1.0.6.0 升级到11.1.0.7.12 。对7.12的升级比较简单,主要写一些在升级到7.0时碰到的一些问题。
2014.5.21 首次对该库升级。软件升级无报错。在跑catupgrd.sql卡下面sql 有2个小时,且重跑该脚本依然卡在这里。
SQL> -- Do the object analyze here before all the data_upgrade scripts
SQL> DECLARE
2 BEGIN
3 EMD_MAINTENANCE.analyze_objects_without_stats('&&EM_REPOS_USER');
4 END;
5 /
old 3: EMD_MAINTENANCE.analyze_objects_without_stats('&&EM_REPOS_USER');
new 3: EMD_MAINTENANCE.analyze_objects_without_stats('SYSMAN');
同时,数据库组件的状态:
COMP_NAME VERSION STATUS MODIFIED SCHEMA
------------------------------ --------------- ---------- ------------------------- ----------
JServer JAVA Virtual Machine 11.1.0.7.0 VALID 21-5?? -2014 19:07:02 SYS
Oracle XDK 11.1.0.7.0 VALID 21-5?? -2014 19:10:27 SYS
Oracle Workspace Manager 11.1.0.7.0 VALID 21-5?? -2014 19:14:42 WMSYS
Oracle Database Packages and Types 11.1.0.7.0 VALID 21-5?? -2014 22:59:37 SYS
Oracle Database Catalog Views 11.1.0.7.0 VALID 21-5?? -2014 22:59:37 SYS
Oracle Enterprise Manager 11.1.0.6.0 UPGRADING 21-5?? -2014 22:59:43 SYSMAN
Oracle Database Java Packages 11.1.0.6.0 VALID 27-10??-2008 14:38:28 SYS
Oracle Expression Filter 11.1.0.6.0 VALID 27-10??-2008 14:40:42 EXFSYS
Oracle Text 11.1.0.6.0 VALID 27-10??-2008 14:44:50 CTXSYS
Oracle XML Database 11.1.0.6.0 VALID 27-10??-2008 14:56:32 XDB
Oracle Rules Manager 11.1.0.6.0 VALID 27-10??-2008 14:59:35 EXFSYS
Oracle Multimedia 11.1.0.6.0 VALID 27-10??-2008 15:16:00 ORDSYS
Oracle Ultra Search 11.1.0.6.0 VALID 27-10??-2008 15:30:46 WKSYS
Oracle Application Express 3.0.1.00.08
可以看到这个sql在对em进行操作。 然后局方要求暂时回退到11.1.0.6。
了解到用户对em没有需求,遂将em删除,并对全库所有表,包括系统表,收集统计信息。收集统计信息时
使用exec dbms_stats.gather_table_stats(ownname=>'SYS',tabname=>'ACCESS\$', estimate_percent=>10, Degree=>2,Cascade=>TRUE, Granularity=>'ALL');
没有加method_opt=>'for all columns size 1' 导致收集了直方图信息,并最终导致 C_OBJ#_INTCOL#过大,造成system表空间使用率99%。 可以通过设置method_opt=>'for all columns size 1' 来避免收集直方图信息。
DBMS_STATS.GATHER_TABLE_STATS(ownname=>'XXX',tabname=>'CHANNEL',ESTIMATE_PERCENT=>5,method_opt=>'for all columns size 1',cascade=>true,force=>true,degree=>8);
为了不影响这几天收集的统计信息,加了2G的数据文件到system表空间中。
2014.7.3再次升级
由于删除了em这次升级还算比较顺利,最耗时的是:
execute dbms_registry_sys.gather_stats(null);
从12点开始,到13:30结束。 这个过程是在收集统计信息,升级后查了下在7月3号被收集统计信息的用户都是系统用户的。
sr对该步骤执行慢给出了处理方法:
dbms_registry_sys.gather_stats确实是在收集统计信息,您可以参考文档 1588552.1和 文档 1425763.1
此时的组件状态:
COMP_NAME VERSION STATUS MODIFIED SCHEMA
----------------------------------- --------------- ---------- ------------------------- ---------------
Oracle Database Catalog Views 11.1.0.7.0 VALID 03-7月 -2014 10:50:37 SYS
Oracle Database Packages and Types 11.1.0.7.0 VALID 03-7月 -2014 10:50:37 SYS
JServer JAVA Virtual Machine 11.1.0.7.0 VALID 03-7月 -2014 11:01:27 SYS
Oracle XDK 11.1.0.7.0 VALID 03-7月 -2014 11:04:52 SYS
Oracle Workspace Manager 11.1.0.7.0 VALID 03-7月 -2014 11:10:35 WMSYS
Oracle Text 11.1.0.7.0 VALID 03-7月 -2014 11:12:43 CTXSYS
Oracle XML Database 11.1.0.7.0 VALID 03-7月 -2014 11:31:26 XDB
Oracle Database Java Packages 11.1.0.7.0 VALID 03-7月 -2014 11:32:46 SYS
Oracle Multimedia 11.1.0.7.0 INVALID 03-7月 -2014 11:46:08 ORDSYS
Oracle Ultra Search 11.1.0.7.0 VALID 03-7月 -2014 11:48:14 WKSYS
Oracle Expression Filter 11.1.0.7.0 VALID 03-7月 -2014 11:48:59 EXFSYS
Oracle Rules Manager 11.1.0.7.0 VALID 03-7月 -2014 11:49:43 EXFSYS
Oracle Application Express 3.0.1.00.12 VALID 03-7月 -2014 11:56:20 FLOWS_030000
oracle multimedia这个组件在执行完utlrpt.sql 对失效对象重编译后,状态正常了。
到这里就完成了7.0的升级了。
由于是HA的 需要做主备库切换。在备库open的时候报错:
ORA-38760: This database instance failed to turn on flashback database
这是由于主库升级前我建了个还原点,在确定主库升级到7.12后,将还原点在主库上删除,再次尝试在备库上起数据库。有新的报错:
Errors in file /export/home/oracle/diag/rdbms/orasmc/orasmc/trace/orasmc_dbw0_8528.trc:
ORA-01157: cannot identify/lock data file 90 - see DBWR trace file
ORA-01110: data file 90: '/dev/md/rptdg/rdsk/d130'
ORA-27041: unable to open file
SVR4 Error: 13: Permission denied
Additional information: 2
很明显是没有权限,而这个文件刚好是上次到system的数据文件。局方在加这个文件时只在主库上做过chown和chmod,没有在备库上做。 但是在备库上chown和chmod后还是一样的报错。原因还在查。