oracle用exp如何导出某个用户下的所有的表,比如scott用户下的表,改怎么写exp。

oracle用exp如何导出某个用户下的所有的表,比如scott用户下的表,改怎么写exp。,第1张

运行 cmd

》exp 用户名/密码@IP地址:1521/实例名 file=scott20140218dmp log=scott20140218log

--------------------------------

上面这个语句是导出远程服务器的数据的

导出本机数据库数据的话,就把上面语句“IP地址:1521/”这部分去掉就可以了。

--------------------------------

或者你直接用plsql工具导也行

工具->导出表,在窗口中选择“Oracle 导出”直接选择输出文件路径就行了

你可以通过查询dba_uses视图来确定有哪些用户和其默认的和临时的TABLESPACE,然后再在另一台需要导入的服务器上,建立好相关的TABLESPACE 后,再建立用户,并赋予相关权限后,进行导入。

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的方式,来解决导出之前建立的空表的问题。说明如下:

31

使用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

-----------

32

构建对空表分配空间的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:\createsqlsql,其内容如下:

-----------

set

heading

off;

set

echo

off;

set

feedback

off;

set

termout

on;

spool

C:\allocatesql;

Select

'alter

table

'||table_name||'

allocate

extent;'

from

user_tables

where

num_rows=0;

spool

off;

-----------

执行C:\createsqlsql,命令如下:

-----------

SQL>@

C:\createsqlsql;

-----------

执行完毕后,得到C:\allocatesql文件。

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

34

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

执行C:\allocatesql,命令如下:

-----------

SQL>@

C:\allocatesql;

-----------

执行完毕,表已更改。

34

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

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

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

可以用exp语句导出。

1、在本地oracle下找到tnsnamesora文件,一般在~\oracle\product\1020\db_1\network\ADMIN目录下。

2、打开tnsnamesora文件(文本方式打开即可),添加如下内容:

bendi =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 远程数据库IP地址)(PORT = 数据库端口号))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = 数据库服务名)

    )

  )

其中“bendi”可自定义,然后还需要知道远程数据库IP地址,数据库端口号,及数据库服务名。

3、本地打开命令提示符,输入以下内容:

exp 数据库用户名/密码@本地实例名 file=路径:\文件名dmp log=路径:\日志名log owner=数据库所属用户

4、敲击电脑回车键,等待导出结束即可。

首先,第一步里的connect to orcl identified by orcl是你需要连接的远程数据库orcl(using后面那个)的用户名 / 密码,而不是你本地的用户名密码;

比如你本机叫scott/tiger,需要连接远程服务器上的exptest/exptest,那你这里就需要些成"connect to exptest identified by exptest",第四步导出的时候写"expdp scott/tiger ";而且如果导出表的话,在表前面还要加上远程那个用户名,例如要导出testTable,则要写成"expdp scott/tiger tables=exptesttestTable "这样

其次,要保证你字都没打错,如你建立的link是orlink 还是ytlink,还有第三步里是orcl打成了oacl

楼主可以使用oracle客户端软件 pl/sql develper 进行exp导出。

使用该工具时可以先全选AA用户的所有对象,

再按住control键单击TAA TBB TCC进行取消,不导出他们仨。

如此可满足你的要求。

对于:oracle的exp,就你的问题简答如下:

1、用户名和密码,提供这两个参数的作用是什么

ORACLE是有权限管理及加密的,不知道用户名与密码会让你导不出数据。

(当然,如果你能本地登录安装ORALCE的地服务器,一般可以用管理员身份强登后改密码进行相关处理)。

2、提供用户名是导出该用户下的所有内容吗?

ORACLE中,用户与数据库是相对独立的概念,就象某几个人与某几个办公室,并不是一一对应关系,一个人可以有几个办公室的钥匙,当然,也可能一个办公室的钥匙都没有,或是只有能过窗户查看某个办公室内情况的权。

所以,某个用户,可以导出该用户下的内容,也可以导出其它用户的内容,前提是你登录的这个用户有相关的权限。

比如sys用户一般就是超级用户,可以导出所有用户的对象(表、存储过程,等等)。

3、那提供的数据库名又是干什么的

就是上面我说的“办公室”的概念了。一般exp一次只能导出一个“办公室”(数据库)里的数据。

你倒入时也用的是整个参数吗?如果是整个倒入,应该不会出这个问题的。是你的应用用户没有导过来么?如果应用用户没有,建议你再重新导入。

下面这个sql可以生成建用户有脚本,在源库执行,把执行结果放目标库里再执行:

select 'create user '||username||' identified by values '''||password||''' default tablespace '||default_tablespace||' temporary tablespace '||temporary_tablespace||';' from dba_users;

以上就是关于oracle用exp如何导出某个用户下的所有的表,比如scott用户下的表,改怎么写exp。全部的内容,包括:oracle用exp如何导出某个用户下的所有的表,比如scott用户下的表,改怎么写exp。、oracle 如何导出所有用户名和密码 我用exp导出整个数据库之后。。在另一个服务器进行导入,却发现没有帐号、如何用EXP导出oracle数据库中没有记录的表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存