Oracle dmp 导出导入、锁表解决等开发笔记

1、本文简介
        项目开发中使用Oracle,除了常用的sql语句,有时还会遇到锁表、数据迁移、启动监听等问题或需求,本文做一个工作笔记小结:
1.1 锁表问题解决
1.2 启动 oracle 监听
1.3 dmp 导出导入
1.4 删除oracle用户及其对象、表空间

2、详细介绍

2.1 锁表问题解决
**查询锁表**
SELECT object_name, machine, s.sid, s.serial#
FROM gv$locked_object l, dba_objects o, gv$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid;
**释放造成锁表的session**
--alter system kill session 'sid, serial#';
例如:
ALTER system kill session '66, 1666';

2.2 启动 oracle 监听
启动 oracle 监听(已验证,linux环境下)
$ sqlplus/nolog
SQL> connect /as sysdba
SQL> startup
SQL> exit
**注释:切换到oracle 安装目录下 bin**
$ cd /u01/app/oracle/product/11.2.0.4/bin
$ lsnrctl start

2.3 dmp 导出导入
**dmp文件导出**
        dmp文件导出用的比较多的一般是三种,他们分别是:导出整个数据库实例下的所有数据、导出指定用户的所有表、导出指定表。
1、将数据库ORACLE完全导出,用户名system密码manager 导出到c:\daochu.dmp中
exp system/manager@ORACLE file=c:/daochu.dmp full=y

2、将数据库中USER01用户与USER02用户的表导出
exp system/manager@ORACLE file=d:/daochu.dmp owner=(USER01,USER02)

3、将数据库中的表table01、table02导出
exp USER_NAME/PASSWORD@ORACLE file= d:/data/newsmgnt.dmp tables=(table01,table02) 
**备注**:
1、上面的system为用户名,manager为密码,ORACLE为数据库实例名,其实不一定非得用system用户,只要是拥有管理员权限的用户都可以。
2、full( 全库导出): 导出除ORDSYS,MDSYS,CTXSYS,ORDPLUGINS,LBACSYS 这些系统用户之外的所有用户的数据
3、exp 命令需在 cmd 窗口中执行,不能在sql 中执行;
4、exp 不会导出空表(可能会对存储过程有影响)
5、远程:直接输入 exp 用户名/密码@远程的IP:端口/实例 file=存放的位置:\文件名称.dmp full = y

**dmp文件导入**
1、创建表空间:
create tablespace tablespace_name datafile '/home/oracle/news/123_data.dbf' size 20000M autoextend on;    #  autoextend  表空间自增长
2、创建用户:
create user user_name01 identified by 123456;
3、把表空间赋予用户
alter user user_name01 default tablespace tablespace_name ;
4、赋予用户dba权限
grant dba to user_name01 ;
5、导入dmp
imp user_name01/123456@edcrm file=/home/oracle/20180807.dmp fromuser=user_name02 touser=user_name01 ignore=y;  

**备注**:
1、edcrm 代表实例;也可以这样写:
     imp coast/coast@127.0.0.1:1521/sde ,指定用户、密码、IP、端口、数据库(实例 or 服务名)。其中,ip,端口,实例(服务名),视情况是否填写;
2、fromuser 代表dmp文件的原有用户,touser 代表新建需导入的表空间的用户;
3、ignore=y 表示忽略创建错误,继续后面的操作;
4、imp 命令需在 cmd 窗口中执行,不能在sql 中执行;
5、创建表空间时的dbf文件路径,路径需确保正确,且会自动在该路径下生成dbf文件;
6、路径的斜杠,正斜杠(/)、反斜杠(\)都能识别;
7、对于fromuser 的用户名不清楚的情况下,可以先随便写一个,然后执行。执行窗口会有报错提示,且含有正确用户名;

2.4 删除oracle用户及其对象、表空间

在dmp导入时,创建有误或者想删除以前旧dmp,此命令可以派上用场(虽说很简单哈,但免得再去百度)
SQL> drop user userName cascade;    # 删除oracle用户及其对象
SQL> drop tablespace tablespaceName including contents and datafiles cascade constraint;    # 删除表空间
**备注**:
1、当用户无法删除时,查看进程并杀死
$ sqlplus /as sysdba
SQL> select sid,serial# from v$session where username= userName;
SQL> alter system kill session 'sid,serial';

PS:  哈哈,不过,像dmp的导出导入、启动监听等操作,工作上一般都是交由dba或者运维来专门处理的。微笑脸《-- | v | --》

 

评论区欢迎讨论!觉得有用点个赞再走吧。感谢!!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值