008-1.数据库管理-exp&imp

发布时间:2024年01月23日

?

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈
虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈
PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈
Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈
优 质 资 源 下 载 :👉👉 资源下载合集 👈👈

优 质 教 程 推 荐:👉👉 Python爬虫从入门到入狱系列 合集👈👈

数据库管理1

  1. 数据库管理员
  2. 数据库(表)的逻辑备份与恢复
  3. 数据字典和动态性能视图
  4. 管理表空间和数据文件

  • 目标:
  1. 了解Oracle管理员的基本职责
  2. 掌握备份和恢复数据库/表的方法
  3. 理解表空间、数据字典、性能视图

数据库管理员
  • 每个Oracle数据库应该至少有一名数据库管理员(dba),但是对于一个大的数据库可能需要多个dba分别担负不同的管理职责,那么一个数据库管理员的主要工作是什么呢?
  • 职责:
    1. 安装和升级Oracle数据库
    2. 建库、表空间、表、视图、索引......
    3. 制定并实施备份与恢复计划
    4. 数据库权限管理,调优,故障排除
    5. 对于高级dba,要求能参与项目开发,会编写sql语句、存储过程、触发器、规则、约束、包
  • 管理数据库的用户主要是sys(董事长)和system(总经理)
sys和system的主要区别
  1. 存储的数据的重要性不同
    • sys:所有的oracle的数据字典的基表和视图都存放在sys用户中。这些基表和视图对于oracle的运行是至关重要的,由数据库自己维护,任何用户都不能手动更改。sys用户拥有dab(数据库管理员)、sysdba(系统管理员)、sysoper(系统操作员)角色或权限。sys是oracle权限最高的用户
    • system:用于存放次一级的内部数据。如oracle的一些特性或工具的管理信息。system用户拥有dba()、sysdba角色或系统权限
  • image

  1. 权限不一样
    • sys用户必须以as sysdba或asoper形式登陆。不能以normal方式登陆数据库
    • system如果正常登陆,他其实就是一个普通的dba用户。但如果以as sysdba登陆,其实结果实际上它是作为sys用户登陆的,从登陆信息里面我们可以看出来
  • sysdba和sysoper权限区别
  • image

  • dba权限:dba用户是指具有dba角色的数据库用户,特权用户可以执行启动实例、关闭实例等特殊操作。dba用户只有在启动数据库之后才有执行各种管理工作
管理初始化参数
  • 初始化参数用于设置实例或是数据库的特征。oracle 9i提供了200多个初始化参数,并且每个初始化参数都有默认值
  • 显示初始化参数命令:
    show parameter
  • 如何修改参数
    • 如果需要修改这些初始化的参数,可以到文件D:\oracle\admin\myoral\pfile\init.ora文件中修改(如:修改实例的名字)

数据库(表)的逻辑备份与恢复
  • 逻辑备份:是指使用export工具将数据对象的结构和数据到处到文件的过程。
  • 逻辑恢复:是指当数据库对象被误操作而损坏后使用import工具利用备份的文件把数据对象导入到数据库的过程
  • 物理备份即可在数据库open的状态下进行,也可以在关闭数据库后进行。但是逻辑备份和恢复只能在open的状态下进行。
导出(exp)
  • 导出使用exp命令来完成。
  • 导出具体分为三种
    1. 导出表
    2. 导出方案
    3. 导出数据库
  • 常用参数:
参数说明
userid用于指定导出操作的用户名,口令,连接字符串username/password@oracle
tables用于指定执行导出操作的表名称要导出的表名称
owner用于指定执行导出操作的方案导出指定对象的名称
full用于指定导出操作的数据库y:导出全部
inctype用于指定执行导出操作的增量类型complete:第一次导出之后,第二次导出会比较是否有更新。相对会比较快
rows用于指定执行导出操作是否要导出表中的数据n:只导出表结构,不导出数据
file指定导出文件路径及文件名文件保存路径/文件名.dmp
log指定记录日志的路径及文件名日志保存路径/日志名.log
  • image

  • 导出表

    • 导出自己的表
      exp userid=username/password@oracle tables=(emp,dept) file=d:\emp.dmp log=d:\emp.log

      username:用户名
      password:用户密码
      oracle:数据库实例名
      emp:要导出的表名称
      
    • 导出其他方案的表

      • 要导出其他方案的表,需要dba的权限或exp_full_database的权限(如:system可以导出scott的表)
      exp userid=system/123456@oracle tables=(scott.emp) file=d:\emp.dmp log=d:\emp.log
      
    • 导出表结构
      exp userid=username/password@oracle tables=(emp) file=d:\emp.dmp log=d:\emp.log rows=n

    • 使用直接导出方式
      exp userid=username/password@oracle tables=(emp) file=d:\emp.dmp log=d:\emp.log direct=y

      • 这种方式比默认的常规方式速度要快,当数据量大时,可以考虑使用这样的方法
      • 使用直接导出方式,数据库字符集与客户端字符集必须完全一致,否则会报错
  • 导出方案

    • 导出方案是指使用export工具导出一个方案或多个方案中的所有对象(表、索引、约束)和数据,并存放到文件中

    • 导出自己的方案
      exp username/password@oracle owner=username file=d:\filename.dmp log=d:\filename.log

    • 导出其他方案

      • 导出其他方案,需要有dba的权限或exp_full_database权限(如:system可以导出任何方案)
      exp system/password@oracle owner=(system,scott) file=d:\filename.dmp log=d:\filename.log
      
  • 导出数据库

    • 导出数据库是指利用export导出数据库中的所有对象及数据,需要有dba权限或是exp_full_database权限
    exp userid=system/password@oracle file=d:\dba.dmp log=d:\dba.log full=y
    
  • inctype=complete 这个参数已经被废弃了

  • 数据库在导出时提示警告没有关系,主要提示“导出成功终止”才是最重要的


导出问题
  • 由于Oracle 11g的新特性,表数据如果为空,则延迟分配表空间,所以导出的数据不全
  • 设置系统参数deferred_segment_creation【默认是TRUE】。
  1. dba用户在PLSQL命令窗口输入SQL语句,查询参数值。
    show parameter deferred_segment_creation;

  2. dba用户设置立刻分配表空间(设置后,后续新增的表即使没有数据会自动创建表空间,不再延迟创建)
    alter system set deferred_segment_creation=false;

  3. 在新建用户下,查询当前用户下的所有空表
    select table_name from user_tables where NUM_ROWS=0;

  4. 根据上述查询,可以构建针对空表分配空间的命令语句,再把下列查询结果语句执行即可
    Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null;

  • 通过以上3步操作后便能正常导出所有空表
  1. 后续直接exp导出数据即可

导入(imp)
  • 导入就是使用import工具将文件中的对象和数据导入导数据库中,但是导入要使用的文件必须是export导出的文件。
  • 导入具体分为三种
    1. 导入表
    2. 导入方案
    3. 导入数据库
  • imp常用参数
参数说明
userid用于指定导入操作的用户名,口令,连接字符串username/password@oracle
tables用于指定执行导入操作的表名称要导入的表名称
foruser用于指定源用户导出数据的用户
touser用于指定目标用户接收导入数据的用户
full用于指定执行导入整个文件y:导入全部
inctype用于指定执行导入操作的增量类型complete:第一次导入之后,第二次导入会比较是否有更新。相对会比较快
rows用于指定执行导入操作是否要导入表中的数据n:只导入表结构,不导入数据,需写在导入语句最后面
ignore是否只导入数据(表结构已存在)y:只导入数据,不导入表结构
file指定导入文件路径及文件名文件保存路径/文件名.dmp
log指定记录日志的路径及文件名日志保存路径/日志名.log
  • 导入表给自己(导入表结构和数据)
    imp userid=username/password@oracle file=e:\dba.dmp log=e:\dba.log tables=(emp)
  • 导入表给其他用户
    imp userid=username/password@oracle file=e:\dba.dmp log=e:\dba.log tables=(emp) touser=username2
  • 导入表结构(只导结构,不导数据)
    imp userid=username/password@oracle file=e:\dba.dmp log=e:\dba.log tables=(emp) rows=n
  • 导入表数据(只导数据,不导结构)
    imp userid=username/password@oracle file=e:\dba.dmp log=e:\dba.log tables=(emp) ignore=y
  • 导入方案给自己
    imp userid=username/password@oracle file:\e:dba.dmp log=e:\dba.log
  • 导入方案给其他用户
    imp userid=username/password@oracle file=e:\dba.dmp log=e:\dba.log fromuser=username tousername=username2
  • 导入数据库
    imp userid=username/password file=e:\dba.dmp log=e:\dba.log full=y


导出exp参数说明

参数说明
USERID?户名/?令
FULL导出整个?件 (N)
BUFFER数据缓冲区的??
OWNER所有者?户名列表
FILE输出?件 (EXPDAT.DMP)
TABLES表名列表
COMPRESS导??个范围 (Y)
RECORDLENGTHIO 记录的长度
GRANTS导出权限 (Y)
INCTYPE增量导出类型
INDEXES导出索引 (Y)
RECORD跟踪增量导出 (Y)
ROWS导出数据? (Y)
PARFILE参数?件名
CONSTRAINTS导出限制 (Y)
CONSISTENT交叉表?致性
LOG记录屏幕输出的?志?件
STATISTICS分析对象 (ESTIMATE)
DIRECT直接路径 (N)
TRIGGERS导出触发器 (Y)
FEEDBACK显?每 x ? (0) 的进度
FILESIZE各转储?件的最?尺?
QUERY选定导出表?集的?句

导入imp参数

参数说明
USERID?户名/?令
FULL导?整个?件 (N)
BUFFER数据缓冲区??
FROMUSER所有??户名列表
FILE输??件 (EXPDAT.DMP)
TOUSER?户名列表
SHOW只列出?件内容 (N)
TABLES表名列表
IGNORE忽略创建错误 (N)
RECORDLENGTHIO 记录的长度
GRANTS导?权限 (Y)
INCTYPE增量导?类型
INDEXES导?索引 (Y)
COMMIT提交数组插? (N)
ROWS导?数据? (Y)
PARFILE参数?件名
LOG记录屏幕输出的?志?件
CONSTRAINTS导?限制 (Y)
DESTROY覆盖表空间数据?件 (N)
INDEXFILE将表/索引信息写?指定的?件
SKIP_UNUSABLE_INDEXES跳过不可?索引的维护 (N)
ANALYZE执?转储?件中的 ANALYZE 语句 (Y)
FEEDBACK显?每 x ? (0) 的进度
TOID_NOVALIDATE跳过指定类型 id 的校验
FILESIZE各转储?件的最?尺?
RECALCULATE_STATISTICS重新计算统计值 (N)

  • exp/imp是Oracle自带的导入导出命令,运用它,即使不需要那结UI工具也能轻易的完成数据导出导入工作,下面是它们的参数:

  • EXP参数详解

  • 使用的格式是:EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)

  • 其中USERID是必须的且为第一个参数

关键字备注
USERID用户名/口令
FULL导出整个文件 (N)
BUFFER数据缓冲区的大小
OWNER所有者用户名列表
FILE输出文件 (EXPDAT.DMP)
TABLES表名列表
COMPRESS导入一个范围 (Y)
RECORDLENGTHIO 记录的长度
GRANTS导出权限 (Y)
INCTYPE增量导出类型
INDEXES导出索引 (Y)
RECORD跟踪增量导出 (Y)
ROWS导出数据行 (Y)
PARFILE参数文件名
CONSTRAINTS导出限制 (Y)
CONSISTENT交叉表一致性
LOG屏幕输出的日志文件
STATISTICS分析对象 (ESTIMATE)
DIRECT直接路径 (N)
TRIGGERS导出触发器 (Y)
FEEDBACK显示每 x 行 (0) 的进度
FILESIZE各转储文件的最大尺寸
QUERY选定导出表子集的子句
下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE导出可传输的表空间元数据 (N)
TABLESPACES将传输的表空间列表
  • IMP参数详解
  • 使用的格式是:IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
  • 其中USERID是必须的且为第一个参数
关键字备注
USERID用户名/口令
FULL导入整个文件(N)
BUFFER数据缓冲区大小
FROMUSER所有者用户名列表
TOUSER用户名列表
FILE输入文件 (EXPDAT.DMP)
SHOW只列出文件内容(N)
TABLES表名列表
IGNORE忽略创建错误 (N)
RECORDLENGTHIO 记录的长度
GRANTS导入权限 (Y)
INCTYPE增量导入类型
INDEXES导入索引 (Y)
COMMIT提交数组插入 (N)
ROWS导入数据行 (Y)
PARFILE参数文件名
LOG屏幕输出的日志文件
CONSTRAINTS导入限制 (Y)
DESTROY覆盖表空间数据文件 (N)
INDEXFILE将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES跳过不可用索引的维护 (N)
FEEDBACK每 x 行显示进度 (0)
TOID_NOVALIDATE跳过指定类型 ID 的验证
FILESIZE每个转储文件的最大大小
STATISTICS始终导入预计算的统计信息
RESUMABLE在遇到有关空间的错误时挂起 (N)
RESUMABLE_NAME用来标识可恢复语句的文本字符串
RESUMABLE_TIMEOUTRESUMABLE 的等待时间
COMPILE编译过程, 程序包和函数 (Y)
STREAMS_CONFIGURATION导入流的一般元数据 (Y)
STREAMS_INSTANTIATION导入流实例化元数据 (N)
下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE导入可传输的表空间元数据 (N)
TABLESPACES将要传输到数据库的表空间
DATAFILES将要传输到数据库的数据文件
TTS_OWNERS拥有可传输表空间集中数据的用户
文章来源:https://blog.csdn.net/weixin_50296259/article/details/135763492
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。