Oracle Database 升级(10.2.0.1 -- 10.2.0.4)
1、检查当前版本
05:39:08 SQL> select * from v$VERSION;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
2、检查磁盘空间(system 必须要最少10m)
05:46:49 SQL>
select a.tablespace_name, round(a.total_size) "total_size(mb)",
round(a.total_size) - round(b.free_size,3) "unsed_size(mb)",
round(b.free_size,3) "free_size(mb)",
round(b.free_size/total_size *100,2) ||'%' free_rate
from
(select tablespace_name,sum(bytes) /1024/1024 total_size
from dba_data_files
group by tablespace_name) a,
(select tablespace_name,sum(bytes)/1024/1024 free_size
from dba_free_space
05:51:11 11 group by tablespace_name) b
05:51:11 12 where a.tablespace_name=b.tablespace_name(+);
TABLESPACE_NAME total_size(mb) unsed_size(mb) free_size(mb) FREE_RATE
-------------------- -------------- -------------- ------------- -----------------------------------------
UNDOTBS1 85 14.437 70.563 83.01%
SYSAUX 260 248.312 11.688 4.5%
LXTBS1 50 .125 49.875 99.75%
USERS 10 5.75 4.25 42.5%
SYSTEM 490 482.062 7.938 1.62%
EXAMPLE 100 68.25 31.75 31.75%
6 rows selected.
-------添加磁盘空间
05:51:23 SQL> alter database datafile 1 resize 800m;
Database altered.
05:52:27 SQL> alter database datafile 4 resize 100m;
Database altered.
05:52:49 SQL> alter database datafile 2 resize 400m;
Database altered.
select a.tablespace_name, round(a.total_size) "total_size(mb)",
round(a.total_size) - round(b.free_size,3) "unsed_size(mb)",
round(b.free_size,3) "free_size(mb)",
round(b.free_size/total_size *100,2) ||'%' free_rate
from
(select tablespace_name,sum(bytes) /1024/1024 total_size
from dba_data_files
group by tablespace_name) a,
(select tablespace_name,sum(bytes)/1024/1024 free_size
05:53:49 10 from dba_free_space
05:53:51 11 group by tablespace_name) b
05:53:58 12 where a.tablespace_name=b.tablespace_name(+);
TABLESPACE_NAME total_size(mb) unsed_size(mb) free_size(mb) FREE_RATE
-------------------- -------------- -------------- ------------- -----------------------------------------
UNDOTBS1 400 14.437 385.563 96.39%
SYSAUX 260 248.312 11.688 4.5%
LXTBS1 50 .125 49.875 99.75%
USERS 100 5.75 94.25 94.25%
SYSTEM 800 482.062 317.938 39.74%
EXAMPLE 100 68.25 31.75 31.75%
6 rows selected.
05:54:04 SQL> col name for a50
05:54:35 SQL> select file#,name from v$datafile;
FILE# NAME
---------- --------------------------------------------------
1 /u01/app/oracle/oradata/prod/system01.dbf
2 /u01/app/oracle/oradata/prod/undotbs01.dbf
3 /u01/app/oracle/oradata/prod/sysaux01.dbf
4 /u01/app/oracle/oradata/prod/users01.dbf
5 /u01/app/oracle/oradata/prod/example01.dbf
6 /u01/app/oracle/oradata/prod/lxtbs1.dbf
6 rows selected.
05:54:50 SQL> alter database datafile 3 resize 400m;
Database altered.
select a.tablespace_name, round(a.total_size) "total_size(mb)",
round(a.total_size) - round(b.free_size,3) "unsed_size(mb)",
round(b.free_size,3) "free_size(mb)",
round(b.free_size/total_size *100,2) ||'%' free_rate
from
(select tablespace_name,sum(bytes) /1024/1024 total_size
from dba_data_files
group by tablespace_name) a,
05:55:58 9 (select tablespace_name,sum(bytes)/1024/1024 free_size
05:55:59 10 from dba_free_space
05:56:05 11 group by tablespace_name) b
05:56:11 12 where a.tablespace_name=b.tablespace_name(+);
TABLESPACE_NAME total_size(mb) unsed_size(mb) free_size(mb) FREE_RATE
-------------------- -------------- -------------- ------------- -----------------------------------------
UNDOTBS1 400 14.437 385.563 96.39%
SYSAUX 400 248.312 151.688 37.92%
LXTBS1 50 .125 49.875 99.75%
USERS 100 5.75 94.25 94.25%
SYSTEM 800 482.062 317.938 39.74%
EXAMPLE 100 68.25 31.75 31.75%
6 rows selected.
05:56:18 SQL>
3、调整内存参数(share pool和java pool 加快升级速度)
05:44:55 SQL> show parameter sga;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 492M
sga_target big integer 492M
05:45:00 SQL> select name,bytes/1024/1024 from v$sgainfo;
NAME BYTES/1024/1024
-------------------------------- ---------------
Fixed SGA Size 1.1638031
Redo Buffers 2.8359375
Buffer Cache Size 328
Shared Pool Size 124
Large Pool Size 12
Java Pool Size 24
Streams Pool Size 0
Granule Size 4
Maximum SGA Size 492
Startup overhead in Shared Pool 36
Free SGA Memory Available 0
11 rows selected.
05:45:24 SQL> alter system set java_pool_size =100m;
System altered.
05:45:53 SQL> select name,bytes/1024/1024 from v$sgainfo;
NAME BYTES/1024/1024
-------------------------------- ---------------
Fixed SGA Size 1.1638031
Redo Buffers 2.8359375
Buffer Cache Size 252
Shared Pool Size 124
Large Pool Size 12
Java Pool Size 100
Streams Pool Size 0
Granule Size 4
Maximum SGA Size 492
Startup overhead in Shared Pool 36
Free SGA Memory Available 0
11 rows selected.
05:45:55 SQL>
4、为数据库做冷备份
RMAN> run {
2> shutdown immediate;
3> startup mount;
4> allocate channel c1 type disk;
5> allocate channel c2 type disk;
6> backup full tag='db_full_bak' database format '/disk1/rman/prod/cold_bak/%d_%s.bak';
7> alter database open;
8> }
RMAN> list backup;
5、关闭数据库实例及相关进程
RMAN> shutdown immediate
database closed
database dismounted
Oracle instance shut down
RMAN>
[oracle@RH4 ~]$ ps -ef |grep ora_|grep -v grep
[oracle@RH4 ~]$ netstat -an |grep 1521
[oracle@RH4 ~]$ netstat -an |grep 55
[oracle@RH4 ~]$ netstat -an |grep 1158
[oracle@RH4 ~]$
6、讲补丁包上传到oracle server ,解压、安装
[oracle@RH4 ~]$ unzip p6810189_10204_Linux-x86.zip //解压后生成Disk1 目录
7、 以图形界面进入Oracle server
[oracle@RH4 ~]$cd Disk1
[oracle@RH4 Disk1]$ ./runInstaller
---按照提示升级
[oracle@RH4 ~]$ su -
Password:
[root@RH4 ~]# /u01/app/oracle/product/10.2.0/db_1/root.sh
Running Oracle10 root.sh script...
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/10.2.0/db_1
Enter the full pathname of the local bin directory: [/usr/local/bin]:
The file "dbhome" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]: y
Copying dbhome to /usr/local/bin ...
The file "oraenv" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]: y
Copying oraenv to /usr/local/bin ...
The file "coraenv" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]: y
Copying coraenv to /usr/local/bin ...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
[root@RH4 ~]#
8、升级完成后以startup upgrade 方式打开库
[oracle@RH4 ~]$ !sql
sqlplus '/as sysdba'
SQL*Plus: Release 10.2.0.4.0 - Production on Fri Apr 27 06:19:46 2012
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 515899392 bytes
Fixed Size 1268412 bytes
Variable Size 247465284 bytes
Database Buffers 264241152 bytes
Redo Buffers 2924544 bytes
Database mounted.
ORA-01092: ORACLE instance terminated. Disconnection forced
[oracle@RH4 ~]$ tail -f /u01/app/oracle/admin/prod/bdump/alert_prod.log
SMON: enabling cache recovery
Fri Apr 27 06:19:58 2012
Errors in file /u01/app/oracle/admin/prod/udump/prod_ora_10440.trc:
ORA-00704: bootstrap process failure
ORA-39700: database must be opened with UPGRADE option
Fri Apr 27 06:19:58 2012
Error 704 happened during db open, shutting down database
USER: terminating instance due to error 704
Instance terminated by USER, pid = 10440
ORA-1092 signalled during: ALTER DATABASE OPEN...
SQL> startup upgrade;
ORACLE instance started.
Total System Global Area 515899392 bytes
Fixed Size 1268412 bytes
Variable Size 247465284 bytes
Database Buffers 264241152 bytes
Redo Buffers 2924544 bytes
Database mounted.
Database opened.
9、升级数据字典
SQL>spool /home/oracle/patch.log
SQL>@?/rdbms/admin/catupgrd.sql
SQL>spool off;
10、 重编译失效对象:
sql>shutdown immediate
sql>startup
SQL>@?/rdbms/admin/utlrp.sql
11、升级后的检测
SQL>select comp_name,version,status from sys.dba_registry;
12、 检查组件的升级情况
SQL>select * from utl_recomp_errors;
13、修改兼容性参数
SQL> alter system set compatible='10.2.0.4.0' scope=spfile;
14、重新启动数据库:
SQL> SHUTDOWN
SQL> STARTUP
15、如果使用了恢复目录,则执行下面的命令
$ rman catalog username/password@alias
RMAN> UPGRADE CATALOG;
16、升级回退:
SQL> STARTUP DOWNGRADE
SQL> SPOOL downgrade.log
SQL> @catdwgrd.sql(10.2.10运行的是这个,而10.1降级用的是d92000.sql,即dold_release.sql)
Sql>spool off
Sql>shutdown immediate
17、检查升级后的情况
SQL> select comp_name,version,status from sys.dba_registry;
COMP_NAME VERSION STATUS
---------------------------------------- ------------------------------ -----------
Oracle Database Catalog Views 10.2.0.4.0 VALID
Oracle Database Packages and Types 10.2.0.4.0 VALID
Oracle Workspace Manager 10.2.0.4.3 VALID
JServer JAVA Virtual Machine 10.2.0.4.0 VALID
Oracle XDK 10.2.0.4.0 VALID
Oracle Database Java Packages 10.2.0.4.0 VALID
Oracle Expression Filter 10.2.0.4.0 VALID
Oracle Data Mining 10.2.0.4.0 VALID
Oracle Text 10.2.0.4.0 VALID
Oracle XML Database 10.2.0.4.0 VALID
Oracle Rule Manager 10.2.0.4.0 VALID
COMP_NAME VERSION STATUS
---------------------------------------- ------------------------------ -----------
Oracle interMedia 10.2.0.4.0 VALID
OLAP Analytic Workspace 10.2.0.4.0 VALID
Oracle OLAP API 10.2.0.4.0 VALID
OLAP Catalog 10.2.0.4.0 VALID
Spatial 10.2.0.4.0 VALID
Oracle Enterprise Manager 10.2.0.4.0 VALID
17 rows selected.
SQL> select * from utl_recomp_errors;
no rows selected