zoukankan      html  css  js  c++  java
  • oracle 导入 导出 备份

    Oracle  学习笔记 

    一、创建 oracle 数据库 

    利用 已经创建完了数据库 car1 ,

    二、利用 语句创建一个新的用户,赋予用户新的权限。

    (创建一个用户,对应的给这个用户创建一个方案,里面存储着这个用户的东西)

    创建用户  create   user  ,一般是具有dba权限的用户才可以进行创建

    Create user  admin  identified by  wqhadmin;

    (密码要以字母开头,用数字开头是不允许的)

    但是创建完后,用户没有任何权限

    Grant  connect  to  admin;

    二、对数据库数据进行导入、导出

    导出分为三种:导出数,导出方案(把一个用户的所有东西都导出),导出数据库

    使用exp命令来完成。该命令的常用的选项有:

    导出、导出的时候,使用的不是在SQL 中直接进行导入导出

    而是要在   oracle目录的  bin  目录下 (使用的是bin文件夹里的exp.exe)

    方法一:

    (具体过程:

    Cmd,打开命令行,

    d: 切换到d盘下,

    cd oracle,切换到oracle目录下,

    d:oracle>cd  product

    一直到

    D:oracleproduct10.1.0Db_1BIN>exp  ……… 

     方法二:如果已经在系统中进行了环境变量的配置,cmd  能够从配置的路径中找到exp ,imp  ,则不用一步步的切换到指定的文件夹中,直接使用就可以了。

    导出表:

    (1)导出自己的表

    Exp  userid=scott/tiger@myoral  tables=(emp)  file=d:e1.dmp

    (不一定非用dmp的后缀名,可以用别的后缀名,要导出多个表,则在tables=(emp,。。。,。。。))

    (2)导出其他方案的表

    如果用户要导出其他方案的表,则需要dba的权限或是exp_full_database的权限,比如system就可以导出scott的表:exp userid=system/manager@myoral  tables=(scott.emp)  file=d:e2.dmp

    (3)导出表的结构

    Exp userid=scott/tiger@accp tables=(emp)  file=d:e3.dmp rows=n

    (4)使用知道导出方式

    Exp userid=scott/tiger@accp  tables=(emp)  file=d:e3.dmp  direct=y

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

    导出方案:

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

    (1)导出自己的方案

    Exp  scott/tiger@myoral  owner=scott  file=d:scott.emp

    (2)导出其他方案

    如果用户要导出其他方案,则需要dba的权限或是exp_full_database的权限,例如用system用户就可以导出任何方案

    Exp  system/manager@myorcl  owner=(system,scott)  file=d:system.dmp

    这个是同时导出了两个方案,system,scott的

    导出数据库:

    导出数据库是之利用export导出所有数据库中的对象及数据。

    要求该用户具有dba的权限或是exp_full_database权限,

    Exp  userid=system/manager@myor  full=y  inctype=complete file=d:e6.dmp

    (如果不写,盘符,就会导出到bin目录下,)

    full=y ,具有dba,则导出myor实例中所有用户的数据,没有full,则只导出system用户的数据。

    Inctype:增量导出类型,第二次备份的时候要快一些,检查有没有新的数据,速度要快一些,但是具体怎么样,不知道

    导入:

    导入就是使用import将文件中的对象和数据导入到数据库中,但是导入要使用的文件必须是export所导出的文件,与导出相似,导入也分为导入表,导入方案,导入数据库三种方式:

    Imp常用的选项有:

    Userid:用于指定知道导入操作的用户名,口令,链接字符串,

    Tables:用于指定执行导入操作的表

    Fromuser:用于指定源用户

    Touser:用于制定目标用户

    File:用于指定导入文件名

    Full=y:用于指定执行导入整个文件

    Inctype:用于指定执行导入操作的增量类型

    Rows:指定是否要导入表行(数据)

    Ignore:如果表存在,则只导入数据

    导入表:

    (1)导入自己的表

    Imp userid=scott/tyger@myor   tables=(emp)  file=d:xx.dmp

    导出的一是导出全部,二是导出表结构,导入的时候一定要注意

    Drop table emp

    这张表是scott 自己的表,而且这张表和别的表有主外键的关系,所以如果这个语句换成了

    Imp  userid=system/manager@myor  talbes=(emp)  file=d:e6.dmp

    是不能成功的,但是如果emp单单就是一张数据表格,不存在主外键的关系,是可以成功的,因为它就是一张数据表,,

    换了另外一张dept,就把它导入到了system,

    但是在登陆查询的时候,如果是登陆system as sysdba,这时候其实进入的是sys的账户,是查不到这张表的,只有登陆  system  ,(as  normal),才能查到这张表。

    (2)导入表到其他用户

    要求该用户具有dba的权限,或是imp_full_database

    Imp userid=system/manager@myor tables=(emp) file=d:xx.dmp  touser=scott

    (3)导入表结构

    之导入表的结构而不导入数据

    Imp  userid=scott/tiger@myor  tables=(emp)  file=d:xxx.dmp  rows=n

    (4)导入数据

    如果对象(如此表)已经存在可以只导入表的数据

    Imp  userid=scott/tiger@myor  tables=(emp)  file=d:xxx.dmp  ignore=y

    导入方案:

    导入方案是指使用import工具将文件中的对象和数据导入到一个或是多个方案中。如果要导入其他方案,要求该用户具有dba的权限,或是  imp_full_database

    (1)导入自身的方案

    Imp  userid=scott/tiger@myor   file=d:xxx.dmp

    (2)导入其他方案,

    要求该用户具有dba的权限

    Imp  userid=system/manger@myor  file=d:xx.dmp  fromuser=system  touser=scott

    把system的方案 导入到 scott中去

    导入数据库

    在默认情况下,当导入数据库,会导入所有对象结构和数据,案例如下

    Imp   userid=system/manager   full=y  file=d:xxx.dmp

    数据库实例@myor 都不要写了,系统会自动创建一个实例

    导入数据库的完整过程:

    /*第1步:创建临时表空间 */
    create temporary tablespace wzf_temp

    tempfile 'D:oracleproduct10.1.0oradatawzf_temp.dbf'

    size 50m

    autoextend on

    next 50m maxsize 20480m

    extent management local;

    /*第2步:创建数据表空间 */

    create tablespace wzf_data

    logging

    datafile 'D:oracleproduct10.1.0oradatawzf_data.dbf'

    size 50m

    autoextend on

    next 50m maxsize 20480m

    extent management local;

    /*第3步:创建用户并指定表空间 */

    create user wengzf identified by wengzf

    default tablespace wzf_data

    temporary tablespace wzf_temp;

    /*第4步:给用户授予权限 */

    grant connect,resource,dba to wengzf ;

    /*第5步:表空间限额设置 */  

    alter user wengzf quota 0M on users;
    alter user wengzf quota unlimited on wzf_data ;

    commit;

    /*第6步:进行倒入操作 */ 

    imp wengzf/wengzf@kaoshi file=D:workspacejtzadatajtza20150121.dmp tablespaces=wzf_data fromuser=jtza touser=wengzf log=D:workspacejtzadatajtza201501222.log

    说明:不进行第五步,则会导入到users  表空间中,不是导入默认的表空间。

    举例说明 :: 

    环境是这样的
    一共2台机器a和b。都是oracle9.
    a机上有一用户a.
    1。用exp命令导出a用户下的所有对象
    exp  a/a file=a.dmp

    2。复制a.dmp到b机上。
    并在b机创建表空间b。 创建新用户b,并赋予默认表空间是b.
    执行imp命令。

    imp b/b file=a.dmp fromuser=a touser=b

    成功导入后,发现b用户的表空间利用率为0,所有的数据均被导入到user表空间中。

    请问如何才能在导入时,将表数据导入b用户的默认表空间b中呢?

    1.创建表空间
    create tablespace example_tablespace datafile 'e:****.dbf' size 10m reuse autoextend on next 1m maxsize unlimited;
     

    2.创建用户,指定表空间,临时表空间

    create user username identified by password default tablespace usertablespace temporary tablespace temp;
     
    3.IMP导入数据库文件注意
    grant dba to username;DBA权限是必需的
    一般默认导入的表空间是导出时候的表空间
     
    revoke unlimited tablespace from username;
     
    alter user username quota 0 on users;表空间限额设置
     
    alter user username quota unlimited on user_define_tablespace;
     
    imp username/password file='e:***.dbf' tablespaces=tbs fromuser=sourcename touser=targetname log='e:a.txt'
  • 相关阅读:
    jquery 序列化form表单
    nginx for windows 安装
    nodejs idea 创建项目 (一)
    spring 配置 shiro rememberMe
    idea 2018 解决 双击shift 弹出 search everywhere 搜索框的方法
    redis 在windows 集群
    spring IOC控制反转和DI依赖注入
    redis 的安装
    shiro 通过jdbc连接数据库
    handlebars的用法
  • 原文地址:https://www.cnblogs.com/gongyu/p/4238035.html
Copyright © 2011-2022 走看看