① 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。實驗可以考慮使用。