① oracle 10g 怎么备份和恢复数据库。
Oracle10G数据库中,数据库文件的备份与恢复可以有很多的方式来实现,这里介绍一种基于用户管理的备份与恢复。基于用户管理的备份是指使用OS命令来备份数据库物理文件。
备份数据库
数据库一致性备份:关闭数据库以后备份数据库物理文件,这时数据文件scn值完全一致,所以称之为数据库的一致性备份或冷备份,适用于归档模式与非归档模式。
对基于用户管理的冷备份的暂时理解:在数据库shutdown状态下使用OS命令直接拷贝数据库物理文件。
数据库非一致性备份:在open状态下备份数据库物理文件,这时数据库内容可能会改变导致数据文件scn不一致,所以称之为数据库的非一致性备份或热备份,只适用于归档模式。
基于用户管理的完全恢复(归档模式下)
1.在open状态下备份数据库物理文件(数据库非一致性备份,热备份,不影响业务运行)
2.删除数据文件来模拟文件丢失(只是删除了所有的数据文件;控制文件等其它文件处于正常状态)
3.对数据文件进行恢复
4.应用归档日志
5.查看数据是否完全恢复
--sysdba执行备份
SQL>
conn
/
as
sysdba
Connected.
SQL>
select
name
from
v$datafile;
NAME
--------------------------------------------------------------------------------
/oracle/10g/oracle/proct/10.2.0/oradata/oralife/system01.dbf
/oracle/10g/oracle/proct/10.2.0/oradata/oralife/undotbs01.dbf
/oracle/10g/oracle/proct/10.2.0/oradata/oralife/sysaux01.dbf
/oracle/10g/oracle/proct/10.2.0/oradata/oralife/users01.dbf
/oracle/10g/oracle/proct/10.2.0/oradata/oralife/example01.dbf
SQL>
alter
database
begin
backup;
Database
altered.
SQL>
host
cp
/oracle/10g/oracle/proct/10.2.0/oradata/oralife/*.dbf
/oracle/10g/oracle/bakup/database/
--备份所有数据文件
SQL>
alter
database
backup
controlfile
to
'/oracle/10g/oracle/bakup/database/oralife.ctl';
--备份控制文件
Database
altered.
SQL>
alter
system
archive
log
current;
--归档当前日志组
System
altered.
进行完全恢复
备份的数据文件到指定的目标位置,进行恢复:
SQL>
recover
database
--open状态
ORA-00283:
recovery
session
canceled
e
to
errors
ORA-01124:
cannot
recover
data
file
1
-
file
is
in
use
or
recovery
ORA-01110:
data
file
1:
'/oracle/10g/oracle/proct/10.2.0/oradata/oralife/system01.dbf'
SQL>
shutdown
immediate
--open状态
ORA-01122:
database
file
1
failed
verification
check
ORA-01110:
data
file
1:
'/oracle/10g/oracle/proct/10.2.0/oradata/oralife/system01.dbf'
ORA-01208:
data
file
is
an
old
version
-
not
accessing
current
version
SQL>
startup
force
mount;
--进入mount状态进行恢复
ORACLE
instance
started.
Total
System
Global
Area
528482304
bytes
Fixed
Size
1220360
bytes
Variable
Size
163578104
bytes
Database
Buffers
356515840
bytes
Redo
Buffers
7168000
bytes
Database
mounted.
SQL>
recover
database
Media
recovery
complete.
SQL>
alter
database
open;
Database
altered.
没有出现应用归档日志,应用归档日志有几种方式:
Specify
log:
{<RET>=suggested
|
filename
|
AUTO
|
CANCEL}
当在open状态下对数据文件进行恢复时,应该将其offline,恢复完成后,再将其online;所有的恢复应该尽量在open状态下完成。
② Oracle10g中如何将一个用户数据库复制成另一个用户数据库.
利用数据库的全备份功能,将hr_test数据库备份,然后导入到hpms_hr_test中不就可以了吗
③ 如何实现两个oracle数据库实时同步
为方便完成指定数据表的同步操作,可以采用dblink与merge结合的方法完成。
操作环境: 此数据库服务器为192.168.196.76,有center与branch两个库,一般需要将center的表数据同步到branch,center为源库,branch为目标库,具体步骤如下:
1.在源库创建到目标库的dblink
create database link branch --输入所要创建dblink的名称,自定义
connect to dbuser identified by “password” --设置连接远程数据库的用户名和密码
using '192.168.196.76/branch'; --指定目标数据库的连接方式,可用tns名称
在创建dblink时,要注意,有时候可能会报用户名和密码错误,但实际上我们所输入的账户信息是正确的,此时就注意将密码的大小写按服务器上所设置的输入,并在账号密码前号加上双引号(服务器版本不同造成的)。
2.成功后验证dblink
select * from tb_bd_action@branch; --查询创建好的brach库
正常情况下,如果创建dblink成功,可采用该方式访问到远程数据库的表.
3.通过merge语句完成表数据同步
此例中需要将center库中的tb_sys_sqlscripe表同步到branch,简单的语法如下:
merge into tb_sys_sqlscripe@branch b using tb_sys_sqlscripe c on (b.pk=c.pk) --从center将表merge到branch,同步的依据是两个表的pk
when matched then update set b.sqlscripe=c.sqlscripe,b.author=c.author --如果pk值是相同则将指定表的值更新到目标表
when not matched then --如果pk值不一至,则将源表中的数据整条插入到目标表中
insert values (c.pk, c.fk, c.createtime, c.lastmodifytime,c.author,c.mole,c.deleteflag, c.scripttype);
commit; --记得merge后必须commit,否则更改未能提交
4.为方便每次需要同步时自动完成同步工作,可将该语句做成存储过程或脚本来定时执行或按要求手动执行,简单说一下创建脚本的方法:
a.创建merge文件夹
b.先将merge语句写完整后,存到merge.sql文件中
c.新建merge.bat文件,编辑后写入以下内容
sqlplus user/password@serverip/database @"%cd%\merge.sql"
④ 如何在oracle数据库中将11g的dmp导入到10g的数据库中
Oracle 11g数据导入到10g
一、在11g服务器上,使用expdp命令备份数据
11g 导出语句:EXPDP USERID='facial/facial@orcl as sysdba' schemas=facialdirectory=DATA_PUMP_DIR mpfile=test.dmp logfile=test.log version=10.2.0.1.0
二、在10g服务器上,使用impdp命令恢复数据
准备工作:1.建库2.建表空间3.建用户并授权4.将test.dmp拷贝到10g的dpmp目录下
--创建表空间
create tablespace TS_Facial datafile 'E:ORACLEPRODUCT10.2.0ORADATAORCLFacial.DBF' size 500M autoextend on next 50M;
--创建用户
create user Facial identified by Facial default tablespace TS_Facial;
--授权给用户
grant connect,resource,dba to Facial;
test.dmp 和 test.log 放在E:oracleproct10.2.0adminorcldpmp目录下
10g 导入语句:IMPDP USERID='facial/facial@orcl as sysdba' schemas=facialdirectory=DATA_PUMP_DIR mpfile=test.dmp logfile=test.log version=10.2.0.1.0
oracle10g 数据导入到oracle11g 中:
在oracle10g 上执行:Exp ts/ts@orcl file=D: ianshan.dmp
在oracle11g 上创建好表空间和用户后执行:Imp ts/ts@orcl file=D: ianshan.dmp
Oracle11g 数据导入到oracle10g 中:
1.在oracle11g 服务器命令行中用expdp 导出数据
expdp ts/ts@orcl directory=expdp_dir mpfile=tianshan.dmp logfile=tianshan.log version=10.2.0.1.0 (schemas=ccense)
2.在oracle10g 服务器DOS 命令行中用IMPDP 导入数据:
把oracle11g 的备份文件放到oracl10g 服务器的impdp_dir 目录中,并创建好相应的用户和表空间,然后执行下面的命令:
impdp ts/ts@orcl directory=impdp_dir mpfile=tianshan.dmp logfile=tianshan.log version=10.2.0.1.0 (schemas=ccense)
Oracle 的imp/exp 组件的一个操作原则就是向下兼容,且有一些规则:
1、低版本的exp/imp 可以连接到高版本(或同版本)的数据库服务器,但高版本的exp/imp 不能连接到低版本的数据库服务器。
2、高版本exp 出的dmp 文件,低版本无法imp(无法识别dmp 文件);低版本exp 出的dmp 文件,高版本可以imp(向下兼容)。
3、从Oracle 低版本Export 的数据可以Import 到Oracle 高版本中,但限于Oracle 的相邻版本,如从Oracle 7 到 Oracle 8。对于两个不相邻版本间进行转换,如从Oracle 6 到 Oracle 8,则应先将数据输入到中间版本—Oracle 7,再从中间数据库转入更高版本Oracle 8。
⑤ linux下oracle数据库同步方案
stream,dataguard,Golden Gate
stream 现在oracle已经不再提供技术支持,
所以推荐使用dataguard,通过log日志传输保证主备库数据一致性,文版档较多。权
而golden gate是oracle另一款数据同步工具,需要license。实验可以考虑使用。