zoukankan      html  css  js  c++  java
  • Oracle 整库备份还原

    http://www.mamicode.com/info-detail-2481866.html

    sql语句

    system用户登陆

    查看表空间和存放位置

    select t1.name,t2.name from v$tablespace t1,v$datafile t2 where t1.ts# = t2.ts#;

    查看所有表空间的大小

    select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name;

    查看未使用的表空间大小

    select tablespace_name,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name;

    清理屏幕

    clear screen

    查看服务端编码

    select userenv('language') from dual;

    本地机器添加系统变量NLS_LANG,变量值为:服务端完整的编码类型即可解决显示不出中文的问题

    查看所有表空间大小,使用情况,使用率的sql语句

    SELECT a.tablespace_name "表空间名",

           total "表空间大小",

           free "表空间剩余大小",

           (total - free) "表空间使用大小",

           total / (1024 * 1024 * 1024) "表空间大小(G)",

           free / (1024 * 1024 * 1024) "表空间剩余大小(G)",

           (total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)",

           round((total - free) / total, 4) * 100 "使用率 %"

      FROM (SELECT tablespace_name, SUM(bytes) free

              FROM dba_free_space

             GROUP BY tablespace_name) a,

           (SELECT tablespace_name, SUM(bytes) total

              FROM dba_data_files

             GROUP BY tablespace_name) b

     WHERE a.tablespace_name = b.tablespace_name

    执行上述sql语句即可查看所有的表空间名称,大小,使用情况。前提是执行者需要有dba权限。

       

       

    整库备份还原首先需要system用户登陆,查询字符集,注意保持字符集的一致,然后然后创建备份目录,备份目录要对oracle用户开放读写权限。

    1,备份

    在系统上创建备份文件的存储目录,并且赋权给你oracle读写

    mkdir /oraclebak

    chown -R oracle:oinstall /oraclebak

    以oracle用户登陆操作系统,以system用户的登陆sqlplus,创建备份的映射目录。

    SQL> create directory data_dir as '/oraclebak';

    以oracle用户登陆操作系统使用expdp执行备份工作。

    expdp system/oracle directory=data_dir dumpfile=full.dmp full=y compression=all

       

    2,还原,因为是全库备份,所有不需要考虑用户以及用户权限的问题,必须要考虑的问题是还原的时候,目的数据库一定要新建原数据库的名称一致的表空间,且目的数据库表空间容量大于原数据库。

    以下为原数据库表空间信息

       

    因为原数据库有ZWFW_MIG表空间,且大小为1G,所以在目的数据库上也创建大小大于1G,名称为ZWFW_MIG的表空间,以下为具体命令

    CREATE TABLESPACE ZWFW_MIG

    DATAFILE '/oracledata/ZWFW_MIG.dat'

    SIZE 1024M

    REUSE

    AUTOEXTEND ON NEXT 100M MAXSIZE 2048M;

       

    关键词解释:

    CREATE TABLESPACE:创建表空间的关键字

    ZWFW_MIG:新创建的表空间的名字

    DATAFILE '/oracledata/ZWFW_MIG.dat' :定义表空间对应的数据文件位置,注意oracle用户要有权限

    SIZE 1024M:表空间大小为1024MB

    REUSE:允许oracle重新使用数据文件

    AUTOEXTEND ON NEXT 100M MAXSIZE 2048M;:允许表空间自动增长,每次增长100M,最大为2048M

       

    以上为创建新的表空间,如果目的数据库已有对应的表空间,则不需要另外新建,只需要扩展目的数据库的表空间即可,有两种方式扩展,

    第一,当对应的表空间数据文件所在目录有足够的存储空间时,直接使用以下命令重新定义数据文件的大小,数据文件大小重新定义之后,表空间大小就被改变了。

    alter database datafile '/u01/app/oracle/12/oradata/orcl/sysaux01.dbf' resize 3096m; (重新定义/u01/app/oracle/12/oradata/orcl/sysaux01.dbf数据文件的大小为3GB)

    第二,当表空间对应的数据文件所在目录没有足够的存储空间时,需要另外增加数据文件,对应的命令如下

    alter tablespace UNDOTBS1 add datafile '/oracledata/UNDOTBS1.dbf' size 5120m; (为UNDOTBS1表空间添加数据文件,添加的数据文件为5120M,位置为/oracledata/UNDOTBS1.dbf)

       

    关于临时表空间:

    查询原数据库的临时表空间,

    select c.tablespace_name,

    to_char(c.bytes/1024/1024/1024,'99,999.999') total_gb,

    to_char( (c.bytes-d.bytes_used)/1024/1024/1024,'99,999.999') free_gb,

    to_char(d.bytes_used/1024/1024/1024,'99,999.999') use_gb,

    to_char(d.bytes_used*100/c.bytes,'99.99') || '%'use

    from (select tablespace_name,sum(bytes) bytes

    from dba_temp_files GROUP by tablespace_name) c,

    (select tablespace_name,sum(bytes_cached) bytes_used

    from v$temp_extent_pool GROUP by tablespace_name) d

    where c.tablespace_name = d.tablespace_name;

       

    扩展临时表空间

    扩展临时表空间和扩展永久表空间的命令基本相似,仅仅是添加了temp关键字

       

    alter tablespace TEMP add tempfile '/oracledata/TEMP1.dbf' size 15360m;

       

    以上命令为为TEMP临时表空间添加数据文件,数据文件为15G

       

    新建临时表空间

       

    create temporary tablespace ZWFW_TEMP tempfile '/oracledata/ZWFW_TEMP1.dbf' size 1024m reuse autoextend on next 100m maxsize 2048m;

       

    查询所有表空间的所有信息

    select * from dba_tablespaces

       

    创建还原的操作目录对象

    create directory data_dir as '/oracledata';

       

       

    关于归档模式,关闭归档模式可以快速的执行还原操作,且生成的日志较小。关于归档模式的命令如下

       

    1.改变非归档模式到归档模式:

    1)SQL> conn / as sysdba (以DBA身份连接数据库)

    2)SQL> shutdown immediate;(立即关闭数据库)

    3)SQL> startup mount (启动实例并加载数据库,但不打开)

    4)SQL> alter database archivelog; (更改数据库为归档模式)

    5)SQL> alter database open; (打开数据库)

    6)SQL> alter system archive log start; (启用自动归档)

    7)SQL> exit (退出)

       

    做一次完全备份,因为非归档日志模式下产生的备份日志对于归档模式已经不可用了.这一步非非常重要!

    2.改变归档模式到非归档模式:

    1)SQL>SHUTDOWN NORMAL/IMMEDIATE;

    2)SQL>STARTUP MOUNT;

    3)SQL>ALTER DATABASE NOARCHIVELOG;

    4)SQL>ALTER DATABASE OPEN;

       

       

       

    执行还原命令

       

       

    impdp system/system directory=data_dir dumpfile=full.dmp full=y

       

       

       

       

       

       

       

       

       

    1,创建表空间

    2,

    3,创建表

    4,插入数据

    5,定义导出目录

    6,导出全库

    7,创建表空间

    8,导入全库

       

  • 相关阅读:
    BZOJ 3330 分数
    FR #11题解
    BZOJ 1857 传送带
    BZOJ 4757 Building a Tall Barn
    FR #10题解
    BZOJ 4393 Fruit Feast
    BZOJ 3126 Photo
    BZOJ 1312 Hard Life
    BZOJ 2039 employ人员雇佣
    Count SIN Numbers
  • 原文地址:https://www.cnblogs.com/withfeel/p/12421940.html
Copyright © 2011-2022 走看看