Oracle数据库备份

1.1 简介

Oracle11g备份数据库的时候经常会出现空表无法正常备份的问题,针对这种问题有一下集中方法进行处理

1.2 处理方法

方法一

1、 使用PL/SQLtoolsExport Tables…导出dmp文件导出的存在数据的表。

2、 使用PL/SQLtools—Export User Objects…导出全部导出的是数据库所有表、视图、方法的建表SQL语句。这样就可以保证数据库的完整性。

3、 导入数据的执行顺序是先执行导出SQL文件,然后再执行dmp文件的导入。

方法二

通过sql语句更改空表的状态,然后再执行导出可以保证数据库的完整性,具体步骤如下:

1、 执行以下查询语句,查询结果保存为sql文件然后执行

select 'alter table '||table_name||' allocate extent;' from user_tables;

1Oracle数据库备份与恢复1Oracle数据库备份与恢复1Oracle数据库备份与恢复1Oracle数据库备份与恢复 

命令行执行保存的sql脚本:

1Oracle数据库备份与恢复1Oracle数据库备份与恢复1Oracle数据库备份与恢复1Oracle数据库备份与恢复 

2、 修改bat文件然后执行

rem select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;导出之前执行,确保导出所有表,包含空表
rem DELETE T_ADMIN_XTFWRZ;
rem DELETE T_XTGL_XTRZ_FWDYB;
rem DELETE T_XTGL_XTRZ_DLJLB;
rem DELETE T_XTGL_XTRZ_YWCZB;
rem DELETE T_XTGL_XTRZ_CDFWB;
@echo off 
set FROM_SERVER=192.168.3.XX:1521/orcl
set F_PATH=E:\Data\U_NOTESHARE\U_NOTESHARE
rem 备份文件命名,取时间戳来作为文件名
set F_FILE=%date:~0,4%%date:~5,2%%date:~8,2%
rem %time:~0,2%%time:~3,2%%time:~6,2%
set FILE_DIR=%F_PATH%%F_FILE%

echo 创建目录
md %FILE_DIR%

set ACCOUNT=U_NOTESHARE
set ACCOUNT_PASSWORD=U_NOTESHARE
echo 备份数据%ACCOUNT%
echo 从服务器%FROM_SERVER%中导出用户%ACCOUNT%的数据
echo %ACCOUNT%/%ACCOUNT_PASSWORD%@%FROM_SERVER% file='%FILE_DIR%\%ACCOUNT%.dmp' owner=%ACCOUNT% log='%FILE_DIR%\exp%ACCOUNT%.log'
exp %ACCOUNT%/%ACCOUNT_PASSWORD%@%FROM_SERVER% file='%FILE_DIR%\%ACCOUNT%.dmp' owner=%ACCOUNT% log='%FILE_DIR%\exp%ACCOUNT%.log'
echo ############################################################# 


rem set path=C:\Program Files\WinRAR
rem echo 压缩数据文件并打包 
rem rar a -r %F_PATH%%F_FILE%.rar %FILE_DIR%
rem echo 删除数据文件
rem rd /S /Q %FILE_DIR%

rem forfiles /p %F_PATH% /s /m *.* /d -7 /c " cmd /c del @path"
echo 任务结束
pause

 


方法

使用数据泵导出数据库,可以直接导出全部数据库,具体步骤如下:

1、创建directory dmpdir1病把权限赋给用户,具体指令如下:

Ø 登录Oracle:sqlplus / as sysdba;

Ø 创建directory:create or replace directory dmpdir1 as 'e:';

Ø 把权限赋给对应的用户U_POWER:grant read,write on directory dmpdir1 to U_SJZX_ZYK_YC;

Ø 退出:exit;

2、导入DMP文件,指令如下(注意:DMP文件名的大小写要区分):

impdp U_POWER/U_POWER transform=segment_attributes:n directory=dmpdir1 remap_schema=U_POWER:U_POWER dumpfile=U_POWER.DMP;

 

数据泵从高版本导出数据,然后导入低版本数据库中

expdp userid='U_ZWXXPT/U_ZWXXPT@ORCL' directory=dmpdir1  dumpfile=U_ZWXXPT.dmp version=11.1.0.6.0

 

数据库脚本修改全部表的Orgid

2.1 简介

在系统开发环境搭建时候经常需要对数据库中所有的表的Orgid进行修改,有时系统中存在的功能不正常需要单独执行SQL语句进行修改

 

2.2 处理方法

1查询用户下面所有包含ORGID的表,结果保存为SQL脚本,然后执行:

select 'update '|| table_name ||' SET ORGID=' || '''1408' ||''';' from all_tab_columns where OWNER='U_YCOA' AND COLuMN_NAME='ORGID';

 1Oracle数据库备份与恢复1Oracle数据库备份与恢复1Oracle数据库备份与恢复1Oracle数据库备份与恢复

 

2、命令行窗口执行保存的脚本:

1Oracle数据库备份与恢复1Oracle数据库备份与恢复1Oracle数据库备份与恢复1Oracle数据库备份与恢复


以下文章为同事整理,此处打个标签,方便后续查阅 

作者:星辰 时间:2018-05-03 浏览 2942评论 0 赞 0砸 0 标签: oracle
评论
还可以再输入500个字

请您注意

·自觉遵守:爱国、守法、自律、真实、文明的原则
·尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法规
·严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的作品
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·您在NoteShare上发表的作品,NoteShare有权在网站内保留、转载、引用或者删除
·参与本评论即表明您已经阅读并接受上述条款