升级前准备之创建restore point

注意事项:
数据库要为归档模式。
数据库不需要开启闪回。
数据库需要设置db_recovery_file_dest 和db_recovery_file_dest_size 参数
–有关Flashback的相关参数:

SQL> show parameter db_recovery_file_dest

NAME TYPE VALUE


db_recovery_file_dest string D:\app\Administrator\flash_rec overy_area

db_recovery_file_dest_size big integer 1300M

SQL> show parameter db_flashback

NAME TYPE VALUE


db_flashback_retention_target integer 1440

SQL> select flashback_on from v$database;

FLASHBACK_ON


NO

–创建restore point

SQL>startup mount

SQL> create restore point upgrade_pointguarantee flashback database;

Restore point created.

SQL>shutdown immediate

注意:

如果数据库的Flashback database 没有打开,那么只能在mount 状态下进行创建。

如果是Open 状态执行,创建完之后,DB 会变成mount状态。

–查看我们创建的restore point

RMAN> list restore point all;

SCN RSP Time Type Time Name


1316268211 GUARANTEED 29-OCT-11UPGRADE_POINT

这里我们就不执行,我们创建一个表,演示一下效果。

SQL> select open_mode from v$database;

OPEN_MODE


READ WRITE

SQL> create table d1(id number);

Table created.

SQL> insert into d1 values(1);

1 row created.

SQL> insert into d1 values(2);

1 row created.

SQL> commit;

Commit complete.

SQL> select * from d1;

   ID

    1

    2

3.3 如果失败,就进行回滚

注意:执行Flashback Database时,DB 不能处于open状态.

SQL> shutdown immediate

SQL> startup mount;

SQL> select open_mode from v$database;

OPEN_MODE


MOUNTED

SQL> select flashback_on from v$database;

FLASHBACK_ON


RESTORE POINT ONLY

SQL> flashback database to restore point upgrade_point;

Flashback complete.

SQL> alter database open;

alter database open

*

ERROR at line 1:

ORA-01589: must use RESETLOGS orNORESETLOGS option for database open

–提示必须用Resetlogs打开:

SQL> alter database open resetlogs;

Database altered.

–查看我们之前的创建的表:D1

SQL> select * from d1;

select * from d1

          *

ERROR at line 1:

ORA-00942: table or view does not exist

提示我们表不存在,数据闪回到了我们之前的Restore Point了。 用resetlogs 打开DB 之后记得重新备份一下数据库。

3.4如果升级成功,我们直接删除restore point即可

SQL> drop restore point upgrade_point;

Restore point dropped.

用RMAN 验证:

RMAN> list restore point all;

using target database control file insteadof recovery catalog

SCN RSP Time Type Time Name


RMAN>

已经为空。

基于Restore Points的方法,还可以将standby库临时激活到读写状态进行测试,测试完成后,在还原到之前的状态。这种方法的步骤,参考如下链接:

<think>我们正在处理的是在Oracle11.2.0.4升级完成后执行utlu112s.sql脚本时报错ORA-01157的问题。这个错误通常表示数据库无法识别或访问某个数据文件。根据引用[2]的描述,升级过程中我们复制了参数文件、口令文件等,但可能数据文件的位置在新环境中不正确,或者数据库升级后没有正确打开所有数据文件。解决思路:1.确认数据库状态和数据文件状态。2.检查并修复数据文件路径(如果需要)。3.确保数据库以OPEN状态运行。4.重新执行utlu112s.sql。具体步骤:步骤1:检查数据库状态和数据文件状态以sysdba身份登录数据库:```sqlsqlplus/assysdba```检查实例状态:```sqlSELECTstatusFROMv$instance;```如果状态不是“OPEN”,则尝试打开数据库:```sqlALTERDATABASEOPEN;```检查数据文件状态:```sqlSELECTfile#,name,statusFROMv$datafile;```注意查看是否有数据文件的状态不是“ONLINE”。如果有,需要将其在线。如果发现有数据文件状态为OFFLINE或RECOVER,可以尝试将其在线:```sqlALTERDATABASEDATAFILE'<file_path>'ONLINE;```步骤2:检查数据文件路径是否正确在升级过程中,如果数据文件被移动到了新的位置,或者存储结构发生了变化,那么控制文件中记录的数据文件路径可能已经失效。我们需要检查v$datafile中的路径是否都是当有效的路径。如果发现某个数据文件的路径不正确,我们需要使用以下命令修改:```sqlALTERDATABASERENAMEFILE'旧路径'TO'新路径';```注意:在执行这个命令之,请确保数据文件已经物理存在于新路径,并且Oracle进程有权限访问。步骤3:重新执行utlu112s.sql在确保所有数据文件都在线且路径正确后,重新执行脚本:```sql@?/rdbms/admin/utlu112s.sql```步骤4:查看升级摘要执行utlu112s.sql后,它会输出升级状态报告,包括每个组件的状态和升级时间。如果一切正常,你会看到类似引用[1]的输出,其中所有组件的状态应该是“VALID”。此外,还可以通过查询registry$history视图来确认升级操作(如引用[3]):```sqlSELECTACTION_TIME,ACTION,NAMESPACE,VERSION,IDFROMregistry$history;```预防措施:1.在升级,确保参数文件(特别是控制文件路径)和数据文件路径在新环境中是正确的。2.升级备份数据库,以便在出现问题时可以回退。相关问题:1.如何防止在Oracle升级过程中出现数据文件路径问题?2.执行utlu112s.sql失败后如何回退升级?3.除了ORA-01157,Oracle升级过程中还有哪些常见错误?注意:在修改控制文件或数据文件路径时,如果数据库处于非open状态,可能需要先mount数据库,然后进行修改,最后再open数据库。如果问题仍然存在,请检查alert日志文件,通常位于$ORACLE_BASE/diag/rdbms/<db_name>/<instance_name>/trace/alert_<instance_name>.log,其中会有更详细的错误信息。根据引用[5]中的信息,我们还需要确保监听程序(listener)使用的是新版本的ORACLE_HOME,但这个问题与ORA-01157无关,属于网络配置问题。最后,如果升级过程中遇到其他问题,可以参考引用[2]中描述的升级步骤,确保每一步都正确执行。现在,请按照上述步骤操作,应该能够解决ORA-01157错误并成功查看升级摘要。</think>### ORA-01157 执行 utlu112s.sql 报错解决方案(Oracle 11.2.0.4 升级) #### 问题分析 在 Oracle 11.2.0.4 升级完成后执行 `utlu112s.sql` 时遇到 ORA-01157 错误,主要原因是: 1. **数据文件路径不匹配**:升级后新环境的文件路径与旧环境不一致(如引用[2]描述的路径迁移问题)[^2] 2. **数据库未完全打开**:脚本要求数据库在 OPEN 状态下运行 3. **控制文件未更新**:新版本软件加载旧控制文件导致路径识别错误(引用[2]中提到的参数文件迁移问题)[^2] --- ### 解决方案步骤 #### 1. 验证数据库状态 ```sql -- 检查实例状态 SELECT status FROM v$instance; ``` - **必须返回 `OPEN`** 若为 `MOUNTED`,执行: ```sql ALTER DATABASE OPEN; ``` #### 2. 定位缺失的数据文件 ```sql -- 检查离线数据文件 SELECT file#, name, status FROM v$datafile WHERE status != 'ONLINE'; ``` - **示例输出**: ``` FILE# NAME STATUS ----- -------------------------------- -------- 5 /old_path/users01.dbf RECOVER ``` #### 3. 修复数据文件路径(关键步骤) ```sql -- 重命名文件路径(需物理文件已存在新位置) ALTER DATABASE RENAME FILE '/old_path/users01.dbf' TO '/new_path/users01.dbf'; -- 恢复文件在线状态 ALTER DATABASE DATAFILE 5 ONLINE; -- FILE# 对应上步查询结果 ``` > **注意**:操作需确保: > 1. 物理文件已复制到新路径(如引用[2]的迁移操作)[^2] > 2. Oracle 用户有读写权限 #### 4. 更新控制文件路径 ```sql -- 检查控制文件路径 SHOW PARAMETER control_files; -- 修改路径(若需要) ALTER SYSTEM SET control_files='/new_path/control01.ctl' SCOPE=spfile; ALTER SYSTEM SET db_create_file_dest='/new_data_path' SCOPE=spfile; ``` > **重启生效**:修改后需重启实例 #### 5. 重新执行升级验证脚本 ```sql -- 执行升级状态检查 @?/rdbms/admin/utlu112s.sql ``` 成功执行后输出应如引用[1]所示: ``` Oracle Database 11.2 Post-Upgrade Status Tool Component Status Version Elapsed Time --------------- ------------ ------------ ------------ Oracle Server VALID 11.2.0.4.0 00:16:14 ... Total Upgrade Time: 00:16:16 PL/SQL procedure successfully completed. ```[^1] #### 6. 验证升级摘要 ```sql -- 查看升级历史记录 SELECT ACTION_TIME, ACTION, NAMESPACE, VERSION, ID FROM registry$history; ``` 输出应如引用[3]所示: ``` ACTION_TIME ACTION NAMESPACE VERSION ID ---------------------------- ------------ ---------- ------------ ---- 21-AUG-20 08.21.45 PM UPGRADE SERVER 11.2.0.4.0 ```[^3] --- ### 关键预防措施 1. **路径一致性检查** 升级确保新环境 `ORACLE_HOME` 与文件路径匹配(引用[2]和[5]强调的路径配置)[^2][^5] 2. **使用 restore point** 升级创建还原点(需 `COMPATIBLE` 参数支持): ```sql CREATE RESTORE POINT pre_upgrade GUARANTEE FLASHBACK DATABASE; ``` 3. **参数文件验证** 迁移参数文件后检查关键参数: ```sql SHOW PARAMETER db_create_file_dest SHOW PARAMETER control_files ``` --- ### 相关问题 1. 如何避免 Oracle 升级过程中的路径不一致问题? 2. `utlu112s.sql` 执行成功后如何验证所有组件升级状态? 3. Oracle 11.2.0.4 升级失败后如何利用还原点回退?[^2][^4] 4. 除 ORA-01157 外,执行 `catupgrd.sql` 常见错误有哪些?[^2] > 执行过程中若仍有问题,请检查 `$ORACLE_BASE/diag/rdbms/<DB_NAME>/trace/alert_<SID>.log` 获取详细错误信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值