Oracle从10g升级到11g详细步骤Word文件下载.docx

上传人:b****8 文档编号:22620920 上传时间:2023-02-04 格式:DOCX 页数:28 大小:20.86KB
下载 相关 举报
Oracle从10g升级到11g详细步骤Word文件下载.docx_第1页
第1页 / 共28页
Oracle从10g升级到11g详细步骤Word文件下载.docx_第2页
第2页 / 共28页
Oracle从10g升级到11g详细步骤Word文件下载.docx_第3页
第3页 / 共28页
Oracle从10g升级到11g详细步骤Word文件下载.docx_第4页
第4页 / 共28页
Oracle从10g升级到11g详细步骤Word文件下载.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

Oracle从10g升级到11g详细步骤Word文件下载.docx

《Oracle从10g升级到11g详细步骤Word文件下载.docx》由会员分享,可在线阅读,更多相关《Oracle从10g升级到11g详细步骤Word文件下载.docx(28页珍藏版)》请在冰豆网上搜索。

Oracle从10g升级到11g详细步骤Word文件下载.docx

DBMS_REPCAT_AUTHPACKAGEBODY

DBMS_REPCAT_AUTHPACKAGE

AQ$_SCHEDULES_PRIMARYINDEX

AQ$_SCHEDULESTABLE

如果有其它记录返回,则必须根据下面这篇文档把重复记录删除:

HowtoCleanUpDuplicateObjectsOwnedbySYSandSYSTEMSchema[ID1030426.6]

第三部分-升级前工作

Step1.

从11gR2的OracleHome下拷贝以下文件至一个临时文件夹:

$ORACLE_HOME/rdbms/admin/utlu112i.sql

Step2.

登陆数据库,运行:

$sqlplus'

/assysdba'

SQL>

spoolupgrade_info.log

@utlu112i.sql

spooloff

生成的upgrade_info.log里的内容很重要,后续步骤要根据该文件的内容做相应的修改,因此一定要保留下来。

Step3.

从下面这篇文档里可以下载到脚本

dbupgdiag.sql:

Script.toCollectDBUpgrade/MigrateDiagnosticInformation(dbupgdiag.sql)[ID556610.1]

运行这个脚本:

cd<

locationofthescript>

$sqlplus/assysdba

sql>

altersessionsetnls_language='

American'

@dbupgdiag.sql

exit

如果该脚本报告有invalid对象,运行以下命令重编译无效对象:

$cd$ORACLE_HOME/rdbms/admin

$sqlplus"

/assysdba"

@utlrp.sql

Step4.

从10.2开始,CONNECT角色的权限变少了,所以如果你是从10.2之前升级到

11g

的话,升级之后,需要重新授予缺少的权限,但是如果是从10.2及之后升级到11g的话,就不需要重新赋权限了,本例是从10.2.0.4升级到11g的,因此不需要该步骤。

Step5.

生成重建dblink的脚本,以防万一数据库需要降级。

和Step4一样,本例是从10.2.0.4升级到11g的,因此不需要该步骤。

Step6.

检查Timezone版本,主要参考:

ActionsForDSTUpdatesWhenUpgradingToOrApplyingThe11.2.0.2Patchset[ID1201253.1]

注意:

11g的软件里已经自带了版本1-14的Timezone。

先检查一下当前timezone版本:

conn/assysdba

Connected.

SELECTversionFROMv$timezone_file;

根据当前timezone的版本,又分三种情况:

1)等于14:

这已经是11g需要的版本了,所以升级前后都不需要做任何事,这种情况很罕见。

2)高于14:

升级前,必须得给11g软件打上该timezone版本的DST补丁,这种情况也很罕见。

3)低于14:

大多数都是这种情况,在升级前不需要在11g软件层面打补丁,在升级后需要再数据库层面将Timezone升级至14,具体看后面的步骤

Step7.

检查国家字符集是否是UTF8或AL16UTF16:

selectvaluefromNLS_DATABASE_PARAMETERSwhereparameter='

NLS_NCHAR_CHARACTERSET'

如果是,则什么都不用做;

如果不是,那你就惨了,跟着下面长长的这篇文档一步一步做吧:

TheNationalCharacterSet(NLS_NCHAR_CHARACTERSET)inOracle9i,10g 

and11g[ID276914.1]

Step8.

收集统计信息,以减少停机时间:

/assysdba"

EXECDBMS_STATS.GATHER_DICTIONARY_STATS;

Step9.

如果你有开启Vault,那么你需要先在11gR2软件下禁用Vault,等升级结束后,再启用Vault,否则会在升级过程中报错。

Step10.

备份EnterpriseManagerDatabaseControl

Data

,因为本例并没有使用EM,所以不需要该步骤。

Step11.

配置网络ACL'

s,在本例中不需要配置。

Step12.

使用以下语句生产分析数据字典的脚本(assysdba):

Setverifyoff

Setspace0

Setline120

Setheadingoff

Setfeedbackoff

Setpages1000

Spoolanalyze.sql

SELECT'

Analyzecluster"

'

||cluster_name||'

"

validatestructurecascade;

FROMdba_clusters

WHEREwner='

UNION

Analyzetable"

||table_name||'

FROMdba_tables

ANDpartitioned='

NO'

AND(iot_type='

IOT'

ORiot_typeisNULL)

validatestructurecascadeintoinvalid_rows;

YES'

spooloff

生成的脚本名称是:

analyze.sql

现在运行该脚本:

@$ORACLE_HOME/rdbms/admin/utlvalid.sql

@analyze.sql

Step13.

确保所有的snapshot都已被成功刷新,且replication已被关闭:

SELECTDISTINCT(TRUNC(last_refresh))

FROMdba_snapshot_refresh_times;

Step14.

确保当前没有文件需要介质

恢复:

SELECT*FROMv$recover_file;

上面语句没有返回结果才是正确的。

Step15.

确保当前没有文件运行在

备份

模式下:

SELECT*FROMv$backupWHEREstatus!

='

NOTACTIVE'

Step16.

解决分布式事务。

先查询是否还有分布式事务:

select*fromdba_2pc_pending;

如果有返回结果,则:

SELECTlocal_tran_id

FROMdba_2pc_pending;

EXECUTEdbms_transaction.purge_lost_db_entry('

);

COMMIT;

Step17.

检查是否有Standby数据库存在:

SELECTSUBSTR(value,INSTR(value,'

='

INSTR(UPPER(value),'

SERVICE'

))+1)

FROMv$parameter

WHEREnameLIKE'

log_archive_dest%'

ANDUPPER(value)LIKE'

SERVICE%'

如果有返回结果,则在升级之前,要保证Standby和Primary是处于同步的状态。

Step18.

禁用所有的batch和cronjobs

Step19.

确保用户SYS和SYSTEM的默认表空间都是SYSTEM:

SELECTusername,default_tablespace

FROMdba_users

WHEREusernamein('

'

如果不是,则要用以下语句修改为SYSTEM:

ALTERuserSYSdefaulttablespaceSYSTEM;

ALTERuserSYSTEMdefaulttablespaceSYSTEM;

Step20.

确保AUD$表建在SYS用户下和SYSTEM表空间下:

SELECTowner,tablespace_name

WHEREtable_name='

AUD$'

如果不是,则要做相应的修改。

Step21.

检查是否有外部认证的SSL用户:

SELECTnameFROMsys.user$

WHEREext_usernameISNOTNULL

ANDpassword='

GLOBAL'

如果有,则在升级之后记得要做Step34。

Step22.

记下数据文件、联机日志文件和控制文件的位置:

SELECTnameFROMv$controlfile;

SELECTfile_nameFROMdba_data_files;

SELECTgroup#,memberFROMv$logfile;

且备份listener.ora,tnsnames.ora,sqlnet.ora等文件。

Step23.

停止listener:

$lsnrctlstop

停止其它可执行程序,如dbconsole,isqlplus等

$emctlstopdbconsole

$isqlplusctlstop

Step24.

关闭数据库:

shutdownimmediate;

接着对全库做个冷备。

Step25.

以10g的pfile为模板,并根据Step2生成的upgrade_info.log里的建议,为11g创建一个新的pfile。

Step26.

如果数据库原本是运行在archive模式下,最好先改为noarchive,这样可以减少升级停机时间,升级成功后再重新改回archive模式。

Step27.

该步骤是针对Windows系统的,本例略过。

第四部分-升级

Step28.

升级前的检查步骤基本上已经完成了,在跑升级脚本之前,需要把相关参数改为指向新的11g软件:

$exportORACLE_HOME=<

locationofOracle11.2>

$exportPATH=$ORACLE_HOME/bin:

$PATH

$exportORACLE_BASE=<

Oracle_Basesetduringinstallation>

接着修改oratab中的内容,使其指向新的11gHome目录:

Sample/etc/oratab

#orcl:

/opt/oracle/product/10.2/db_1:

N

orcl:

/opt/oracle/product/11.2/db_1:

Step29.

前面所有的一切准备,都是为了这一步能成功执行,先把数据库起到upgrade状态:

startupUPGRADE

接着开始跑升级脚本:

setechoon

SPOOLupgrade.log

@catupgrd.sql

这个脚本大概持续1.5个小时,脚本的最后会自动关闭数据库。

升级脚本跑完之后,再跑下面这个脚本,检查数据库状态:

STARTUP

@utlu112s.sql

如果该报告中包含错误,请查阅相关文档解决,直到没有错误之后,再跑下面的脚本:

@catuppst.sql

前面的升级脚本是运行在upgrade模式下,该脚本主要是在open模式下做些升级动作,不需要花很多时间。

接着重新编译一下无效对象:

最后,再跑一下Step3中的

dbupgdiag.sql,确保数据库是好的。

第五部分-升级后工作

Step30.

修改listener.ora,使listener执行新的11gHome,然后重新启动listener:

lsnrctlstart

Step31.

再次检查Step28中设置的环境变量确实是指向了新的11gHome。

Step32.

Timezone数据库层面的升级。

该步骤是否执行是和Step6中的检查结果相关的,只有当Timezone的版本小于14时,才需要执行该步骤。

主要参考:

UpdatingtheRDBMSDSTversionin11gR2(11.2.0.1andup)usingDBMS_DST[ID977512.1]

1)Timezone升级前的准备工作:

先检查一下当前的timezone版本:

conn/assysdba

SELECTPROPERTY_NAME,SUBSTR(property_value,1,30)valueFROMDATABASE_PROPERTIESWHEREPROPERTY_NAMELIKE'

DST_%'

ORDERBYPROPERTY_NAME;

一个典型的输出是:

PROPERTY_NAMEVALUE

------------------------------------------------------------

DST_PRIMARY_TT_VERSION4

DST_SECONDARY_TT_VERSION0

DST_UPGRADE_STATENONE

然后开始准备工作:

altersessionset"

_with_subquery"

=materialize;

execDBMS_DST.BEGIN_PREPARE(14)

接着检查准备状态:

SELECTPROPERTY_NAME,SUBSTR(property_value,1,30)value

FROMDATABASE_PROPERTIES

WHEREPROPERTY_NAMELIKE'

ORDERBYPROPERTY_NAME;

DST_SECONDARY_TT_VERSION14

DST_UPGRADE_STATEPREPARE

--truncateloggingtablesiftheyexist.

TRUNCATETABLESYS.DST$TRIGGER_TABLE;

TRUNCATETABLEsys.dst$affected_tables;

TRUNCATETABLEsys.dst$error_table;

--logaffecteddata

setserveroutputon

BEGIN

DBMS_DST.FIND_AFFECTED_TABLES

(affected_tables=>

'

sys.dst$affected_tables'

log_errors=>

TRUE,

log_errors_table=>

sys.dst$error_table'

END;

/

下面的语句都不能有返回结果:

SELECT*FROMsys.dst$affected_tables;

SELECT*FROMsys.dst$error_table;

SELECT*FROMsys.dst$error_tablewhereERROR_NUMBER='

1883'

1878'

SELECT*FROMsys.dst$error_tablewhereERROR_NUMBERnotin('

--endpreparewindow,therowsabovewillstayinthosetables.

EXECDBMS_DST.END_PREPARE;

--checkifthisisended

2)真正开始升级Timezone

shutdownimmediate;

startupupgrade;

purgedba_recyclebin;

EXECDBMS_DST.BEGIN_UPGRADE(14);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1