CONVERT DATABASE命令(三)
RMAN新增了CONVERT命令,在前面的文章中已經介紹瞭如何利用CONVERT命令在不同平臺間轉換表空間。對於相同位元組序的資料庫,Oracle還提供了CONVERT DATABASE的命令。
Oracle10g新增CONVERT語法:http://yangtingkun.itpub.net/post/468/483871
利用CONVERT實現跨平臺表空間遷移:http://yangtingkun.itpub.net/post/468/483949
這一篇介紹執行CONVERT DATABASE過程中碰到的錯誤。
CONVERT DATABASE命令(一):http://yangtingkun.itpub.net/post/468/487880
CONVERT DATABASE命令(二):http://yangtingkun.itpub.net/post/468/487972
最開始碰到的問題是要求進行CONVERT的資料庫必須處於只讀狀態:
RMAN> convert database
2> new database ytktran
3> skip offline
4> transport script. 'e:\trans_script.sql'
5> to platform. 'Linux 64-bit for AMD'
6> format 'e:\oracle\backup\%T_%n_%N.dbf'
7> ;
啟動 convert 於 29-6月 -09
使用通道 ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: backup 命令 (在 06/29/2009 15:16:37 上) 失敗
RMAN-06920: 資料庫 YTK102 未以只讀方式開啟
RMAN> exit
恢復管理器完成。
顯然,執行執行CONVERT DATABASE資料庫命令要求源資料庫處於只讀狀態:
E:\>sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 6月 29 15:17:11 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup open read only
ORACLE 例程已經啟動。
Total System Global Area 603979776 bytes
Fixed Size 1249332 bytes
Variable Size 213913548 bytes
Database Buffers 381681664 bytes
Redo Buffers 7135232 bytes
資料庫裝載完畢。
ORA-16006: audit_trail 目標與資料庫開啟模式不相容
SQL> show parameter audit_trail
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_trail string DB
SQL> alter system set audit_trail = none scope = spfile;
系統已更改。
SQL> shutdown immediate
ORA-01109: 資料庫未開啟
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup open read only
ORACLE 例程已經啟動。
Total System Global Area 603979776 bytes
Fixed Size 1249332 bytes
Variable Size 213913548 bytes
Database Buffers 381681664 bytes
Redo Buffers 7135232 bytes
資料庫裝載完畢。
資料庫已經開啟。
在將資料庫置於只讀狀態的過程中,還碰到了audit_trail初始化引數與只讀資料庫不相容的問題,需要將AUDIT_TRAIL初始化引數置為NONE或OS,然後才能以READ ONLY方式開啟資料庫。
第二個問題比較有意思,仔細檢查了兩遍才發現問題所在:
E:\>rman target /
恢復管理器: Release 10.2.0.1.0 - Production on 星期一 6月 29 15:29:27 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
連線到目標資料庫: YTK102 (DBID=3695768905)
RMAN> convert database
2> new database ytktran
3> skip offline
4> transport script. 'e:\trans_script.sql'
5> to platform. 'Linux 64-bit for AMD'
6> format 'e:\oracle\backup\%T_%n_%N.dbf'
7> ;
啟動 convert 於 29-6月 -09
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=154 devtype=DISK
在資料庫中找到外部表 SH.SALES_TRANSACTIONS_EXT
在資料庫中找到外部表 YANGTK.T_EXTERNAL
在資料庫中找到外部表 YANGTK.T_EXTERNAL2
在資料庫中找到目錄 SYS.AUDIT_DIR
在資料庫中找到目錄 SYS.D_OUTPUT1
在資料庫中找到目錄 SYS.D_OUTPUT
在資料庫中找到目錄 SYS.SUBDIR
在資料庫中找到目錄 SYS.XMLDIR
在資料庫中找到目錄 SYS.MEDIA_DIR
在資料庫中找到目錄 SYS.LOG_FILE_DIR
在資料庫中找到目錄 SYS.DATA_FILE_DIR
在資料庫中找到目錄 SYS.WORK_DIR
在資料庫中找到目錄 SYS.ADMIN_DIR
在資料庫中找到目錄 SYS.DATA_PUMP_DIR
在資料庫中找到 BFILE PM.PRINT_MEDIA
在口令檔案中找到使用者 SYS (具有 SYSDBA and SYSOPER 許可權)
在口令檔案中找到使用者 YANGTK (具有 SYSDBA 許可權)
跳過離線檔案4
RMAN-06060: 警告: 跳過資料檔案將影響表空間 USERS 的恢復
通道 ORA_DISK_1: 啟動資料檔案轉換
輸入資料檔案 fno=00007 name=E:\ORACLE\ORADATA\YTK102\MGMT.DBF
已轉換的資料檔案 = E:\ORACLE\BACKUP\20090629_YTK102XX_MGMT_TABLESPACE.DBF
通道 ORA_DISK_1: 資料檔案轉換完畢, 經過時間: 00:01:25
通道 ORA_DISK_1: 啟動資料檔案轉換
輸入資料檔案 fno=00002 name=E:\ORACLE\ORADATA\YTK102\UNDOTBS01.DBF
已轉換的資料檔案 = E:\ORACLE\BACKUP\20090629_YTK102XX_UNDOTBS1.DBF
通道 ORA_DISK_1: 資料檔案轉換完畢, 經過時間: 00:01:05
通道 ORA_DISK_1: 啟動資料檔案轉換
輸入資料檔案 fno=00001 name=E:\ORACLE\ORADATA\YTK102\SYSTEM01.DBF
已轉換的資料檔案 = E:\ORACLE\BACKUP\20090629_YTK102XX_SYSTEM.DBF
通道 ORA_DISK_1: 資料檔案轉換完畢, 經過時間: 00:00:55
通道 ORA_DISK_1: 啟動資料檔案轉換
輸入資料檔案 fno=00003 name=E:\ORACLE\ORADATA\YTK102\SYSAUX01.DBF
已轉換的資料檔案 = E:\ORACLE\BACKUP\20090629_YTK102XX_SYSAUX.DBF
通道 ORA_DISK_1: 資料檔案轉換完畢, 經過時間: 00:00:45
通道 ORA_DISK_1: 啟動資料檔案轉換
輸入資料檔案 fno=00006 name=E:\ORACLE\ORADATA\YTK102\YANGTK01.DBF
已轉換的資料檔案 = E:\ORACLE\BACKUP\20090629_YTK102XX_YANGTK.DBF
通道 ORA_DISK_1: 資料檔案轉換完畢, 經過時間: 00:00:15
通道 ORA_DISK_1: 啟動資料檔案轉換
輸入資料檔案 fno=00005 name=E:\ORACLE\ORADATA\YTK102\EXAMPLE01.DBF
已轉換的資料檔案 = E:\ORACLE\BACKUP\20090629_YTK102XX_EXAMPLE.DBF
通道 ORA_DISK_1: 資料檔案轉換完畢, 經過時間: 00:00:15
通道 ORA_DISK_1: 啟動資料檔案轉換
輸入資料檔案 fno=00008 name=E:\ORACLE\ORADATA\YTK102\YANGTK02.DBF
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 06/29/2009 15:34:23 上) 失敗
ORA-19504: 無法建立檔案"E:\ORACLE\BACKUP\20090629_YTK102XX_YANGTK.DBF"
ORA-27038: 所建立的檔案已存在
OSD-04010: 指定了
原來問題出在FORMAT引數上,由於表空間YANGTK包括兩個資料檔案,而這兩個資料檔案在FORMAT引數上沒有體現出區別,所以二者最終生成的檔名是一致的,第一個資料檔案的CONVERT操作沒有問題,但是第二個資料檔案在執行的時候名稱與第一個資料檔案CONVERT後生成的檔名稱一樣,也就導致了上面檔案已經存在的錯誤。
而且這個錯誤出現了,Oracle在目標目錄中留下了大量的資料檔案,而沒有進行清除。這些資料檔案需要手工進行清除。
可以修改FORMAT引數,比如新增DATAFILE的檔案號,或者新增%U唯一標識名稱,解決這個問題,也可以透過新增DB_FILE_NAME_CONVERT的方式來避免錯誤的產生:
RMAN> convert database
2> new database ytktran
3> skip offline
4> transport script. 'e:\trans_script.sql'
5> to platform. 'Linux 64-bit for AMD'
6> db_file_name_convert ('e:\oracle\oradata\ytk102\', 'e:\oracle\backup\')
7> ;
啟動 convert 於 29-6月 -09
使用通道 ORA_DISK_1
在資料庫中找到外部表 SH.SALES_TRANSACTIONS_EXT
在資料庫中找到外部表 YANGTK.T_EXTERNAL
在資料庫中找到外部表 YANGTK.T_EXTERNAL2
在資料庫中找到目錄 SYS.AUDIT_DIR
在資料庫中找到目錄 SYS.D_OUTPUT1
在資料庫中找到目錄 SYS.D_OUTPUT
在資料庫中找到目錄 SYS.SUBDIR
在資料庫中找到目錄 SYS.XMLDIR
在資料庫中找到目錄 SYS.MEDIA_DIR
在資料庫中找到目錄 SYS.LOG_FILE_DIR
在資料庫中找到目錄 SYS.DATA_FILE_DIR
在資料庫中找到目錄 SYS.WORK_DIR
在資料庫中找到目錄 SYS.ADMIN_DIR
在資料庫中找到目錄 SYS.DATA_PUMP_DIR
在資料庫中找到 BFILE PM.PRINT_MEDIA
在口令檔案中找到使用者 SYS (具有 SYSDBA and SYSOPER 許可權)
在口令檔案中找到使用者 YANGTK (具有 SYSDBA 許可權)
跳過離線檔案4
RMAN-06060: 警告: 跳過資料檔案將影響表空間 USERS 的恢復
通道 ORA_DISK_1: 啟動資料檔案轉換
輸入資料檔案 fno=00007 name=E:\ORACLE\ORADATA\YTK102\MGMT.DBF
已轉換的資料檔案 = E:\ORACLE\BACKUP\MGMT.DBF
通道 ORA_DISK_1: 資料檔案轉換完畢, 經過時間: 00:01:35
通道 ORA_DISK_1: 啟動資料檔案轉換
輸入資料檔案 fno=00002 name=E:\ORACLE\ORADATA\YTK102\UNDOTBS01.DBF
已轉換的資料檔案 = E:\ORACLE\BACKUP\UNDOTBS01.DBF
通道 ORA_DISK_1: 資料檔案轉換完畢, 經過時間: 00:01:05
通道 ORA_DISK_1: 啟動資料檔案轉換
輸入資料檔案 fno=00001 name=E:\ORACLE\ORADATA\YTK102\SYSTEM01.DBF
已轉換的資料檔案 = E:\ORACLE\BACKUP\SYSTEM01.DBF
通道 ORA_DISK_1: 資料檔案轉換完畢, 經過時間: 00:01:06
通道 ORA_DISK_1: 啟動資料檔案轉換
輸入資料檔案 fno=00003 name=E:\ORACLE\ORADATA\YTK102\SYSAUX01.DBF
已轉換的資料檔案 = E:\ORACLE\BACKUP\SYSAUX01.DBF
通道 ORA_DISK_1: 資料檔案轉換完畢, 經過時間: 00:00:45
通道 ORA_DISK_1: 啟動資料檔案轉換
輸入資料檔案 fno=00006 name=E:\ORACLE\ORADATA\YTK102\YANGTK01.DBF
已轉換的資料檔案 = E:\ORACLE\BACKUP\YANGTK01.DBF
通道 ORA_DISK_1: 資料檔案轉換完畢, 經過時間: 00:00:15
通道 ORA_DISK_1: 啟動資料檔案轉換
輸入資料檔案 fno=00005 name=E:\ORACLE\ORADATA\YTK102\EXAMPLE01.DBF
已轉換的資料檔案 = E:\ORACLE\BACKUP\EXAMPLE01.DBF
通道 ORA_DISK_1: 資料檔案轉換完畢, 經過時間: 00:00:15
通道 ORA_DISK_1: 啟動資料檔案轉換
輸入資料檔案 fno=00008 name=E:\ORACLE\ORADATA\YTK102\YANGTK02.DBF
已轉換的資料檔案 = E:\ORACLE\BACKUP\YANGTK02.DBF
通道 ORA_DISK_1: 資料檔案轉換完畢, 經過時間: 00:00:16
通道 ORA_DISK_1: 啟動資料檔案轉換
輸入資料檔案 fno=00010 name=E:\ORACLE\ORADATA\YTK102\MGMT_ECM_DEPOT1.DBF
已轉換的資料檔案 = E:\ORACLE\BACKUP\MGMT_ECM_DEPOT1.DBF
通道 ORA_DISK_1: 資料檔案轉換完畢, 經過時間: 00:00:15
通道 ORA_DISK_1: 啟動資料檔案轉換
輸入資料檔案 fno=00009 name=E:\ORACLE\ORADATA\YTK102\TEST01.DBF
已轉換的資料檔案 = E:\ORACLE\BACKUP\TEST01.DBF
通道 ORA_DISK_1: 資料檔案轉換完畢, 經過時間: 00:00:01
在目標平臺上執行 SQL 指令碼 E:\TRANS_SCRIPT.SQL 以建立資料庫
編輯 init.ora 檔案 E:\ORACLE\ORACLE1020\DATABASE\INIT_00KIQ9S4_1_0.ORA。此 PFILE
將用於在目標平臺上建立資料庫據
要重新編譯所有 PL/SQL 模組, 請在目標平臺上執行 utlirp.sql 和 utlrp.sql
要更改內部資料庫識別符號, 請使用 DBNEWID 實用程式
完成 backup 於 29-6月 -09
還有就是junsansi碰到的問題,由於版本不同,導致的資料庫必須執行升級操作才能開啟,且由於32位和64位平臺問題,導致執行catupgrd.sql指令碼過程中碰到的錯誤,這個問題在下面的文章中已經詳細描述過了,這裡就不再重複了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-610112/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Convert a Physical Standby Database into a Snapshot Standby DatabaseDatabase
- 7.60 CONVERT
- 理解RMAN backup database plus archivelog delete all input命令DatabaseHivedelete
- Abp框架之執行Update-Database 命令系列錯誤框架Database
- PHP 每日一函式 — 字串函式 convert_uuencode () & convert_uudecode ()PHP函式字串
- The database owner SID recorded in the master database differs from the database owner SID recorded in database 'DB_NAME'DatabaseAST
- Python convert string to unicode numberPythonUnicode
- [Linux] convert .img to .iso fileLinux
- DocTo convert doc(x) to pdf
- Convert型別轉換型別
- How to Convert a Class File to a Ja
- Oracle Database Cloud - Database as a Service Quick StartOracleDatabaseCloudUI
- Error querying database. XXXXXXXXXXXXX, No database selected。ErrorDatabase
- PIL.Image convert to numpy array
- 淺析Convert,Parse和TryParse
- matlab convert to PGM P2Matlab
- koa-convert原始碼分析原始碼
- 19c RAC Convert to OneNde
- 19c OneNode Convert to RAC
- C# convert ImageSource to byte arrayC#
- 538-Convert BST to Greater Tree
- Convert a normal Git repository to a bare oneORMGit
- Database TimeoutDatabase
- Database OverallDatabase
- database no shardingDatabase
- 11gR2 RAC convert ONENODE
- 11gR2 OneNode Convert RAC
- 4.3.2.2.1 The SEED FILE_NAME_CONVERT Clause
- LeetCode之Convert BST to Greater Tree(Kotlin)LeetCodeKotlin
- WPF SelectedItemCollection convert to IList and List, such as Datagrid SelectedItems
- How to Convert Class File to Java File Online?Java
- Oracle 12.2 使用Database Link優化Standby Database WorkloadOracleDatabase優化
- ORACLE database vaultOracleDatabase
- Relationship Database DesignDatabase
- 3.4 Quiescing a DatabaseUIDatabase
- idea--DatabaseIdeaDatabase
- Oracle clone databaseOracleDatabase
- database的connectDatabase
- 108-Convert Sorted Array to Binary Search Tree