如何用EXP导出oracle数据库中没有记录的表

如何用EXP导出oracle数据库中没有记录的表,第1张

1、Oracle11g默认对空表不分配segment,故使用exp导出Oracle11g数据库时,空表不会导出。

2、设置deferred_segment_creation

参数为FALSE后,无论是空表还是非空表,都分配segment。

在sqlplus中,执行如下命令

SQL>alter

system

set

deferred_segment_creation=false

查看:

SQL>show

parameter

deferred_segment_creation

该值设置后只对后面新增的表产生作用,对之前建立的空表不起作用。

3、可以使用手工为空表分配Extent的方式,来解决导出之前建立的空表的问题。说明如下:

3.1

使用ALLOCATE

EXTENT的说明

使用ALLOCATE

EXTENT可以为数据库对象分配Extent。其语法如下:

-----------

ALLOCATE

EXTENT

{

SIZE

integer

[K

|

M]

|

DATAFILE

'filename'

|

INSTANCE

integer

}

-----------

可以针对数据表、索引、物化视图等手工分配Extent。

ALLOCATE

EXTENT使用样例:

ALLOCATE

EXTENT

ALLOCATE

EXTENT(SIZE

integer

[K

|

M])

ALLOCATE

EXTENT(DATAFILE

'filename')

ALLOCATE

EXTENT(INSTANCE

integer)

ALLOCATE

EXTENT(SIZE

integer

[K

|

M]

DATAFILE

'filename')

ALLOCATE

EXTENT(SIZE

integer

[K

|

M]

INSTANCE

integer)

针对数据表 *** 作的完整语法如下:

-----------

ALTER

TABLE

[schema.]table_name

ALLOCATE

EXTENT

[({

SIZE

integer

[K

|

M]

|

DATAFILE

'filename'

|

INSTANCE

integer})]

-----------

故,需要构建如下样子简单的SQL命令:

-----------

alter

table

aTabelName

allocate

extent

-----------

3.2

构建对空表分配空间的SQL命令,

查询当前用户下的所有空表(一个用户最好对应一个默认表空间)。命令如下:

-----------

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

-----------

批量输出上述生成的SQL语句,建立C:\createsql.sql,其内容如下:

-----------

set

heading

off

set

echo

off

set

feedback

off

set

termout

on

spool

C:\allocate.sql

Select

'alter

table

'||table_name||'

allocate

extent'

from

user_tables

where

num_rows=0

spool

off

-----------

执行C:\createsql.sql,命令如下:

-----------

SQL>@

C:\createsql.sql

-----------

执行完毕后,得到C:\allocate.sql文件。

打开该文件会看到,已经得到对所有空表分配空间的命令SQL语句。

3.4

执行SQL命令,对空表分配空间:

执行C:\allocate.sql,命令如下:

-----------

SQL>@

C:\allocate.sql

-----------

执行完毕,表已更改。

3.4

此时执行exp命令,即可把包括空表在内的所有表,正常导出。

另外:Oracle11g中,对密码是大小写敏感的,即密码中的字母是区分大小写的。

在Oracle10g中及以前,密码中的字母大小写无所谓。

1、首先进入命令行,点击开始,输入cmd。

2、键盘按回车键,出现命令行窗口。

3、接着导入的命令是:imp 用户名/密码@网络服务名 file=xxx.dmp full=y。

4、导出的命令是:exp 用户名/密码@网络服务名 file=xxx.dmp tables=(表名)

5、就可以进行dmp数据库表结构和表数据的同时导入导出了,这样就完成了。

导出整个实例 exp dbuser/oracle file=oradb.dmp log=oradb.log full=y consistent=y direct=y user应具有dba权限 导出某个用户所有对象 exp dbuser/oracle file=dbuser.dmp log=dbuser.log owner=dbuser buffer=4096000 feedback=10000 导出一张或几张表 exp dbuser/oracle file=dbuser.dmp log=dbuser.log tables=table1,table2 buffer=4096000 feedback=10000 导出某张表的部分数据 exp dbuser/oracle file=dbuser.dmp log=dbuser.log tables=table1 buffer=4096000 feedback=10000 query=\”where col1=\'…\' and col2 <…\” 不可用于嵌套表 以多个固定大小文件方式导出某张表 exp dbuser/oracle file=1.dmp,2.dmp,3.dmp,… filesize=1000m tables=emp buffer=4096000 feedback=10000 这种做法通常用在:表数据量较大,单个dump文件可能会超出文件系统的限制 直通路径方式 direct=y,取代buffer选项,query选项不可用 有利于提高下载速度 consistent选项 自export启动后,consistent=y冻结来自其它会话的对export *** 作的数据对象的更新,这样可以保证dump结果的一致性。但这个过程不能太长,以免回滚段和联机日志消耗完 imp 将exp下载的dmp文件上载到数据库内。 buffer:上载数据缓冲区,以字节为单位,缺省依赖 *** 作系统 commit:上载数据缓冲区中的记录上载后是否执行提交 feeback:显示处理记录条数,缺省为0,即不显示 file:输入文件,缺省为expdat.dmp filesize:输入文件大小,缺省为 *** 作系统最大值 fromuser:指明来源用户方 ignore:是否忽略对象创建错误,缺省为n,在上载前对象已被建立往往是一个正常现象,所以此选项建议设为y indexes:是否上载索引,缺省为n,这是指索引的定义而非数据,如果上载时索引已建立,此选项即使为n也无效,imp自动更新索引数据 log:log文件,缺省为无,在标准输出显示 rows:是否上载表记录 tables:输入的表名列表 touser:指明目的用户方 导入整个实例 imp dbuser/oracle file=oradb.dmp log=oradb.log full=y buffer=4096000 commit=y ignore=y feedback=10000 导入某个用户所有对象 imp dbuser/oracle file=dbuser.dmp log=dbuser.log fromuser=dbuser touser=dbuser2 buffer=2048000 commit=y ignore=y feedback=10000 导入一张或几张表 imp dbuser2/oracle file=user.dmp log=user.log tables=table1,table2 fromuser=dbuser touser=dbuser2 buffer=2048000 commit=y ignore=y feedback=10000 以多个固定大小文件方式导入某张表 imp dbuser/oracle file=(1.dmp,2.dmp,3.dmp,…) filesize=1000m tables=emp fromuser=dbuser touser=dbuser2 buffer=4096000 commit=y ignore=y feedback=10000


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10819231.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-11
下一篇2023-05-11

发表评论

登录后才能评论

评论列表(0条)

    保存