***資料庫遷移,由於資料量比較大,有1t,用匯出匯入的方式比較花費時間,採用表空間傳輸方式提高遷移速度。
sourcedb environment:
os:oracle@qc_p570_728:/home/oracle>uname -a
aix qc_p570_728 1 6 00c4035e4c00
db version:
sql> select * from v$version;
banner
oracle database 11g enterprise edition release 11.2.0.2.0 - 64bit production
pl/sql release 11.2.0.2.0 - production
core 11.2.0.2.0 production
tns for ibm/aix risc system/6000: version 11.2.0.2.0 - production
nlsrtl version 11.2.0.2.0 - production
endian_format:
sql> select d.name, i.version, d.platform_name, endian_format
2 from v$transportable_platform tp, v$database d, v$instance i
3 where tp.platform_name = d.platform_name
4 and d.db_unique_name = i.instance_name;
name version platform_name endian_format
cszg4 11.2.0.2.0 aix-based systems (64-bit) big
db instance:
cszg4
db characterset:
sql> select * from nls_database_parameters where parameter in('nls_language','nls_territory','nls_characterset');
parameter value
nls_language american
nls_territory america
nls_characterset zhs16gbk
targetdb environment:
os:oracle@vm-test-133 shzw]$ uname -a
linux vm-test-133 2.6.32-131.0.15.el6.x86_64 #1 smp tue may 10 15:42:40
edt 2011 x86_64 x86_64 x86_64 gnu/linux
db version:
sql> select * from v$version;
banner
oracle database 11g enterprise edition release 11.2.0.3.0 - 64bit production
pl/sql release 11.2.0.3.0 - production
core 11.2.0.3.0 production
tns for linux: version 11.2.0.3.0 - production
nlsrtl version 11.2.0.3.0 - production
endian_format:
sql> select d.name, i.version, d.platform_name, endian_format
2 from v$transportable_platform tp, v$database d, v$instance i
3 where tp.platform_name = d.platform_name
4 and d.db_unique_name = i.instance_name;
name version platform_name endian_format
shzw 11.2.0.3.0 linux x86 64-bit little
db instance:
shzw
db characterset:
sql> select * from nls_database_parameters where parameter in('nls_language','nls_territory','nls_characterset');
parameter value
nls_language american
nls_territory america
nls_characterset zhs16gbk
從上面兩環境的對比表可以看出,作業系統不同,平台間的endian不同,那麼在匯入操作之前必須首先轉換源平台的表空間到目標格式;如果endian相同,即使是不同作業系統,則可以跳過轉換的步驟,當然前提是各平台的資料庫版本不能低於10g。資料轉換可以在源庫進行也可以在目標庫進行,它們的轉換指令碼略有差別,具體在後面操作中提到。
表空間傳輸方式在目標庫的準備工作:
1、 在目標庫不用建立任何表空間,
2、 建立與要傳輸的表空間相關使用者,如果使用者在源庫上指定了預設表空間為要傳輸的表空間,在這兒建立使用者時不用指定(因為還沒有表空間),
待傳輸完後再進行修改使用者的預設表空間。
select * from v$tablesapce;
col name format a60;
set linesize 200;
select ts#,file#,name from v$datafile order by ts#,file#;
2、 create directory
sql>grant read ,write on directory dmpdir to system;
3、 將要傳輸的表空間置為唯讀狀態
alter tablespace data read only;
alter tablespace data01 read only;
4、匯出元資料
expdp system/sys@orcl directory=dmp dumpfile=tts.dmp transport_tablespaces=data01,data02logfile=tts.log
5、轉換資料(如果是相同平台遷移,此步可以略去)
$rman target=/
rman>
convert tablespace 'data'
to platform="linux x86 64-bit"
db_file_name_convert='/home/oracle/oradata/data01.dbf','/tmp/data01.dbf';
note
:如果在目標庫轉換,則因為目標庫還沒有表空間,則進行資料檔案轉換。採用如下指令碼:
rman> convert datafile'/home/oracle/oradata/data01.dbf'
to platform =" linux x86 64-bit "
from platform ="
aix-based systems(64-bit) "
db_file_name_convert='/home/oracle/oradata/data01.dbf','/tmp/data01.dbf';
6、ftp轉換後的資料檔案到目標機的資料檔案存放位置
1、create directory
sql>grant read ,write on directory dmpdir to system;
2、 將在源頭庫所在的機器上的匯出檔案tts.dmp檔案拷貝到目標庫的dmpdir目錄
3、匯入元資料
impdp system/sys@dbtest directory=dmpdir dumpfile=tts.dmplogfile=tts2.logtransport_datafiles='e:\oracle\product\10.2.0\oradata\dbtest\x01.dbf',
'e:\oracle\product\10.2.0\oradata\dbtest\y01.dbf'(資料檔案多也可以寫到引數檔案中去,parfile=db_imp.par)
4、檢查表空間,資料
5、執行完後將表空間置為正常狀態(
包括目標庫和源頭庫)
alter tablespace data01 read write;
alter tablespace data02 read write;
6、修改使用者預設表空間
alter user cd default tablespace data01;
alter usdr ad default tablespace data02;
Flask遷移資料庫
在開發程式的過程中,你會發現有時需要修改資料庫模型,而且修改之後還需要更新資料庫。僅當資料庫表不存在時,flask sqlalchemy 才會根據模型進行建立。因此,更新表的唯一方式就是先刪除舊表,不過這樣做會丟失資料庫中的所有資料。更新表的更好方法是使用資料庫遷移框架。原始碼版本控制工具可以跟蹤原...
django bug 遷移資料庫
1 執行 python manage.py makemigrations 報錯,遷移失敗 解決辦法 新增預設值 default,重新進行遷移 class author models.model name models.charfield max length 50 email models.emai...
mysqldump遷移資料庫
同事接手了乙個第三方專案,需要把資料庫也遷移到本地。備份 mysqldump h127.0.0.1 uroot p 123 flush logs single transaction all databases test.sql 壓縮 傳輸 tar pczvf test.sql.gz test.sq...