一般公司新入职是需要拷贝公司数据库的表到本地,防止那些删库跑路的狠人动了数据库后跑路(当然实际情况是公司有专门的的数据库管理员,即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哈哈~
来源:oschina
链接:https://my.oschina.net/u/4235068/blog/3119305