实习期遇到的 导入导出的一些问题,在此做一个总结
1.数据库B上(以管理员身份)创建导出使用的用户
SQL> create user RES_CUSH_TEST_LESS identified by RES_CUSH_TEST_LESS;
2.1授予连接角色,资源角色给用户
SQL> grant connect,resource to RES_CUSH_TEST_LESS;
2.2授权创建数据链接
SQL> grant create table,create database link to RES_CUSH_TEST_LESS;
或者直接给DBA角色
SQL> grant dba to RES_CUSH_TEST_LESS;
3.数据库B上创建存放导出数据目录
SQL> create directory dbdata AS '/oradata1/dumpfile';
4.给用户授予目录读写权限
SQL> grant read,write on directory dbdata to RES_CUSH_TEST_LESS;
5.以daochu身份创建DBLINK
SQL> create public database link linkcush
connect to system identified by system
using '(description = (address_list = (address = (protocol = tcp)(host = 10.45.59.190)(port = 1521)))
(connect_data = (service_name = orcl)))'
注意:
这里使用的用户名密码是远程数据库中的用户名和密码,导出使用的是这个用户,它必须有导出的权限,
如果没有须在数据库A中授权;
在数据库A中为用户daochuA授导出权限
SQL> grant exp_full_database to daochuA;
6.执行导出(导出数据库A中用户'daochu'的数据)
nohup expdp RES_CUSH_TEST_LESS/RES_CUSH_TEST_LESS network_link=linkcush schemas=RES_CUSH_TEST directory=dbdata dumpfile=exp%u.dmp;
7.导入到数据库
nohup impdp RES_CUSH_TEST_LESS/RES_CUSH_TEST_LESS directory=dbdata dumpfile=exp01.dmp remap_schema=RES_CUSH_TEST:RES_CUSH_TEST_LESS logfile=1229.log remap_tablespace=TBS_GENERAL:GENERAL2;
查看表空间大小
select a.TABLESPACE_NAME,sum(nvl(a.bytes,0)) from dba_free_space a group by a.TABLESPACE_NAME