ORACLE12.2 升級之路 之 05(10.2.0.5本機升级到11.2.0.4)

  1. 版本查詢
SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE    10.2.0.3.0  Production
TNS for Linux: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production

  1. 执行utlu112i.sql进行升级前检查(老版本環境下)
建議先停 正在運行的導數據的JOB
show parameters job_queue_processes;
alter system set job_queue_processes=0 scope=both;
show parameters job_queue_processes;

SQL> spool check_utlu112i.info
SQL>  @/u01/app/oracle/product/11.2.0.4/dbhome_1/rdbms/admin/utlu112i.sql
SQL> spool off

3.运行utlrp.sql 脚本,重新编译无效对象(老版本環境下)

SQL> @/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/utlrp.sql

查看失效对象
SQL> select count(*) from dba_invalid_objects;
  1. 执行PURGE DBA_RECYCLEBIN 清空回收站 (老版本環境下)
SQL> PURGE DBA_RECYCLEBIN;

5.在升级前收集字典统计信息,否则预升级工具( utlu102i.sql)会花费更长时间
(老版本環境下)

SQL> EXECUTE dbms_stats.gather_dictionary_stats;
  1. DB備份 (老版本環境下)

7.檢查media recovery (老版本環境下)

--確保沒有數據文件需要介質恢復(media recovery)或處於備份的狀態。
SQL> SELECT * FROM v$recover_file;
SQL> SELECT * FROM v$backup WHERE status != 'NOT ACTIVE';
--以上語句不應該有任何返回行
  1. 臨時修改DB为非归档模式及停JOB (老版本環境下)
SQL>
shutdown immediate;
startup mount;
select status from v$instance;
alter database noarchivelog;
alter database open;
  1. 創建11G的參數文件 (老版本環境下)
SQL> show parameters db_recovery_file_dest;
db_recovery_file_dest            string        /u041/flash_recovery_area
db_recovery_file_dest_size       big integer   400G

SQL> Create pfile from spfile;

cp initMPACC.ora /u01/app/oracle/product/11.2.0.4/dbhome_1/dbs/initMPACC.ora

mkdir /u041/fast_recovery_area

mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adump 
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/dpdump 
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/cdump 
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/pfile

注意下sga(60%)和pga(20%)的设定是否符合目的机器的配置
*.sga_target=629145600
*.pga_aggregate_target=25165824

删除*.background_dump_dest和*.user_dump_dest

加上
*.diagnostic_dest='/u01/app/oracle'

修改
*.db_recovery_file_dest='/u041/fast_recovery_area'
*.compatible='11.2.0.4.0'

10.開始升級

[oracle@ACC_EMC_16 ~]$ echo $ORACLE_SID
MPACC
[oracle@ACC_EMC_16 ~]$ echo $ORACLE_HOME
/u01/app/oracle/product/10.2.0/db_1
#關閉DB
SQL>
shutdown immediate;

export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_1/
export PATH=$ORACLE_HOME/bin:$PATH

[oracle@ACC_EMC_16 ~]$ echo $ORACLE_HOME
/u01/app/oracle/product/11.2.0.4/dbhome_1/

[oracle@ACC_EMC_16 ~]$ sqlplus / as sysdba
SQL> startup upgrade;

11.upgrade模式下运行脚本:catupgrd.sql(約半小時)

SQL> SPOOL /home/oracle/upgrade_112.log
#重建数据字典
SQL> @/u01/app/oracle/product/11.2.0.4/dbhome_1/rdbms/admin/catupgrd.sql

  1. 執行utlu112s.sql腳本(这个脚本显示升级过程的一个摘要。不需要在upgrade 模式下。)
sqlplus / as sysdba;

SQL> startup;
SQL> exec dbms_stats.gather_dictionary_stats;

#编译无效对象
SQL> select count(*) from dba_invalid_objects;
SQL> @/u01/app/oracle/product/11.2.0.4/dbhome_1/rdbms/admin/utlrp.sql

查看失效对象
SQL> select count(*) from dba_invalid_objects;

#检查升级后状态
#查看版本
SQL>select * from v$version;

运行升级后检查脚本
SQL> @/u01/app/oracle/product/11.2.0.4/dbhome_1/rdbms/admin/utlu112s.sql

13.检查数据库状态

col comp_name for a30
col version for a20
col status for a10
set linesize 200
select comp_name,version, status from dba_registry;

set line 150
col ACTION_TIME for a30
col ACTION for a15
col NAMESPACE for a9
col VERSION for a10
col BUNDLE_SERIES for a5
col COMMENTS for a30
select * from dba_registry_history;

  1. 生成參數文件
SQL> startup mount pfile='/u01/app/oracle/product/11.2.0.4/dbhome_1/dbs/initMPACC.ora';

SQL> create spfile from pfile;
SQL> shutdown immediate;
SQL>  startup;

如遇以下錯誤則如下解決 然再次生成參數
ORA-00214: control file '/u01/app/oracle/oradata/MPACC/control01.ctl' 
version 2126 inconsistent with file
'/u01/app/oracle/oradata/MPACC/control03.ctl' version 2046

SQL> shutdown immediate;
rm /u01/app/oracle/oradata/MPACC/control03.ctl

cp /u01/app/oracle/oradata/MPACC/control01.ctl /u01/app/oracle/oradata/MPACC/control03.ctl
  1. 生成密码文件
$ orapwd file='/u01/app/oracle/product/11.2.0.4/dbhome_1/dbs/orapwMPACC' password=123456 entries=10 force=y

#设置用户密码无限次尝试登录
alter profile default limit failed_login_attempts unlimited;
#设置用户密码不过期:
alter profile default limit password_life_time unlimited;
#查看配置的参数
select profile,RESOURCE_NAME,resource_type,limit from dba_profiles where 
RESOURCE_NAME in('FAILED_LOGIN_ATTEMPTS','PASSWORD_LIFE_TIME') and profile='DEFAULT';

16.修改compatible参数

SQL> ALTER SYSTEM SET COMPATIBLE = '11.2.0.4' SCOPE=SPFILE;
SQL> shutdown immediate
SQL> startup

SQL> show parameter comp
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cell_offload_compaction              string      ADAPTIVE
compatible                           string      11.2.0.4
nls_comp                             string      BINARY
plsql_v2_compatibility               boolean     FALSE

#檢查相關業務處理正常後(MAC校驗)
show parameters job_queue_processes;
alter system set job_queue_processes=50 scope=both;
show parameters job_queue_processes;
  1. 升級TIMEZONE時區
SQL> SELECT version FROM v$timezone_file; 
VERSION
----------
4

SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME LIKE 'DST_%' ORDER BY PROPERTY_NAME;

10.2.0.4、5 timezone是4 一个典型的输出是:
PROPERTY_NAME                  VALUE
------------------------------ ------------------------------
DST_PRIMARY_TT_VERSION        4
DST_SECONDARY_TT_VERSION      0
DST_UPGRADE_STATE              NONE

然后开始准备工作:
exec DBMS_DST.BEGIN_PREPARE(14);

接着检查准备状态:
SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME LIKE 'DST_%'
ORDER BY PROPERTY_NAME;

一个典型的输出是:

PROPERTY_NAME                  VALUE
------------------------------ ------------------------------------------------------------
DST_PRIMARY_TT_VERSION        4
DST_SECONDARY_TT_VERSION      14
DST_UPGRADE_STATE              PREPARE

准备升级工作:
执行脚本:
SQL>
TRUNCATE TABLE SYS.DST$TRIGGER_TABLE;
TRUNCATE TABLE sys.dst$affected_tables;
TRUNCATE TABLE sys.dst$error_table;

SQL> 
BEGIN
    DBMS_DST.FIND_AFFECTED_TABLES
    (affected_tables => 'sys.dst$affected_tables',
    log_errors => TRUE,
    log_errors_table => 'sys.dst$error_table');
    END; 
/

SQL> SELECT * FROM sys.dst$affected_tables;
no rows selected

SQL>SELECT * FROM sys.dst$error_table;
no rows selected

SQL> SELECT * FROM sys.dst$error_table where ERROR_NUMBER= '1883';
no rows selected

SQL> SELECT * FROM sys.dst$error_table where ERROR_NUMBER= '1878';
no rows selected

SQL> SELECT * FROM sys.dst$error_table where ERROR_NUMBER not in ('1878','1883');
no rows selected

执行脚本:

-- end prepare window, the rows above will stay in those tables.

EXEC DBMS_DST.END_PREPARE;

-- check if this is ended

SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME LIKE 'DST_%'
ORDER BY PROPERTY_NAME;

一个典型的输出是:
PROPERTY_NAME                  VALUE
------------------------------ ------------------------------
DST_PRIMARY_TT_VERSION        4
DST_SECONDARY_TT_VERSION      0
DST_UPGRADE_STATE              NONE

2)真正开始升级Timezone  =================================================================================

conn / as sysdba

shutdown immediate;
startup upgrade;

set serveroutput on
purge dba_recyclebin;

TRUNCATE TABLE SYS.DST$TRIGGER_TABLE;
TRUNCATE TABLE sys.dst$affected_tables;
TRUNCATE TABLE sys.dst$error_table;

alter session set "_with_subquery"=materialize;
EXEC DBMS_DST.BEGIN_UPGRADE(14);

SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME LIKE 'DST_%'
ORDER BY PROPERTY_NAME;

一个典型的输出是:

PROPERTY_NAME                  VALUE
------------------------------ ------------------------------
DST_PRIMARY_TT_VERSION        14
DST_SECONDARY_TT_VERSION      4
DST_UPGRADE_STATE              UPGRADE

下面这条语句应该没有返回结果:

SELECT OWNER, TABLE_NAME, UPGRADE_IN_PROGRESS FROM ALL_TSTZ_TABLES where UPGRADE_IN_PROGRESS='YES';

no rows selected

重启数据库:

shutdown immediate
startup

升级相关的table:执行脚本:

alter session set "_with_subquery"=materialize;

set serveroutput on
VAR numfail number
BEGIN
DBMS_DST.UPGRADE_DATABASE(:numfail,
parallel => TRUE,
log_errors => TRUE,
log_errors_table => 'SYS.DST$ERROR_TABLE',
log_triggers_table => 'SYS.DST$TRIGGER_TABLE',
error_on_overlap_time => FALSE,
error_on_nonexisting_time => FALSE);
DBMS_OUTPUT.PUT_LINE('Failures:'|| :numfail);
END;
/


如果没有错误,则结束升级:

VAR fail number
BEGIN
DBMS_DST.END_UPGRADE(:fail);
DBMS_OUTPUT.PUT_LINE('Failures:'|| :fail);
END;
/

最后一次检查:
SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME LIKE 'DST_%'
ORDER BY PROPERTY_NAME;

典型输出是:

PROPERTY_NAME                  VALUE
------------------------------ ------------------------------
DST_PRIMARY_TT_VERSION        14
DST_SECONDARY_TT_VERSION      0
DST_UPGRADE_STATE              NONE

SELECT * FROM v$timezone_file;
FILENAME                VERSION
-------------------- ----------
timezlrg_14.dat              14
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容