10G 打补丁的时候出现ORA-12801 ORA-00018

   WINDOWS 2008 r2 64 位操作系统,ORACLE原来为10204 ,10205 patch  64位的打补丁的时候,2台机器使用upgrade assistant (DBUA) 半路也出错,索性还是手动更新

更新的时候,安装补丁的过程都很顺利,需要选择在原有安装系统的home下。在进行安装后期操作的时候,1台机器使用手动更新顺利完成。反而是先装的那台机器,手动更新了好几次,除提示某个部件没装之外,还出现 mgmt_targets 出错,又反复执行了2次,在重新编译INVALID 包的时候出错:

1 行出现错误:

ORA-12801: 并行查询服务器 P064 中发出错误信号

ORA-00018: 超出最大会话数

ORA-06512: "SYS.UTL_RECOMP", line 662

ORA-06512: line 4

使用SELECT COMP_NAME, VERSION, STATUS FROM SYS.DBA_REGISTRY;看到 oracle database packages and types oracle database java packages 4个部件都是invalid

查看网上,有说CPU个数太多的,后来有说更改PROCESSES参数,因此将其中一台机器的批rocesses改为300,再次运行UTLRP.SQL ,成功完成:

SQLalter system set processes=300 scope=spfile;

SQLshutdown immediate;

SQLstartup;

SQL@%ORACLE_HOME%\rdbms\admin\utlrp.sql

TIMESTAMP                                               

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

COMP_TIMESTAMP UTLRP_BGN  2013-08-29 08:49:55                                  

DOC>   The following PL/SQL block invokes UTL_RECOMP to recompile invalid

DOC>   objects in the database. Recompilation time is proportional to the

DOC>   number of invalid objects in the database, so this command may take

DOC>   a long time to execute on a database with a large number of invalid

DOC>   objects.

DOC>

DOC>   Use the following queries to track recompilation progress:

DOC>

DOC>   1. Query returning the number of invalid objects remaining. This

DOC>      number should decrease with time.

DOC>         SELECT COUNT(*) FROM obj$ WHERE status IN (4, 5, 6);

DOC>

DOC>   2. Query returning the number of objects compiled so far. This number

DOC>      should increase with time.

DOC>         SELECT COUNT(*) FROM UTL_RECOMP_COMPILED;

DOC>

DOC>   This script. automatically chooses serial or parallel recompilation

DOC>   based on the number of CPUs available (parameter cpu_count) multiplied

DOC>   by the number of threads per CPU (parameter parallel_threads_per_cpu).

DOC>   On RAC, this number is added across all RAC nodes.

DOC>

DOC>   UTL_RECOMP uses DBMS_SCHEDULER to create jobs for parallel

DOC>   recompilation. Jobs are created without instance affinity so that they

DOC>   can migrate across RAC nodes. Use the following queries to verify

DOC>   whether UTL_RECOMP jobs are being created and run correctly:

DOC>

DOC>   1. Query showing jobs created by UTL_RECOMP

DOC>         SELECT job_name FROM dba_scheduler_jobs

DOC>        WHERE job_name like 'UTL_RECOMP_SLAVE_%';

DOC>

DOC>   2. Query showing UTL_RECOMP jobs that are running

DOC>         SELECT job_name FROM dba_scheduler_running_jobs

DOC>        WHERE job_name like 'UTL_RECOMP_SLAVE_%';

DOC>#

PL/SQL 过程已成功完成。

TIMESTAMP                                               

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

COMP_TIMESTAMP UTLRP_END  2013-08-29 08:50:18                                  

终于成功完成。

SQLSELECT COMP_NAME, VERSION, STATUS FROM SYS.DBA_REGISTRY;  --查看升级部件的状态

COMP_NAME                                               

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

VERSION                        STATUS                                          

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

Spatial                                                                        

10.2.0.5.0                     VALID                                           

Oracle interMedia                                                              

10.2.0.5.0                     VALID                                           

OLAP Catalog                                                                   

10.2.0.5.0                     VALID                                           

Oracle Enterprise Manager                                                      

10.2.0.5.0                     VALID                                            

Oracle XML Database                                                            

10.2.0.5.0                     VALID                                           

Oracle Text                                                                    

10.2.0.5.0                     VALID                                           

Oracle Expression Filter                                                       

10.2.0.5.0                     VALID                                           

Oracle Rule Manager                                                       

10.2.0.5.0                     VALID                                            

Oracle Workspace Manager                                                       

10.2.0.5.0                     VALID                                           

COMP_NAME                                               

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

VERSION                        STATUS                                          

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

Oracle Data Mining                                                              

10.2.0.5.0                     VALID                                           

Oracle Database Catalog Views                                                  

10.2.0.5.0                     VALID                                           

Oracle Database Packages and Types                                             

10.2.0.5.0                     VALID                                           

JServer JAVA Virtual Machine                                                   

10.2.0.5.0                     VALID                                           

Oracle XDK                                                                      

10.2.0.5.0                     VALID                                           

Oracle Database Java Packages                                                   

10.2.0.5.0                     VALID                                           

OLAP Analytic Workspace                                                        

10.2.0.5.0                     VALID                                           

Oracle OLAP API                                                                

10.2.0.5.0                     VALID                                           

已选择17行。

SQL> select count(*) cnt from utl_recomp_compiled;

CNT                                                 

----------                                             

 246                                                                     

SQL> select count(*) cnt from obj$ where status in (4,5,6);

CNT

----------                                         

 0                                                                     

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7177735/viewspace-769472/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7177735/viewspace-769472/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误一般是由于 undo 表空间损坏或不存在导致的。 首先,你可以检查一下数据库中是否存在该 undo 表空间,可以通过执行以下 SQL 语句进行检查: ``` SELECT tablespace_name FROM dba_tablespaces WHERE tablespace_name='<undo_tablespace_name>'; ``` 其中 `<undo_tablespace_name>` 应该替换成你要检查的 undo 表空间的名称。 如果查询结果为空,说明该表空间不存在,你需要创建一个新的 undo 表空间。如果查询结果不为空,则需要进一步检查该 undo 表空间是否正常。 你可以执行以下 SQL 语句检查 undo 表空间是否正常: ``` SELECT status FROM v$rollstat WHERE segment_name='<undo_tablespace_name>'; ``` 其中 `<undo_tablespace_name>` 应该替换成你要检查的 undo 表空间的名称。 如果查询结果为 `ONLINE`,则说明该 undo 表空间正常。如果查询结果为 `OFFLINE` 或者其他异常状态,则说明该 undo 表空间存在问题,需要进行修复或者重建。 如果你需要创建一个新的 undo 表空间,可以执行以下 SQL 语句: ``` CREATE UNDO TABLESPACE <undo_tablespace_name> DATAFILE '<path_to_undo_datafile>' SIZE <size_in_MB>; ``` 其中 `<undo_tablespace_name>` 是你要创建的 undo 表空间名称,`<path_to_undo_datafile>` 是你要指定的 undo 数据文件路径,`<size_in_MB>` 是你要指定的 undo 表空间大小,单位为 MB。 如果你需要修复一个存在问题的 undo 表空间,可以参考以下步骤: 1. 首先备份该 undo 表空间对应的数据文件,以防止数据丢失。 2. 尝试在线修复该 undo 表空间,你可以执行以下 SQL 语句: ``` ALTER TABLESPACE <undo_tablespace_name> BEGIN BACKUP; ALTER TABLESPACE <undo_tablespace_name> END BACKUP; ``` 这两条 SQL 语句可以将该 undo 表空间置于备份模式,然后再退出备份模式。如果该 undo 表空间存在一些逻辑损坏,这两条 SQL 语句可能会修复这些问题。 3. 如果在线修复失败,你可以尝试离线修复该 undo 表空间,你可以执行以下 SQL 语句: ``` ALTER DATABASE DATAFILE '<path_to_undo_datafile>' OFFLINE; RECOVER DATAFILE '<path_to_undo_datafile>'; ALTER DATABASE DATAFILE '<path_to_undo_datafile>' ONLINE; ``` 这三条 SQL 语句可以将该 undo 数据文件置为离线状态,然后进行数据文件恢复,最后再将该数据文件置为在线状态。 4. 如果无法修复该 undo 表空间,你可以考虑重建该 undo 表空间,你可以执行以下 SQL 语句: ``` DROP TABLESPACE <undo_tablespace_name> INCLUDING CONTENTS AND DATAFILES; CREATE UNDO TABLESPACE <undo_tablespace_name> DATAFILE '<path_to_undo_datafile>' SIZE <size_in_MB>; ``` 这两条 SQL 语句可以先删除存在问题的 undo 表空间,然后重新创建一个新的 undo 表空间。请注意,这个操作会删除该 undo 表空间中的所有数据,所以请务必提前备份数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值