Navicat创建Oracle数据库以及项目开发中总结的经验(Oracle与Mysql的不同)

1、Oracle创建数据库

1、新建用户
点击新建查询即可

create user 用户名 identified by 密码;
例如:create user mydata identified by 123456;

2、授权
还是在新建查询中

grant connect, resource to 用户名;//之前的mydata用户名
grant dba to 用户名;//还是之前的mydata

这里与Mysql很大的不同就是,navicat里点击右键并没有新建Oracle数据库的选项,其实操作上面的语句后就相当于创建的用户就是那个数据库
注意:刷新一下

2、项目开发总结经验(使用Navicat操作Oracle和Mysql的注意事项,希望对您有帮助)

2.1场景

项目即将上线,需要我将开发中新建的oracle数据库表的结构,以及新增了字段的表alert语句,导出后放在一个sql文件中(为什么放一个?方便管理嘛,到时候部署的时候难道还一个一个导进去吗?),我要做的就是去测试导出来并且合并后的数据库在一个新的数据库环境下运行是否没有问题。

于是我有了上面的第一步操作,新建 库(与其说库不如说是拥有权限的用户),然后使用导入之前合并的sql文件,这是问题来了!!
执行失败,并且navicat报了一个错误:

ORA-01430:column being added already exists in table

没理由呀!我是新建的库,里面连表都没有,为何会报字段已存在的问题。
经过大佬们的一番鉴定,我的sql文件出错了,并且经过刚刚的操作,问题很大!!
因为我不小心把sql文件中所有相关表的数据都删了!
在这里插入图片描述以前用navicat操作MySQL数据库的时候,重来没有这样的问题,至于为什么,我总结了以下几点。

2.2注意事项

  • 导出的Oracle文件或是MySQL文件里面的语句都会带上先判断表是否存在,存在就先删除再创建的语句,也就是第一句Drop xxxx之类的,这条语句执行后不仅仅是删表还会删除所有的数据。因此在操作前最好先删除所有的Drop以免出现意外!
  • 即使是用同样的navicat,导出的Oracle文件和Mysql有一些区别,Oracle的所有表名都会带上当前的数据库名,比如我的Oracle数据库叫PT20,其中有张表叫SYS_USER,那么生成出来的语句中则是"PT20"."SYS_USER",而MySQL则是"SYS_USER",因此在执行文件的时候依然是在PT20数据库执行,现在你知道为什么我会删除原来表中所有的数据了吧!
  • 最后就是建议,常备份啊!!!在工具里的数据同步选项,它可以做到移植一个数据库里所有的表,或者是带上所有的数据,并且表相同的情况下,如果字段不同还可以进行更新!!牛掰!

PS: navicat是一个很好用的工具,可能因为我还是小白的原因,对oracle也不熟悉,造成了一些工作上的小插曲,但是还好,毕竟是测试库,数据丢了还可以自己建,而且总感觉是我leader故意让我踩坑一样,不然怎么那么淡定!
以上就当是工作经验上的一些总结,记录下来也是提醒以后的自己在操作数据库方面要多加小心,也希望对茫茫人海中看到这篇文章的你有些许帮助!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值