Oracle数据库摸索记

辛酸的探索史-数据库导入

在接到领导让我导入oracle数据库的安排后,拿着一个将近三个多G的dmp的文件不知所措,也许你也遇到和我一样的情形。但或许,你的领导会仔细的多(我没有在说领导的坏话),告诉你其他和这个数据库相关的事项。可我没有那么好运,我可没有任何关于oracle的储备知识,也没得到任何提示。在群里问了几天也没有人帮忙,当然,和我在周末问问题有关吧,大神应该不会加很多班吧!希望这篇博文能帮到和我一样,以前没有接触过oracle数据的人,但又遇到和我一样需要从其他用户导入数据库的。当然,有不足之处希望大神指点。


相关工具

SQL Plus

安装完Oracle 11g之后就得到了这个命令行工具,也被人称为官方的开发工具,可以在命令提示符输入sqlplus进入。我们的命令行都是在这里面进行操作,如果不清楚可以用help命令进行查看。

PLSQLDeveloper

PLSQLDeveloper是一个收费软件,但他也是Oracle数据库使用者使用最多的一个管理工具。它提供一个可视化图形界面,所以我觉得没有Navigate Permium那么好看。但它能帮助你更快完成一些操作,例如导入导出,查看用户等等。另外命令行的操作也有保留,在工具栏的File里有SQL Window和Command Window。

PLSQLDeveloper

对象

表空间

我们把它称为永久表空间,之所以称它为永久表空间,是因为它可以永久保存数据。它的职责就是保存我们的数据库表,数据内容。我们可以通过以下命令创建表空间:

create tablespace test datafile 'D:\Users\Administrator\Destop\test.dbf' size 20m autoextend on next 20m maxsize 2048m extent management local;

这段代码的意思是:我们需要在D:\Users\Administrator\Destop下创建一个名叫test.dbf的表空间文件,大小为20M,如果表的数据超过了20M,系统将会自动加20M,最大能加到2048M。另外,一切在数据库的增删改查(create、delete、drop、alter、select),在语句结束的结尾都要加上分号,否则会到下一行。

临时表空间
临时表空间和永久表空间比较类似,都是用来储存表数据的。只不过它的“临时”二字,代表它无法长久保存。事实如此,它是用来保存我们对数据的操作,例如我们执行了数据库操作,临时表空间会把操作暂存在这里。直到你进行完下一次操作,这里的数据才会被清空。在实际使用中,我们都会自己创建临时表空间,当然你也可以多个用户使用同一个临时表空间。创建临时表空间的代码:

create temporary tablespace temp_test tempfile 'D:\Users\Administrator\Destop\temp_test.dbf' size 20m autoextend on next 20m maxsize 2048m extent management local;

用户 

Oracle内置很多账户,例如sys、system和scott等。sys是数据库的管理员,而system是数据库的所有者,注意的是sys的权限要比system的更高一些。在sys登录时,需要用以下命令登录:

sys/设置的密码 as sysdba

为什么要把用户放在永久表空间和临时表空间后面来写?先看下创建用户的命令:

create user xy identified by 123 default tablespace test temporary tablespace temp_test;

这句命令的意思是:我要创建一个用户名为xy密码为123,永久表空间为test,临时表空间为temp_test的用户。当然,我们也可以在创建用户的时候不指定表空间,那系统就会默认给他使用普通用户的表空间。我们也可以在创建之后再给他修改表空间:

alter database default temporary tablespace temp_test;

光创建用户而不给它权限就是耍流氓的行为,不给权限意味着不能读写数据,不能连接等等等。所以我们给它权限,如有多个权限用“,”隔开:

grant connect,resource,dba to xy;

含义:给用户xy授予连接权限,访问数据和管理员的权限(授予权限之前一定要先登录到管理员账户sys,普通账户无法授予权限)。授予完权限之后,我们先退出管理员账户并登录我们刚才创建的用户:

disconnect
connect xy/123;

显示成功之后,代表相关权限大致授予完毕。最后是导入数据库,在导入数据库之前我们应该知道要导入数据库的相关信息。这时我们应该向提供给我们数据库文件人员询问清楚,数据库表空间之前存在哪个路径(这个我认为是有必要的,因为如果不在对应盘符创建好相应多级文件夹,导入时会报错)、数据库里有哪些用户、密码分别是什么、永久表空间名称和临时表空间等信息。我接到任务之后就导入,一直失败也就是因为领导没有给我任何信息导致的。接下来看命令:

imp xy/123@orcl file=D:\test.dmp grants=n rows=y ignore=y fromuser=[user1, user2] touser=[user1, user2];

这里注意:

  • 导入操作请退出sqlplus,也就是在普通的命令行界面写,否则无法识别你的导入语句
  • @orcl是你的实例名,在数据库安装的时候你可以填写。如果你不记得的话,那就不要填,默认是本机。
  • 为什么formuser和touser都是一样的用户?因为数据库导入要明确,这个数据库导入前有哪些用户,导入给哪些用户,如果不是映射关系,就会出现数据缺失的问题。当然fromuser和touser这两个数组里面的值可以是不一样的,例如fromuser=[user1,user2] touser[user2,user3]。但请保证它们的数量是一样的,否则结果你懂得~
  • rows=y,如果你只是想导入表结构而不想要数据,那就填n,一般我们都是需要数据的,所以为y。ignore=y,如果之前已经导入过,后来又拿了一份有部分数据变化的文件过来,你导进去肯定会报错说有数据已存在,这是很正常的,如果不想看到这些错误,就把ignore设为y,但建议为n,因为不清楚会不会有其他问题。

这里写图片描述

成功导入完之后,会显示成功终止导入,未出现警告(或但出现警告)。然后自己看看数据有无缺失,看着那么多数据库,想想花了那么多时间的艰辛。会有种Oracle从删库到跑路的念头,但还是别学携程那位DBA了,因为我们好太多了,就这样,完毕!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值