当前位置:首页 » 编程软件 » oracle编译无效对象脚本

oracle编译无效对象脚本

发布时间: 2022-12-25 07:30:07

1. oracle 编译无效的对象 sqlserver 没有

oracle 和sqlserver的sql语句是不能通用的

2. 如何重编译ORACLE数据库的无效对象

如果无效对象的数量很少,那么你可以逐个编译这些对象.

ALTER PACKAGE my_package COMPILE;
ALTER PACKAGE my_package COMPILE BODY;
ALTER PROCEDURE my_procere COMPILE;
ALTER FUNCTION my_function COMPILE;
ALTER TRIGGER my_trigger COMPILE;
ALTER VIEW my_view COMPILE;

3. 如何重编译ORACLE数据库的无效对象

一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没法,只好重启数据库。现在提供一种方法解决这种问题,那就是在ORACLE中杀不掉的,在OS一级再杀。1.下面的语句用来查询哪些对象被锁:selectobject_name,machine,s.sid,s.serial#fromv$locked_objectl,dba_objectso,v$sessionswherel.object_id=o.object_idandl.session_id=s.sid;2.下面的语句用来杀死一个进程:altersystemkillsession'24,111';(其中24,111分别是上面查询出的sid,serial#)【注】以上两步,可以通过Oracle的管理控制台来执行。3.如果利用上面的命令杀死一个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号:selectspid,osuser,s.programfromv$sessions,v$processpwheres.paddr=p.addrands.sid=24(24是上面的sid)4.在OS上杀死这个进程(线程):1)在unix上,用root身份执行命令:#kill-912345(即第3步查询出的spid)2)在windows(unix也适用)用orakill杀死线程,orakill是oracle提供的一个可执行命令,语法为:orakillsidthread其中:sid:表示要杀死的进程属于的实例名thread:是要杀掉的线程号,即第3步查询出的spid。例:c:>orakillorcl12345

4. oracle存储过程对象无效

以下逐行写,不要一写复制进去

begin
demo1;
end;
/

第四行的反斜杠不能省略

5. EXP-00056: 遇到 ORACLE 错误 932 ORA-00932: 数据类型不一致: 应为 BLOB, 但却获得 CHAR 导出失败

是个bug,metalink解释如下

Full Export From 10.2.0.1 Aborts With EXP-56 ORA-932 (Inconsistent Datatypes) EXP-0 [ID 339938.1] Modified 30-MAR-2009 Type PROBLEM Status PUBLISHED In this Document
Symptoms
Cause
Solution
References

Applies to:Oracle Server - Enterprise Edition - Version: 10.1.0.2 to 10.2.0.3
Oracle Server - Personal Edition - Version: 10.1.0.2 to 10.2.0.3
Oracle Server - Standard Edition - Version: 10.1.0.2 to 10.2.0.3
This problem can occur on any platform.
SymptomsA full database export from a Oracle10g database aborts with:...
. exporting cluster definitions
EXP-00056: ORACLE error 932 encountered
ORA-00932: inconsistent datatypes: expected BLOB, CLOB got CHAR
EXP-00056: ORACLE error 932 encountered
ORA-00932: inconsistent datatypes: expected BLOB, CLOB got CHAR
EXP-00000: Export terminated unsuccessfully
EXP-00000: Export terminated unsuccessfully
If export was started with SYS schema, a table level export may also fail with:...
Current user changed to TEST
. . exporting table DOC_ARCHIVE 16 rows exported
Current user changed to SYS
EXP-00011: SYS.; does not exist
Export terminated successfully with warnings.CauseOne possible cause (note there might be others):Script $ORACLE_HOME/rdbms/admin/catmeta.sql has been run recently.There are several invalid SYS.KU$_% views in the dictionary:-- invalid objects:
SET lines 120 pages 2000
COL status FOR a9
COL object_type FOR a20;
COL owner.object FOR a50
SELECT status, object_id, object_type, owner||'.'||object_name "OWNER.OBJECT"
FROM dba_objects
WHERE status != 'VALID' AND object_name NOT LIKE 'BIN$%'
ORDER BY 4,2;

STATUS OBJECT_ID OBJECT_TYPE OWNER.OBJECT
--------- ---------- --------------- --------------------------------
INVALID 7105 PACKAGE BODY SYS.DBMS_METADATA
INVALID 6683 VIEW SYS.KU$_10_1_COMMENT_VIEW
INVALID 6788 VIEW SYS.KU$_10_1_IND_STATS_VIEW
INVALID 6778 VIEW SYS.KU$_10_1_PIND_STATS_VIEW
INVALID 6752 VIEW SYS.KU$_10_1_PTAB_STATS_VIEW
INVALID 6770 VIEW SYS.KU$_10_1_SPIND_STATS_VIEW
INVALID 6748 VIEW SYS.KU$_10_1_TAB_ONLY_STATS_VIEW
... (etc)
A query in SQL*Plus on sys.ku$_xmlschema_view also fails with ORA-932:SET lines 200 pages 2000
COL url FOR a60 WRA
SELECT url, local, stripped_val
FROM sys.ku$_xmlschema_view;

ORA-00932: inconsistent datatypes: expected BLOB, CLOB got CHARSolutionFor reasons having to do with compatibility, the XDB objects cannot be created by the catproc.sql script. The script catproc.sql therefore calls the catmeta.sql script, which contains fake object views for XDB objects.
The real object views are defined in the catmetx.sql script (this script is invoked by catxdbv.sql which is invoked by catqm.sql).Solution #1
Run following scripts while connected as SYS user:> sqlplus /nolog

SQL> connect / as sysdba
SQL> @?/rdbms/admin/catmetx.sql
SQL> @?/rdbms/admin/utlrp.sql

SQL> exit
Afterwards, re-run the export.or:Solution #2
Run the export with the Export DataPump client. E.g.:> expdp system/manager directory=my_dir \
mpfile=expdp_full.dmp logfile=expdp_full.log full=y

6. 如何升级oracle版本

Oracle数据库升级也并非简单的事,这篇文章对Oracle那点事做了较详细的介绍:Oracle数据库升级或数据迁移方法研究
我还属于Oracle的菜鸟,就不献丑介绍了。
下面我就简单总结下,Oracle同版本升级的经历:
升级数据库:
1. 先检查数据库当前版本:SELECT * FROM v$version;
2. 使用RMAN或exp 进行全库备份
【这一步非常非常重要,因升级到数据部分时,虚拟机没空间了,导致VM崩溃,升级失败.orcl库也挂了,不得不从另一台Oracle上创建了一个Orcl,然后,冷备迁移过来,才得以重新升级。】
如:RMAN全备
export ORACLE_SID=orcl
rman target /
RMAN>backup full database plus archivelog //全备数据库,并且包括ArchiveLog。
3. 最后按下面步骤进行升级
<1> 先知道Oracle 7个更新文件的作用:
第一 和 二个包表示database , 如果升级数据库,只需要这2个文件即可。
第三个包表示grid, 用来升级RAC 的CRS。如果升级RAC 要先用这个文件。
第四个表示客户端,
第五个表示gateways,
第六个表示 examples, 这个是我们的示例文件安装包。
<2> 升级Oracle数据库
首先将第一和二个zip压缩上传,并在同一个目录下解压,因为,它两的目录结构基本一致,并且这两压缩包的内容需要合并后才能,执行runInstaller文件。所有要在同一个目录下解压,这样会直接合并。
<3> 运行runInstaller,若没有图像界面会可能就需要有应答文件了,这个就需要再查了,
我测试时,有图形界面,所以直接用图形界面来升级:
需要注意几个地方:
A. 这是第一个地方,这里需要点,“Skip software updates"跳到软件更新
B.这里是选项安装新Oracle软件的位置,这里不能写旧的位置。
另注: 磁盘空间一定要5~10G, Oracle11.2.0.1升级到11.2.0.3需要4.1G。
C. 第三点:需要注意: /etc/oratab这个文件。
因为,更新到最后是更新数据库,更新数据库时,必须要有一个数据库是运行的.才能执行,并且更新数据库时,它是通过oratab文件来让你选择通过那个运行的数据库来尝试更新数据库。
4. 数据库更新完后,需要做以下事情:
首先,升级完成后,需要将Oracle必须的环境变量修改为升级后的Oracle软件路径。
需要修改: ORACLE_HOME.
如我的环境:
Oracle11.2.0.1时:
ORACLE_BASE=/home/oracle/ora
ORACLE_HOME=$ORACLE_BASE/proct/11g/db_1
升级后,Oracle版本为:11.2.0.3,新的家目录为:
Oracle11.2.0.3: ORACLE_HOME=$ORACLE_BASE/proct/11.2.0.3/db_1
<1> 先执行这个文件,用sysdba的权限:
SQL> SPOOL update.info
SQL> $ORACLE_HOME/rdbms/admin/utlu112i.sql
SQL> SPOOL OFF
查看日志是否有错误。
<2> 关闭数据库,并更新启动。
SQL> shutdown immediate
SQL> startup upgrade
SQL> select * from v$version; #查看Oracle的版本。
SQL> select status from v$instance;
STATUS
------------
OPEN MIGRATE
#下面开始执行升级脚本
SQL> SPOOL update-info.log
SQL> @$ORACLE_HOME/rdbms/admin/catupgrd.sql
#下面是查看升级结果的; 这个不是很确定,因为参考博客的环境是,
# 是9i 升 10g
#SQL> @$ORACLE_HOME/rdbms/admin/utlu102s.sql
SQL> SPOOL OFF
完成后,需要查看升级日志,是否有保错,若有,则重新执行升级SQL脚本。
#升级完成后,需要重启DB.
SQL> shutdown immediate
SQL> startup
#下面是执行重新编译无效对象
SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql
#查看是否还存在无效对象,若为0,则表示升级完成。否则重新执行编译。
SQL> SELECT count(*) FROM dba_objects WHERE status='INVALID';
SQL> select name from v$database; #确认数据库的SID是否正确。
SQL> show user; #确认当前是否为sys用户。
SQL> select tablespace_name, bytes from dba_data_files; #确认表空间大小是否正确.
#下面这个步骤网文中没有,这是尚观视频中提到的,作用不明.
#SQL> @$ORACLE_HOME/rdbms/admin/catalog.sql
#最后,重启数据库没有问题就是升级成功了。
SQL> select status from v$instance;
STATUS
------------
OPEN #注意,成功打开数据库后,这里将是OPEN,而非OPEN MIGRATE

7. oracle 存储过程无法编译,删除,一旦执行该操作PLSQL就会出现未响应

存在无效对象,用plsql菜单中的工具先“编译无效对象”

8. Oracle 定义存储过程 不能执行,处于无效状态。

无效状态有两种可能,一种是你的存储过程编辑没有成功,创建了,但里面有语法错误。
还有一种是存储过程使用的表有结构上的改变,需要重新编译一下。
你重新编译一下,如果不成功,就是有语法问题,你需要修改存储过程。

热点内容
ftp命令批量下载文件 发布:2025-07-18 11:58:45 浏览:742
nba2k17文件夹 发布:2025-07-18 11:48:53 浏览:869
朔源码是什么 发布:2025-07-18 11:44:33 浏览:774
迷你世界解压剧场 发布:2025-07-18 11:43:48 浏览:153
linux安装opencv 发布:2025-07-18 11:42:10 浏览:446
编程游戏的软件有哪些 发布:2025-07-18 11:41:34 浏览:956
c程序设计语言电子书 发布:2025-07-18 11:35:58 浏览:642
lightning耳机如何在安卓手机上用 发布:2025-07-18 11:21:47 浏览:176
妄想山海新宿怎么配置好 发布:2025-07-18 11:07:43 浏览:616
androidsaxxml解析xml 发布:2025-07-18 10:57:58 浏览:387