日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle 原理:逻辑备份和恢复

發布時間:2024/10/14 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle 原理:逻辑备份和恢复 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、備份和恢復

二、Oracel環境中可能發生的故障類型

三、導入導出程序 exp/imp

四、exp/imp 和數據泵的區別


一、備份和恢復

在Oracle 要有備份才能恢復。Oracle備份分為物理備份和邏輯備份。物理備份,即備份物理文件,如數據文件、日志文件、控制文件、密碼文件等。邏輯備份:表、視圖、存儲過程、數據庫對象等。

二、Oracel環境中可能發生的故障類型

故障分為四種:語句故障,即SQL語句發生錯誤發生的故障,Oracle會自己發現語句故障;用戶進程故障,當用戶程序連接數據庫時客戶端發生故障,導致客戶端死機,用戶進程消失。此時Oracle中的PMON會自動把對應的服務進程給停止;實例故障,如Oracle服務端死機,內存崩潰,進程垮掉。此時需要重啟Oracle就可以恢復實例故障;介質故障,如硬盤壞掉導致數據文件損壞,此時需要聯系DBA進行人工處理恢復。

三、導入導出程序 exp/imp

導出,把數據庫中的對象變成二進制文件放在操作系統中;導入,把操作系統的二進制文件變回數據庫中載入。傳統的導入導出程序在客戶端中。在傳統數據遷移中,把數據庫A中的數據導出成數據文件(dmp,csv,tsv,excle,sql文件等),再把這數據文件放入新數據庫中執行。其中降低高水位線,可以重新導表來實現(一般是insert into newtable select * from oldtable; truncate table oldtable;insert into oldtable select * from newtable ;)

導入導出有四種模式:數據庫模式,導出導入數據庫全部對象;表空間模式,導入導出一個或多個表空間中的所有對象;用戶模式,導出導入一個用戶模式中的所有對象;表模式,導出導入一個或多個表或表分區。

導出exp的常用參數: 在cmd提示符中輸入 exp? help=y

參數名默認值(格式)說明
USERIDusername/password@database??指定要登陸用戶的賬號密碼,該參數必須為命令行中第一個參數,例: exp tester/ root指的是用戶名為tester,密碼是root
FULLFULL=Y/N是否導出整個數據庫
BUFFERBUFFER=數據緩沖區大小數據緩沖區大小,用于提高exp/imp速度,單位為字節,不能寫成buffer=1m的形式,應寫成字節為單位的參數,如buffer=1048576
OWNEROWNER=(user1, user2, …)將擁有者為user1,user2,…的表導出
FILEFILE=example.dmp指定導出文件的路徑和文件名,例:FILE=example.dmp是指將數據導出到example.dmp中
TABLESTABLES=(table1, table2,…)只導出表table1、table2…
COMPRESSCOMPRESS=Y/N是否對導出文件進行壓縮
RECORDLENGTH?IO記錄的長度
GRANTSGRANTS=Y/N是否導出權限
INCTYPE?增量導出的類型
INDEXESINDEXES=Y/N是否導出索引
RECORDRECORD=Y/N是否追蹤增量導出
DIRECTDIRECT=Y/N是否是絕對路徑
TRIGGERSTRIGGERS=Y/N是否導出觸發器
LOGLOG=exp.log保存屏幕輸出的日志到某文件
STATISTICSSTATISTICS=ESTIMATE分析對象
ROWSROWS=Y/N是否導出表中數據行
PARFILEPARFILE=file_name參數文件,可將exp參數配置寫成文件,便于反復調用
CONSISTENTCONSISTENT=Y/N交叉表是否保持一致性
CONSTRAINTSCONSTRAINTS=Y/N是否導出約束
OBJECT_CONSISTENT?transaction set to read only during object export (N)
FEEDBACKFEEDBACK=x每x行顯示運行進度
FILESIZEFILESIZE=size設置導出dmp文件的大小
FLASHBACK_SCN?SCN used to set session snapshot back to
FLASHBACK_TIME?time used to get the SCN closest to the specified time
QUERYQUERY=SQLSQL語句用于數據過濾,例如:QUERY=' where id > 0'將id大于0的數據導出
RESUMABLE?suspend when a space related error is encountered(N)
RESUMABLE_NAME?text string used to identify resumable statement
RESUMABLE_TIMEOUT?wait time for RESUMABLE
TTS_FULL_CHECK?perform full or partial dependency check for TTS
VOLSIZE?number of bytes to write to each tape volume
TABLESPACESTABLESPACES=(ts1, ts2)導出指定的表空間列表
TRANSPORT_TABLESPACETRANSPORT_TABLESPACE=Y/N是否導出可傳輸的表空間元數據
TEMPLATE?template name which invokes iAS mode export

imp導入常用參數:在cmd提示符中輸入 imp? help=y

USERIDusername/password指定要登陸用戶的賬號密碼,該參數必須為命令行中第一個參數,例: imp tester/ root指的是用戶名為tester,密碼是root
FULLFULL=Y/N是否導入整個數據庫
BUFFERBUFFER=數據緩沖區大小數據緩沖區大小
FROMUSERFROMUSER=(user1, user2, …)將擁有者為user1,user2,…的數據導入
TOUSERTOUSER=tester將數據導入到用戶tester下
FILEFILE=example.dmp指定導入文件的路徑和文件名,例:FILE=example.dmp是指導入example.dmp
TABLESTABLES=(table1, table2,…)只導入表table1、table2…
SHOWSHOW=Y/N只列出文件內容
IGNOREIGNORE=Y/N是否忽視遷移過程中的創建錯誤繼續導入
RECORDLENGTH?IO記錄的長度
GRANTSGRANTS=Y/N是否導出權限
INCTYPE?增量導入類型
INDEXESINDEXES=Y/N是否導入索引
COMMITCOMMIT=Y/N是否提交數組插入
ROWSROWS=Y/N是否導入數據行
PARFILEPARFILE=file_name參數文件,可將exp參數配置寫成文件,便于反復調用
LOGLOG=imp.log將屏幕輸出日志導入到指定文件
CONSTRAINTSCONSTRAINTS=Y/N是否導入約束
DESTROYDESTROY=Y/N是否覆蓋表空間數據文件
INDEXFILE?將表/索引信息寫入指定的文件
SKIP_UNUSABLE_INDEXESSKIP_UNUSABLE_INDEXES=Y/N跳過不可用索引的維護
FEEDBACKFEEDBACK=x每 x 行顯示導入進度
FILESIZEFILESIZE=size設置導入dmp文件的大小
TOID_NOVALIDATE?跳過指定類型 ID 的驗證
STATISTICS?import precomputed statistics (always)
RESUMABLERESUMABLE=Y/N在遇到有關空間的錯誤時掛起
RESUMABLE_NAME?text string used to identify resumable statement
RESUMABLE_TIMEOUT?RESUMABLE 的等待時間
COMPILECOMPILE=Y/N是否編譯存儲過程, 包和函數 (Y)
STREAMS_CONFIGURATIONSTREAMS_CONFIGURATION=Y/N是否導入streams的一般元數據
STREAMS_INSTANTIATIONSTREAMS_INSTANTIATION=Y/N是否導入streams的實例元數據
DATA_ONLYDATA_ONLY=Y/N是否只導入數據
VOLSIZE?number of bytes in file on each volume of a file on tape

以上表格轉載于:https://blog.csdn.net/Loiterer_Y/article/details/84872058

例如導出,在命令提示符中

exp? <user>/<pwd>@<ROLE> tables=(<table1>,<table2>) file=<outputPah> log =<logPath> 例

exp system/voapd@orcl tables=(system.salary_tbl) file='D:\sal_bak.dmp' log='D:\sal_bak.log'

log如圖:

如果想導出用戶所有內容

exp system/voapd@orcl owner=system?file='D:\systemUser.dmp' log='D:\systemUser.log'.

當然有些參數不能同時使用? owner=? ?和 full=y? 等,因為這兩個參數不屬于同一個模式,不在同一個模式的參數是不能共用的,會造成沖突。

導出成dmp文件后,那就要導入imp

把D:\sal_bak.dmp 的備份表到給voapd 用戶

?imp system/voapd@orcl file=D:\sal_bak.dmp tables=(salary_tbl) fromuser=system touser=voapd

因為system的身份是DBA 所以可以導出給其他普通用戶,但是登陸普通用戶是無法給其他普通用戶導表的。

上述截圖有警告和語句執行失敗,是因為voapd 用戶 已經有salary_tbl 了。避免這樣的錯誤

?imp system/voapd@orcl file=D:\sal_bak.dmp tables=(salary_tbl) fromuser=system touser=voapd??IGNORE=Y? ? ?就行了

上面的導入導出方式是命令提示符的方式,還有一種是交互提示符方式,導入直接輸入imp , 導出直接輸入exp,然后一行一行地設值,不設值就是默認值

第三種導入導出的方式是參數文件的方式

執行導出參數文件。exp parfile='大大的.txt';

如果數據遷移量較大,可使用可傳輸表空間,具體步驟分為幾步:

1.檢查要傳輸的表空間是否是自包含的

2.將表空間設成只讀

3.exp進行可傳輸表空間的模式導出

4.將導出的文件和對應的數據文件復制到目標服務器上

5.進行imp可傳輸表空間的模式進行導入

6.目標數據庫上,把表空間設成讀寫狀態。

alter tablespace TESTTBS read only; create tablespace TESTTBS datafile 'D:\oracle\oradata\ORCL\TESTTBS2.DBF' size 10m; create table sal_tem tablespace TESTTBS as select * from salary_tbl; exp 'system/voapd@orcl as SYSDBA' tablespaces=TESTTBS transport_tablespace=Y file='D:\exp_tbl.dmp' --把表空間文件和對應的數據文件分別賦值到 目標服務器的 D:\exp_tbl.dmp 和 D:\oracle\oradata\voapl2\TESTTBS2.DBF imp 'system/voapd@voapl2 as SYSDBA' tablespaces=TESTTBS transport_tablespace=Y file='D:\oracle\exp_tbl.dmp' datafiles='D:\oracle\oradata\voapl2\TESTTBS2.DBF' alter tablespace TESTTBS read write;

?

四、exp/imp 和數據泵的區別

? ? ?從10g開始Oracle有了數據泵的概念。exp/imp 的方法速度太慢,在大型的生產庫上十分明顯.exp/imp是客戶端的工具,而數據泵是服務器端的工具,能夠為Oracle 提高并行高速度的大數據遷移。使用數據泵(expdp/impdp)在服務器端使用,使用前需要在數據庫中創建一個Directory。

? ? ?在expdp進行導出時,Oracle首先會創建MT表,并把導出對象的信息插入到MT表,之后進行導出動作;導出完成后,MT表也導出到轉儲文件中;導出任務完成后,或者刪除了導出任務后,MT表自動刪除;如果導出任務異常終止,MT表仍然保留。expdp有四種模式,和剛才的exp的模式一樣。在cmd命令行中? expdp help=y? 查看參數幫助文檔。


數據泵導出實用程序提供了一種用于在 Oracle 數據庫之間傳輸
數據對象的機制。該實用程序可以使用以下命令進行調用:

? ?示例: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

您可以控制導出的運行方式。具體方法是: 在 'expdp' 命令后輸入
各種參數。要指定各參數, 請使用關鍵字:

? ?格式: ?expdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
? ?示例: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott
? ? ? ? ? ? ? ?或 TABLES=(T1:P1,T1:P2), 如果 T1 是分區表

USERID 必須是命令行中的第一個參數。以下是可用關鍵字和它們的說明。方括號中列出的是默認值。

ATTACH連接到現有作業。例如, ATTACH=job_name。
COMPRESSION減少轉儲文件大小。有效的關鍵字值為: ALL, DATA_ONLY, [METADATA_ONLY] 和 NONE。
CONTENT指定要卸載的數據。有效的關鍵字值為: [ALL], DATA_ONLY 和 METADATA_ONLY。
DATA_OPTIONS數據層選項標記。有效的關鍵字值為: XML_CLOBS。
DIRECTORY用于轉儲文件和日志文件的目錄對象。
DUMPFILE指定目標轉儲文件名的列表 [expdat.dmp]。例如, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。
ENCRYPTION加密某個轉儲文件的一部分或全部。有效的關鍵字值為: ALL, DATA_ONLY, ENCRYPTED_COLUMNS_ONLY, METADATA_ONLY 和 NON。
ENCRYPTION_ALGORITHM指定加密的方式。有效的關鍵字值為: [AES128], AES192 和 AES256。
ENCRYPTION_MODE生成加密密鑰的方法。有效的關鍵字值為: DUAL, PASSWORD 和 [TRANSPARENT]。
ENCRYPTION_PASSWORD用于在轉儲文件中創建加密數據的口令密鑰。
ESTIMATE計算作業估計值。有效的關鍵字值為: [BLOCKS] 和 STATISTICS。
ESTIMATE_ONLY計算作業估計值而不執行導出。
EXCLUDE排除特定對象類型。例如, EXCLUDE=SCHEMA:"='HR'"。
FILESIZE以字節為單位指定每個轉儲文件的大小。
FLASHBACK_SCN用于重置會話快照的 SCN。
FLASHBACK_TIME用于查找最接近的相應 SCN 值的時間。
FULL導出整個數據庫 [N]。
HELP顯示幫助消息 [N]。
INCLUDE包括特定對象類型。例如, INCLUDE=TABLE_DATA。
JOB_NAME要創建的導出作業的名稱。
LOGFILE指定日志文件名 [export.log]。
NETWORK_LINK源系統的遠程數據庫鏈接的名稱。
NOLOGFILE不寫入日志文件 [N]。
PARALLEL更改當前作業的活動 worker 的數量。
PARFILE指定參數文件名。
QUERY用于導出表的子集的謂詞子句。例如, QUERY=employees:"WHERE department_id > 10"。
REMAP_DATA指定數據轉換函數。例如, REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO。
REUSE_DUMPFILES覆蓋目標轉儲文件 (如果文件存在) [N]。
SAMPLE要導出的數據的百分比。
SCHEMAS要導出的方案的列表 [登錄方案]。
SOURCE_EDITION用于提取元數據的版本。
STATUS監視作業狀態的頻率, 其中默認值 [0] 表示只要有新狀態可用, 就立即顯示新狀態。
TABLES標識要導出的表的列表。例如, TABLES=HR.EMPLOYEES,SH.SALES:SALES_1995。
TABLESPACES標識要導出的表空間的列表。
TRANSPORTABLE指定是否可以使用可傳輸方法。有效的關鍵字值為: ALWAYS 和 [NEVER]。
TRANSPORT_FULL_CHECK驗證所有表的存儲段 [N]。
TRANSPORT_TABLESPACES要從中卸載元數據的表空間的列表。
VERSION要導出的對象版本。有效的關鍵字值為: [COMPATIBLE], LATEST 或任何有效的數據庫版本。

下列命令在交互模式下有效。注: 允許使用縮寫。
?

ADD_FILE將轉儲文件添加到轉儲文件集。
CONTINUE_CLIENT返回到事件記錄模式。如果處于空閑狀態, 將重新啟動作業。
EXIT_CLIENT退出客戶機會話并使作業保持運行狀態。
FILESIZE用于后續 ADD_FILE 命令的默認文件大小 (字節)。
HELP匯總交互命令。
KILL_JOB分離并刪除作業。
PARALLEL更改當前作業的活動 worker 的數量。
REUSE_DUMPFILES覆蓋目標轉儲文件 (如果文件存在) [N]。
START_JOB啟動或恢復當前作業。有效的關鍵字值為: SKIP_CURRENT。
STATUS監視作業狀態的頻率, 其中默認值 [0] 表示只要有新狀態可用, 就立即顯示新狀態。
STOP_JOB按順序關閉作業執行并退出客戶機。有效的關鍵字值為: IMMEDIATE。

?

impdp? help=y?

數據泵導入實用程序提供了一種用于在 Oracle 數據庫之間傳輸
數據對象的機制。該實用程序可以使用以下命令進行調用:

? ? ?示例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

您可以控制導入的運行方式。具體方法是: 在 'impdp' 命令后輸入
各種參數。要指定各參數, 請使用關鍵字:

? ? ?格式: ?impdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
? ? ?示例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

USERID 必須是命令行中的第一個參數。


以下是可用關鍵字和它們的說明。方括號中列出的是默認值。

ATTACH連接到現有作業。例如, ATTACH=job_name。
CONTENT指定要加載的數據。有效的關鍵字為: [ALL], DATA_ONLY 和 METADATA_ONLY。
DATA_OPTIONS數據層選項標記。有效的關鍵字為: SKIP_CONSTRAINT_ERRORS。
DIRECTORY用于轉儲文件, 日志文件和 SQL 文件的目錄對象。
DUMPFILE要從中導入的轉儲文件的列表 [expdat.dmp]。例如, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。
ENCRYPTION_PASSWORD用于訪問轉儲文件中的加密數據的口令密鑰。對于網絡導入作業無效。
ESTIMATE計算作業估計值。有效的關鍵字為: [BLOCKS] 和 STATISTICS。
EXCLUDE排除特定對象類型。例如, EXCLUDE=SCHEMA:"='HR'"。
FLASHBACK_SCN用于重置會話快照的 SCN。
FLASHBACK_TIME用于查找最接近的相應 SCN 值的時間。
FULL導入源中的所有對象 [Y]。
HELP顯示幫助消息 [N]。
INCLUDE包括特定對象類型。例如, INCLUDE=TABLE_DATA。
JOB_NAME要創建的導入作業的名稱。
LOGFILE日志文件名 [import.log]。
NETWORK_LINK源系統的遠程數據庫鏈接的名稱。
NOLOGFILE不寫入日志文件 [N]。
PARALLEL更改當前作業的活動 worker 的數量。
PARFILE指定參數文件。
PARTITION_OPTIONS指定應如何轉換分區。有效的關鍵字為: DEPARTITION, MERGE 和 [NONE]。
QUERY用于導入表的子集的謂詞子句。例如, QUERY=employees:"WHERE department_id > 10"。
REMAP_DATA指定數據轉換函數。例如, REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO。
REMAP_DATAFILE在所有 DDL 語句中重新定義數據文件引用。
REMAP_SCHEMA將一個方案中的對象加載到另一個方案。
REMAP_TABLE將表名重新映射到另一個表。例如, REMAP_TABLE=EMP.EMPNO:REMAPPKG.EMPNO。
REMAP_TABLESPACE將表空間對象重新映射到另一個表空間。
REUSE_DATAFILES如果表空間已存在, 則將其初始化 [N]。
SCHEMAS要導入的方案的列表。
SKIP_UNUSABLE_INDEXES跳過設置為“索引不可用”狀態的索引。
SOURCE_EDITION用于提取元數據的版本。
SQLFILE將所有的 SQL DDL 寫入指定的文件。
STATUS監視作業狀態的頻率, 其中默認值 [0] 表示只要有新狀態可用, 就立即顯示新狀態。
STREAMS_CONFIGURATION啟用流元數據的加載
TABLE_EXISTS_ACTION導入對象已存在時執行的操作。有效的關鍵字為: APPEND, REPLACE, [SKIP] 和 TRUNCATE。
TABLES標識要導入的表的列表。例如, TABLES=HR.EMPLOYEES,SH.SALES:SALES_1995。
TABLESPACES標識要導入的表空間的列表。
TARGET_EDITION用于加載元數據的版本。
TRANSFORM要應用于適用對象的元數據轉換。有效的關鍵字為: OID, PCTSPACE, SEGMENT_ATTRIBUTES 和 STORAGE。
TRANSPORTABLE用于選擇可傳輸數據移動的選項。有效的關鍵字為: ALWAYS 和 [NEVER]。僅在 NETWORK_LINK 模式導入操作中有效。
TRANSPORT_DATAFILES按可傳輸模式導入的數據文件的列表。
TRANSPORT_FULL_CHECK驗證所有表的存儲段 [N]。
TRANSPORT_TABLESPACES要從中加載元數據的表空間的列表。僅在 NETWORK_LINK 模式導入操作中有效。
VERSION要導入的對象的版本。有效的關鍵字為: [COMPATIBLE], LATEST 或任何有效的數據庫版本。僅對 NETWORK_LINK 和 SQLFILE 有效。
??

下列命令在交互模式下有效。注: 允許使用縮寫。

CONTINUE_CLIENT返回到事件記錄模式。如果處于空閑狀態, 將重新啟動作業。
EXIT_CLIENT退出客戶機會話并使作業保持運行狀態。
HELP匯總交互命令。
KILL_JOB分離并刪除作業。
PARALLEL更改當前作業的活動 worker 的數量。
START_JOB啟動或恢復當前作業。有效的關鍵字為: SKIP_CURRENT。
STATUS監視作業狀態的頻率, 其中默認值 [0] 表示只要有新狀態可用, 就立即顯示新狀態。
STOP_JOB按順序關閉作業執行并退出客戶機。有效的關鍵字為: IMMEDIATE。
??
--------新建--------新建目錄 ORCL>>CREATE DIRECTORY MY_DIR AS 'D:\DIRTEST1'; ORCL>>GRANT READ ,WRITE ON DIRECTORY MY_DIR TO voapd -----導出voapd 的salary_tbl ----結尾千萬不要亂加分號 cmd >>expdp voapd/voapd@orcl directory=MY_DIR dumpfile=voapd_salary_tbl.dmp tables =(salary_tbl) ----導入到voapl2數據庫的system用戶 VOAPL2>>CREATE DIRECTORY MY_DIR AS 'D:\DIRTEST1'; cmd>> impdp system/voapd@voapl2 directory=MY_DIR dumpfile=voapd_salary_tbl.dmp REMAP_SCHEMA=voapd:system

?

總結

以上是生活随笔為你收集整理的Oracle 原理:逻辑备份和恢复的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。