关于使用Oracle新实例进行数据导入导出

近期有个需求,要将某个数据库的部分表结构、表数据以及序列导入到另一个数据库,在自己本地的数据库进行了尝试,具体步骤如下:
PS: 数据库为Oracle无特殊说明默认下一步

1、创建实例

1)打开Database Configuration Assistant。
在这里插入图片描述
2)选择创建数据库,点击下一步。
在这里插入图片描述
3)输入数据库名称,点击下一步。
在这里插入图片描述
4)对所有账户使用统一管理口令(方便使用),点击下一步。
在这里插入图片描述
5)字符集建议用UTF-8,点击下一步。
在这里插入图片描述
6)点击完成后,等待一段时间,实例创建成功,点击退出。
在这里插入图片描述

二、创建用户及使用

1)在tnsnames.ora中添加数据库信息

test =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test)
)
)

2)打开PLSQL,填写正确的信息后,登陆
在这里插入图片描述
3)创建新用户

create user uaucome identified by Root_12345;

4)授予用户角色权限

grant CONNECT, RESOURCE, DBA to uaucome;

5)查询表空间

select b.file_name 物理文件名,
       b.tablespace_name 表空间,
       b.bytes / 1024 / 1024 大小M,
       (b.bytes - sum(nvl(a.bytes, 0))) / 1024 / 1024 已使用M,
       substr((b.bytes - sum(nvl(a.bytes, 0))) / (b.bytes) * 100, 1, 5) 利用率
  from dba_free_space a, dba_data_files b
 where a.file_id = b.file_id
 group by b.tablespace_name, b.file_name, b.bytes
 order by b.tablespace_name

结果如图,记录表空间存储位置:
在这里插入图片描述
6)创建表空间

create tablespace uaucome

datafile 'D:\APP\YUZHIPING\ORADATA\TEST\UAUCOME.DBF'

size 1024m

autoextend on next 50m 

maxsize 6000m

extent management local;

7)完成的流程可能会用上的SQL贴上

--创建用户
create user uaucome identified by Root_12345;

--赋予用户角色,授权
grant CONNECT, RESOURCE, DBA to uaucome;

--查询表空间
select b.file_name 物理文件名,
       b.tablespace_name 表空间,
       b.bytes / 1024 / 1024 大小M,
       (b.bytes - sum(nvl(a.bytes, 0))) / 1024 / 1024 已使用M,
       substr((b.bytes - sum(nvl(a.bytes, 0))) / (b.bytes) * 100, 1, 5) 利用率
  from dba_free_space a, dba_data_files b
 where a.file_id = b.file_id
 group by b.tablespace_name, b.file_name, b.bytes
 order by b.tablespace_name
 
--查询角色权限
select grantee,privilege from dba_sys_privs where grantee = 'XXX';

--查看当前用户
select * from user_users; 

--当前用户被激活的全部角色
select * from session_roles;

--当前当前用户被授予的角色
select * from user_role_privs;

--查看某个用户所拥有的角色
select * from dba_role_privs where grantee = 'XXX';

--当前用户所拥有的全部权限
select * from session_privs;

--当前用户的对象权限
select * from user_tab_privs;

drop table test;

create table test (
       id varchar(20)
)

--创建表空间
create tablespace uaucome

datafile 'D:\APP\YUZHIPING\ORADATA\TEST\UAUCOME.DBF'

size 1024m

autoextend on next 50m 

maxsize 6000m

extent management local;

--查询数据库字符集
select userenv('language') from dual;

三、简单说一下2个数据库之间的部分数据导入导出

我常用的数据库管理工具有2个,一个是Navicat,一个是PLSQL。原本打算使用Navicat来进行数据传输的,如图所示:
在这里插入图片描述
(只要选择数据库后,将正确的模式填上即可进行2者之间数据传输,包括函数和序列等都可以选)。
后来在数据传输过程中报了一个错误:
[ERR] ORA-24811: less data provided for writing than indicated
网上查询了一下,结果如图:
在这里插入图片描述
上述解决方案查询尝试了一下无果(如果有解决方案的麻烦告知一下),就放弃了Navicat的数据传输,明明这么方便的说。
之后就用PLSQL导入了,导出表和导出对象,我这边先导表数据再导序列和函数等其他模块的,exp和imp的使用就不多说(数据比较多的话导出还是挺慢的)。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Oracle 数据导入导出可以使用 Oracle 提供的工具 exp 和 imp,或者使用数据泵工具 expdp 和 impdp。 1. exp 和 imp 工具使用 exp 是 Oracle数据导出工具,imp 是数据导入工具。使用 exp 工具导出数据时,需要提供用户名、密码、实例名、导出文件名等参数。例如,导出一个名为 test 的用户的所有表和数据: exp test/password@instance file=test.dmp full=y 其中,test/password 是用户名和密码,instance 是实例名,test.dmp 是导出文件名,full=y 表示导出所有表和数据使用 imp 工具导入数据时,需要提供用户名、密码、实例名、导入文件名等参数。例如,导入 test 用户的数据: imp test/password@instance file=test.dmp full=y 2. expdp 和 impdp 工具使用 expdp 和 impdp 工具是 Oracle 数据库提供的数据泵工具,可以导出导入数据、元数据和对象。使用 expdp 工具导出数据时,需要提供用户名、密码、实例名、导出文件名等参数。例如,导出一个名为 test 的用户的所有表和数据: expdp test/password@instance directory=dir dumpfile=test.dmp full=y 其中,test/password 是用户名和密码,instance 是实例名,dir 是导出目录,test.dmp 是导出文件名,full=y 表示导出所有表和数据使用 impdp 工具导入数据时,需要提供用户名、密码、实例名、导入文件名等参数。例如,导入 test 用户的数据: impdp test/password@instance directory=dir dumpfile=test.dmp full=y 其中,test/password 是用户名和密码,instance 是实例名,dir 是导入目录,test.dmp 是导入文件名,full=y 表示导入所有表和数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值