Oracle 11g 在备份导出时缺少表的问题

ORACLE 11G中有个新特性,当表无数据时,不分配segment,以节省空间。

解决方法:

1)insert一行,再rollback就产生segment了

  该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导出空表。

  2)设置deferred_segment_creation参数

SQL> show parameter deferred_segment_creation
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation            boolean     TRUE
SQL> alter system set deferred_segment_creation=false;
系统已更改。
SQL> show parameter deferred_segment_creation
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation            boolean     FALSE

  需注意的是:该值设置后对以前导入的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。如需导出之前的空表,只能用第一种方法。

3)批量处理空表

首先使用下面的sql语句查询一下当前用户下的所有空表

select table_name from user_tables where NUM_ROWS=0;

  然后用一下SQL语句执行查询

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

  假设我们这里有空表TBL_1,TBL_2,TBL_3,TBL_4,则查询结果如下:

alter table TBL_1 allocate extent;
alter table TBL_2 allocate extent;
alter table TBL_3 allocate extent;
alter table TBL_4 allocate extent;

  最后我们把上面的SQL语句执行就可以了。

时间: 2024-12-28 21:21:23

Oracle 11g 在备份导出时缺少表的问题的相关文章

oracle 11g expdp 备份解决空表无法备份

之前做oracle 备份用的都是exp,但exp在11g上存在一个问题,就是无法导出空表. 最近做oracle 数据迁移,需要将空表一同导出,经过搜索,找到了expdb 于是有了此文. 此文仅作记录其中问题,以及我个人对expdp 的理解 在使用expdp impdp之前,需要先建立目录对象,并赋予用户权限.这是因为expdp impdp只能通过DIRECTORY对象关系,将数据存入系统目录. 注:红色部分要替换成实际值 expdp 导出 创建DIRECTORY对象和OS PATH映射,并赋予权

Oracle 11g完全卸载方案(注册表清理)

1.如果数据库配置了自动存储管理(ASM),应该先删除聚集同步服务CSS(Cluster Synchronization Services). 删除CSS服务的方法是在DOS命令行中执行如下命令: localconfig delete 2.在"服务"窗口中停止oracle的所有服务. 3.在"开始"菜单中依次选择 "程序" / "Oracle-OraDb11g_home1" / "Oracle Installatio

解决11g导出时,空表不能导出问题

--根据上述查询,可以构建针对空表分配空间的命令语句,如下:Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 --批量输出上述生成的SQL语句,建立C:\createsql.sql,其内容如下:set heading off;set echo off;set feedback off;set termout on;spool d:/dropobj.sql;--Selec

Oracle 11g 利用备份复制数据库

测试在同一机器不同数据库实例复制数据库 1.环境 Target DB: IP:10.131.119.114 HOSTNAME:openstack-node1.example.com ORACLE_SID:orcl11g Auxiliary DB: IP:10.131.119.114 HOSTNAME:openstack-node1.example.com ORACLE_SID:aux 2.创建Auxiliary DB 参数文件 [[email protected] dbs]$ cat inita

(总结)Oracle 11g常用管理命令(用户、表空间、权限)

1.启动oracle数据库: 从root切换到oracle用户进入:su - oracle 进入sqlplus环境,nolog参数表示不登录:sqlplus /nolog 以管理员模式登录:sqlplus / as sysdba 启动数据库startup;停止数据库shutdown immediate远程连接数据库sqlplus /nologconn sys/[email protected]:1521/orainstance as sysdba也可以直接运行:dbstart#启动数据库的脚本d

Oracle 11g rman备份相关

1.验证备份是否可以被成功还原,完全还原确定需应用哪些备份集和归档日志. RMAN> restore database preview; Starting restore at 07-OCT-15 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=202 device type=DISK allocated cha

oracle 11g 基于备份的rman duplicate

基于备份的rman duplicate 命令来创建standby database 前提条件: 保证原库数据库的备份,归档对于standby 端是完全可见的, 这里假设原库和目标端数据文件,日志文件等所有文件存放结构完全相同: 配置主库,备库静态监听,主库处于归档模式,和force logging 1.对主数据库进行必要的更改. a. 启用 force logging. b. 如果没有密码文件,则创建密码文件. c. 创建备用 redo 日志. d. 修改参数文件,使其适用于 Dataguard

Oracle 11g exp 导出表不全

今天在oracle11g 上用exp命令导出的时候遇到一个奇怪的现象,无数据的表exp总是导不出来,查询了一下发现这是oracle 11g的新特性,当表无数据时,不分配segment,以节省空间.而使用exp命令时,无Segment的表不会被导出. 解决办法: select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0; 结果形如: Alter table XXX allocat

Oracle 11g新特性direct path read引发的系统停运故障诊断处理

黎俊杰 | 2016-07-28 14:37 声明:部分表名为了脱敏而用XX代替 1.故障现象 (1)一个业务系统输入用户名与密码后无法进入首页,表现为一直在运行等待,运行缓慢 (2)整个系统无法正常使用,接近停运状态 2.故障解决方法 调整数据库参数alter system setevent='10949 trace name context forever, level 1'来关闭"direct path read"(直接路径读)特性,使SQL语句可以从缓存中查询数据,达到降低I/