Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

0

积分

0

好友

9

主题
1#
发表于 2012-12-19 14:50:42 | 查看: 13694| 回复: 17
本帖最后由 Bill 于 2012-12-19 14:52 编辑

有个问题想请教下大家,是这样的:
公司的开发人员用一个oracle用户连接到数据库(比如SCOTT用户),领导要求这样做:
开发人员随时要对表结构进行更改(他们自己改,DBA不干预),所以要时不时地把某一时间的表结构及数据导出,在需要时好把表结构及数据回到某个点,要求我写两个脚本,现实如下功能:
一个是创建(创建前先DROP掉所有表及序列等)SCOTT用户下的所有对象的脚本,还要考虑表之间的依赖关系,但不插入数据;另一个是数据脚本,INSERT插入数据的脚本。
这样做是因为他们要把脚本复制到PL/SQL DEVELOPER 或 SQL DEVELOPER 里面执行,不用DBA在OS下用imp/expdp来实现。
我的想法是用power designer的反向工程来实现,但power designer不太会用!
大家看看有什么办法给指点一下吧!
2#
发表于 2012-12-19 17:21:37
个人建议,仅供参考

1 . 将DBA在OS 下 imp/expdp 导入与导出 *.dmp 文件
2 . OS下 strings *.bmp >> table.txt
3 . 发给开发

回复 只看该作者 道具 举报

3#
发表于 2012-12-19 17:26:36
一个方法是exp 加rows=n

另一个方法是获取一个SCHEMA下的所有建表的语法,以scott为例:
  
set pagesize 0
set long 90000
set feedback off
set echo off
spool schema.sql
connect scott/tiger;
SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u;
spool off;

回复 只看该作者 道具 举报

4#
发表于 2012-12-20 15:07:34
FOR EXAMPLE
  1. [oracle@vrh8 ~]$ exp maclean/maclean file=maclean_ddl rows=no owner=maclean

  2. Export: Release 10.2.0.5.0 - Production on Thu Dec 20 02:04:45 2012

  3. Copyright (c) 1982, 2007, Oracle.  All rights reserved.


  4. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
  5. With the Partitioning, OLAP, Data Mining and Real Application Testing options
  6. Export done in US7ASCII character set and UTF8 NCHAR character set
  7. server uses AL32UTF8 character set (possible charset conversion)
  8. Note: table data (rows) will not be exported

  9. About to export specified users ...
  10. . exporting pre-schema procedural objects and actions
  11. . exporting foreign function library names for user MACLEAN
  12. . exporting PUBLIC type synonyms
  13. . exporting private type synonyms
  14. . exporting object type definitions for user MACLEAN
  15. About to export MACLEAN's objects ...
  16. . exporting database links
  17. . exporting sequence numbers
  18. . exporting cluster definitions
  19. . about to export MACLEAN's tables via Conventional Path ...
  20. . . exporting table                             BB
  21. EXP-00091: Exporting questionable statistics.
  22. EXP-00091: Exporting questionable statistics.
  23. . . exporting table                        MACLEAN
  24. EXP-00091: Exporting questionable statistics.
  25. . . exporting table                    MACLEAN_LOB
  26. EXP-00091: Exporting questionable statistics.
  27. . . exporting table                             TV
  28. EXP-00091: Exporting questionable statistics.
  29. . . exporting table                         VALIT2
  30. EXP-00091: Exporting questionable statistics.
  31. . exporting synonyms
  32. . exporting views
  33. . exporting stored procedures
  34. . exporting operators
  35. . exporting referential integrity constraints
  36. . exporting triggers
  37. . exporting indextypes
  38. . exporting bitmap, functional and extensible indexes
  39. . exporting posttables actions
  40. . exporting materialized views
  41. . exporting snapshot logs
  42. . exporting job queues
  43. . exporting refresh groups and children
  44. . exporting dimensions
  45. . exporting post-schema procedural objects and actions
  46. . exporting statistics
  47. Export terminated successfully with warnings.



  48. [oracle@vrh8 ~]$ imp maclean/maclean file=maclean_ddl.dmp show=y full=y

  49. Import: Release 10.2.0.5.0 - Production on Thu Dec 20 02:07:06 2012

  50. Copyright (c) 1982, 2007, Oracle.  All rights reserved.


  51. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
  52. With the Partitioning, OLAP, Data Mining and Real Application Testing options

  53. Export file created by EXPORT:V10.02.01 via conventional path
  54. import done in US7ASCII character set and UTF8 NCHAR character set
  55. import server uses AL32UTF8 character set (possible charset conversion)
  56. . importing MACLEAN's objects into MACLEAN
  57. "BEGIN  "
  58. "sys.dbms_logrep_imp.instantiate_schema(schema_name=>SYS_CONTEXT('USERENV','"
  59. "CURRENT_SCHEMA'), export_db_name=>'G10R25', inst_scn=>'31433226');"
  60. "COMMIT; END;"
  61. "CREATE TABLE "BB" ("OWNER" VARCHAR2(30), "OBJECT_NAME" VARCHAR2(128), "SUBO"
  62. "BJECT_NAME" VARCHAR2(30), "OBJECT_ID" NUMBER, "DATA_OBJECT_ID" NUMBER, "OBJ"
  63. "ECT_TYPE" VARCHAR2(19), "CREATED" DATE, "LAST_DDL_TIME" DATE, "TIMESTAMP" V"
  64. "ARCHAR2(19), "STATUS" VARCHAR2(7), "TEMPORARY" VARCHAR2(1), "GENERATED" VAR"
  65. "CHAR2(1), "SECONDARY" VARCHAR2(1))  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRA"
  66. "NS 255 STORAGE(INITIAL 6291456 NEXT 1048576 FREELISTS 1 FREELIST GROUPS 1 B"
  67. "UFFER_POOL DEFAULT) TABLESPACE "TTSA" LOGGING NOCOMPRESS"
  68. "CREATE INDEX "IND_OBJD1" ON "BB" ("OBJECT_ID" )  PCTFREE 10 INITRANS 2 MAXT"
  69. "RANS 255 STORAGE(INITIAL 1048576 NEXT 1048576 FREELISTS 1 FREELIST GROUPS 1"
  70. " BUFFER_POOL DEFAULT) TABLESPACE "TTSA" LOGGING"
  71. "CREATE TABLE "MACLEAN" ("T1" NUMBER(*,0), "T2" CHAR(20), "T3" CHAR(20), "T4"
  72. "" CHAR(20), "T5" CHAR(20), "T6" DATE)  PCTFREE 10 PCTUSED 40 INITRANS 1 MAX"
  73. "TRANS 255 STORAGE(INITIAL 17825792 NEXT 1048576 FREELISTS 1 FREELIST GROUPS"
  74. " 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" LOGGING NOCOMPRESS"
  75. "CREATE TABLE "MACLEAN_LOB" ("T1" VARCHAR2(200) NOT NULL ENABLE, "T2" CLOB, "
  76. ""T3" CLOB)  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 3"
  77. "145728 NEXT 1048576 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABL"
  78. "ESPACE "USERS" LOGGING NOCOMPRESS LOB ("T2") STORE AS  (TABLESPACE "USERS" "
  79. "ENABLE STORAGE IN ROW CHUNK 16384 PCTVERSION 50 CACHE  STORAGE(INITIAL 6553"
  80. "6 NEXT 1048576 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)) LOB ("T3"
  81. "") STORE AS  (TABLESPACE "USERS" ENABLE STORAGE IN ROW CHUNK 16384 PCTVERSI"
  82. "ON 50 CACHE  STORAGE(INITIAL 65536 NEXT 1048576 FREELISTS 1 FREELIST GROUPS"
  83. " 1 BUFFER_POOL DEFAULT))"
  84. "CREATE TABLE "TV" ("RN" NUMBER, "RP" VARCHAR2(600))  PCTFREE 10 PCTUSED 40 "
  85. "INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 450887680 NEXT 1048576 FREELISTS 1 "
  86. "FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" LOGGING NOCOMPRES"
  87. "S"
  88. "CREATE TABLE "VALIT2" ("T1" NUMBER(*,0))  PCTFREE 10 PCTUSED 40 INITRANS 1 "
  89. "MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 FREELISTS 1 FREELIST GROUPS"
  90. " 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" LOGGING NOCOMPRESS"
  91. "ALTER SESSION SET "_LOAD_WITHOUT_COMPILE" = PLSQL"
  92. "CREATE procedure insert_data(s int) as"
  93. "    begin"
  94. "      for i in 1..s  loop"
  95. "        insert into MACLEAN values(i,'A','B','C','D',sysdate);"
  96. "        commit;"
  97. "        end loop;"
  98. "        end;"
  99. "ALTER SESSION SET "_LOAD_WITHOUT_COMPILE" = NONE"
  100. "ALTER PROCEDURE "INSERT_DATA" COMPILE REUSE SETTINGS TIMESTAMP '2012-10-25:"
  101. "12:00:02'"

复制代码

回复 只看该作者 道具 举报

5#
发表于 2012-12-20 15:07:49
简单来说就是

exp  + rows=no

imp + show=y

回复 只看该作者 道具 举报

6#
发表于 2012-12-20 15:12:22
imp的show=y是不是就是显示导入内容,如LZ所说的,如果要把导出的数据变成insert脚本;
2楼的 strings *.bmp >> table.txt是不是一个快速的方法呢?

回复 只看该作者 道具 举报

7#
发表于 2012-12-20 16:14:09
用了多种方法也不行啊,所生成的脚本要复制到PL/SQL DEVELOPER的窗口里执行。。。依赖关系不能错,也不能报错。。。

回复 只看该作者 道具 举报

8#
发表于 2012-12-20 16:21:47
Liu Maclean(刘相兵 发表于 2012-12-20 15:07
简单来说就是

exp  + rows=no

这种应该是显示出IMP导入时的操作内容吧,把SHOW=Y出来的内容复制到maclean连接到数据库的SQL DEVELOPER窗口里执行是不行的。会报错。

回复 只看该作者 道具 举报

9#
发表于 2012-12-20 18:58:07
imp SHOW     just list file contents (N)

show 是只列出 dmp文件的内容,实际不导入, 即exp rows=no => 只导出定义 + imp show=y 只列出dmp文件中的DDL

回复 只看该作者 道具 举报

10#
发表于 2012-12-21 11:34:56
Liu Maclean(刘相兵 发表于 2012-12-20 18:58
imp SHOW     just list file contents (N)

show 是只列出 dmp文件的内容,实际不导入, 即exp rows=no => ...

理解Mac的意思,谢谢,但这种方法实现不了。

回复 只看该作者 道具 举报

11#
发表于 2012-12-24 16:27:57
学习了。

回复 只看该作者 道具 举报

12#
发表于 2012-12-25 09:35:50
Bill 发表于 2012-12-21 11:34
理解Mac的意思,谢谢,但这种方法实现不了。

不理解你为啥说实现不了

对于你的需求, 定时跑一个crontab  exp+ rows=no导出定义 用时间字段命名该dump文件

具体需要该ddl定义时 用imp show=y 取出来

写脚本实现这个 2-3句的事情吧?

回复 只看该作者 道具 举报

13#
发表于 2012-12-25 12:01:48
imp show=y
imp 都是先单独创建表,最后再创建并启用外键关系的
例如
  1. SQL> create table t0(x number(4) primary key);

  2. 表已创建。

  3. SQL>  create table t1 (x number(4) primary key);

  4. 表已创建。

  5. SQL>  create table t2  (x number(4) primary key);

  6. 表已创建。

  7. SQL> alter table t1 add foreign key (x) references t0(x);

  8. 表已更改。

  9. SQL>  alter table t2 add foreign key (x) references t1(x);

  10. 表已更改。

  11. SQL> alter table t0 add foreign key (x) references t2(x);

  12. 表已更改。

  13. SQL> host
  14. [oracle@zhdbtest ~]$ exp csq3/csq3 file=csq3.dmp rows=n

  15. Export: Release 11.2.0.3.0 - Production on 星期二 12月 25 11:55:01 2012

  16. Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.


  17. 连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
  18. With the Partitioning, OLAP, Data Mining and Real Application Testing options
  19. 已导出 AL32UTF8 字符集和 AL16UTF16 NCHAR 字符集
  20. 注: 将不导出表数据 (行)
  21. . 正在导出 pre-schema 过程对象和操作
  22. . 正在导出用户 CSQ3 的外部函数库名
  23. . 导出 PUBLIC 类型同义词
  24. . 正在导出专用类型同义词
  25. . 正在导出用户 CSQ3 的对象类型定义
  26. 即将导出 CSQ3 的对象...
  27. . 正在导出数据库链接
  28. . 正在导出序号
  29. . 正在导出簇定义
  30. . 即将导出 CSQ3 的表通过常规路径...
  31. . . 正在导出表                              T0
  32. . . 正在导出表                              T1
  33. . . 正在导出表                              T2
  34. . 正在导出同义词
  35. . 正在导出视图
  36. . 正在导出存储过程
  37. . 正在导出运算符
  38. . 正在导出引用完整性约束条件
  39. . 正在导出触发器
  40. . 正在导出索引类型
  41. . 正在导出位图, 功能性索引和可扩展索引
  42. . 正在导出后期表活动
  43. . 正在导出实体化视图
  44. . 正在导出快照日志
  45. . 正在导出作业队列
  46. . 正在导出刷新组和子组
  47. . 正在导出维
  48. . 正在导出 post-schema 过程对象和操作
  49. . 正在导出统计信息
  50. 成功终止导出, 没有出现警告。
  51. [oracle@zhdbtest ~]$ imp csq3/csq3 file=csq3.dmp  show=y

  52. Import: Release 11.2.0.3.0 - Production on 星期二 12月 25 11:55:27 2012

  53. Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.


  54. 连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
  55. With the Partitioning, OLAP, Data Mining and Real Application Testing options

  56. 经由常规路径由 EXPORT:V11.02.00 创建的导出文件
  57. 已经完成 AL32UTF8 字符集和 AL16UTF16 NCHAR 字符集中的导入
  58. . 正在将 CSQ3 的对象导入到 CSQ3
  59. "BEGIN  "
  60. "sys.dbms_logrep_imp.instantiate_schema(schema_name=>SYS_CONTEXT('USERENV','"
  61. "CURRENT_SCHEMA'), export_db_name=>'ZHDB', inst_scn=>'120647537');"
  62. "COMMIT; END;"
  63. "CREATE TABLE "T0" ("X" NUMBER(4, 0))  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXT"
  64. "RANS 255 TABLESPACE "USERS" LOGGING NOCOMPRESS"
  65. "ALTER TABLE "T0" ADD  PRIMARY KEY ("X") USING INDEX PCTFREE 10 INITRANS 2 M"
  66. "AXTRANS 255 TABLESPACE "USERS" LOGGING ENABLE"
  67. "CREATE TABLE "T1" ("X" NUMBER(4, 0))  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXT"
  68. "RANS 255 TABLESPACE "USERS" LOGGING NOCOMPRESS"
  69. "ALTER TABLE "T1" ADD  PRIMARY KEY ("X") USING INDEX PCTFREE 10 INITRANS 2 M"
  70. "AXTRANS 255 TABLESPACE "USERS" LOGGING ENABLE"
  71. "CREATE TABLE "T2" ("X" NUMBER(4, 0))  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXT"
  72. "RANS 255 TABLESPACE "USERS" LOGGING NOCOMPRESS"
  73. "ALTER TABLE "T2" ADD  PRIMARY KEY ("X") USING INDEX PCTFREE 10 INITRANS 2 M"
  74. "AXTRANS 255 TABLESPACE "USERS" LOGGING ENABLE"
  75. [color=Red]"ALTER TABLE "T1" ADD FOREIGN KEY ("X") REFERENCES "T0" ("X") ENABLE"
  76. "ALTER TABLE "T2" ADD FOREIGN KEY ("X") REFERENCES "T1" ("X") ENABLE"
  77. "ALTER TABLE "T0" ADD FOREIGN KEY ("X") REFERENCES "T2" ("X") ENABLE"[/color]
  78. 成功终止导入, 没有出现警告。

复制代码

回复 只看该作者 道具 举报

14#
发表于 2012-12-26 15:46:06
这个问题 ,可以参见这里 http://blog.csdn.net/tianlesoftware/article/details/6798428

回复 只看该作者 道具 举报

15#
发表于 2012-12-27 22:48:20
imp的indexfile参数可以实现你想要的。

回复 只看该作者 道具 举报

16#
发表于 2012-12-28 15:11:56
cshiqin 发表于 2012-12-25 12:01
imp show=y
imp 都是先单独创建表,最后再创建并启用外键关系的
例如

你用show出 来的脚本再执行一下,不会报错?

回复 只看该作者 道具 举报

17#
发表于 2012-12-28 15:24:30
Liu Maclean(刘相兵 发表于 2012-12-25 09:35
不理解你为啥说实现不了

对于你的需求, 定时跑一个crontab  exp+ rows=no导出定义 用时间字段命名该dum ...

却实是可以导出来哦,不过把show出来的脚本复制到SQL DEVELOPER里执行就不行了

回复 只看该作者 道具 举报

18#
发表于 2014-7-18 21:09:07
不错的帖子~

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-21 01:47 , Processed in 0.054760 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569