Oracle数据库的备份

这两天要用oracle的数据备份,在网上找了找例子。给大家贴出来看看。

PS: 选择数据库中所有的表的SQL语句
SELECT * FROM DBA_TABLES WHERE OWNER=''(填用户名);
------------------------------------------------------------------------------

一. 导出工具 exp

1. 它是操作系统下一个可执行的文件 存放目录/ORACLE_HOME/bin

   exp导出工具将数据库中数据备份压缩成一个二进制系统文件.可以在不同OS间迁移
 
它有三种模式:
a.  用户模式: 导出用户所有对象以及对象中的数据;
b.  表模式: 导出用户所有表或者指定的表;
c.  整个数据库: 导出数据库中所有对象。

2. 导出工具exp交互式命令行方式的使用的例子

$exp test/test123@appdb
Enter array fetch buffer size: 4096 > 回车
Export file: expdat.dmp > e:\m.dmp  生成导出的文件名 
(1)E(ntire database), (2)U(sers), or (3)T(ables): (2)U > 3
Export table data (yes/no): yes > 回车
Compress extents (yes/no): yes > 回车
Export done in ZHS16GBK character set and ZHS16GBK NCHAR character set
About to export specified tables via Conventional Path ...
Table(T) or Partition(T:P) to be exported: (RETURN to quit) > cmamenu  要导出的表名
. . exporting table                        CMAMENU       4336 rows exported
Table(T) or Partition(T:P) to be exported: (RETURN to quit) >要导出的表名n
Table(T) or Partition(T:P) to be exported: (RETURN to quit) > 回车
Export terminated successfully without warnings.

3. 导出工具exp非交互式命令行方式的例子

$exp scott/tiger tables=emp,dept file=/directory/scott.dmp grants=y

说明:把scott用户里两个表emp,dept导出到文件/directory/scott.dmp

$exp scott/tiger tables=emp query=\"where job=\'salesman\' and sal\<1600\" file=/directory/scott2.dmp

说明:在exp里面加上导出emp的查询条件job='salesman' and sal<1600
 
(但我个人很少这样用,还是把满足条件的记录生成临时表后,再exp会方便一些)

$exp parfile=username.par file=/directory1/username_1.dmp,/directory1/username_2.dmp filesize=2000M log=/directory2/username_exp.log

参数文件username.par内容
userid=username/userpassword
buffer=8192000
compress=n
grants=y

说明:username.par为导出工具exp用的参数文件,里面具体参数可以根据需要去修改

     filesize指定生成的二进制备份文件的最大字节数
 
(可用来解决某些OS下2G物理文件的限制及加快压缩速度和方便刻历史数据光盘等)

4. 命令参数说明

关键字 说明(默认)
---------------------------------------------------
USERID 用户名/口令
FULL 导出整个文件 (N)
BUFFER 数据缓冲区的大小
OWNER 所有者用户名列表
FILE 输出文件 (EXPDAT.DMP)
TABLES 表名列表
COMPRESS 导入一个范围 (Y)
RECORDLENGTH IO 记录的长度
GRANTS 导出权限 (Y)
INCTYPE 增量导出类型
INDEXES 导出索引 (Y)
RECORD 跟踪增量导出 (Y)
ROWS 导出数据行 (Y)
PARFILE 参数文件名
CONSTRAINTS 导出限制 (Y)
CONSISTENT 交叉表一致性
LOG 屏幕输出的日志文件
STATISTICS 分析对象 (ESTIMATE)
DIRECT 直接路径 (N)
TRIGGERS 导出触发器 (Y)
FEEDBACK 显示每 x 行 (0) 的进度
FILESIZE 各转储文件的最大尺寸
QUERY 选定导出表子集的子句

下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
TABLESPACES 将传输的表空间列表

二.导入工具 imp

1. 它是操作系统下一个可执行的文件 存放目录/ORACLE_HOME/bin

imp导入工具将EXP形成的二进制系统文件导入到数据库中.

   它有三种模式:
a.  用户模式: 导出用户所有对象以及对象中的数据;
b.  表模式: 导出用户所有表或者指定的表;
c.  整个数据库: 导出数据库中所有对象。
 
只有拥有IMP_FULL_DATABASE和DBA权限的用户才能做整个数据库导入
 
imp步骤:
(1) create table  (2) insert data  (3) create index (4) create triggers,constraints

2.导入工具imp交互式命令行方式的例子
$ imp
Import: Release 8.1.6.0.0 - Production on 星期五 12月 7 17:01:08 2001
(c) Copyright 1999 Oracle Corporation.  All rights reserved.
用户名:  test
口令:****
连接到: Oracle8i Enterprise Edition Release 8.1.6.0.0 - 64bit Production
With the Partitioning option
JServer Release 8.1.6.0.0 - Production
导入文件: expdat.dmp> e:\m.dmp
输入插入缓冲区大小(最小为 8192 ) 30720>
经由常规路径导出由EXPORT:V08.01.06创建的文件
警告: 此对象由 TEST 导出, 而不是当前用户
已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入
只列出导入文件的内容(yes/no):no>
由于对象已存在, 忽略创建错误(yes/no):no> yes
导入权限(yes/no):yes>
导入表数据(yes/no):yes>
导入整个导出文件(yes/no):no> yes
. 正在将TEST的对象导入到 SCOTT
. . 正在导入表                       "CMAMENU"       4336行被导入
成功终止导入,但出现警告。


3.导入工具imp非交互式命令行方式的例子

$ imp system/manager fromuser=jones tables=(accts) 
$ imp system/manager fromuser=scott tables=(emp,dept) 
$ imp system/manager fromuser=scott touser=joe tables=emp 
$ imp scott/tiger file = expdat.dmp full=y 
$ imp scott/tiger file = /mnt1/t1.dmp show=n buffer=2048000 ignore=n commit=y grants=y full=y log=/oracle_backup/log/imp_scott.log
$ imp system/manager parfile=params.dat 
params.dat 内容 
file=dba.dmp show=n ignore=n grants=y fromuser=scott tables=(dept,emp)

4.导入工具imp可能出现的问题

(1) 数据库对象已经存在
一般情况, 导入数据前应该彻底删除目标数据下的表, 序列, 函数/过程,触发器等;  
数据库对象已经存在, 按缺省的imp参数, 则会导入失败
如果用了参数ignore=y, 会把exp文件内的数据内容导入
如果表有唯一关键字的约束条件, 不合条件将不被导入
如果表没有唯一关键字的约束条件, 将引起记录重复

(2) 数据库对象有主外键约束
不符合主外键约束时, 数据会导入失败 
解决办法: 先导入主表, 再导入依存表
disable目标导入对象的主外键约束, 导入数据后, 再enable它们
(3)  权限不够
如果要把A用户的数据导入B用户下, A用户需要有imp_full_database权限

(4)  导入大表( 大于80M ) 时, 存储分配失败
默认的EXP时, compress = Y, 也就是把所有的数据压缩在一个数据块上.
导入时, 如果不存在连续一个大数据块, 则会导入失败.
导出80M以上的大表时, 记得compress= N, 则不会引起这种错误.

(5) imp和exp使用的字符集不同
如果字符集不同, 导入会失败, 可以改变unix环境变量或者NT注册表里NLS_LANG相关信息.
导入完成后再改回来.

(6) imp和exp版本不能往上兼容
imp可以成功导入低版本exp生成的文件, 不能导入高版本exp生成的文件
根据情况我们可以用
$ imp username/password@connect_string
说明: connect_string 是在/ORACLE_HOME/network/admin/tnsnames.ora
定义的本地或者远端数据库的名称

5.命令参数说明

关键字 说明(默认)   
----------------------------------------------
USERID 用户名/口令
FULL 导入整个文件 (N)
BUFFER 数据缓冲区大小
FROMUSER 所有人用户名列表
FILE 输入文件 (EXPDAT.DMP)
TOUSER 用户名列表
SHOW 只列出文件内容 (N)
TABLES 表名列表
IGNORE 忽略创建错误 (N)
RECORDLENGTH IO 记录的长度
GRANTS 导入权限 (Y)
INCTYPE 增量导入类型
INDEXES 导入索引 (Y)
COMMIT 提交数组插入 (N)
ROWS 导入数据行 (Y)
PARFILE 参数文件名
LOG 屏幕输出的日志文件
CONSTRAINTS 导入限制 (Y)
DESTROY 覆盖表空间数据文件 (N)
INDEXFILE 将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES 跳过不可用索引的维护 (N)
ANALYZE 执行转储文件中的 ANALYZE 语句 (Y)
FEEDBACK 显示每 x 行 (0) 的进度
TOID_NOVALIDATE 跳过指定类型 id 的校验
FILESIZE 各转储文件的最大尺寸
RECALCULATE_STATISTICS 重新计算统计值 (N)

下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N)
TABLESPACES 将要传输到数据库的表空间
DATAFILES 将要传输到数据库的数据文件
TTS_OWNERS 拥有可传输表空间集中数据的用户

三. unix下oracle数据库定时备份脚本(按用户备份)

以下命令可以用crontab方式每天夜里2点定时执行,脚本最多分30个文件,每个文件大小最大1G的形式将数据库导出,
如果数据库数据量很大,多于30G,则会导出不成功,此时只需根据数据量大小调整变量num的值即可。该脚本将数据库
导出后用gzip进行压缩,然后保存到系统/data/expfiles,导出之前,会将前一天的备份移到/data/expfiles_bak,
此种备份方式可以保存最近两天的数据备份。

outfile=`date +%Y%m%d_%H%M`
num=30
i=1
files=

if [ !  -d /data/expfiles ]; then
mkdir /data/expfiles
fi

if [ !  -d /data/expfiles_bak ]; then
mkdir /data/expfiles_bak
fi

dfile=`ls -1 /data/expfiles_bak/|awk '{if ( NR < 2 ) {print $1}}'`
prefix=`echo | awk '{print substr("'"${dfile}"'",1,13)}'`
rm -f /data/expfiles_bak/${prefix}*


dfile=`ls -1 /data/expfiles/|awk '{if ( NR < 2 ) {print $1}}'`
prefix=`echo | awk '{print substr("'"${dfile}"'",1,13)}'`
mv /data/expfiles/${prefix}* /data/expfiles_bak


while [ $i  -lt  $num ]
do
files=$files/data/expfiles/${outfile}_$i.dmp,
i=` expr $i + 1 `
done
files=$files/data/expfiles/${outfile}_$i.dmp

#echo $files
exp userid=user/passwd@acct FILE=$files filesize=1024M grants=N 2>>exp_rpt.log

gzip /data/expfiles/${outfile}*

转载于:https://www.cnblogs.com/iammatthew/archive/2010/08/19/1803905.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380933.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 网格交易源码下载_GitHub - xiongyixiaoyang/grid-trading: 网格交易(期货) ,基于网格交易方法的交易策略...

# codingutf-8from __future__ import print_function, absolute_import, unicode_literalsimport numpy as npimport pandas as pdfrom gm.api import *本策略首先计算了过去300个价格数据的均值和标准差并根据均值加减1和2个标准差得到网格的区间分界线,并分别配以0.3和0.5的…

python3 安装Crypto 出现的问题

python3 import Crypto 失败的解决办法 &#xff08;AES对称加密使用 模块&#xff09; # 先导入所需要的包 pip3 install Crypto # 再安装pycrypto pip3 install pycrypto from Crypto.Cipher import AES # 就成功了 ------------------------------- python3安装crypto出…

基于Windows 7旗舰版搭建WinCE6.0开发环境的过程

首先感谢JeffreyLi提供了更简便的安装WinCE6.0 R3的方法&#xff0c;今天验证过了&#xff0c;确实比我之前整理的《WinCE6.0 R3的安装步骤》方便很多&#xff0c;十分感谢&#xff01; 为了方便大家参考&#xff0c;重新整理的安装步骤如下&#xff1a; *Please install the …

随机邮箱_msgsafe - 一个处于半死不活状态的加密邮箱

一个半死不活的、还算有点意思的、支持端到端加密的免费邮箱&#xff0c;目前看来。邮箱简介好像自从Protonmail火了之后&#xff0c;支持端到端加密的邮箱越来越多&#xff0c;但大多有一个共同点&#xff1a;后缀都不怎么样。msgsafe.io于2016年建立&#xff0c;当年为了推广…

Spring环境搭建

1、导包&#xff08;此处省略如何下载Spring文件&#xff09; 打开我们的spring-framework-4.2.3.RELEASE文件&#xff08;这里我们只导入最基础的几个包&#xff09;&#xff0c;再打开libs文件&#xff1a; 找到以下几个包&#xff1a; 复制粘贴到eclipse中去&#xff0c;如…

win下python2,3和pip2,3双版本共存

在python环境中&#xff0c;有些开发需要依赖于python3的安装包&#xff0c;然而有些又需要python2才能运行。索性将python2和python3同时安装&#xff0c;并配置好各自的运行方式&#xff0c;以及各版本的pip。方便在需要安装工具包的时候&#xff0c;能准确定位到相应的版本。…

MFC 弹出对话框MessageBox

原来是这样的&#xff1a;AfxMessageBox(message); 就这么简单……转载于:https://www.cnblogs.com/youring2/archive/2010/08/25/1807719.html

python3 Crypto使用出现的问题

python3 安装Crypto 出现的问题 python3 import Crypto 失败的解决办法 &#xff08;AES对称加密使用 模块&#xff09; # 先导入所需要的包 pip3 install Crypto # 再安装pycrypto pip3 install pycrypto from Crypto.Cipher import AES # 就成功了 --------------------…

基于证书的WCF安全开发详解

基于证书的WCF安全开发详解 前几天成功建立起了一套基于证书的安全的WCF服务&#xff0c;很兴奋&#xff0c;现在做一下总结&#xff0c;希望大侠们指点&#xff0c;也希望能帮助到一些菜鸟&#xff0c;哈哈。 一、安全通信的基本过程 这里只做定性的理论上的分析&#xff0c;因…

h5分享到朋友圈_微信朋友圈创意招聘广告制作方法 H5模板

微信朋友圈招聘广告发布出去那么久了&#xff0c;为啥还是没有求职者前来应聘呢&#xff1f;那么一定是你的招聘广告不够创意&#xff0c;所以没能吸引求职者的目光。如何才能制作一个有创意更吸引求职者眼球的招聘广告呢&#xff1f;现在你只需通过制作平台的一个模板&#xf…

如何禁用win7的ASLR

ASLR&#xff08;Address space layout randomization&#xff09;使可执行程序的装载地址有一个随机偏移。虽然偏移值不大&#xff0c;但是会给内核级调试带来麻烦&#xff0c;尤其是离线查找符号表时。 经典的方法是用注册表项HKLM\SYSTEM\CurrentControlSet\Session Manage…

spring的Bean属性

我们在配置spring文件时&#xff0c;会遇到配置bean属性的问题&#xff0c;bean的作用很简单&#xff0c;就是使用该元素描述需要spring容器管理对象 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns:xsi"http://www.w3.org/2001/XML…

看了本书《答案在你心中》里面的很多问题都蛮有意思!!!

写完程序之余看看人生。想一想一些或许现在没有遇到&#xff0c;但将来某天会遇到的问题&#xff01;这本书总体还不错。摘几段看看&#xff01;&#xff01;每个人的答案都不一样&#xff01;&#xff01;哈哈《答案在你心中》为了心爱的人1 为了心爱的人&#xff0c; 你愿不愿…

还原特别慢_正手攻球最容易忽略的一步——还原

你距离标准的正手攻球可能只差一步。许多朋友在练习正手攻球一段时间以后&#xff0c;动作框架基本形成&#xff0c;有蹬转&#xff0c;能发力&#xff0c;肩部大臂都能放松&#xff0c;甚至能在击球的瞬间可以用上手指手腕的力量。但是录完视频一看&#xff0c;好像总是差那么…

Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)

Ubuntu使用教程&#xff1a;E: 无法获得锁 /var/lib/apt/lists/lock - open (11 资源临时不可用) 查看一下是否有使用apt-get的程序,终端输入:ps -aux,找到使用apt-get的程序(最后一列),查看其PID号,然后杀死其进程,输入sudo kill PID. 用sudo apt-get update时出现“ E: 无法…

Spring三种对象创建方式

1、创建方式1&#xff1a;无参构造 我们先创建一个User类&#xff1a; public class User {private String name;private int age;public User() {System.out.println("无参构造方法");}public String getName() {return name;}public void setName(String name) {t…

《Windows核心编程》の窗口过程的使用

1&#xff09;设计一个窗口过程&#xff1a; 下面的实例代码展现了经典的窗口过程的结构。窗口过程使用switch语句处理传入的消息参数uMsg&#xff0c; LRESULT CALLBACK MainWndProc( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM …

Anti-Screen Capture(Prevent Screen Captures)截屏与反截屏

1.数字图片使用类似与动画的方式显示&#xff0c;每次显示的是数字的一部分&#xff0c;当动态显示的时候人眼是可以分辨出具体数字的。但是截图的话就只能截取一部分&#xff0c;参考&#xff1a; cups.cs.cmu.edu/soups/2007/posters/p147_lim.pdf 2.屏蔽系统按键&#xff1…

unity中链接字符串和变量显示_理解Unity中的优化(六):字符串和文本

字符串和文本&#xff1a;在Unity项目中&#xff0c;处理字符串和文本经常会产生性能问题。在C#中&#xff0c;字符串是不变的。任何对字符串的操作都会重新分配新的字符串&#xff0c;这个代价是非常昂贵的。如果在多重循环中重复地执行字符串连接操作&#xff0c;就会造成性能…

Bean的scope属性

1、singleton&#xff08;默认值&#xff09;&#xff1a;单列对象&#xff0c;被标识为单例的对象在spring容器中只会存在一个实例 测试如下&#xff1a; 我们创建一个User类&#xff1a; public class User {private String name;private int age;public User() {System.out…