iii
導出/導入與字符集
明白ORACLE的多國語言設置
ORACLE多國語言設置是為了支持世界范圍的語言與字符集
一般對語言提示
貨幣形式
排序方式和CHAR
VARCHAR
CLOB
LONG字段的數據的顯示等有效
ORACLE的多國語言設置最主要的兩個特性就是國家語言設置與字符集設置
國家語言設置決定了界面或提示使用的語言種類
字符集決定了數據庫保存與字符集有關數據(如文本)時候的編碼規則
正如剛才上面的一個小例子
環境變量NLS_LANG的不同
導致EXP幫助發生變化
這就是多國語言設置的作用(NLS_LANG包含國家語言設置與字符集設置
這裡起作用的是國家語言設置
而不是字符集)
ORACLE字符集設定
分為數據庫字符集和客戶端字符集環境設置
在數據庫端
字符集在創建數據庫的時候設定
並保存在數據庫props$表中
對於
i以上產品
已經可以采用
Alter database character set 字符集
來修改數據庫的字符集
但也僅僅是從子集到超集
不要通過update props$來修改字符集
如果是不支持的轉換
可能會失去所有與字符集有關的數據
就是支持的轉換
也可能導致數據庫的不正常工作
字符集分為單字節字符集與多字節字符集
US
ASCII就是典型的單字節字符集
在這種字符集中length=lengthb
而ZHS
GBK就是常用的雙字節字符集
在這裡lengthb=
*length
在客戶端的字符集環境比較簡單
主要就是環境變量或注冊表項NLS_LANG
注意NLS_LANG的優先級別為
參數文件à注冊表à環境變量àalter session
NLS_LANG的組成為
國家語言設置
字符集
如nls_lang=simplified chinese_china
zhs
gbk
客戶端的字符集最好與數據庫端一樣(國家語言設置可以不一樣
如zhs
gbk的字符集
客戶端可以是nls_lang =simplified chinese_china
zhs
gbk或Ameircan_America
zhs
gbk
都不影響數據庫字符的正常顯示)
如果字符集不一樣
而且字符集的轉換也不兼容
那麼客戶端的數據顯示與導出/導入的與字符集有關的數據將都是亂碼
使用一點點技巧
就可以使導出/導入在不同的字符集的數據庫上轉換數據
這裡需要一個
進制文件編輯工具即可
如uedit
用編輯方式打開導出的dmp文件
獲取
字節的內容
如
先把它轉換為
進制數
為
使用函數NLS_CHARSET_NAME即可獲得該字符集
SQL> select nls_charset_name(
) from dual;
NLS_CHARSET_NAME(
)
US
ASCII
可以知道該dmp文件的字符集為US
ASCII
如果需要把該dmp文件的字符集換成ZHS
GBK
則需要用NLS_CHARSET_ID獲取該字符集的編號
SQL> select nls_charset_id(
zhs
gbk
) from dual;
NLS_CHARSET_ID(
ZHS
GBK
)
把
換成
進制數
為
把
字節的
換成
即完成了把該dmp文件字符集從us
ascii到zhs
gbk的轉化
這樣
再把該dmp文件導入到zhs
gbk字符集的數據庫就可以了
(注意
十進制數與十六進制之間的轉換
想明白其中的道理)
Iv
跨版本使用Exp/Imp
Exp/Imp很多時候
可以跨版本使用
如在版本
與版本
之間導出導入數據
但這樣做必須選擇正確的版本
規則為
·總是使用IMP的版本匹配數據庫的版本
如果要導入到
則使用
的導入工具
·總是使用EXP的版本匹配兩個數據庫中低的那個版本
如在
與
之間互導
則使用
的EXP工具
OS備份
操作系統備份有兩類
冷備份(Cold backup)與熱備份(Hot backup)
操作系統備份與以上的邏輯備份有本質的區別
邏輯備份提取數據庫的數據內容
而不備份物理數據塊
而操作系統備份則是拷貝整個的數據文件
i
冷備份
在文件級備份開始前數據庫必須徹底關閉
關閉操作必須用帶有normal
immediate
transaction選項的shutdown來執行
數據庫使用的每個文件都被備份下來
這些文件包括
☆所有數據文件
☆所有控制文件
☆所有聯機REDO LOG 文件
☆INIT
ORA文件(可選)
作冷備份一般步驟是
a
正常關閉要備份的實例(instance);
b
備份整個數據庫到一個目錄
c
啟動數據庫
如
SVRMGRL>connect internal
SVRMGRL >shutdown immediate
SVRMGRL >! cp <file> <backup directory>
或
SVRMGRL >!tar cvf /dev/rmt/
/u
/oradata/prod
SVRMGRL >startup
注意
如果利用腳本對數據庫進行冷備份
必須對關閉數據庫的命令進行邏輯檢查
如果發生關閉數據庫的命令不能正常執行而導致數據庫沒有正常關閉
那麼
所有的冷備份將回是無效的
ii
熱備份
熱備份是當數據庫打開並對用戶有效是的OS級的數據備份
熱備份只能用於ARCHIVELOG方式的數據庫
在數據文件備份之前
對應的表空間必須通過使用ALTER TABLESPACE …… BEGIN BACKUP以備份方式放置
然後組成表空間的數據文件可以使用類似冷備份的操作系統命令進行拷貝
在數據文件用操作系統命令拷貝後
應使用ALTER TABLESPACE …… END BACKUP命令使表空間脫離熱備份方式
熱備份沒有必要備份聯機日志
但必須是歸檔狀態
在實例恢復的時候
可能需要用到歸檔日志
當前聯機日志一定要保護好或是處於鏡相狀態
當前聯機日志的損壞
對於數據庫的損壞是巨大的
只能以數據的丟失來進行數據庫的恢復工作
對於臨時表空間
存放的是臨時信息
在熱備份是也可以考慮不用備份
如果臨時文件發生故障
可以刪除該數據文件與表空間
重建一個臨時表空間
熱備份的優點是顯而易見的
a.可在表空間或數據文件級備份
備份時間短
b.備份時數據庫仍可使用
c.可達到秒級恢復(恢復到某一時間點上)
d.可對幾乎所有數據庫實體作恢復
e.恢復是快速的
在大多數情況下在數據庫仍工作時恢復
操作系統作熱備份的一般步驟為
①連接數據庫
SVRMGRL>connect internal;
②將需要備份的表空間(如User)設置為備份方式
SVRMGRL>Alter tablespace User begin backup;
③拷貝數據文件
SVRMGRL>!cp /u
/oradata/prod/user
ora /backup/prod/user
ora
Or
$cp cp /u
/oradata/prod/user
ora /backup/prod/user
ora
④在數據文件拷貝完成後
將表空間拖體備份方式
SVRMGRL>Alter tablespace User end backup;
⑤對所有需要備份的表空間重復
⑥使用如下的命令備份控制文件ALTER DATABSE …… BACKUP CONTROLFILE
如備份成二進制文件
alter database backup controlfile to
new fielname
;
備份成文本文件
alter database backup controlfile to trace;
因為熱備份的時候
用戶還在操作數據庫
所以
最好是每個表空間處於備份狀態的時間最短
這樣就要求一個表空間一個表空間的備份
不要一起使表空間處於備份狀態而同時拷貝數據文件
注意
如果在熱備份的時候如果數據庫中斷(如斷電)
那麼在重新啟動數據庫的時候
數據庫將提示有數據文件需要恢復
你需要把正在斷電時候的處於備份狀態的數據文件通過ALTER TABLESPACE …… END BACKUP結束備份方式
具體哪個數據文件或表空間處於備份狀態
可以通過v$backup與v$datafile來獲得
RMAN(備份與恢復管理器)
i
使用RMAN進行備份
Recovery manager(RMAN)是ORACLE提供的DBA工具
用語管理備份和恢復操作
RMAN只能用於ORACLE
或更高的版本中
它能夠備份整個數據庫或數據庫部件
其中包括表空間
數據文件
控制文件和歸檔文件
RMAN可以按要求存取和執行備份和恢復
RMAN備份有如下優點
☆支持在線熱備份
☆支持多級增量備份
☆支持並行備份
恢復
☆減少所需要備份量
☆備份
恢復使用簡單
重要的是
使用恢復管理器允許您進行增量數據塊級的備份(這個與導出/導入的增量截然不同)
增量RMAN備份是時間和空間有效的
因為他們只備份自上次備份以來有變化的那些數據塊
另一個空間有效的RMAN特性是它只備份數據文件中使用的數據塊
忽略空的
未用的數據塊
這個對於預分配空間的表空間有很大的好處
從
i開始
還增加了RMAN的數據塊級別的恢復
可以進一步減少數據庫恢復時間
RMAN支持以下不同類型的備份
FULL 數據庫全備份
包括所有的數據塊
INCREMENTAL 增量備份
只備份自上次增量備份以來修改過的數據塊
需要一個
級的增量作為增量的基礎
可以支持
級增量
OPEN 在數據庫打開的時候使用
CLOSED 在數據庫安裝(MOUNT)但不打開的時候備份
關閉備份可以是CONSISTENT或IN CONSISTENT類型的
CONSISTENT 在數據庫安裝
單不打開
並且在安裝之前數據庫被徹底關閉(而不是被破壞或異常退出)時使用
CONSISTENT備份可以簡單的進行復原(RESTORE)而不是恢復(RECOVER)
INCONSISTENT 在數據庫打開或安
From:http://tw.wingwit.com/Article/program/Oracle/201311/17189.html