zoukankan      html  css  js  c++  java
  • Oracl基础知识(一)

    概述

      Oracle功能繁多,接触Oracle不深,将接触到的基础知识整理下来,以便不时之需。整理的内容主要有Expdp指令实现数据库备份,Impdp指令实现数据库还原,以及用户、表空间的定义。整理的数据来源多为网上优秀的博客和论坛,内容如有相同之处,纯属转载。

    Expdp指令数据备份导出

      expdp工具导出的方式有很多种,使用方便,直接在CMD命令行中输入导出指令即可,这里仅仅介绍按用户名导出数据库文件。如果是普通用户进行数据导出和导入时候,需要授权用户读写目录权限:
      最好以system等管理员赋予: grant read,write on directory dpdata1 to scott;

      1、导出指令格式:  

        A、导出全部数据库格式

                  [expdp 用户名/密码 dumpfile=导出文件名.dmp directory=文件目录];

        B、导出指定表空间

                  [expdp 用户名/密码@SID名称 dumpfile=导出文件名.dmp directory=文件目录 TABLESPACES=表空间A,表空间B];  

                  (备注:该导出方式包括表空间和用户,所以还原数据的时候,需要对应的表空间和用户)

        C、导出指定用户的数据

                 [expdp 用户名/密码 dumpfile=导出文件名.dmp directory=文件目录 schemas=username];                  

         expdp system/ZSORCL@AORCL dumpfile=einv20161106.dmp  directory=data_pump_dir  schemas=einv 

        (使用system导出是为了导出einv schema中的全部内容,包括用户创建和权限授予部分,使用用户本身导出则不包含这些内容。)

        D、导出表空间结构,而非数据格式:

                 [expdp 用户名/密码 dumpfile=导出文件名.dmp directory=文件目录  CONTENT=METADATA_ONLY  schemas=username];

        (备注:设置CONTENT为ALL 时,将导出对象定义及其所有数据.为DATA_ONLY时,只导出对象数据,为METADATA_ONLY时,只导出对象定义(导出数据表结构))

    expdp system/ZSORCL@AORCL dumpfile=einv20161107.dmp CONTENT=METADATA_ONLY  directory=data_pump_dir  schemas=einv

               

      2、查询和新建文件目录

    select * from dba_directories; #查看Oracle文件目录
    create directory dpdata1 as 'd: estdump'; #创建Oracle文件目录
    create or replace directory dpdata1 as 'd:/dmp' #如果dpdata1目录文件存在,就修改文件指向到d:/dmp

    Impdp指令数据库还原

      A、导入全部数据库的格式:[expdp 用户名/密码 dumpfile=导入文件名.dmp directory=文件目录],举例如下:

    impdp system/Abc.1234@MyHost transform=segment_attributes:n directory=dpdata1 dumpfile=201609131830.dmp FULL=y;

      B、导入表空间的格式:[expdp 用户名/密码 dumpfile=导入文件名.dmp directory=文件目录 TABLESPACES=原备份表空间名称]

                 (备注:该导入方式需要和原导出文件的命名空间和用户名保持一致)

          C、导入用户数据的格式

                格式I:(通过remap_tablespace来替换表空间,用新数据库的表空间替换老的表空间)

    [expdp 用户名/密码 dumpfile=导入文件名.dmp directory=文件目录 SCHEMAS=username  remap_tablespace=原表空间:新表空间];             

    impdp system/1bc2123@ZSORCL DIRECTORY=data_pump_dir DUMPFILE=einv20161106.dmp SCHEMAS=einv;

               格式II:(通过remap_tablespace来替换表空间,用新数据库的表空间替换老的表空间,remap_schema替换就的用户名称schema)

    [expdp 用户名/密码 dumpfile=导入文件名.dmp directory=文件目录 remap_schema=原schema:新schema  remap_tablespace=原表空间:新表空间];

    impdp system/1bc2123@ZSORCL DIRECTORY=dpdata1 DUMPFILE=einv1106.dmp remap_tablespace=EINV_DATA:ZSEINV_DATA remap_schema=einv:zsmgr

      D、导入表空间数据结果而非数据格式:

    [expdp 用户名/密码 dumpfile=导入文件名.dmp directory=文件目录 CONTENT=METADATA_ONLY SCHEMAS=username  

    remap_tablespace=原表空间:新表空间];

    impdp system/3456@TSTRCL dumpfile=einv1107.dmp CONTENT=METADATA_ONLY directory=data_pump_dir remap_schema=einv:zsmgr remap_tablespace=EV_DATA:ZS_DATA

      有些时候,牵扯到分区表的还原时候,需要在sqlplus中,执行如下指令:表示文件自动扩展

      #在sqlplus命令里面,先指向第一条
    alter database datafile 'D:appAdministratororadataorclEINVDATA.DBF' autoextend on;
      #在sqlplus命令里面,数据还原完成之后,再指向第二条
      alter database datafile 'D:appAdministratororadataorclEINVDATA.DBF' resize 2G autoextend off ;

    备注:存在表:数据追加(append)和数据替换(replace) ,即:table_exists_action=append 

    ******************************存在表空:数据追加(append)和数据替换(replace)***********************
    impdp system/Abc.1234@MyHost transform=segment_attributes:n  directory=dpdata1 dumpfile=db20161108023000.dmp table_exists_action=append FULL=y;

      举例一个分区表的数据导入和导出指令

     分区表的数据导出

    #导出分区表table1中的p2014分区数据,按分区表导出的数据tables
    expdp demo/demo directory=datapump dumpfile=exp_table1_2014.dmp tables=table1:p2014 logfile=exp_table1_2014.log;

     分区表的数据导入

    #导入分区表table1中的2014分区数据导入table2中
    impdp demo/demo directory=datapump dumpfile=exp_table1_2014.dmp remap_table=table1:table2 table_exists_action=append logfile=impdp_table1_2014 
    .log

     备注:表table2中必须有p2014分区,否则数据导入失败;

    表空间和用户创建

    1、数据库文件一般都是放在哪里的
    select name from v$datafile;

    2、传进命名空间
    create tablespace EINV_DATA datafile 'D:oracleoradataorclyang.dbf' size 3000m;

    有时候我们可以附件空间磁盘:

    create tablespace EINV_DATA datafile 'D:ExecSofeOracleDataeinv_data_01.dbf' size 1000m;
    
    alter tablespace EINV_DATA  add datafile 'D:ExecSofeOracleDataeinv_data_02.dbf' size 1000M;

    3、删除命名空间

      drop tablespace EINV_DATA including contents and datafiles;

    4、创建数据库用户并分配表空间

    create user 用户名 identified by 密码 default tablespace 用户默认使用哪一个表空间;

    create user yanglei identified by yang123 default tablespace EINV_DATA;

    5、修改用户的权限
      grant 角色1,角色2 to 用户名;

    grant dba, connect to yanglei;

    6、修改用户密码

    alter user sys identified by password;

    7、解锁用户

    alter user system account unlock;

     8、删除用户及全部对象

    drop user username cascade;

    Orcel客户端连接配置:

    Net Manger 工具(实用配置网络)

    Database Configuration Assistant 工具(配置数据库,包括新增、删除)

    参考文章

     impdp请教下大家都是怎么追加导入分区表的(http://www.itpub.net/forum.php?mod=viewthread&tid=1940160&extra=&highlight=&page=1)

  • 相关阅读:
    CompletableFuture组合式异步编程
    java日志:slf4j
    Protobuffer生成java类
    变量快速变camel写法
    上海有线通下载exe会302转发请求
    ClickOnce添加自定义prerequisite
    International Conference for Smart Health 2015 Call for Papers
    IEEE/ACM ASONAM 2014 Industry Track Call for Papers
    Call for Papers IEEE/ACM International Conference on Advances in Social Network Analysis and Mining (ASONAM)
    Call for Papers International Conference for Smart Health (ICSH) 2014
  • 原文地址:https://www.cnblogs.com/xibei666/p/5886249.html
Copyright © 2011-2022 走看看