数据库管理-第四十七期 迁移吧~(20221211)

第四十七期 迁移吧~

这周终于做了些正事,做了一个数据库的迁移,从X86的11g到x9m的19.16。
另一个事情则是中招奥密克戎了,今天到最高38.6度,伴随喉咙痛、咳嗽、嗜睡。下周就居家办公吧。

1 expdp/impdp

由于源环境字符集是ZHS16GBK,新环境是AL32UTF8,所以暂时没法通过xtts来进行迁移,因此采用数据泵两步走的方式,即是先导出导入表结构,然后将涉及中文(2->3)的字段长度进行变更,然后再导入表数据。

impdp  \'sys@ejpb as sysdba\' DIRECTORY=EXT    DUMPFILE=EXP_bjg.dump  LOGFILE=imp_bjp.log  TABLE_EXISTS_ACTION=replace CONTENT=METADATA_ONLY  SCHEMAS=USER1,USER2,USER3  remap_tablespace=USERS:TBS_DATA CLUSTER=n PARALLEL=12
--修改表结构
impdp  \'sys@ejpb as sysdba\' DIRECTORY=EXT    DUMPFILE=EXP%U.dump  LOGFILE=imp.log  CONTENT=DATA_ONLY   SCHEMAS=USER1,USER2,USER3 CLUSTER=n PARALLEL=12

2 varchar2(32k)

然而遇到一个问题,Oracle默认的varchar2最长为4000,环境里面存在修改字段长度后超过4000的表。从12c开始Oracle引入了最大32K的varchar2长度,具体变更操作如下:

ALTER SYSTEM SET max_string_size=extended SCOPE=SPFILE;
ALTER SYSTEM SET cluster_database=false scope=spfile;
srvctl stop database -db dbaas
startup upgrade
cd $ORACLE_HOME/rdbms/admin
$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -u SYS --force_pdb_mode 'UPGRADE' -d $ORACLE_HOME/rdbms/admin -l '/tmp/utl32k_cdb_pdbs_output' -b utl32k_cdb_pdbs_output utl32k.sql
catcon: ALL catcon-related output will be written to [/scratch/mydir/utl32k_cdb_pdbs_output/utl32k_cdb_pdbs_output_catcon_23172.lst]
catcon: See [/scratch/mydir/utl32k_cdb_pdbs_output/utl32k_cdb_pdbs_output*.log] files for output generated by scripts
catcon: See [/scratch/mydir/utl32k_cdb_pdbs_output/utl32k_cdb_pdbs_output_*.lst] files for spool files, if any
Enter Password:  --输入SYS密码
catcon.pl: completed successfully
shut immediate
startup
$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -u SYS --force_pdb_mode 'READ WRITE' -d $ORACLE_HOME/rdbms/admin -l '/tmp/utlrp_cdb_pdbs_output' -b utlrp_cdb_pdbs_output utlrp.sql
catcon: ALL catcon-related output will be written to [/scratch/mydir/utlrp_cdb_pdbs_output/utlrp_cdb_pdbs_output_catcon_24271.lst]
catcon: See [/scratch/mydir/utlrp_cdb_pdbs_output/utlrp_cdb_pdbs_output*.log] files for output generated by scripts
catcon: See [/scratch/mydir/utlrp_cdb_pdbs_output/utlrp_cdb_pdbs_output_*.lst] files for spool files, if any
Enter Password:  --输入SYS密码
catcon.pl: completed successfully
ALTER SYSTEM SET cluster_database=true scope=spfile;
shut immediate
srvctl start database -db dbaas

3 排除一些表

在测试过程中发现,有些大表导出导入非常慢,而且这些表虽然最终需要,但是一次性导入的时候可以不要这些表,因此在多用户or全库导出、导入的时候可以通过以下语句进行筛选:

EXCLUDE=TABLE:\"IN \(select TABLE_NAME from DBA_TABLES where \(owner,table_name\) in \(\(\'USER1\',\'TABLE1\'\), \(\'USER2\',\'TABLE2\'\)\) \)\"

总结

因为不舒服,原谅我又双叒划水了。
老规矩,知道写了些啥。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖头鱼的鱼缸(尹海文)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值