Oracle数据库备份(导入导出)
1.数据库的导出;使用pl/sql 工具

2.设置参数

3.感觉没有多少数据;居然导出了160M文件
4.导出完 后 导入;

5.设置导入

6.这样会产生的问题:
1. 如果表里没有数据 就不会备份;就是空表不会备份
如何查询空表
方法一:select * from all_all_tables
where num_rows='0'
and owner='ASSP_TEST_0725'
方法二:select table_name from user_tables where NUM_ROWS=0;
7.产生空表原因
11G中有个新特性,当表无数据时,不分配segment,以节省空间
1、insert一行,再rollback就产生segment了。
该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导出空表。
2、设置deferred_segment_creation 参数
需注意的是:该值设置后对以前的空表不产生作用,仍不能导出,只能对后面新增 的表产生作用。如需导出之前的空表,只能用第一种方法。
注意并且要重新启动数据库,让参数生效。
show parameter deferred_segment_creation (这句要在命令窗口执行;必须用DBA角色登录)
NAME TYPE VALUE
------------------------------------ ----------- ----------
deferred_segment_creation boolean TRUE
设置成可以导出空表
SQL> alter system set deferred_segment_creation=false;
- 删除用户所有表
方法一 使用 pl/sql客户端删除;全选然后删除

方法二: 执行下面的;然后 拷出来所有数据到一新窗口执行
select 'drop table '||table_name||';' from cat where table_type='TABLE'

