Oracle数据库操作(plsql):死锁处理、表空间增加、dmp导入导出(window、linux)

2023-05-16

前言

Oracle数据库操作:死锁处理、表空间增加、dmp导入导出(window、linux)
场景:创建一个新项目,数据库基于现有的库进行新建
博客地址:芒果橙的个人博客 【http://mangocheng.com】

文章目录

    • 前言
    • 一、ORA-02049:解决分布式事务问题
    • 二、表空间操作:查询、新增、调整大小、删除
      • 1. 查询表空间使用情况
      • 2. 数据文件路径
      • 3. 增加表空间大小
      • 4. 调整表空间大小
      • 5. 删除表空间中的数据文件
      • 6. 查询表空间的相关信息
    • 三、导入dmp-linux/window环境
      • 1. linux环境
      • 2. window环境
      • 3. 导入新库,且创建新用户(window、linux都验证过)

一、ORA-02049:解决分布式事务问题

  1. 查询进程信息,所有锁
-- 查询进程信息
SELECT S.USERNAME,
       DECODE(L.TYPE, 'TM', 'TABLE LOCK', 'TX', 'ROW LOCK', NULL) LOCK_LEVEL,
       O.OWNER,
       O.OBJECT_NAME,
       O.OBJECT_TYPE,
       S.SID,
       S.SERIAL#,
       S.TERMINAL,
       S.MACHINE,
       S.PROGRAM,
       S.OSUSER
  FROM V$SESSION S, V$LOCK L, DBA_OBJECTS O
 WHERE L.SID = S.SID
   AND L.ID1 = O.OBJECT_ID(+)
   AND S.USERNAME IS NOT NULL;

在这里插入图片描述

  1. 查询具体锁表的进程

    -- 锁表进程
    SELECT s.sid, s.serial#
      FROM v$locked_object lo, dba_objects ao, v$session s
     WHERE ao.object_id = lo.object_id
       AND lo.session_id = s.sid;
    
    -- 更详细的查询,一般用上面的即可
    -- 以下的语句可以查询到谁锁了表,而谁在等待。 如果有子节点,则表示有等待发生
    select /*+ rule */ lpad(' ',decode(l.xidusn ,0,3,0))||l.oracle_username user_name,
           o.owner,
           o.object_name,
           o.object_type,
           s.sid,
           s.serial#
    from v$locked_object l,dba_objects o,v$session s
    where l.object_id=o.object_id
    and l.session_id=s.sid
    order by o.object_id,xidusn desc;
    
  2. 将死锁进程杀掉:ALTER SYSTEM KILL SESSION ‘sid,serial’;

    -- 强制关闭进程
    ALTER SYSTEM KILL SESSION '715,58391';
    

二、表空间操作:查询、新增、调整大小、删除

1. 查询表空间使用情况

-- 查询表空间使用情况
SELECT TABLESPACE_NAME "表空间",
       To_char(Round(BYTES / 1024, 2), '99990.00')
       || ''           "实有",
       To_char(Round(FREE / 1024, 2), '99990.00')
       || 'G'          "现有",
       To_char(Round(( BYTES - FREE ) / 1024, 2), '99990.00')
       || 'G'          "使用",
       To_char(Round(10000 * USED / BYTES) / 100, '99990.00')
       || '%'          "比例"
FROM   (SELECT A.TABLESPACE_NAME                             TABLESPACE_NAME,
               Floor(A.BYTES / ( 1024 * 1024 ))              BYTES,
               Floor(B.FREE / ( 1024 * 1024 ))               FREE,
               Floor(( A.BYTES - B.FREE ) / ( 1024 * 1024 )) USED
        FROM   (SELECT TABLESPACE_NAME TABLESPACE_NAME,
                       Sum(BYTES)      BYTES
                FROM   DBA_DATA_FILES
                GROUP  BY TABLESPACE_NAME) A,
               (SELECT TABLESPACE_NAME TABLESPACE_NAME,
                       Sum(BYTES)      FREE
                FROM   DBA_FREE_SPACE
                GROUP  BY TABLESPACE_NAME) B
        WHERE  A.TABLESPACE_NAME = B.TABLESPACE_NAME)
--WHERE TABLESPACE_NAME LIKE 'CDR%' --这一句用于指定表空间名称
ORDER  BY Floor(10000 * USED / BYTES) DESC;

在这里插入图片描述

2. 数据文件路径

-- 数据文件路径
select tablespace_name, file_id,file_name, 
round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name;

在这里插入图片描述

3. 增加表空间大小

-- 增加表空间大小(通过增加数据文件),不自动增长
alter tablespace system add datafile '/data/oracle/oradata/orcl/system02.dbf' size 6g autoextend off;

4. 调整表空间大小

-- 调整表空间大小(通过调整表数据文件)
ALTER DATABASE datafile  '/data/oracle/oradata/orcl/system01.dbf' RESIZE 8G;

5. 删除表空间中的数据文件

-- 删除表空间中的数据文件(减少表空间大小)
alter tablespace 表空间 drop datafile 'testfile2.dbf';

6. 查询表空间的相关信息

--1、查询所有表空间及对应的路径:
select tablespace_name,file_name from dba_data_files;
--2、查询所有表空间的状态信息;
select tablespace_name,status from dba_tablespaces;
--3、查询指定用户的数据表空间
select default_tablespace from dba_users where username='SYS';

三、导入dmp-linux/window环境

1. linux环境

  • 导入参数可参考:expdp / impdp 用法详解
  1. 拷贝文件到相关目录
    1. 连接Oracle环境:sqlplus / as sysdba
    2. 查询相关目录:select * from dba_directories;
  2. 执行语句
-- 导入到不存在的用户,最后一个参数,前面为源库用户名,后面为新用户名
impdp username/password directory=backup dumpfile=USR_2023_2_1.dmp REMAP_SCHEMA=USR_DEV:USR_DEV_20230201
  1. 若是导入到新用户,需修改用户密码
-- 通过管理员进行修改
1.su oracle;
2.sqlplus /nolog;
3.connect/as sysdba;
6.alter user 用户名 identified by 新密码;
4.ALTER USER 用户名 ACCOUNT UNLOCK;
5.commit;

2. window环境

# cmd(控制台)操作
1. exp导出:imp改成exp
IMP USR_ZFJOA/USR_ZFJOA@192.168.0.196:1521/orcl file=C:\Users\Administrator\Desktop\ZFJ\2021_02_01\USR_ZFJOA_20210131_2300000.DMP full=y;

2. expdp导出:impdp改成expdp
# directory在E:\app\Administrator\dump\backup\oracle

impdp USR_ZFJOA/USR_ZFJOA@192.168.0.196:1521/ORCL dumpfile=USR_ZFJOA_20210131_2300000.DMP directory=BACKUP remap_schema=USR_ZFJOA:USR_ZFJOA  table_exists_action=replace

3. 导入新库,且创建新用户(window、linux都验证过)

  • 注意点:linux上,文件名是区分大小写的

  • 更多信息可参考:导入数据库 、window导入dmp

  • 实例:根据已有的基础库,拷贝创建一个新数据库(不同名,不同表空间,不同用户)

    -- 新库名:ZZ_EXPERT_TEST
    -- 1.切换到oracle用户下 (linux环境,window直接从第2步开始)      
    su - oracle
    -- 2.登录sqlplus(控制台、终端)
    sqlplus /nolog
    -- 3.使用sysdba登录
    conn /as sysdba
    -- 4.查询表空间存储位置
    select name from v$tempfile;
    -- 5、创建临时表空间:zz_expert_test_temp   
    create temporary tablespace zz_expert_test_temp tempfile 'E:\APP\ORACLE\ORADATA\ORCL\ZZ_EXPERT_TEST_TEMP_01.dbf' size 1G reuse autoextend on next 20m maxsize unlimited;
    -- 6、创建数据表空间:zz_expert_test_data
    create tablespace zz_expert_test_data datafile 'E:\APP\ORACLE\ORADATA\ORCL\ZZ_EXPERT_TEST_DATA_01.dbf' size 1G reuse autoextend on next 40M maxsize unlimited;
    -- 7、创建索引表空间:zz_expert_test_idx
    create tablespace zz_expert_test_idx logging datafile 'E:\APP\ORACLE\ORADATA\ORCL\ZZ_EXPERT_TEST_IDX_01.dbf' size 100m autoextend on next 32m maxsize 2048m extent management local;
    -- 8、创建用户并分配表空间:ZZ_EXPERT_TEST
    create user ZZ_EXPERT_TEST identified by ZZ_EXPERT_TEST default tablespace zz_expert_test_data temporary tablespace zz_expert_test_temp;
    -- 9、赋权dba给用户
    grant resource,connect,dba to ZZ_EXPERT_TEST;
    -- 10、创建文件目录
    create directory DATA_DIR as 'E:\app\Administrator\dump\data_dir';
    -- 11、给用户赋文件目录的读写权限
    grant read,write on directory DATA_DIR to ZZ_EXPERT_TEST;
    -- 12、导入dmp文件
    -- 方式一:同名同库同空间的(没试过)
    -- impdp aml/aml@orcl directory=DATA_DIR dumpfile=aml_v2.dmp
    -- 方式二:不同名,不同表空间,不同用户
    impdp USR_OA_PURE_TEST/ZZ_EXPERT_TEST@orcl transform=segment_attributes:n directory=DATA_DIR dumpfile=USR_OA_PURE_TEST_20220808.dmp  remap_tablespace=OA_DATA:ZZ_EXPERT_TEST_DATA remap_schema=USR_OA_PURE_TEST:ZZ_EXPERT_TEST CLUSTER=N logfile=exdp-test.log;
    -- 已经存在是否覆盖:table_exists_action = replace
    -- 参数值source:target(源库信息、新库信息)
    -- remap_tablespace、remap_schema替换数据空间、用户
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle数据库操作(plsql):死锁处理、表空间增加、dmp导入导出(window、linux) 的相关文章

  • 自适应中值滤波及matlab实现

    提出原因 常规的中值滤波器 xff0c 在噪声的密度不是很大的情况下 xff08 根据经验 xff0c 噪声的出现的概率小于0 2 xff09 xff0c 效果不错 但是当概率出现的概率较高时 xff0c 常规的中值滤波处理后 xff0c
  • Qt--打印文档

    Qt Print Support模块提供了对打印的支持 最简单的 xff0c 只需使用一个QPrinter类和一个打印对话框QPrintDialog类就可以完成文档的打印操作 本节简单介绍打印文档 xff0c 打印预览和生产pdf文档 新建
  • 数据结构---拓扑排序详解

    前言 The time of test family is best Name Willam Time 2017 3 6 1 拓扑排序的介绍 对一个有向无环图 Directed Acyclic Graph简称DAG G进行拓扑排序 xff0
  • @androidx.annotation.Nullable错误解决

    今天更新了Androidstudio版本至3 2 0 xff0c 在自动创建构造方法的时候 xff0c 每个参数前增加了 64 androidx annotation Nullable xff0c 并且编译报错 xff0c 可以手动删除使项
  • java判断字符串为空

    Java空字符串与null的区别 xff1a 1 类型 null表示的是一个对象的值 xff0c 而并不是一个字符串 例如声明一个对象的引用 xff0c String a 61 null 34 34 表示的是一个空字符串 xff0c 也就是
  • UltraISO制作大于4G文件的光盘映像可启动U盘

    在制作包含大于4G的文件的启动U盘时 xff0c 经常发生制作后无法安装的情况 xff0c 下面就给大家介绍一下有关大于4G的文件的光盘映像如何制作U盘启动盘 xff0c 需要的朋友可以看看 无法启动原因 xff1a 在Windows操作系
  • Spring三种配置方式

    Spring有以下几种常用的配置方式 1 基于xml的配置2 基于注解的配置3 基于Java的配置 1 基于xml的配置 在Spring1 x时代 xff0c 都是基于xml来进行配置 xff0c 用xml文件来管理bean之间的关系 现在
  • Synchronized同步静态方法和非静态方法总结

    1 Synchronized修饰非静态方法 xff0c 实际上是对调用该方法的对象加锁 xff0c 俗称 对象锁 Java中每个对象都有一个锁 xff0c 并且是唯一的 假设分配的一个对象空间 xff0c 里面有多个方法 xff0c 相当于
  • MySQL主从恢复(全量恢复数据)

    前言 当mysql主从 xff08 一主一从模式 xff09 数据不同步 xff0c 常规方式解决不掉 xff0c 故全量恢复数据并同步数据 发现问题 首先可以由mstaer status观察到主从已经未同步 xff0c 其次slave s
  • onNewIntent()的使用

    我对 onNewIntent 的理解 当我们由于某些原因 xff0c 可能会反复启动一个 Activity 时 xff0c 你可能会想不就是通过 startActivity intent xff0c 来启动嘛 xff0c 反复走 onCre
  • Vim使用教程(按键教程,映射都可以改的,持续更新)

    修改映射 tnvim vimrc 1 space 43 f 43 t 调出目录 2 control 43 h 跳到目录 3 control 43 l 跳到内容页 4 space 43 k 43 n 运行最近一个测试 5 space 43 k
  • SecureCRT自动保存日志设置

    嵌入式开发经常由于无法debug而只能使用串口打印日志的方式调试代码 xff0c SecureCRT支持 SSH2 Serial 等多种连接方式 xff0c 是嵌入式工程师开发必备工具之一 串口日志打印由于打印数量大 xff0c 经常会超过
  • 吐血安装pycocotools,VC++14.0 required

    前因 因为某些原因想试试看目标检测 xff0c 于是下载了RCNN xff0c 但是卡在了安装TensorFlow Object Detection API 这一步 网上在这一步翻车的人 不计其数 到了安装pycocotools总会报错 x
  • windows 任务栏点击无反应,电脑没有任务栏怎么办

    这次的问题是 xff1a windows 任务栏点击无反应 xff0c 电脑没有任务栏怎么办 xff1f 想必有很多人会出现鼠标点击任务栏没有任何反应 xff0c 但是点击界面中的其他窗口 xff0c 或者打开关闭软件都可以正常使用 第二种
  • hexo基础命令、组件及遇到的坑

    前言 日期 xff1a 2020 04 21 初始内容 xff1a 从0开始部署完成后需要关注的点 xff0c 遇到的坑是真坑 原文链接 xff1a http mangocheng com posts 9264c278 html博客地址 x
  • Vue基础—实践:模板语法、路由

    前言 Vue基础模板语法 xff1a 数据渲染 路由 博客地址 xff1a 芒果橙的个人博客 http mangocheng com 一 模板语法 1 数据渲染 获取对象数据 span class token comment html sp
  • javaScript&ES6&jQuery

    前言 工作中学习和使用过程中遇到的开发问题和发现 博客地址 xff1a 芒果橙的个人博客 http mangocheng com 一 原生js 1 新发现 删除对象属性 xff1a delete this object propertyNa
  • 算法_初级算法(字符串&排序)-Java实现

    前言 初始内容 xff1a 常见算法题 博客地址 xff1a 芒果橙的个人博客 http mangocheng com 一 字符串 1 KMP算法 概念 xff1a 对字符串进行切割分组 xff08 前缀 后缀 xff09 xff0c 按顺
  • Git在IDEA中的基本操作

    前言 git的基本操作 博客地址 xff1a 芒果橙的个人博客 http mangocheng com 一 简介 概念 xff1a 免费 开源的分布式版本控制系统特点 xff1a Git是一个开源的分布式版本控制系统 xff0c 可以有效
  • Vue基础—理论

    前言 Vue的一些理论点 xff0c 学习Vue的一些前置知识 更多可查看官方文档 xff1a Vue 博客地址 xff1a 芒果橙的个人博客 http mangocheng com 一 介绍 1 概念 Vue是一套用于构建用户界面的渐进式

随机推荐