【Oracle】RAC的多實例數據遷移至單機的多實例。


思路:一般的思路可以通過RMAN進行數據的恢復。由於數據庫可以停機,因此,這次試用數據泵(expdp,impdp)進行數據
的導入導出。

1.源數據庫導出

通過編寫導出shell腳本導出數據,如下:
expdp_mangedb_full.sh的腳本:

[oracle@arprac02 scripts]$ cat expdp_mangedb_full.sh 
#!/bin/bash
source ~/.bash_profile
export ORACLE_SID=managedb2
export DATE=$(date +%Y%m%d%H)

expdp system/oracle directory=expbk logfile=managedb76_full_$DATE.log dumpfile=managedb76_full_$DATE.dmp full=y

expdp_servdb_full.sh的腳本:

[oracle@arprac02 scripts]$ cat expdp_servdb_full.sh 
#!/bin/bash
source ~/.bash_profile
export ORACLE_SID=servdb2
export DATE=$(date +%Y%m%d%H)

expdp system/oracle directory=expbk logfile=servdb76_full_$DATE.log dumpfile=servdb76_full_$DATE.dmp full=y

以上,導出多實例的全庫數據。

2.數據導入

確定導入指定的數據庫實例,這里實踐的是servdb數據庫實例.全庫的導入:它會導入表空間的建表過程,建立用戶的過程,建立角色,建立同義詞,建立表,視圖,存儲過程,dblink,job等等所有該有的東西。所以,如果導入過程中有報錯,可以分析問題,逐一解決。

賦權建立導入導出備份目錄

[oracle@db u01]$ mkdir dmpbackup

數據庫中,賦權目錄

export ORACLE_SID=servdb
SQL> select INSTANCE_NAME from v$instance;
SQL>  create directory expbk as '/u01/dmpbackup';     
SQL>  grant read,write on directory expbk to system;

導入的dmp文件權限放開

[root@db ~]# chmod -R 777 /u01/dmpbackup/servdb76_full_2020031115.dmp

導入數據

export ORACLE_SID=servdb
impdp system/oracle directory=expbk dumpfile=servdb76_full_2020031322.dmp logfile=servdb76_full_20200313.log EXCLUDE=SCHEMA:\"IN \(\'SYSMAN\', \'SYSTEM\'\)\" EXCLUDE=STATISTICS

這里會有一個報錯,log如下:

Failing sql is:
CREATE UNDO TABLESPACE "UNDOTBS2" DATAFILE '+DATA/servdb/datafile/undotbs2.280.826877779' SIZE 209715200 AUTOEXTEND ON NEXT 5242880 MAXSIZE 32767M BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE
ORA-31684: Object type TABLESPACE:"USERS" already exists
ORA-39083: Object type TABLESPACE failed to create with error:
ORA-01276: Cannot add file +DATA/servdb/datafile/no1task.329.827069307.  File has an Oracle Managed Files file name.
Failing sql is:
CREATE TABLESPACE "NO1TASK" DATAFILE '+DATA/servdb/datafile/no1task.329.827069307' SIZE 4194304000 AUTOEXTEND ON NEXT 268435456 MAXSIZE 32767M,'+DATA/servdb/datafile/no1task.6801.910947551' SIZE 32212254720 AUTOEXTEND ON NEXT 536870912 
MAXSIZE 32767M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL
ORA-39083: Object type TABLESPACE failed to create with error:
ORA-01276: Cannot add file +DATA/servdb/datafile/mobileapp.397.827404615.  File has an Oracle Managed Files file name.
Failing sql is:
CREATE TABLESPACE "MOBILEAPP" DATAFILE '+DATA/servdb/datafile/mobileapp.397.827404615' SIZE 1048576000 AUTOEXTEND ON NEXT 134217728 MAXSIZE 32767M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPAC
E MANAGEMENT AUTO
ORA-39083: Object type TABLESPACE failed to create with error:
ORA-01276: Cannot add file +DATA/servdb/datafile/otf_platform.3693.842997461.  File has an Oracle Managed Files file name.
Failing sql is:
CREATE TABLESPACE "OTF_PLATFORM" DATAFILE '+DATA/servdb/datafile/otf_platform.3693.842997461' SIZE 2097152000 AUTOEXTEND ON NEXT 134217728 MAXSIZE 32767M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGME
NT SPACE MANAGEMENT AUTO
ORA-39083: Object type TABLESPACE failed to create with error:
ORA-01276: Cannot add file +DATA/servdb/datafile/ds_model.32447.845631431.  File has an Oracle Managed Files file name.
Failing sql is:
CREATE TABLESPACE "DS_MODEL" DATAFILE '+DATA/servdb/datafile/ds_model.32447.845631431' SIZE 2097152000 AUTOEXTEND ON NEXT 134217728 MAXSIZE 32767M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPAC
E MANAGEMENT AUTO
ORA-39083: Object type TABLESPACE failed to create with error:
ORA-01276: Cannot add file +DATA/servdb/datafile/otfys_platform.385.878320405.  File has an Oracle Managed Files file name.
Failing sql is:
CREATE TABLESPACE "OTFYS_PLATFORM" DATAFILE '+DATA/servdb/datafile/otfys_platform.385.878320405' SIZE 2097152000 AUTOEXTEND ON NEXT 67108864 MAXSIZE 32767M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEG
MENT SPACE MANAGEMENT AUTO
ORA-39083: Object type TABLESPACE failed to create with error:
ORA-01276: Cannot add file +DATA/servdb/datafile/otfys_platform135.61091.1032087535.  File has an Oracle Managed Files file name.
Failing sql is:
CREATE TABLESPACE "OTFYS_PLATFORM135" DATAFILE '+DATA/servdb/datafile/otfys_platform135.61091.1032087535' SIZE 67108864 AUTOEXTEND ON NEXT 33554432 MAXSIZE 10240M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOC
ATE SEGMENT SPACE MANAGEMENT AUTO

解決思路:手動建立表空間,[這里有一個細節,最后名字要一樣,表空間必須保證足夠大,要不然還會報錯]

CREATE UNDO TABLESPACE "UNDOTBS2" DATAFILE '/u01/app/oradata/servdb/undotbs2.280.826877779' SIZE 209715200 AUTOEXTEND ON NEXT 5242880 MAXSIZE 32767M;
CREATE TABLESPACE "NO1TASK" DATAFILE '/u01/app/oradata/servdb/no1task.329.827069307' SIZE 2048M AUTOEXTEND ON NEXT 268435456 MAXSIZE 32767M,'/u01/app/oradata/servdb/no1task.6801.910947551' SIZE 2048M AUTOEXTEND ON NEXT 536870912 MAXSIZE 32767M;
CREATE TABLESPACE "MOBILEAPP" DATAFILE '/u01/app/oradata/servdb/mobileapp.397.827404615' SIZE 1024M AUTOEXTEND ON NEXT 128M MAXSIZE 32767M;
CREATE TABLESPACE "OTF_PLATFORM" DATAFILE '/u01/app/oradata/servdb/otf_platform.3693.842997461' SIZE 2048M AUTOEXTEND ON NEXT 128M MAXSIZE 32767M;
CREATE TABLESPACE "DS_MODEL" DATAFILE '/u01/app/oradata/servdb/ds_model.32447.845631431' SIZE 2097152000 AUTOEXTEND ON NEXT 134217728 MAXSIZE 32767M;
CREATE TABLESPACE "OTFYS_PLATFORM" DATAFILE '/u01/app/oradata/servdb/otfys_platform.385.878320405' SIZE 2097152000 AUTOEXTEND ON NEXT 67108864 MAXSIZE 32767M;
CREATE TABLESPACE "OTFYS_PLATFORM135" DATAFILE '/u01/app/oradata/servdb/otfys_platform135.61091.1032087535' SIZE 67108864 AUTOEXTEND ON NEXT 33554432 MAXSIZE 10240M;

這里,不記敘重復性的事情。后面由於三個示例,需要修改一下歸檔日志的位置。

三個數據庫實例,
servdb實例的位置為【/u01/app/arch/servdb】
managedb實例的位置為【/u01/app/arch/managedb】
irc3db實例的位置為【/u01/app/arch/irc3db】

mkdir -p /u01/app/arch/servdb
mkdir -p /u01/app/arch/managedb
mkdir -p /u01/app/arch/irc3db

export ORACLE_SID=servdb
$ sqlplus "/as sysdba"
SQL>alter system set log_archive_dest_1='location=/u01/app/arch/servdb' scope =both;


export ORACLE_SID=managedb
$ sqlplus "/as sysdba"
SQL>alter system set log_archive_dest_1='location=/u01/app/arch/managedb' scope =both;

重新開啟歸檔模式

shutdown immediate;
startup mount;
alter database archivelog;
alter database open;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM