oracle的逻辑备份与恢复

一、查检字符集

逻辑备分与恢复的数据导出与导入工具exp/imp,在安装有oracle客户端的机器上就会有。

使用该工具之前,第一要了解一下当前oracle数据库的字符集(characterset)与国家字符集(nchar_characterset)设置情况。

字符集是用来存储:CHAR,VARCHAR2,CLOB,LONG等类型数据的。

而国家字符集是用来存储:NCHARNVARCHAR2NCLOB等类型数据的。

一般创建数据库时就要指定这两个字符集。

通常,公司的oracle是安装在简体中文windows操作系统上的,所以一般默认值是:

CHARACTERSET=ZHS16GBK

NCHARACTERSET=AL16UTF16

现在,公司所有局点的数据库,这两个字符集设置应都是这样。

可以通过pl/sql developerReports菜单来查看:

 

第二,要了解客户端的字符集设置,也就是客户端的NLS_LANG环境变量的设置。

NLS_LANG参数由以下部分组成:

NLS_LANG=<language>_<Territory>.<Clients Characterset>

NLS_LANG各部分含义如下:                                                                                                  

(1)       LANGUAGE指定:

Oracle消息使用的语言。

日期中月份和日的显示。

(2)       TERRITORY指定:

货币和数字格式。

地区和计算星期及日期的习惯。

(3)       CHARACTERSET指定:

控制客户端应用程序使用的字符集。

 

通常来说,在windows下时,安装了oracle后,在注册表的/HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0下会存在键:

NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

如果没有设置环境变量NLS_LANG时,则使用这里的设置。

 

linux系统下,则要你亲自添加这个NLS_LANG变量了。通常是在每个要使用oracle数据库的用户主目录下的.bahs_profile文件中添加一行:

export NLS_LANG=American_america.zhs16gbk

 

二、备份简述

通常公司对于oracle数据库的使用特点是每个应用建一个用户,而备份时,只备份该用户的数据。

在建库时是先为该用户建立永久表空间、临时表空间和索引表空间。

如超级信使这个应用,会建立smk这个用户,并建立SMK_DEF,SMK_TMP,SMK_IDX三个表空间。

通常为smk做备份时是用下如命令:

exp smk/smk rows=y indexes=y compress=n buffer=10240000 direct=y feedback=100000 file=smkfull.dmp log=smkfull.log

 

该命命在windows/linux下都可以使用,这样可以导出smk这个用户的所有数据。

导出数据之前,如果是在另一台机上做的,就要注意这台系统的NLS_LANG设置有没有和oracle服务器的字符集相同了。通常来说,我们都是在用简体中文的windows系统,所以都会是相同的。

三、恢复备份

恢复备份的smkfull.dmp。基本有三种情况:

1、重建数据库后恢复smk用户的所有数据

安装oracle数据库

创建smk用户的三个表空间SMK_DEF,SMK_TMP,SMK_IDX三个表空间。

创建smk用户。

使用下面命令导入smk所有的数据:

imp smk/smk fromuser=smk touser=smk ignore=y file=smkfull.dmp log=smkfull.log

2、在现有的oracle数据库进行恢复,该数据库已存在smk用户

先把用户smk和相应的表空间SMK_DEF,SMK_TMP,SMK_IDX删掉

再创建smk用户的三个表空间SMK_DEF,SMK_TMP,SMK_IDX三个表空间

创建smk用户。

使用下面命令导入smk所有的数据:

imp smk/smk fromuser=smk touser=smk ignore=y file=smkfull.dmp log=smkfull.log

3、在现有的oracle数据库进行恢复,该数据库已存在smk用户

直接使用下面命令导入,不删除用户和表空间

imp smk/smk fromuser=smk touser=smk ignore=y file=smkfull.dmp log=smkfull.log

这样导入后,不大好。建议还是用上面的两种方法。

附上公司用于创建表空间和用户的脚本。

需注意的是表空间的名称在用双引号括起来时,注意要用大写的,不要用小写。其实在建立各种数据库对象(如表、序列)时,用到双引号时,注意要用大写,不要用小写。

还有一定要用sys用户来执行该脚本。

------------------------------------------------------------------------------

--功能:创建表空间

--注意:必须用sys用户创建,这个脚本在sqlplus命令行下用@符号执行

--     执行脚本时必须根据Oracle的安装目录修改表空间的数据文件目录,

--     如下脚本中的SMK目录必须存在

------------------------------------------------------------------------------

--创建默认空间

prompt

prompt   创建默认空间 SMK_DEF ...

prompt ===============================

prompt

CREATE TABLESPACE "SMK_DEF" LOGGING DATAFILE

    'E:/SMK/SMK_DEF_1.DBF' SIZE 512M AUTOEXTEND ON NEXT 128M MAXSIZE UNLIMITED,

    'E:/SMK/SMK_DEF_2.DBF' SIZE 512M AUTOEXTEND ON NEXT 128M MAXSIZE UNLIMITED

    EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

--创建索引表空间

prompt

prompt   创建索引表空间 SMK_IDX ...

prompt ===============================

prompt

CREATE TABLESPACE "SMK_IDX" LOGGING DATAFILE

    'E:/SMK/SMK_IDX_1.DBF' SIZE 512M AUTOEXTEND ON NEXT 64M MAXSIZE UNLIMITED

    EXTENT MANAGEMENT LOCAL AUTOALLOCATE;   

--创建临时表空间

prompt

prompt   创建临时表空间 SMK_TMP ...

prompt ===============================

prompt

CREATE TEMPORARY TABLESPACE "SMK_TMP" TEMPFILE

    'E:/SMK/SMK_TMP_2.DBF' SIZE 256M AUTOEXTEND ON NEXT  64M MAXSIZE UNLIMITED

    EXTENT MANAGEMENT LOCAL UNIFORM SIZE 4M;

-----------------------------------------------------------------------------

--功能:创建用户

--注意:必须用sys用户创建,这个脚本在sqlplus命令行下用@符号执行

------------------------------------------------------------------------------

 prompt

prompt   创建主库用户 SMK...

prompt ===============================

prompt

-- Create the user

create user SMK

  identified by SMK

  default tablespace SMK_DEF

  temporary tablespace SMK_TMP

  profile DEFAULT

  quota unlimited on SMK_DEF

  quota unlimited on SMK_IDX

  quota unlimited on SMK_TMP;

-- Grant/Revoke object privileges

grant select, insert, update, delete on SYS.DBA_JOBS to SMK;

-- Grant/Revoke role privileges

grant connect to SMK;

grant dba to SMK;

grant resource to SMK;

-- Grant/Revoke system privileges

grant create database link to SMK;

grant force any transaction to SMK;

grant unlimited tablespace to SMK;

grant execute any procedure to SMK;

grant create any view to SMK;

grant create any table to SMK;

grant select any table to SMK;

grant insert any table to SMK;

grant delete any table to SMK;

grant update any table to SMK;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值