Oracle11G数据库一下子少了不少表

「已注销」 2018-07-14 07:21:46


背景情况
oracle 11G 11.2.0.10 for windows 2008 r2 x64

两个服务器的数据库NLS_lang中的S是相同的
导入某个用户下的所有表另外一个数据库,发现表数量差距特别大,原来数据库700多张表,导入到新的数据表示是400多张

开始查原因,把空表插入数据:

show parameter deferred_segment_creation

alter system set deferred_segment_creation=false;

select table_name from user_tables where NUM_ROWS=0;

select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;

然后将查询结果一次修改,发现有些表提示不存在,提示如下信息,很多条都是这样的,

SQL> alter table AQ$_KUPC$DATAPUMP_QUETAB_1_T allocate extent;
alter table AQ$_KUPC$DATAPUMP_QUETAB_1_T allocate extent
*
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> alter table AQ$_KUPC$DATAPUMP_QUETAB_1_H allocate extent;
alter table AQ$_KUPC$DATAPUMP_QUETAB_1_H allocate extent
*
ERROR at line 1:
ORA-00942: table or view does not exist

查询某些提示不存在的表是存在的,但是没看表里是否有信息;

再次导表发现导出问题报错,提示如下信息

. . exporting table
0 rows exported EXP-00091: Exporting questionable statistics.
EXP-00091: Exporting questionable statistics. EXP-00091:
Exporting questionable statistics.

最后查出原因,原来oracle客户端用的字符集和服务器字符集不同
设备变量后不再报错
SET NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

关掉监听,数据库,再次启动数据库(后来记不清楚是否空表再插入一遍)

查询源服务器表数量,由以前的700多表,成了400多张了,和导出到其他的数据库的表数量相同

再次查询源数据库提示不存在的表发现没有了

导出的表的dmp容量没有减少,还增加了100KB多,不知道什么原理

请风哥讲一下原理,可能是什么原因导致的,我应该去哪个方向查,我没有删表,绝对没有删任何表,我对天发誓;
...全文
372 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2018-08-28
  • 打赏
  • 举报
回复
虽然我没怎么看懂,不过您让我了解了一个信的概览
「已注销」 2018-08-28
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:
再次查询源数据库提示不存在的表发现没有了

要不就是查错用户了,要不就是有人在创建了一些临时用的表,用完就删了。 前者的可能性最大。
虽然不是很懂,不过还是很感谢您

导出的表的dmp容量没有减少,还增加了100KB多,不知道什么原理

不要太在意这些细巧,统计信息的变化,也会影响导出文件的大小的。

你可以搜索一下“统计信息” 这个概念。
jdsnhan 2018-07-18
  • 打赏
  • 举报
回复
看看说不存在对象的状态及属主。
卖水果的net 2018-07-16
  • 打赏
  • 举报
回复
再次查询源数据库提示不存在的表发现没有了

要不就是查错用户了,要不就是有人在创建了一些临时用的表,用完就删了。 前者的可能性最大。


导出的表的dmp容量没有减少,还增加了100KB多,不知道什么原理

不要太在意这些细巧,统计信息的变化,也会影响导出文件的大小的。

你可以搜索一下“统计信息” 这个概念。
minsic78 2018-07-16
  • 打赏
  • 举报
回复
楼主确认下源库的实例参数deferred_segment_creation的设置,如果是默认的TRUE,那么exp无法导出从来没有插入过数据的表,你应该选择用expdp来完成导出,或者在exp导出前,主动为那些从来没有查如果数据的表分配物理空间。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧