真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Oracle從10g升級(jí)到11g詳細(xì)步驟

數(shù)據(jù)庫(kù)舊版本:10.2.0.4
數(shù)據(jù)庫(kù)新版本:11.2.0.2
OS 版本: Solaris 10
參考文檔:Complete Checklist for Manual Upgrades to 11gR2 [ID 837570.1]
第一部分 - 安裝11gR2軟件
這里對(duì)軟件的安裝就不詳細(xì)說(shuō)明了,可以參考相應(yīng)的文檔。
這里需要注意的是:如果你想在11gr2上打上最新的PSU或CPU,可以先在軟件級(jí)別上打上PSU或CPU,這樣就不用跑兩次catbundle.sql,減少停機(jī)時(shí)間。
第二部分 - 初步檢查
1. 在升級(jí)之前,確保所有的組件和對(duì)象都是valid:
select substr(comp_name,1,40) comp_name, status, substr(version,1,10) version from dba_registry order by comp_name;  --針對(duì)組件
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; --針對(duì)對(duì)象
如果有invalid的對(duì)象,運(yùn)行utlrp.sql重新編譯對(duì)象。
2. 確保sys和system下沒(méi)有重復(fù)的對(duì)象:
select object_name, object_type from dba_objects where object_name||object_type in (select object_name||object_type  from dba_objects where wner = 'SYS') and wner = 'SYSTEM';
上面這條語(yǔ)句只能返回以下4條記錄:
OBJECT_NAME                              OBJECT_TYPE
---------------------------------------- ---------------
DBMS_REPCAT_AUTH                         PACKAGE BODY
DBMS_REPCAT_AUTH                         PACKAGE
AQ$_SCHEDULES_PRIMARY                    INDEX
AQ$_SCHEDULES                            TABLE
如果有其它記錄返回,則必須根據(jù)下面這篇文檔把重復(fù)記錄刪除:
How to Clean Up Duplicate Objects Owned by SYS and SYSTEM Schema [ID 1030426.6]

第三部分 - 升級(jí)前工作
Step 1.
從11gR2的Oracle Home下拷貝以下文件至一個(gè)臨時(shí)文件夾:
$ORACLE_HOME/rdbms/admin/utlu112i.sql

Step 2.
登陸數(shù)據(jù)庫(kù),運(yùn)行:
Normal 0 false false false EN-US ZH-CN X-NONE$ sqlplus '/ as sysdba' 
SQL> spool upgrade_info.log
SQL> @utlu112i.sql
SQL> spool off
SQL>

創(chuàng)新互聯(lián)公司是少有的網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、營(yíng)銷型企業(yè)網(wǎng)站、成都微信小程序、手機(jī)APP,開(kāi)發(fā)、制作、設(shè)計(jì)、賣鏈接、推廣優(yōu)化一站式服務(wù)網(wǎng)絡(luò)公司,成立于2013年,堅(jiān)持透明化,價(jià)格低,無(wú)套路經(jīng)營(yíng)理念。讓網(wǎng)頁(yè)驚喜每一位訪客多年來(lái)深受用戶好評(píng)

生成的upgrade_info.log里的內(nèi)容很重要,后續(xù)步驟要根據(jù)該文件的內(nèi)容做相應(yīng)的修改,因此一定要保留下來(lái)。

Step 3.
從下面這篇文檔里可以下載到腳本dbupgdiag.sql:
Script. to Collect DB Upgrade/Migrate Diagnostic Information (dbupgdiag.sql) [ID 556610.1]
運(yùn)行這個(gè)腳本:
cd
$ sqlplus / as sysdba
sql> alter session set nls_language='American';
sql> @dbupgdiag.sql
sql> exit
如果該腳本報(bào)告有invalid對(duì)象,運(yùn)行以下命令重編譯無(wú)效對(duì)象:
$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus "/ as sysdba"
SQL> @utlrp.sql

Step 4.
從10.2開(kāi)始,CONNECT角色的權(quán)限變少了,所以如果你是從10.2之前升級(jí)到11g的話,升級(jí)之后,需要重新授予缺少的權(quán)限,但是如果是從10.2及之后升級(jí)到11g的話,就不需要重新賦權(quán)限了,本例是從10.2.0.4升級(jí)到11g的,因此不需要該步驟。

Step 5.
生成重建dblink的腳本,以防萬(wàn)一數(shù)據(jù)庫(kù)需要降級(jí)。和Step 4一樣,本例是從10.2.0.4升級(jí)到11g的,因此不需要該步驟。

Step 6.
檢查Timezone版本,主要參考:
Actions For DST Updates When Upgrading To Or Applying The 11.2.0.2 Patchset [ID 1201253.1]

注意:11g的軟件里已經(jīng)自帶了版本1-14的Timezone。
先檢查一下當(dāng)前timezone版本:
SQL> conn / as sysdba
Connected.
SQL>SELECT version FROM v$timezone_file;
根據(jù)當(dāng)前timezone的版本,又分三種情況:
1)等于14:這已經(jīng)是11g需要的版本了,所以升級(jí)前后都不需要做任何事,這種情況很罕見(jiàn)。
2)高于14:升級(jí)前,必須得給11g軟件打上該timezone版本的DST補(bǔ)丁,這種情況也很罕見(jiàn)。
3)低于14:大多數(shù)都是這種情況,在升級(jí)前不需要在11g軟件層面打補(bǔ)丁,在升級(jí)后需要再數(shù)據(jù)庫(kù)層面將Timezone升級(jí)至14,具體看后面的步驟

Step 7.
檢查國(guó)家字符集是否是UTF8或AL16UTF16:
select value from NLS_DATABASE_PARAMETERS where parameter = 'NLS_NCHAR_CHARACTERSET';
如果是,則什么都不用做;如果不是,那你就慘了,跟著下面長(zhǎng)長(zhǎng)的這篇文檔一步一步做吧:
The National Character Set ( NLS_NCHAR_CHARACTERSET ) in Oracle 9i, 10g and 11g [ID 276914.1]

Step 8.
收集統(tǒng)計(jì)信息,以減少停機(jī)時(shí)間:
$ sqlplus "/as sysdba"

SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;


Step 9.
如果你有開(kāi)啟Vault,那么你需要先在11gR2軟件下禁用Vault,等升級(jí)結(jié)束后,再啟用Vault,否則會(huì)在升級(jí)過(guò)程中報(bào)錯(cuò)。

Step 10.
備份Enterprise Manager Database Control Data,因?yàn)楸纠](méi)有使用EM,所以不需要該步驟。

Step 11.
配置網(wǎng)絡(luò)ACL's,在本例中不需要配置。

Step 12.
使用以下語(yǔ)句生產(chǎn)分析數(shù)據(jù)字典的腳本 (as sysdba):
Set verify off
Set space 0
Set line 120
Set heading off
Set feedback off
Set pages 1000
Spool analyze.sql

SELECT 'Analyze cluster "'||cluster_name||'" validate structure cascade;'
FROM dba_clusters
WHERE owner='SYS'
UNION
SELECT 'Analyze table "'||table_name||'" validate structure cascade;'
FROM dba_tables
WHERE owner='SYS'
AND partitioned='NO'
AND (iot_type='IOT' OR iot_type is NULL)
UNION
SELECT 'Analyze table "'||table_name||'" validate structure cascade into invalid_rows;'
FROM dba_tables
WHERE owner='SYS'
AND partitioned='YES';

spool off

生成的腳本名稱是:analyze.sql
現(xiàn)在運(yùn)行該腳本:
$ sqlplus "/ as sysdba"
SQL> @$ORACLE_HOME/rdbms/admin/utlvalid.sql
SQL> @analyze.sql

Step 13.
確保所有的snapshot都已被成功刷新,且replication已被關(guān)閉:
SELECT DISTINCT(TRUNC(last_refresh))
FROM dba_snapshot_refresh_times;

Step 14.
確保當(dāng)前沒(méi)有文件需要介質(zhì)恢復(fù):
SELECT * FROM v$recover_file;
上面語(yǔ)句沒(méi)有返回結(jié)果才是正確的。

Step 15.
確保當(dāng)前沒(méi)有文件運(yùn)行在備份模式下:
SELECT * FROM v$backup WHERE status != 'NOT ACTIVE';
上面語(yǔ)句沒(méi)有返回結(jié)果才是正確的。

Step 16.
解決分布式事務(wù)。
先查詢是否還有分布式事務(wù):
SQL> select * from dba_2pc_pending; 
如果有返回結(jié)果,則:
SQL> SELECT local_tran_id
     FROM dba_2pc_pending;
SQL> EXECUTE dbms_transaction.purge_lost_db_entry('');
SQL> COMMIT;

Step 17.
檢查是否有Standby數(shù)據(jù)庫(kù)存在:
SELECT SUBSTR(value,INSTR(value,'=',INSTR(UPPER(value),'SERVICE'))+1)
FROM v$parameter
WHERE name LIKE 'log_archive_dest%' AND UPPER(value) LIKE 'SERVICE%';
如果有返回結(jié)果,則在升級(jí)之前,要保證Standby和Primary是處于同步的狀態(tài)。

Step 18.
禁用所有的batch和cron jobs

Step 19.
確保用戶SYS和SYSTEM的默認(rèn)表空間都是SYSTEM:
SQL> SELECT username, default_tablespace
     FROM dba_users
     WHERE username in ('SYS','SYSTEM'); 
如果不是,則要用以下語(yǔ)句修改為SYSTEM:
SQL> ALTER user SYS default tablespace SYSTEM;
SQL> ALTER user SYSTEM default tablespace SYSTEM;

Step 20.
確保AUD$表建在SYS用戶下和SYSTEM表空間下:
SQL> SELECT owner,tablespace_name
     FROM dba_tables
     WHERE table_name='AUD$';
如果不是,則要做相應(yīng)的修改。

Step 21.
檢查是否有外部認(rèn)證的SSL用戶:
SQL> SELECT name FROM sys.user$
     WHERE ext_username IS NOT NULL
     AND password = 'GLOBAL';
如果有,則在升級(jí)之后記得要做Step 34。

Step 22.
記下數(shù)據(jù)文件、聯(lián)機(jī)日志文件和控制文件的位置:
SQL> SELECT name FROM v$controlfile;
SQL> SELECT file_name FROM dba_data_files;
SQL> SELECT group#, member FROM v$logfile;
且備份listener.ora, tnsnames.ora, sqlnet.ora等文件。

Step 23.
停止listener:
$ lsnrctl stop
停止其它可執(zhí)行程序,如dbconsole, isqlplus等
$ emctl stop dbconsole
$ isqlplusctl stop

Step 24.
關(guān)閉數(shù)據(jù)庫(kù):
$ sqlplus "/as sysdba"
SQL> shutdown immediate;
接著對(duì)全庫(kù)做個(gè)冷備。

Step 25.
以10g的pfile為模板,并根據(jù)Step 2生成的upgrade_info.log里的建議,為11g創(chuàng)建一個(gè)新的pfile。

Step 26.
如果數(shù)據(jù)庫(kù)原本是運(yùn)行在archive模式下,最好先改為noarchive,這樣可以減少升級(jí)停機(jī)時(shí)間,升級(jí)成功后再重新改回archive模式。

Step 27.
該步驟是針對(duì)Windows系統(tǒng)的,本例略過(guò)。

第四部分 - 升級(jí)

Step 28.
升級(jí)前的檢查步驟基本上已經(jīng)完成了,在跑升級(jí)腳本之前,需要把相關(guān)參數(shù)改為指向新的11g軟件:
$ export ORACLE_HOME=
$ export PATH=$ORACLE_HOME/bin:$PATH
$ export ORACLE_BASE=

接著修改oratab中的內(nèi)容,使其指向新的11g Home目錄:
Sample /etc/oratab

#orcl:/opt/oracle/product/10.2/db_1:N
orcl:/opt/oracle/product/11.2/db_1:N

Step 29.
前面所有的一切準(zhǔn)備,都是為了這一步能成功執(zhí)行,先把數(shù)據(jù)庫(kù)起到upgrade狀態(tài):
$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus "/ as sysdba"
SQL> startup UPGRADE
接著開(kāi)始跑升級(jí)腳本:
SQL> set echo on
SQL> SPOOL upgrade.log
SQL> @catupgrd.sql
SQL> spool off
這個(gè)腳本大概持續(xù)1.5個(gè)小時(shí),腳本的最后會(huì)自動(dòng)關(guān)閉數(shù)據(jù)庫(kù)。升級(jí)腳本跑完之后,再跑下面這個(gè)腳本,檢查數(shù)據(jù)庫(kù)狀態(tài):
$ sqlplus "/as sysdba"
SQL> STARTUP
SQL> @utlu112s.sql
如果該報(bào)告中包含錯(cuò)誤,請(qǐng)查閱相關(guān)文檔解決,直到?jīng)]有錯(cuò)誤之后,再跑下面的腳本:
SQL> @catuppst.sql
前面的升級(jí)腳本是運(yùn)行在upgrade模式下,該腳本主要是在open模式下做些升級(jí)動(dòng)作,不需要花很多時(shí)間。
接著重新編譯一下無(wú)效對(duì)象:
SQL> @utlrp.sql
最后,再跑一下Step 3中的dbupgdiag.sql,確保數(shù)據(jù)庫(kù)是好的。

第五部分 - 升級(jí)后工作

Step 30.
修改listener.ora,使listener執(zhí)行新的11g Home,然后重新啟動(dòng)listener:
lsnrctl start

Step 31.
再次檢查Step 28中設(shè)置的環(huán)境變量確實(shí)是指向了新的11g Home。

Step 32.
Timezone數(shù)據(jù)庫(kù)層面的升級(jí)。
注意:該步驟是否執(zhí)行是和Step 6中的檢查結(jié)果相關(guān)的,只有當(dāng)Timezone的版本小于14時(shí),才需要執(zhí)行該步驟。
主要參考:Updating the RDBMS DST version in 11gR2 (11.2.0.1 and up) using DBMS_DST [ID 977512.1]
1)Timezone升級(jí)前的準(zhǔn)備工作:
先檢查一下當(dāng)前的timezone版本:
conn / as sysdba

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

一個(gè)典型的輸出是:
PROPERTY_NAME                  VALUE
------------------------------ ------------------------------
DST_PRIMARY_TT_VERSION         4
DST_SECONDARY_TT_VERSION       0
DST_UPGRADE_STATE              NONE
然后開(kāi)始準(zhǔn)備工作:
alter session set "_with_subquery"=materialize;
exec DBMS_DST.BEGIN_PREPARE(14);
接著檢查準(zhǔn)備狀態(tài):
SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME LIKE 'DST_%'
ORDER BY PROPERTY_NAME;

一個(gè)典型的輸出是:
PROPERTY_NAME                  VALUE
------------------------------ ------------------------------
DST_PRIMARY_TT_VERSION         4
DST_SECONDARY_TT_VERSION       14
DST_UPGRADE_STATE              PREPARE
-- truncate logging tables if they exist.
TRUNCATE TABLE SYS.DST$TRIGGER_TABLE;
TRUNCATE TABLE sys.dst$affected_tables;
TRUNCATE TABLE sys.dst$error_table;

-- log affected data
set serveroutput on
BEGIN
DBMS_DST.FIND_AFFECTED_TABLES
(affected_tables => 'sys.dst$affected_tables',
log_errors => TRUE,
log_errors_table => 'sys.dst$error_table');
END;
/

下面的語(yǔ)句都不能有返回結(jié)果:
SELECT * FROM sys.dst$affected_tables;

SELECT * FROM sys.dst$error_table;
SELECT * FROM sys.dst$error_table where ERROR_NUMBER= '1883';
SELECT * FROM sys.dst$error_table where ERROR_NUMBER= '1878';
SELECT * FROM sys.dst$error_table where ERROR_NUMBER not in ('1878','1883');
-- 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;

一個(gè)典型的輸出是:
PROPERTY_NAME                  VALUE
------------------------------ ------------------------------
DST_PRIMARY_TT_VERSION         4
DST_SECONDARY_TT_VERSION       0
DST_UPGRADE_STATE              NONE

2)真正開(kāi)始升級(jí)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;
一個(gè)典型的輸出是:
PROPERTY_NAME                  VALUE
------------------------------ ------------------------------
DST_PRIMARY_TT_VERSION         14
DST_SECONDARY_TT_VERSION       4
DST_UPGRADE_STATE              UPGRADE
下面這條語(yǔ)句應(yīng)該沒(méi)有返回結(jié)果:
SELECT OWNER, TABLE_NAME, UPGRADE_IN_PROGRESS FROM ALL_TSTZ_TABLES where UPGRADE_IN_PROGRESS='YES';
重啟數(shù)據(jù)庫(kù):
shutdown immediate
startup

升級(jí)相關(guān)的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;
/

如果沒(méi)有錯(cuò)誤,則結(jié)束升級(jí):
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

Step 33.
該步驟可省略。

Step 34.
升級(jí)外部認(rèn)證SSL用戶。
由于本例是從10.2升級(jí)到11g,所以可忽略該步驟。

Step 35.
如果在Step 9中,你關(guān)閉了Vault,則必須在此步驟重新啟用。
Note 453903.1- Enabling and Disabling Oracle Database Vault in UNIX

Step 36.
忽略

Step 37.
創(chuàng)建spfile:
SQL> create spfile from pfile;

Step 38.
鎖住系統(tǒng)用戶,可忽略。

Step 39.
升級(jí)Oracle Text,可忽略。

Step 40.
升級(jí)Oracle Clusterware,可忽略。

Step 41.
配置EM,可忽略。

最后,記得修改compatible參數(shù):
Normal 0 false false false EN-US ZH-CN X-NONESQL> ALTER SYSTEM SET COMPATIBLE = ’11.2.0’ SCOPE=SPFILE;































本文題目:Oracle從10g升級(jí)到11g詳細(xì)步驟
本文地址:http://weahome.cn/article/ippsjg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部