- 浏览: 123898 次
文章分类
最新评论
-
张万里:
只有前台页面,参考意义不大
ztree左侧菜单jspDemo -
sesamfox:
缺少addProperty和create方法
使用cglib动态创建java类 -
aappds:
请问一下,这些漏洞用appscan扫描出来以后怎么查看具体漏洞 ...
常见WEB开发安全漏洞 原因分析及解决
本文转自:http://blog.chinaunix.net/space.php?uid=10597892&do=blog&id=2946749
DBMS_METADATA.GET_DDL包可以得到数据库的对象的ddl脚本。如下(SQLPLUS中执行): 1.得到一个表的ddl语句: SET SERVEROUTPUT ON SET LINESIZE 1000 SET FEEDBACK OFF set long 999999 ------显示不完整 SET PAGESIZE 1000 ----分页 EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false); ---去除storage等多余参数 SELECT DBMS_METADATA.GET_DDL('TABLE','TCC_NE_FRAME') FROM DUAL; SELECT DBMS_METADATA.GET_DDL('TABLE','TCC_NE_SNAP') FROM DUAL; 2.得到一个用户下的所有表,索引,存储过程的ddl SET SERVEROUTPUT ON SET LINESIZE 1000 SET FEEDBACK OFF set long 999999 ------显示不完整 SET PAGESIZE 1000 ----分页 ---去除storage等多余参数 EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false); SELECT DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, u.object_name) FROM USER_OBJECTS u where U.OBJECT_TYPE IN ('TABLE','INDEX','PROCEDURE'); 3.得到所有表空间的ddl语句 SET SERVEROUTPUT ON SET LINESIZE 1000 SET FEEDBACK OFF set long 999999------显示不完整 SET PAGESIZE 1000----分页 ---去除storage等多余参数 SELECT DBMS_METADATA.GET_DDL('TABLESPACE', TS.tablespace_name) FROM DBA_TABLESPACES TS; 4.得到所有创建用户的ddl SET SERVEROUTPUT ON SET LINESIZE 1000 SET FEEDBACK OFF set long 999999------显示不完整 SET PAGESIZE 1000----分页 ---去除storage等多余参数 SELECT DBMS_METADATA.GET_DDL('USER',U.username) FROM DBA_USERS U; 另外,若执行不了该包,则需要正确安装好相应的包。 Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=2041672 ****************************************************** 常见错误1: SQL> select dbms_metadata.get_ddl('TABLE','PC','SCOTT') from dual; ERROR: ORA-19206: Invalid value for query or REF CURSOR parameter ORA-06512: at "SYS.DBMS_XMLGEN", line 83 ORA-06512: at "SYS.DBMS_METADATA", line 345 ORA-06512: at "SYS.DBMS_METADATA", line 410 ORA-06512: at "SYS.DBMS_METADATA", line 449 ORA-06512: at "SYS.DBMS_METADATA", line 615 ORA-06512: at "SYS.DBMS_METADATA", line 1221 ORA-06512: at line 1 no rows selected SQL> 解决办法:运行$ORACLE_HOME/rdbms/admin/catmeta.sql ***************************************************** 常见错误2: 今天在一个数据库上执行DBMS_METADATA包的时候,出现了ORA-19206的错误。 具体错误信息如下: SQL> SELECT DBMS_METADATA.GET_DDL('MATERIALIZED_VIEW', 'CAT_AUTH_GMP', 'NDMAIN') FROM DUAL; ERROR: ORA-19206: Invalid value for query or REF CURSOR parameter ORA-06512: at "SYS.DBMS_XMLGEN", line 83 ORA-06512: at "SYS.DBMS_METADATA", line 345 ORA-06512: at "SYS.DBMS_METADATA", line 410 ORA-06512: at "SYS.DBMS_METADATA", line 449 ORA-06512: at "SYS.DBMS_METADATA", line 615 ORA-06512: at "SYS.DBMS_METADATA", line 1221 ORA-06512: at line 1 no rows selected 仔细检查了一下,发现所有和物化视图相关的表在执行DBMS_METADATA.GET_DDL时都会出现上面的错误,而其他的对象并没有受到影响。 由于这个数据库的数据是通过EXP/IMP迁移得到的,虽然在IMP过程中没有什么明显的错误信息,但是仍然怀疑是EXP/IMP造成的数据字典出现了错误。 查询了一下METALINK信息,发现了很多类似的错误,而Oracle给出的解决方法是重装XDB。 于是尝试重装XML方案: 首先以SYSDBA身份登陆,关闭并重启数据库,为卸载XML对象做准备: SQL> CONN / AS SYSDBA Connected. SQL> SHUTDOWN IMMEDIATE Database closed. Database dismounted. ORACLE instance shut down. SQL> STARTUP ORACLE instance started. Total System Global Area 5876197568 bytes Fixed Size 739520 bytes Variable Size 503316480 bytes Database Buffers 5368709120 bytes Redo Buffers 3432448 bytes Database mounted. Database opened. SQL> SET ECHO ON SQL> SPO XDB_REMOVAL.LOG SQL> @?/rdbms/admin/catnoqm.sql SQL> Rem SQL> Rem $Header: catnoqm.sql 03-jan-2002.17:32:31 spannala Exp $ SQL> Rem SQL> Rem catnoqm.sql SQL> Rem SQL> Rem Copyright (c) 2001, 2002, Oracle Corporation. All rights reserved. SQL> Rem SQL> Rem NAME SQL> Rem catnoqm.sql - CATalog script for removing (NO) XDB SQL> Rem SQL> Rem DESCRIPTION SQL> Rem this script drops the metadata created for SQL XML management SQL> Rem This scirpt must be invoked as sys. It is to be invoked as SQL> Rem SQL> Rem @@catnoqm SQL> Rem NOTES SQL> Rem SQL> Rem MODIFIED (MM/DD/YY) SQL> Rem spannala 01/03/02 - tables are not handled by xdb SQL> Rem spannala 01/02/02 - registry SQL> Rem spannala 12/20/01 - passing in the resource tablespace name SQL> Rem tsingh 11/17/01 - remove connection string SQL> Rem tsingh 06/30/01 - XDB: XML Database merge SQL> Rem amanikut 02/13/01 - Creation SQL> Rem SQL> Rem SQL> SQL> execute dbms_registry.removing('XDB'); BEGIN dbms_registry.removing('XDB'); END; * ERROR at line 1: ORA-01403: no data found ORA-06512: at "SYS.DBMS_REGISTRY", line 420 ORA-06512: at line 1 SQL> drop user xdb cascade; User dropped. SQL> SPO OFF 从上面脚本调用的结果可以确定,XML对象在执行导入时没有注册成功,可能这就是导致错误产生的原因。 保证JAVA池和共享池都大于150M,且XDB表空间可扩展,或者大于150M。则可以重启系统。 SQL> SHUTDOWN IMMEDIATE Database closed. Database dismounted. ORACLE instance shut down. SQL> STARTUP ORACLE instance started. Total System Global Area 5876197568 bytes Fixed Size 739520 bytes Variable Size 503316480 bytes Database Buffers 5368709120 bytes Redo Buffers 3432448 bytes Database mounted. Database opened. 下面重新安装XML方案: SQL> SET ECHO ON SQL> SPO XDB_INSTALL.LOG SQL> @?/rdbms/admin/catqm.sql XDBPASSWD XDB TEMP 调用catqm.sql时,后面的三个参数依次时XDB用户的密码、默认表空间和临时镖客。 SQL> @?/rdbms/admin/catxdbj.sql 然后继续执行上面的SQL: 然后检查XDB用户是否存在错误对象,以及XDB是否注册到数据库中: SQL> SELECT COUNT(*) FROM DBA_OBJECTS WHERE OWNER = 'XDB' AND STATUS = 'INVALID'; COUNT(*) ---------- 0 SQL> SELECT COMP_NAME, STATUS, VERSION FROM DBA_REGISTRY WHERE COMP_NAME = 'Oracle XML Database'; COMP_NAME STATUS VERSION ---------------------------------------- ----------- -------------------- Oracle XML Database VALID 9.2.0.4.0 下面重启数据库和监听,XDB重装完毕。 重建XDB之后,对DBMS_METADATA的访问恢复正常: SQL> SELECT DBMS_METADATA.GET_DDL('MATERIALIZED_VIEW', 'CAT_AUTH_GMP', 'NDMAIN') FROM DUAL; DBMS_METADATA.GET_DDL('MATERIALIZED_VIEW','CAT_AUTH_GMP','NDMAIN') ------------------------------------------------------------------ CREATE MATERIALIZED VIEW "NDMAIN"."CAT_AUTH_GMP" ORGANIZATION HEAP PCTFREE
发表评论
-
SQL查询和SQL函数
2012-10-30 13:13 1159二、SQL查询和SQL函数 SQL支持如下类别的命令 ... -
oracle 常用视图
2012-09-03 11:00 12901 Oracle常用数据字典表 1、 查看当前用户的 ... -
oracle 常见问题
2012-08-15 20:58 850判断数据是否为数字 nvl2(translate(十 ... -
oracle日常问题维护
2012-08-14 12:01 9(一)处理等待sql --1 select sid, ... -
30036ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS1'解决办法
2012-05-25 16:23 5793解决该问题分三步走 (一) --查看undo表空间使用情况 ... -
横表的纵表实例
2012-05-12 10:26 9731.需要更改为横表的纵表如下图所示横表要求结构为busi_co ... -
oracle job使用
2012-05-12 10:14 856创建 创建JOB就比较简单了,下面就是创建JOB的代码 ... -
利用dbms_metadata.get_ddl查看DDL语句
2012-05-12 10:04 908当我们想要查看某个表或者是表空间的DDL的时候,可以利用dbm ... -
java 处理oracle clob操作
2012-05-10 11:14 1196第一种: Clob clob = rs. ... -
DB tools 收集
2012-04-16 17:29 597网址:http://www.withdata.com/ 网 ... -
linux下oracle日常维护
2012-01-05 17:37 3231linux中oracle的日常维护 ... -
oracle row_number()over() 函数运用
2012-01-04 19:17 1271row_number() over ([partition b ... -
Linux 下安装Oracle之实践
2011-12-29 15:43 828转自:http://shenliang1985.blog.16 ...
相关推荐
Oracle数据库中的`dbms_metadata.get_ddl`是一个非常实用的包,它允许开发人员和管理员获取数据库对象的创建语句(DDL),这对于备份和恢复、迁移或者理解对象定义非常有帮助。下面我们将深入探讨`dbms_metadata.get...
GBase 8t/8s/informix获取DDL函数DBMS_METADATA.GET_DDL CREATE FUNCTION DBMS_METADATA.GET_DDL( object_type varchar(16) , name varchar(128), schema varchar(32) default null, v_version varchar(32) ...
38. **DBMS_METADATA.GET_DDL**: 获取数据库对象的DDL语句。 39. **DBMS_STATS.SET_TABLE_PREFS**: 设置表的统计收集偏好。 40. **DBMS_BACKUP_RESTORE**: 数据库备份和恢复工具。 41. **DBMS_CRYPTO.HASH**: ...
从 Oracle 数据库中导出 SQL 脚本 Oracle 数据库是一个功能强大...从 Oracle 数据库中导出 SQL 脚本可以使用 `dbms_metadata.get_ddl` 函数来获取指定对象的 DDL 定义,然后使用 `spool` 命令将输出结果写入到文件中。
2. **使用`DBMS_METADATA.GET_DDL`函数获取表空间的DDL脚本**:通过将表空间名称传递给`GET_DDL`函数,可以得到创建该表空间所需的DDL语句。 3. **转换为字符串**:由于`DBMS_METADATA.GET_DDL`返回的是LOB类型,...
`DBMS_METADATA.GET_DDL`函数可以获取指定对象的创建语句。 5. **DBMS_ALERT**: 提供异步通知服务,当特定条件满足时,可以向指定的进程或用户发送警报。例如,`DBMS_ALERT.REGISTER`用于注册一个警报,`DBMS_ALERT...
- `select dbms_metadata.get_ddl('TABLE', 'DEPT', 'SCOTT') from dual`:获取SCOTT模式下DEPT表的DDL语句。 - `select dbms_metadata.get_ddl('INDEX', 'DEPT_IDX', 'SCOTT') from dual`:获取SCOTT模式下DEPT_...
10. **DBMS_METADATA** - 用于获取和操作数据库元数据,如DDL(数据定义语言)语句,用于生成表、索引等对象的定义。 这些内置包只是Oracle庞大功能库的一小部分,它们极大地扩展了数据库的能力,简化了许多复杂的...
每一类对象都通过`SELECT DBMS_METADATA.GET_DDL`命令来获取其定义的DDL(Data Definition Language)语句。 例如,对于表和视图: ```sql SELECT DBMS_METADATA.GET_DDL(u.object_type, u.object_name) FROM user...
解密过程与之类似,先用`DBMS_METADATA.GET_DDL`获取加密后的源代码,然后解密并使用`DBMS_METADATA.SET_DDL_TEXT`更新储存过程。 需要注意的是,尽管加密储存过程能提高安全性,但也增加了管理复杂性和潜在的风险...
除了直接查询系统视图外,还可以利用Oracle的 `dbms_metadata.get_ddl` 包中的函数来获取索引的DDL(数据定义语言)语句,从而间接获取索引及其关联列的信息。这通常用于更复杂或自动化的需求,例如,当需要生成索引...
在Oracle 9i及更高版本中,可以利用DBMS_METADATA包来直接从数据字典中提取这些语句,这大大简化了过去通过Export工具或者编写复杂查询脚本的方式来获取DDL的过程。 DBMS_METADATA是一个强大的PL/SQL包,它可以生成...
例如,你可以使用DBMS_METADATA.GET_DDL函数来获取表、索引或其他对象的创建语句,这对于备份、迁移或复制对象非常方便。 在性能优化方面,DBMS_PROFILER是一个强大的工具,它可以分析PL/SQL代码的执行性能。通过...
ddl := DBMS_METADATA.GET_DDL('TABLE', 'MY_TABLE', 'MY_SCHEMA'); DBMS_OUTPUT.PUT_LINE(ddl); END; ``` 以上是对DM7系统包使用手册中部分关键知识点的详细解读,希望能够帮助读者更好地理解和使用这些强大的...
2. **提取二进制数据**:使用`DBMS_METADATA.GET_DDL`或`DBMS_METADATA.GET_DEPENDENT_DDL`等系统包,获取加密对象的DDL,其中包含了对象的二进制编码。 3. **运行FYunwrap**:将二进制数据输入到FYunwrap工具中,...
4. **使用`DBMS_METADATA.GET_DDL`包**: 这个包可以获取对象的DDL定义,如果尝试获取不存在的表,会引发异常。虽然不是直接检查,但可以作为间接判断的方式。 ```plsql DECLARE l_ddl CLOB; BEGIN DBMS_...
DESCRIBE 命令可以显示表的结构信息,而 DBMS_METADATA.GET_DDL 方法可以获取表的 DDL 语句。 索引 索引可以快速访问表中的数据块。bitmap 索引是一种特殊的索引类型,适合用于 Fact Table。 约束 主键和外键是...