zoukankan      html  css  js  c++  java
  • Oracle 10g 数据库的备份和还原

    一、备份数据库

    1.在图形工具中,如sqldeveloper,pl/sqldeveloper用以下这句查找空表
    select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;

    2.把第一步执行得到的结果当用sql语来再次执行
    3.到oracle服务器上执行备份语句. 运行-cmd 执行下面命今
       exp 用户名/密码@数据库实例 file=备份文件存放路径 owner=用户名
     例: exp ezeip/123456@orcl file=d:ak.dmp owner=MyDataBase

    二、还原数据库

    (如果已有数据库,则执行第1、2步)
    --1.删除表空间
    DROP TABLESPACE shjc INCLUDING CONTENTS AND DATAFILES;
    --2.删除用户
    DROP USER shjc CASCADE

    --3.创建表空间
    Create tablespace shjc datafile'c:oracleproduct10.2.0db_1adminorcldpdumpSHJC.DBF' size 500M autoextend on next 50M;
    存放路径可以由脚本7来查看)
    --4.创建用户
    create user shjc identified by shjc123 default tablespace shjc;
    --5.授权给用户
    grant connect,resource,dba to shjc; 

    --6.导入数据库(在cmd里执行)
    --11g:IMPDP USERID='shjc/shjc123@orcl as sysdba' schemas=shjc directory=DATA_PUMP_DIR dumpfile=shjc.dmp logfile=shjc.log version=10.2.0.1.0
    --10g:imp shjc/shjc123@orcl file=e:shjc.dmp full=y  ignore=y         

    --7.查看管理理员目录(DATA_PUMP_DIR)
    select * from dba_directories;
    --8.查看字符集
    select * from V$NLS_PARAMETERS where parameter = 'NLS_CHARACTERSET' 

    三、备用脚本

    --1)查看用户的连接状况 
    select username,sid,serial# from v$session 
    --2)找到要删除用户的对应的sid,和serial,并删除  
    alter system kill session '158,2009'; 
    --3)查看session的状态来确定该session是否被kill 了!!status 为要删除用户的session状态,如果还为inactive,说明没有被kill掉,如果状态为killed,说明已kill。 
    select saddr,sid,serial#,paddr,username,status from v$session where username is not null AND username = 'SHJC'   

    四、综合脚本

     --查询所有表空间和物理文件存放路径

    SELECT b.file_name AS 物理文件路径,
           b.tablespace_name AS 表空间名,
           b.bytes / 1024 / 1024 表空间大小MB,
           (b.bytes -SUM(nvl(a.bytes, 0))) / 1024 / 1024 使用表空间大小,
           substr((b.bytes -SUM(nvl(a.bytes, 0))) / (b.bytes) * 100, 1, 5) 利用率
    FROM   dba_free_space a,
           dba_data_files b
    WHERE  a.file_id = b.file_id
    GROUP BY
           b.tablespace_name,
           b.file_name,
           b.bytes
    ORDER BY
           b.tablespace_name

    五、批处理文件+windows定时任务 自动备份数据库:

    for /F "usebackq tokens=1,2 delims= " %%i IN (`date /t`) do set datapath=%%i
    for /F "usebackq tokens=1,2 delims=: " %%i IN (`time /t`) do set datapath=%datapath%%%i%%j 
    exp shjc/shjc123@orcl file=e:\%datapath:/=%.dmp owner=shjc

    将上面的三行脚本复制到记事本,修改数据库链接相关参数后,另存为已批处理文件即可。备份数据库文件的命名是按时间来命名。
    再在windows里定时任务里,添加一个定时任务,定时执行这个批处理文件,就实现了简单数据库备份。


  • 相关阅读:
    LG3626 [APIO2009]会议中心(倍增+树状数组)
    LG3624 [APIO2008]DNA(DP+前缀和)
    CF1516C
    PKUSC2021 口胡题解
    THUSC2021 Day1口胡题解
    2021.4
    2021.3
    2021 暑假 sxyz 集训做题记录
    【做题记录】CF746F Music in Car
    KMP
  • 原文地址:https://www.cnblogs.com/zhangqs008/p/3618410.html
Copyright © 2011-2022 走看看