Ⅰ 在oracle中怎樣把一個資料庫中的一張表的數據復制到另一個資料庫中的一張表中
1、使用plsql連接上資料庫,展開【Tables】菜單項,下面出現的就是資料庫表。
Ⅱ oracle資料庫拷貝
導出:exp user1/pwd1@test1 file = 『d:\test1.dmp』
用test2登錄 導入 imp user2/pwd2@test2 file = 『d:\test1.dmp』 full=y
Ⅲ 有關Oracle資料庫的備份情況
一 意義 當我們使用一個資料庫時 總希望數喊者據庫的內容是可靠的 正確的 但由於計算機系統的故障(硬體故障 網路故障 進程故障和系統故障)影響資料庫系統的操作 影響資料庫中數據的正確性 甚至破壞資料庫 使資料庫中全部或部分數據丟失 因此當發生上述故障後 希望能重新建立一個完整的資料庫 該處理稱為資料庫恢復 恢復子系統是資料庫管理系統的一個重要組成部分 恢復處理隨所發生的故障類型所影響的結構而變化 二 備份的方法ORACLE資料庫有三種標準的備份 導出/導入(EXPORT/IMPORT) 冷備份 熱備份 導出備份是一種邏輯備份 這種方法包括讀取一系列的資料庫日誌 並寫入文件中 這些日誌的讀取與其所處位鄭答薯置無關 冷備份和熱備份是物理備份(也稱低級備份) 它涉及到組成資料庫的文件 但不考慮邏輯內容 下面我們分別介紹一下這三種備份方法及其特點 (一) 導出/導入(EXPORT/IMPORT)EXPORT/IMPORT是用來將ORACLE中數據移出/移入資料庫 EXPORT將資料庫中數據備份成一個二進制系統文件稱為 導出轉儲文件 (EXPORT DUMP FILE) 並將重新生成資料庫寫入文件中 它有三種模式 a 用戶模式 導出用戶所有對象以及對象中的數據 b 表模式 導出用戶所有表或者指定的表 c 整個資料庫 導出資料庫中所有對象 它的備份有三種類型 a 完全型(PLETE EXPORT) 備份整個資料庫 b 積累型(ULATIVE ERPORT) 備份上一次積累型備份所改變的數據 c 增量型(INCREAMENTAL EXPORT) 備份上一次備份後改變的數據 EXPORT 的命令可以互動式進行 各參數的具體含義見附錄 在進行導出備份時我們要考慮一點問題 那就是導出的一致性 在導出過程 中導出每讀一次就讀取一個表 因而盡管導出是在一個特點時自己開始的 但不同的表讀取的時間不同 因此 導出開始讀一個表時 此時表中的數據才是導出的數據 這樣當大多數表按內部關鍵字和外部關鍵字相互聯系時 在導出過程中這些相關聯表的改變就會導致導出的不一致性 要避開這個 我們可以將導出過程安排在不對表操作的時候進行 另外 當ORACLE中RESTRICTEP CONSISTENT 選項就可以保證導出數據一致性
IMPORT導入 導入的過程是導出的逆過程 這個命令先讀取導出來的導出轉儲二進制文件 並運行文件 恢復對象用戶和數據 IMPORT命令執行的方法和EXPORT方案有關 如果EXPORT所實施的是完全型方案(FULL)則在IMPORT時所有的數據對象 包括表空間 數據文件 用戶都會在導入時創建 但考慮到資料庫中的物理布局 預先創建表空間和用戶是有用的 如果EXPORT使用的是INCREMENTAL/CUMULATIVE方式 則需要預先設置好表空間 用戶 數據文件 (二) 冷備份冷備份發生在資料庫已經正常關閉的情況下 當正常關閉時會提供給我們一個完整的資料庫 資料庫使用的每個文件都被備份下來 這些文件包括 所有數據文件所有控制文件所有聯機REDO LOG 文件INIT ORA文件(可選)值得注意的是冷備份必須是資料庫關閉的情況下舉歲完成 當資料庫開著的時候 執行資料庫文件系統備份無效 作冷備份一般步驟是 正常關閉要備份的實例(instance); : 備份整個資料庫到一個目錄 啟動資料庫 SQLDBA>connect internalSQLDBA>shutdown normal SQLDBA>! cp <file> <backup directory>或SQLDBA>!tar cvf /dev/rmt/ /dg/oracle SQLDBA>startup
(三)熱備份(ACHIRELOG)資料庫需要二十四小時運行 而且隨時有新的數據加入 數據丟失將影響整個公司 採用archivelog mode物理備份 ?設置資料庫為automatic archivelog mode #su oracle%svrmgrl svrmgrl>connect internalsvrmgrl>startup mount svrmgrl>alter database archivelogsvrmgrl>shutdownsvrmgrl>exit%vi initoracle ora加入log_archive_start = true # if you want automatic archivinglog_archive_dest = $ORACLE_HOME/dbs/archlog_archive_format = log%s arc%dbstart%ps ef|grep archoracle : : ? : ora_arch_oracle 注 oracle database is in automatic archivelog mode
?full offline entire database backup 當資料庫初始完成後 這份備份是將來備份的基礎 它提供了所有與資料庫有關的拷貝 %dbshut%cp /oracle/oradata/oracle /system dbf /oracle/oradata/oracle /rbs dbf /oracle/oradata/oracle /temp dbf/oracle/oradata/oracle /tools dbf/oracle/oradata/oracle /users dbf/oraclecle/app/oracle/proct/ /dbs/application dbf/oracle/app/oracle/proct/ /dbs/apptmpsp dbf/oracle/app/oracle/proct/ /dbs/apprlbksp dbf/oracle/oradata/oracle /redooracle log /oracle/oradata/oracle /control ctl /oracle/oradata/oracle /control ctl /oracle/oradata/oracle /control ctl <backup directory>%dbstart 注:以上* dbf文件為數據文件 * log文件為日誌文件 * ctl文件為控制文件%exit %tar uvf /dev/rmt/ <backup files> 注:如果為oracle 則 相應的 data files relog files control files
每天做一次 partial online with archiving backups #su oracle%svrmgrl%svrmgrl>connect internal%svrmgrl>alter tablespace billsp begin backup%svrmgrl>alter tablespace billtmpsp begin backup%svrmgrl>alter tablespace billrlbksp begin backup%svrmgrl>alter tablespace system begin backup %svrmgrl>alter tablespace rbs begin backup%svrmgrl>alter tablespace temp begin backup%svrmgrl>alter tablespace tools begin backup %svrmgrl>alter tablespace users begin backup %svrmgrl>host cp all datafile to the backup storage #文件名如第一步中以 dbf結尾的 %svrmgrl>alter tablespace billsp end backup%svrmgrl>alter tablespace billtmpsp end backup%svrmgrl>alter tablespace billrlbksp end backup%svrmgrl>alter tablespace system end backup %svrmgrl>alter tablespace rbs end backup%svrmgrl>alter tablespace temp end backup%svrmgrl>alter tablespace tools end backup %svrmgrl>alter tablespace users end backup
做一個sql文件 如上所寫
The billing system can recover to the point of failure when the failure occur
七 備份文件的恢復 恢復文件 以下是對"/etc/passwd"文件的恢復( 放入正確的磁帶( 運行以下命令恢復"/etc/passwd"文件# rsh mt f /dev/rmt/ rew( 找到最近的磁帶 向前進帶到最近的"/etc/passwd" 比如要找星期三的"/etc/passwd"文件 運行如下命令)#rsh mt f /dev/rmt/ n fsf # ufsrestore if :/dev/rmt/ nufsrestore > ls. etc/ufsrestore > cd etc ufsrestore > ls./etc passwfsrestore > add passwdWarnign ./etc File existsufsrestore > verboseverbose mode onufsrestore > extractExtract requested filesYou have not read any volumes yet .Unless you know which volume your file(s) are on you should start witch the last volume and work to wards the first.Specify next volume # extract file ./etc/passwdAdd linksSet directory mode ower and times.set owner /mode for . ?(yn)nDirectories already exit set mode anyway?(yn)yufsrestore >quit 熱備份可以在資料庫打開打情況下進行 一般通過使用Alter命令改變表空間的狀態來開始進行備份的 備份完成後 要恢其原來狀態 否則redo log 會錯配 引起資料庫下次啟動時對受影響的表空間進行完全覆蓋 熱備份的要求是 熱備份工作必需要求資料庫在Archivelog 方式下操作 在SQLDBA狀態下用alter database archivelog|noarchivelog命令可改變備份的模式 熱備份只能在資料庫不使用或使用率低的情況下進行 熱備份需要大量的檔案空間 一般情況 Oracle 以循環的方式寫入Online redo log 文件 當填滿第一個redo log文件後寫第二個 直至最後一個 最後一個被填滿後 後台進程LGWR就覆蓋第一個 在Archivelog方式下 後台進程ARCH在每一個redo log 文件被覆蓋前 給它作一個拷貝 一般 這些文檔的redo log 文件被寫入磁碟或磁帶中 如果磁碟空間夠用 建議使用磁碟 這樣可大大減少完成備份所需的時間 在作熱備份之前 要將config ora文件中的log_archive_start 設為true 將log_archive_dest規定archive redo log 文件的位置 log_archive_dest=/dg/oracle/arch/archlog_archive_start=true一旦資料庫運行在archivelog狀態下 就可以作備份了 熱備份的命令文件由三部分組成 數據文件一個表空間一個空間地備份 a 設置表空間為備份狀態 b 備份表空間的數據文件 c 恢復表空間為正常狀態 備份歸檔要作log 文件 a 臨時停止歸檔進程b log下那些在archive redo log目標目錄中的文件c 重新啟動archive進程d 備份歸檔的redo log 文件 用alter database backup controlfile命令來備份拷貝文件在熱備份運行之前log_archive_dest目錄可能已滿 這時就要備份目錄 然後刪除文件 釋放空間 這個過程有如下步驟 暫時停止archive進程 記錄在log_archive_dest目錄下的文件 重新啟動archive 進程 備份archive redo log 文件 刪除目錄中的文件 sqldba lmode=y <<EOF arch archive log stop;exitEOF arch FILES= ls /dg/oracle/arch/arch* dbf ;sqldba lmode=y<<EOF arch connect internalarchive log start;exitEOF arch tar rvf /dev/rmt/ FILESrm f $FILES
邏輯備份與物理備份的結合 前面介紹了三種備份的方法 在資料庫做備份時 應該將數據這三種備份的特點靈活運用 我們首先比較一下三種方法的特性
方 法類 型恢 復 特 性EXPORT導出邏輯型可以將任何資料庫對象恢復到它被導出時的狀態乻hutdown?將最近es of datafile 拷貝到$oracle_home/dbs目錄 ?%svrmgrl?svrmgrl>connect internal…svrmgrl>startup mount pfile=filename exclusive?svrmgrl>alter database recover;注:將自動恢復數據到the point of failure;? svrmgrl>alter database open; ?當archive log文件過多時 在 做過部分備份後 可將current log sequence 之前的log*** arc刪除 #su oracle%svrmgrlsvrmgrl>connect internal;svrmgrl>archive log list; #此處標有current log sequence 假設為 Svrmgrl>exit$cd /billdg/oracle/app/oracle/proct/ /dbs/arch$ rm #將log arc之前的文件如log arc log arc 刪除 冷 備 份物理型可將資料庫到它被關閉的狀態熱 備 份物理型可將資料庫恢復到任一時間點的狀態
當資料庫比較小時 處理業務也小時 冷備份導出就可以了 如果只對一兩個表備份導出就夠了 一般來說一個好 備份最終執行總包括邏輯和物理 導出確認資料庫在邏輯的正確性而物理備份確保物理 另外 在進行備份時需要一些存儲介質 對於這些介質應該對其作好管理 根據備份的內容 日期將介質統一編號 以免備份和恢復時弄錯介質 造成原有的備份丟失 介質應存放在與計算機設備不同的地點 以免機房發生意外時 備份與計算機設備一同損壞
附錄 tar命令tar option [arguments] filename option:c:創建一個由命令行指定的新的tarfilet:列出tarfile中的內容x:打開tarfile;f:使用其後的filename 或/dev/rmt/ | v:列出被恢復的文件名 p:恢復文件example:#tar cvf /dev/rmt/ /oracle備份/root 下的所有內容#tar tvf /dev/rmt/ 列出磁帶上的所有內容#tar xvf /dev/rmt/ /oracle將磁帶上的/oracle目錄中的內容恢復到當前目錄中
導出選項關鍵字 內 容 USERID 運行導出命令的帳號的用戶名/口令 BUFFEER 用來取數據行的緩沖區的大小 FILE 導出轉儲文件的名字PRESS 導出是否應該壓縮有碎片的段成一個范圍 這將會影響STORAGE 子句 GRANTS 導出時否要導出資料庫對象上的授權INDEXES 是否要導出表上的索引ROWS 是否應導出行 如它為 N 那麼在導出文件中僅生成資料庫 對象的DDLCONSSTRAINTS 是否導出表舊的約定條件FULL 如設為 Y 那麼將執行一個整個資料庫導出操作OWNER 要導出的一系列資料庫帳號 然後執行這些帳號的USER導出操 作TABLES 要導出的一系列表 執行這些表的TABLE導出操作RECORDLENGTH 轉儲導出文件日誌的長度(以位元組為單位) 通常都使用預設 除非要在兩個不同操作系統中傳遞導出文件INCTYPE 正在執行的導出操作的類型(有效值有 PLETE (預設值) CUMULATIVE 和 IVCREMENTAL )RECORD 在增量導出類型中的一個標記 標明是否將日誌存儲到數據字典中日誌導出的表中PARFILE 要傳遞給導出的參數文件的名字 這個文件將包含所有參數的入口項ANALYZE 標明是否將移對象的統計信息寫入導出轉儲文件中CONSISTENT 標明是否保留所有導出對象的讀取一致復制 LOG 導出日誌將要寫入的文件的名字MLS 標明是否要導出MLS 標號MLS_LABEL_ 規定了MLS標號的格式
導入選擇項USERID 運行導入命令的帳號的用戶名/口令 BUFFEER 用來取數據行的緩沖區的大小 FILE 導入轉儲文件的名字SHOW 規定文件內容是否被顯示 而不是被執行 EGORE 標明在執行 CREATE 命令時 是否忽略遇到的錯誤 如果正在導入的對象已經存在時 應使用這個參數 FULL 如設為 Y 那麼將執行一個整個資料庫導入操作FROMUSER 在FULL=N的情況下 才有參數 它是一系列的資料庫帳號 其對象應從導出轉儲文件中讀取 TOUSER 一系列資料庫帳號 導出轉儲文件扣的對象將要導入這些帳號 GRANTS 導入時否要導入資料庫對象上的授權INDEXES 是否要導入表上的索引ROWS 是否應導入行 如它為 N 那麼在導入文件中執行資料庫對象的DDLFULL 如設為 Y 那麼將執行一個整個資料庫導出操作TABLES 要導入的一系列表RECORDLENGTH 轉儲導入文件日誌的長度(以位元組為單位) 通常都使用預設 除非要在兩個不同操作系統中傳遞導入文件INCTYPE 正在執行的導入操作的類型(有效值有 PLETE (預設值) CUMULATIVE 和 IVCREMENTAL )PARFILE 要傳遞給導入的參數文件的名字 這個文件將包含所有參數的入口項ANALYZE 標明是否將移對象的統計信息寫入導入轉儲文件中LOG 導入日誌將要寫入的文件的名字MLS 標明是否要導入MLS 標號
熱備份的命令文件 ORACLE_SID=oracle ORACLE_HOME=/dg/oraclesqldba lmode=y<<EOF arch connect internalalter tablespace SYSTEM begin backup;!tar cvf /dev/rmt/ /dg/oracle/dbms/sys dbfalter tablespace SYSTEM end backup;
alter tablespace BWT begin backup;!tar cvf /dev/rmt/ /dg/oracle/dbms/BWT dbfalter tablespace BWT end backup;
archive log stopexitEOF arch FILES= ls /dg/oracle/arch/arch* dbf ;
sqldba lmode=y<<EOF arch connect internalarchive log start;exitEOF arch
tar rvf /dev/rmt/ $FILESrm f $files
sqldba lmode=y<<EOFarch alter database backup controlfile to /dg/oracle/dbms/bwtcontrfile backup ;exitEOF arch
lishixin/Article/program/Oracle/201311/17668
Ⅳ 怎樣用最簡單的方法復制或遷移Oracle資料庫
在DBA的日常工作中,經常需要重裝或在新機器上安裝Oracle,但每次安裝所浪費的時間、精力以及失敗的挫折都在考驗著DBA的承受能力,本文著重介紹了一個簡單的復制和遷移Oracle資料庫的方法,詳細內容請參考下文。
復制遷移的步驟如下:
◆1、首先,復制原Oracle資料庫的安裝目錄到新機器或系統中的安裝目錄,注意目錄要一致,盤符也要一致。
◆2、假如Oracle的安裝目錄不在Program Files系統文件夾下,我們需要把原系統中的Program Files文件夾下的Oracle目錄也復制到新系統的Program Files文件夾中去。
◆3、導出原系統中的Oracle注冊表信息,主要注冊信息如下:
A. HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE
B. HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services 下有關Oracle的所有鍵,通常包括以下9個:
/OracleMTSRecoveryService
/OracleOraHome92Agent
/OracleOraHome92ClientCache
/OracleOraHome92HTTPServer
/OracleOraHome92PagingServer
/
/
/OracleOraHome92TNSListener
/OracleServiceORA8
◆4、注意:有多少個資料庫,注冊表服務鍵下的OracleServiceXXX就會有多個。其中最主要的有監聽服務和資料庫服務,即OracleOraHome92TNSListenerXXX和OracleServiceXXX。
◆5、將導出的所有注冊表的信息在新的系統中導入(注冊)。
◆6、設置系統環境變數,打開"我的電腦"的"屬性"界面,在"高級"而點擊"環境變數"進入設置,找到[Path]系統變數項目,點"編輯",在變數值的輸入框的最後,加入";ORACLE的安裝目錄"。
◆7、最後我們需要進入 C:/Documents and Settings/All Users/Start Menu/Programs下把 Oracle - OraHome92 和 Oracle Installation Procts 兩個菜單文件夾也復制到新系統中,此時,就和新安裝的一樣了。重啟系統後,成功完成。