Oracle 10.2.0.5升級至11.2.0.4

參照MOS 官方文檔
Complete Checklist for Manual Upgrade to Oracle Database 11gR2 (11.2) (Doc ID 837570.1)
一、升級前的準備
1、復制utlu112i.sql腳本
從11G數據庫復制$ORACLE_HOME/rdbms/admin/utlu112i.sql 腳本至10g 數據庫臨時目錄,準備執行
如果不在10g數據庫運行utlu112i.sql腳本,則執行升級腳本catupgrd.sql 時會報以下錯誤:
SQL> SELECT TO_NUMBER('MUST_BE_SAME_TIMEZONE_FILE_VERSION')
2 FROM registry$database
3 WHERE tz_version != (SELECT version from v$timezone_file);
SELECT TO_NUMBER('MUST_BE_SAME_TIMEZONE_FILE_VERSION')
*
ERROR at line 1:
ORA-01722: invalid number


2、在10g數據庫執行utlu112i.sql腳本
使用 SYSDBA權限執行utlu112i.sql腳本
$ sqlplus '/ as sysdba'
SQL> spool upgrade_info.log
SQL> @utlu112i.sql
SQL> spool off
SQL>
輸出樣例見附件《utlu112i.log》

3、檢查10g數據庫完整性

執行檢查腳本dbupgdiag.sql <===== 腳本在本文件夾
$ sqlplus / as sysdba
sql> alter session set nls_language='American';
sql> @dbupgdiag.sql
sql> exit
輸出樣例見附件《db_upg_diag_orcl_07_Dec_2018_0954.log》

執行編譯失效包腳本utlrp.sql <--腳本在10g數據庫$ORACLE_HOME/rdbms/admin目錄
$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus "/ as sysdba"
SQL> @utlrp.sql

執行健康檢查腳本hcheck.sql <===== 腳本在本文件夾
SQL> spool hcheck.log
SQL> @hcheck.sql
SQL> spool off
輸出樣例見附件《hcheck.log》

4、檢查CONNECT 角色權限 <===== xx銀行為10.2.x數據庫,此步驟可以略過
數據庫9i和10.1.x以下的版本 connect角色權限較多有如下權限
SELECT GRANTEE,PRIVILEGE
FROM DBA_SYS_PRIVS
WHERE GRANTEE ='CONNECT'

GRANTEE PRIVILEGE
------- ----------------------
CONNECT CREATE VIEW
CONNECT CREATE TABLE
CONNECT ALTER SESSION
CONNECT CREATE CLUSTER
CONNECT CREATE SESSION
CONNECT CREATE SYNONYM
CONNECT CREATE SEQUENCE
CONNECT CREATE DATABASE LINK

數據庫11g和10.2以上版本 connect角色權限較少有如下權限
SQL> SELECT GRANTEE,PRIVILEGE
2 FROM DBA_SYS_PRIVS
3 WHERE GRANTEE ='CONNECT';

GRANTEE PRIVILEGE
------------------------------ ----------------------------------------
CONNECT CREATE SESSION

5、重建DBLINK <-- XX銀行為10.2.x數據庫,此步驟可以略過

數據庫9i和10.1.x以下的版本,dblink需要刪除重建,在更新后
SELECT 'CREATE '||DECODE(U.NAME,'PUBLIC','public ')||'DATABASE LINK '||CHR(10)
||DECODE(U.NAME,'PUBLIC',Null, 'SYS','',U.NAME||'.')|| L.NAME||chr(10)
||'CONNECT TO ' || L.USERID || ' IDENTIFIED BY "'||L.PASSWORD||'" USING
'''||L.HOST||''''
||chr(10)||';' TEXT
FROM SYS.LINK$ L, SYS.USER$ U
WHERE L.OWNER# = U.USER#;

6、更新 TIMESTAMP WITH TIMEZONE <===== XX銀行為10.2.x數據庫,此步驟可以略過
更新 11.2.0.4. 不需要應用任何 DST 補丁包在 10.2.0.2 , 10.2.0.3 , 10.2.0.4 or 10.2.0.5 . 可以跳過DST相互更新說明.
The 11.2.0.4 RDBMS DST version after the upgrade to 11.2.0.4 will be the same DST version as used in 10.2.0.2 , 10.2.0.3 , 10.2.0.4 or 10.2.0.5.
SQL>SELECT version FROM v$timezone_file;

VERSION
----------
4


7、檢查NLS_NCHAR_CHARACTERSET 為UTF8 or AL16UTF16.
SQL> select value from NLS_DATABASE_PARAMETERS where parameter = 'NLS_NCHAR_CHARACTERSET';
VALUE
----------------------------------------------------------------------------------------------------------------------------------------------------------------
AL16UTF16
如果是UTF8 or AL16UTF16.,則不需要做任何事情
如果不是UTF8 or AL16UTF16.,則按照文檔Note 225912.1操作

8、檢查用戶陳舊的統計信息
可以運行腳本檢查陳舊統計信息check_stale_stats.sql <=====腳本在本文件夾
或者可以回顧腳本utlu112i.sql的輸出內容

SQL> SQL> @check_stale_stats.sql
-- There are no stale statistics in EXFSYS schema.
-- There are no stale statistics in ORDSYS schema.
-------------------------------------------------------------------------------------------------------
-- SYS schema contains stale statistics use the following to gather the statistics --
-----------------------------------------------------------------------------------------------------
EXEC DBMS_STATS.GATHER_DICTIONARY_STATS('SYS',OPTIONS=>'GATHER STALE', ESTIMATE_PERCENT => DBMS_STATS.AUTO_SAMPLE_SIZE, METHOD_OPT => 'FOR ALL COLUMNS SIZE AUTO', CASCADE => TRUE);
-- There are no stale statistics in WMSYS schema.
-- There are no stale statistics in XDB schema.

9、禁用Oracle Database Vault
升級前先禁用,升級后再開啟
SQL> SELECT * FROM V$OPTION WHERE PARAMETER = 'Oracle Database Vault';
PARAMETER VALUE
---------------------------------------------------------------- ----------------------------------------------------------------
Oracle Database Vault
啟動方法自行百度

10、備份Enterprise Manager Database Control Data

11、配置Network ACL's
應用如果使用了Oracle XMLDB中 UTL_TCP, UTL_SMTP, UTL_MAIL, UTL_HTTP, or UTL_INADDR 這些包

12、檢查sys用戶邏輯壞塊
執行檢查腳本@$ORACLE_HOME/rdbms/admin/utlvalid.sql <===== 腳本Oracle Home目錄
執行檢查腳本analyze.sql <===== 腳本在本文件夾
analyze.sq 應該輸出沒有任何錯誤.

13、檢查是否有正在運行的物化視圖
select distinct(trunc(last_refresh)) from dba_snapshot_refresh_times;
select s.obj#,o.obj#,s.containerobj#,lastrefreshdate,pflags,xpflags,o.name,o.owner#, bitand(s.mflags, 8) from obj$ o, sum$ s where o.obj# = s.obj# and o.type# = 42 AND bitand(s.mflags, 8) = 8;
如果第二個查詢有輸出 參照Note 1442457.1

14、確保沒有需要recovery 的數據文件和沒有backup 的數據文件
SELECT * FROM v$recover_file;
SELECT * FROM v$backup WHERE status != 'NOT ACTIVE';

15、檢查有密碼保護的角色
--檢查是否有角色指定了密碼
break on "Password protected Role"
select r.ROLE "Password protected Role",
p.grantee "Assigned by default to user"
from dba_roles r, dba_role_privs p
where r.PASSWORD_REQUIRED = 'YES' and p.GRANTED_ROLE = r.role
and p.default_role = 'YES'
and p.grantee <> 'SYS' and r.role not in
(select role from dba_application_roles);

--One can easily turn these password enabled roles into standard roles by running the script resulting from:
select distinct 'alter role '||role||' not identified;' "-- Statements"
from dba_roles r, dba_role_privs p
where r.PASSWORD_REQUIRED = 'YES' and p.GRANTED_ROLE = r.role
and p.default_role = 'YES'
and p.grantee <> 'SYS' and r.role not in
(select role from dba_application_roles);

16、解決分布式事務
SQL> select * from dba_2pc_pending;
如果上一行有輸出,則執行如下
SQL> SELECT local_tran_id
FROM dba_2pc_pending;
SQL> EXECUTE dbms_transaction.purge_lost_db_entry('');
SQL> COMMIT;

17、檢查是否有備庫存在
SELECT SUBSTR(value,INSTR(value,'=',INSTR(UPPER(value),'SERVICE'))+1)
FROM v$parameter
WHERE name LIKE 'log_archive_dest%' AND UPPER(value) LIKE 'SERVICE%';


18、禁用所有批處理JOB和定時任務
DBMS_JOB, DBMS_SCHEDULER
SQL> execute dbms_scheduler.disable('AUTO_SPACE_ADVISOR_JOB');
SQL> execute dbms_scheduler.disable('job1, job2, sys.jobclass1');
Note 404238.1 : How to Disable an Entry from DBMS_SCHEDULER
Note 1335741.1 : How To Stop A Running Job Using DBMS_JOB
Note 67695.1 : PROCEDURE DBMS_JOB.BROKEN Specification

19、確保SYS 和SYSTEM 使用SYSTEM表空間
SQL> SELECT username, default_tablespace
FROM dba_users
WHERE username in ('SYS','SYSTEM');

SQL> ALTER user SYS default tablespace SYSTEM;
SQL> ALTER user SYSTEM default tablespace SYSTEM;

20、檢查 aud$ 是否存在SYS 和SYSTEM 用戶,并且在SYSTEM表空間
SQL> SELECT owner,tablespace_name
FROM dba_tables
WHERE table_name='AUD$';
如果不在則遷移至SYS用戶

21、檢查數據庫是否有其他的SSL 外部用戶
SQL> SELECT name FROM sys.user$
WHERE ext_username IS NOT NULL
AND password = 'GLOBAL';
如果SSL用戶有,則在升級完成后,執行 步驟33

22、記錄數據文件,日志文件,控制文件位置,并備份 listener.ora, tnsnames.ora文件
SQL> SELECT name FROM v$controlfile;
SQL> SELECT file_name FROM dba_data_files;
SQL> SELECT group#, member FROM v$logfile;.

23、Listener配置
如果是集群則不需要此步驟,因為在集群配置是更新
停監聽$ lsnrctl stop

24、備份數據庫
對數據庫做一個冷備份或者rman備份

25、參數文件配置
復制initialization.ora文件至<target 11GR2 home>/dbs目錄
推薦去掉參數文件中的隱含參數
使用DIAGNOSTIC_DEST代替USER_DUMP_DEST, BACKGROUND_DUMP_DEST
集群把CLUSTER_DATABASE=FALSE,升級完成后再改為true

26、Win操作系統執行如下
。。。。。。。。。。。

27、Linux 系統驗證以下配置
--11g數據庫環境變量
- ORACLE_BASE
- ORACLE_HOME
- PATH, LD_LIBRARY_PATH , SHLIB_PATH and LIBPATH ( for AIX )

--修改oratab
Sample /etc/oratab
#orcl:/opt/oracle/product/10.2/db_1:N
orcl:/opt/oracle/product/11.2/db_1:N

--如果是從10g升級至11g,驗證一下信息
SQL> select DBMS_STATS.GET_PARAM('METHOD_OPT') from dual;

DBMS_STATS.GET_PARAM('METHOD_OPT')
-------------------------------------------------------------
FOR COLUMNS ID SIZE 1

如果是FOR COLUMNS ID SIZE 1,在升級時會出現問題
SQL>exec DBMS_STATS.SET_PARAM('METHOD_OPT','FOR ALL COLUMNS SIZE AUTO');

二、升級數據庫到11G R2
XX銀行是異機升級,需要先進行數據庫還原 <===============
28、在11g數據庫執行如下升級腳本
--執行catupgrd.sql升級腳本
$ sqlplus "/ as sysdba"
SQL> startup UPGRADE
SQL> set echo on
SQL> SPOOL upgrade.log
SQL> @?/rdbms/admin/catupgrd.sql
SQL> spool off
--如果有陳舊的參數,可以在此時去掉,并將pfile轉換為spfile

--執行catupgrd.sql
$ sqlplus "/as sysdba"
SQL> STARTUP
SQL> @?/rdbms/admin/utlu112s.sql

--執行catuppst.sql
SQL> @?/rdbms/admin/catuppst.sql

--執行utlrp.sql
SQL> @?/rdbms/admin/utlrp.sql

--執行dbupgdiag.sql <===== 檢查腳本,腳本在本文件夾
SQL> @dbupgdiag.sql

三、升級之后的操作
29、驗證 listener.ora文件
lsnrctl start

30、系統環境變量
--確保環境變量指向11g
- ORACLE_BASE
- ORACLE_HOME
- PATH, LD_LIBRARY_PATH, SHLIB_PATH and LIBPATH ( for AIX )

--修改 /etc/oratab <====== XX銀行集群應該不用操作
SID:ORACLE_HOME:Y
For Instance,
orcl:/opt/oracle/product/11.2/db_1:Y

31、檢查DST,與升級前步驟 6 應該一樣
SQL>SELECT version FROM v$timezone_file;

VERSION
----------
4

32、更新DBMS_STATS 包
如果使用DBMS_STATS.CREATE_STAT_TABLE創建過表
則使用EXECUTE DBMS_STATS.UPGRADE_STAT_TABLE('SYS','dictstattab');

33、更新 SSL 用戶
If you are upgrading from 10.2.0.x (or higher), then you are not required to run this command.

34、啟用Database Vault

35、使用UTL 類似包,則執行此步驟

36、編輯init.ora
--如果修改CLUSTER_DATABASE ,則改為true
SQL> create spfile from pfile;

37、鎖定Oracle 自帶用戶
SQL> SELECT username, account_status FROM dba_users ORDER BY username;
ALTER USER username PASSWORD EXPIRE ACCOUNT LOCK;

38、更新 Oracle Text
This is only needed if Oracle Text is in use.

39、更新集群信息 <=========

40、配置EM
如果沒有可跳過

41、配置
TDE (Transparent Data Encryption)
如果沒有可跳過

42、Gather Fixed Object Statistics
在升級后兩周 執行下面命令修復
SQL>EXECUTE DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;

43、compatible參數修復
參照 Note 1537496.1
--1.修改集群參數cluster_database=false
--2.修復compatible,確保在 11.0.0.0 之上
--3.更新模式打開數據庫 SQL> startup upgrade
--4.執行 SQL> @?/rdbms/admin/c1102000.sql
--5.關閉數據庫
--6.修改集群參數cluster_database=true
--7.正常模式 SQL> startup

?

轉載于:https://www.cnblogs.com/bicewow/p/10082931.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395789.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395789.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395789.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

脫殼_詳細_使用的方法_01

ZC: 如何確定被調試程序已經來到了 未加殼的程序中&#xff1f; ZC:  視頻中是使用判斷集中語言的特征 ZC:  我的方法&#xff1a;上面的方式 ESP平衡 1、第1課 (1)、單步跟蹤&#xff08;原則&#xff1a;向下的跳轉>正常F8&#xff0c;向上的跳轉>F4跳過(或者用F2…

android 函數式編程_Android開發人員的函數式編程-第1部分

android 函數式編程by Anup Cowkur通過安納普考庫(Anup Cowkur) Android開發人員的函數式編程-第1部分 (Functional Programming for Android Developers — Part 1) Lately, I’ve been spending a lot of time learning Elixir, an awesome functional programming language…

java編程 內存_Java編程技術之淺析JVM內存

JVMJVM->Java Virtual Machine:Java虛擬機,是一種用于計算設備的規范&#xff0c;它是一個虛構出來的計算機&#xff0c;是通過在實際的計算機上仿真模擬各種計算機功能來實現的。基本認知&#xff1a;1.JVM是用于運行Java代碼的假象計算機&#xff0c;主要有一套字節碼指令…

bzoj1116: [POI2008]CLO

傳送門&#xff1a;http://www.lydsy.com/JudgeOnline/problem.php?id1116 題目大意&#xff1a;Byteotia城市有n個 towns m條雙向roads. 每條 road 連接 兩個不同的 towns ,沒有重復的road. 你要把其中一些road變成單向邊使得&#xff1a;每個town都有且只有一個入度 題解&am…

java排序算法大全_各種排序算法的分析及java實現

排序一直以來都是讓我很頭疼的事&#xff0c;以前上《數據結構》打醬油去了&#xff0c;整個學期下來才勉強能寫出個冒泡排序。由于要找工作了&#xff0c;也知道排序算法的重要性(據說是面試必問的知識點)&#xff0c;所以又花了點時間重新研究了一下。排序大的分類可以分為兩…

Cocos2d-x 3.0 簡捷的物理引擎

Cocos2d-x 3.0 開發&#xff08;九&#xff09;使用Physicals取代Box2D和chipmunk http://www.cocos2d-x.org/docs/manual/framework/native/physics/physics-integration/zh -- 官網Demo 水墨魚的專欄 http://www.cocos2d-x.org/docs/catalog/zh --- 官方 搭“server” 須要哪…

google i/o_Google I / O 2017最有希望的突破

google i/oby Aravind Putrevu通過Aravind Putrevu Google I / O 2017最有希望的突破 (The most promising breakthroughs from Google I/O 2017) Google I/O is one of the biggest developer conferences. This year was particularly exciting. There were two keynotes: o…

java clex 中的 IloLPMatrix

最近看 cplex 在 java 的 callback&#xff0c;發現它給的 callback 例子中&#xff0c;都是用 IloLPMatrix 這個類放約束條件&#xff0c;在 IloLPMatrix 中&#xff0c; 每個約束條件存儲在 IloRange 中。 使用 IloLPMatrix 的好處是&#xff0c;這個類可以方便查看模型中的求…

6/12 Sprint2 看板和燃盡圖

轉載于:https://www.cnblogs.com/queenjuan/p/5578551.html

mailto 附帶附件_我和我的朋友如何將附帶項目發展為每月$ 17,000的業務

mailto 附帶附件In 2014, my friends and I set out to build the best possible web design tools. We built UI kits, Admin Dashboards, Templates, and Plugins. We’ve always tried to create products that are helpful in the development process, and that we oursel…

轉:PHP應用性能優化指南

程序員都喜歡最新的PHP 7&#xff0c;因為它使PHP成為執行最快的腳本語言之一&#xff08;參考PHP 7 vs HHVM 比較&#xff09;。但是保持最佳性能不僅需要快速執行代碼&#xff0c;更需要我們知道影響性能的問題點&#xff0c;以及這些問題的解決方案。本文涵蓋了保障PHP應用平…

java 運行異常處理_Java編程異常處理和I/O流

重點&#xff1a;  1&#xff0e;在編寫程序時&#xff0c;要正確地使用捕獲例外和聲明拋出異常的兩種例外處理的方法。2&#xff0e;遇到實際問題時&#xff0c;要根據需要正確使用各種輸入&#xff0f;輸出流&#xff0c;特別是對中文使用適當的字符輸入流。3&#xff0e;正…

反射練習

1.反射 一種計算機處理方式。是程序可以訪問、檢測和修改它本身狀態或行為的一種能力。 新建一個Person類&#xff1a; public class Person { private int age; private String name; public int getAge() { return age; } public void setAge(int age) { this.age age; } pu…

開源 物聯網接入_我們剛剛推出了開源產品。 那么接下來會發生什么呢?

開源 物聯網接入by Victor F. Santos由Victor F.Santos 我們剛剛推出了開源產品。 那么接下來會發生什么呢&#xff1f; (We just launched an open source product. So what happens next?) Last month me and the ninja god Pedro launched GitShowcase, a plug-and-play p…

Class? getClass()

getClass()方法屬于Object的一部分,它將產生對象的類,并且在打印該類時,可以看到該類類型的編碼字符串,前導"["表示這是一個后滿緊隨的類型的數組,而緊隨的"I"表示基本類型int, //: initialization/OptionalTrailingArgrments.java package object;import …

log4j使用說明

1.log4j代碼中修改輸出級別&#xff1a;如&#xff1a; protected final Logger logger LoggerFactory.getLogger(Test.class); 將其轉成實現類&#xff0c;修改輸出級別即可System.out.println(logger.isDebugEnabled()?"debug is true":"debug is false&quo…

java list集合增刪改_Java中集合類list的增刪改查

今天給大家帶來的是Java中list類的使用&#xff0c;java.util 包提供了list類來對線性數據操作List接口是Collection接口的子接口&#xff0c;List有一個重要的實現類--ArrayList類&#xff0c;List中的元素是有序排列的而且可重復&#xff0c;所以被稱為是序列List可以精確的控…

IIS6、IIS7和IIS8各版本的差別

一、寫在前面 目前市面上所用的IIS版本估計都是>6.0的.所以我們主要以下面三個版本進行講解 服務器版本IIS默認版本server20036.0server20087.0server20128.0二、IIS6的請求過程 由圖可知,所有的請求會被服務器中的http.sys組件監聽到,它會根據IIS中的 Metabase 查看基于該 …

Android Studio 插件的使用

1、GsonFormat https://github.com/zzz40500/GsonFormat 2、Android SelectorChapek http://blog.csdn.net/weifei554287925/article/details/41727541

函數式編程基礎_在收件箱中免費學習函數式編程的基礎

函數式編程基礎by Preethi Kasireddy通過Preethi Kasireddy 在收件箱中免費學習函數式編程的基礎 (Learn the fundamentals of functional programming — for free, in your inbox) If you’re a software developer, you’ve probably noticed a growing trend: software ap…