现在Oracle 8.17的一个数据库下的某个用户中有一系列的对象,当然包括
表、视图、存储过程....., 现在我想把该用户下这一系列对象的DDL语句生成一个
.sql文件后在另一台装有Oracle的机器上运行,以生成相同的对象。
现在的问题是在Oracle下不知有什么工具可生成一个用户下所有对象的DDL语句,
并将它们放在一个.sql文件中?
急,急,急!
表、视图、存储过程....., 现在我想把该用户下这一系列对象的DDL语句生成一个
.sql文件后在另一台装有Oracle的机器上运行,以生成相同的对象。
现在的问题是在Oracle下不知有什么工具可生成一个用户下所有对象的DDL语句,
并将它们放在一个.sql文件中?
急,急,急!
解决方案 »
- 求教高手fuction输出多个值问题
- 跪求NetBeans如何连接Oracl数据库
- 关于建立oracle用户的问题
- oracle数据库多表连接查询优化问题
- 如何更改oarcle9i中的web服务的端口?
- 开始接触oracle一个基础问题
- 问一个触发器的问题:使用触发器时能不能知道具体是哪一条记录(字段)被插入、删除、修改啊?
- 如何卸掉win2000控制面板-管理工具-服务列表中oracle各种服务
- 请各位大哥指教,如何将这段sqlserver写的sql语句转换成相应的oracle
- 有谁知道哪里有可以下载的Oracle 8.17下载?在线等待。一定结帐!!!
- oracle developer的连接问题
- 如何更新数据库索引??
www.51delphi.com注册后可以下载
如:
@SQL\insert_c_cfjg.sql
@SQL\insert_c_cllx.sql
@SQL\insert_c_hphm.sql
上面的语句将源库中的该用户的所有对象导出在新的数据库中先创建该用户,然后用下面的语句导入即可
imp username/password@tnsname file=data.dmp所有的对象就创建好了
1、exp username/password@tnsname file=a.dmp log=loga.txt
2、imp username/password@tnsname file=a.dmp show=y log=logb.txt
打开logb.txt,就可以看到DDL语句OK?
需要的话来信[email protected]
1、用EXP工具导出
2、导入时使用show=y选项、log选项
3、查看、编辑日志文件具体实例: 1、调出SQL*Plusconn system/manager
grant connect,resource to a identified by a;
grant connect,resource to b identified by b;
conn a/acreate table a(a number);
insert into a values(1);
insert into a values(2);
insert into a values(3);create table b(a number,b varchar2(10));
insert into b values(1,'1111');
insert into b values(2,'2222');
insert into b values(3,'3333');
commit;
2、打开一个DOS窗口、先执行导出E:\>exp a/a file=a.dmp log=loga.txtExport: Release 8.1.6.0.0 - Production on 星期五 12月 1 22:24:16 2000(c) Copyright 1999 Oracle Corporation. All rights reserved.
连接到: Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production
With the Partitioning option
JServer Release 8.1.6.0.0 - Production
已导出ZHS16GBK字符集和ZHS16GBK NCHAR 字符集
. 正在导出 pre-schema 过程对象和操作
. 正在导出用户A的外部函数程序库名称
. 正在导出用户A的对象类型定义
即将导出A的对象 ...
. 正在导出数据库链接
. 正在导出序号
. 正在导出群集定义
. 即将导出A的表通过常规路径 ...
. . 正在导出表 A 3 行被导出
. . 正在导出表 B 3 行被导出
. 正在导出同义词
. 正在导出视图
. 正在导出存储的过程
. 正在导出运算符
. 正在导出引用完整性约束条件
. 正在导出触发器
. 正在导出索引类型
. 正在导出位图、功能性索引和可扩展索引
. 正在导出后期表活动
. 正在导出快照
. 正在导出快照日志
. 正在导出作业队列
. 正在导出刷新组和子组
. 正在导出维
. 正在导出 post-schema 过程对象和操作
. 正在导出统计
在没有警告的情况下成功终止导出。E:\>3、再执行导入,使用show=y、log这两个选项E:\>imp a/a file=a.dmp show=y log=logb.txtImport: Release 8.1.6.0.0 - Production on 星期五 12月 1 22:29:49 2000(c) Copyright 1999 Oracle Corporation. All rights reserved.
连接到: Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production
With the Partitioning option
JServer Release 8.1.6.0.0 - Production经由常规路径导出由EXPORT:V08.01.06创建的文件
已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入
. 正在将A的对象导入到 A
"CREATE TABLE "A" ("A" NUMBER) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 25"
"5 LOGGING STORAGE(INITIAL 131072 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483"
"645 PCTINCREASE 50 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLE"
"SPACE "SYSTEM""
. . 正在跳过表 "A""CREATE TABLE "B" ("A" NUMBER, "B" VARCHAR2(10)) PCTFREE 10 PCTUSED 40 INIT"
"RANS 1 MAXTRANS 255 LOGGING STORAGE(INITIAL 131072 NEXT 65536 MINEXTENTS 1 "
"MAXEXTENTS 2147483645 PCTINCREASE 50 FREELISTS 1 FREELIST GROUPS 1 BUFFER_P"
"OOL DEFAULT) TABLESPACE "SYSTEM""
. . 正在跳过表 "B"成功终止导入,但出现警告。E:\>4、使用编辑器打开logb.txt,里面可以看到DDL语句
例如:
utl_file_dir=G:\oracle\temp //保存文本的路径为G:\oracle\temp
此过程将所有的过程代码保存到G:\oracle\temp\PRO_ALL.txt中
create or replace procedure PRO_ALL_TO_TXT
is
file_handle utl_file.file_type;
STOR_TEXT VARCHAR2(4000);
F_NAME VARCHAR2(30);
N NUMBER;
I NUMBER;
CURSOR C_NAME IS
SELECT DISTINCT NAME FROM ALL_SOURCE WHERE TYPE='PROCEDURE';
begin
OPEN C_NAME;
LOOP
FETCH C_NAME INTO F_NAME;
EXIT WHEN C_NAME%NOTFOUND;
I:=1;
SELECT MAX(LINE) INTO N FROM ALL_SOURCE WHERE NAME=F_NAME AND TYPE='PROCEDURE';
file_handle:=utl_file.fopen('G:\oracle\temp','PRO_ALL.txt','a');
utl_file.put_line(file_handle,'PROCEDURE NAME:'||F_NAME);
WHILE I<=N LOOP
SELECT TEXT INTO STOR_TEXT FROM ALL_SOURCE WHERE NAME=F_NAME AND TYPE='PROCEDURE' AND LINE= I;
I:=I+1;
utl_file.put_line(file_handle,stor_text);
END LOOP;
utl_file.put_line(file_handle,'**********************************************');
utl_file.fclose(file_handle);
COMMIT;
END LOOP;
end PRO_ALL_TO_TXT;
/