新入职迁移orcale数据库到本地

冷暖自知 提交于 2020-10-31 02:03:17

一般公司新入职是需要拷贝公司数据库的表到本地,防止那些删库跑路的狠人动了数据库后跑路(当然实际情况是公司有专门的的数据库管理员,即DBA,如果你只是个开发人员,公司不会给你动库的权限的,所以你也不用担心删库跑路,那些都是DBA干的事情).

开发时我们都是需要把数据库拷贝到本地使用的,我今天要记录的就是我刚入职时,备份数据到本地的一些操作,希望能对你有一些帮助...(*❦ω❦) .

1. 首先在本地创建表空间和用户

创建表空间,指定表空间的位置,表空间的大小,并设置自动增长及自动增长值
create tablespace test datafile 'e:\test .dbf' size 100m autoextend on next 10m;
新建用户并指定表空间
create user test identified by test default tablespace test;
如果你的数据库已经创建过表空间,那么直接执行新建用户即可,并且创建时也无需指定表空间
create user test identified by test;

新建用户时一定要使用带有DBA权限的用户登录数据库进行创建,一般使用system用户

2. 给新建的用户授权(一般授予连接和开发者权限)

语法:grant 权限名称 to 用户名称
grant connect,resource to test;

3. 导出表之前先处理空表

因为orcale数据库默认是不导出空表的,如果你发现你导出的表只有有数据的,没有数据的表都没有导出,那你肯定是忘记这一步了...

首先你应该查到需要处理的空表,然后将查到的语句复制粘贴执行即可

select 'alter table '||table_name||' allocate extent;'from user_tables where num_rows=0;

4. 导出远程数据库

语法:exp 远程用户/密码@ip/数据库名称 full=y file=本地保存位置;
exp paperjy/paperjy@198.98.40.33/ORCL full=y file=E:/paperjyless.dmp

5. 导入本地数据库

语法:imp 本地用户/密码@数据库名称 full=y file=本地保存的导出库;
imp test/test[@ORCL](https://my.oschina.net/u/3674287) full=y file=e:/paperless.dmp;

上面说的是orcale数据库安装早本地的情况,如果你是安装在虚拟机的linux系统上,加上ip即可.

语法:imp 本地用户/密码@ip/数据库名称 full=y file=本地保存的导出库;

上面基本就是备份数据库到本地的所有步骤了,如果你中途操作失误,可以删除重来,我这边就啰嗦一下,把删除的一些命令也都写了吧

6.删除所有表

查询删除所有表的sql

SELECT 'DROP TABLE '||TABLE_NAME||';' FROM CAT WHERE TABLE_TYPE='TABLE';

然后将查到的sql粘贴执行即可. 当然你也可以删除用户再新建,或者直接新建

select * from dba_users; 

你也可以只查询用户名,

select username from dba_users; 

然后删除用户

DROP USER test CASCADE;

如果你删除用户时报错,报错信息为:ORA-01940: 无法删除当前连接的用户,这是当前用户被占用,就跟你平时打开的word删不掉是一个原理,所以我们应该先查到它,然后删掉它

select username, sid, serial# from v$session;--查询用户连接
alter system kill session '222,13219' ;--杀掉用户连接
DROP USER test CASCADE;--删除用户

表空间一般不需要删除,如果你想删除的话也可以

select * from dba_tablespaces;--查询所有表空间
drop tablespace test including contents and datafiles;--删除表空间及本地表空间文件

然后你就可以快乐的重新导入一遍啦O(∩_∩)O哈哈~

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!