oracle 11g 迁移至达梦8数据库环境
- 一.搭建oracle数据库环境
- 二、搭建DM8数据库环境
- 三、迁移数据库
- 四、校验数据库
一.搭建oracle数据库环境
1.1 查看防火墙状态:
service iptables status
禁止防火墙在系统启动时启动
chkconfig --level 2345 iptables off
1.2 安装设置的环境变量
vi /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65500
net.core.rmem_default = 1048576
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
kernel.shmall = 42949672960
sysctl -p
1.3 创建用户和组
groupadd -g 1001 oinstall
groupadd -g 2001 dba
useradd -u 3001 -g oinstall -G dba oracle
#id oracle
#passwd oracle
mkdir -p /u01/app/oracle/product/11.2.0/db_1
chown oracle:oinstall /u01/app -R
chmod 775 /u01/app/oracle -R
1.4 为Oracle用户设置Shell限制
1)vi /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle soft stack 32768
2)vi /etc/pam.d/login
session required /lib/security/pam_limits.so
1.5 为Oracle用户设置环境变量
vi ~/.bash_profile
ORACLE_SID=orcl
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
PATH=$ORACLE_HOME/bin:$HOME/bin:$PATH
NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
export ORACLE_SID ORACLE_BASE ORACLE_HOME
export PATH NLS_LANG
source ~/.bash_profile 使配置生效
1.6 解决依赖包关系
yum install binutils-2.* compat-libstdc++-33* elfutils-libelf-0.* elfutils-libelf-devel-* gcc-4.* gcc-c++-4.* glibc-2.* glibc-common-2.* glibc-devel-2.* glibc-headers-2.* ksh-2* libaio-0.* libaio-devel-0.* libgcc-4.* libstdc++-4.* libstdc++-devel-4.* make-3.* sysstat-7.* unixODBC-2.* unixODBC-devel-2.* pdksh*
这些依赖包必须要安装,因为版本不同,在oracle安装时会提示缺少依赖包,忽略后可以正常安装使用Oracle。
1.7 解压安装包
unzip p10404530_112030_Linux-x86-64_1of7.zip
unzip p10404530_112030_Linux-x86-64_2of7.zip
./runInstall 进行安装
1.8 安装完成数据库之后创建表空间以及用户
Create tablespace e3_data datafile '/home/app/oracle/oradata/orcl/e3_data01.dbf'size 5000m autoextend on next 10m maxsize unlimited
/
create tablespace e3_indx datafile
'/home/app/oracle/oradata/orcl/e3_indx01.dbf'size 5000m autoextend on next 10m maxsize unlimited
/
create temporary tablespace e3_temp tempfile '/home/app/oracle/oradata/orcl/e3_temp01.dbf' size 2048m autoextend on next 10m maxsize unlimited
/
alter database default temporary tablespace e3_temp
/
alter database default tablespace e3_data
/
create user TEST identified by TEST123 default tablespace e3_data;
grant connect,resource,imp_full_database,exp_full_database to TEST;
grant select on dba_data_files to TEST;
grant select on dba_free_space to TEST;
alter user TEST quota unlimited on e3_data;
alter user TEST quota unlimited on e3_indx;
grant execute on sys.dbms_reputil to TEST;
grant create session to TEST;
create user test1 identified by test1123 default tablespace e3_data;
grant connect to e3web;
1.9 导入测试数据(这份数据是以前测试用例)
imp TEST/TEST123@orcl file=/home/soft/1.dmp log=/tmp/impTEST.log ignore=y full=y buffer=20480000
二、搭建DM8数据库环境
2.1 初始化数据库
在初始化达梦数据库时需要注意以下几点
(1)关于页大小 PAGE_SIZE。Oracle 也叫块大小(block),在 DM 数据库中,页大
小可以为 4KB、8KB、16KB 或者 32KB,从 Oracle 移植到 DM,建议设置页大小为 8KB,一旦创建好了数据库,在该库的整个生命周期内,页大小都不能够改变。除了每个字段的最
大长度限制外,每条记录总长度不能大于页面大小的一半。如果系统中存在或者以后可能存
在含有较长的字符串类型的表,建议该参数设置为 16 或者 32。页大小设置越大,最后数
据文件的物理大小就会越大,系统运行时,每次从磁盘调入内存的数据单位也就越大,所以
此处要慎重。
(2)关于簇大小 EXTENT_SIZE。数据文件使用的簇大小,即每次分配新的段空间时连
续的页数,只能是 16 页或 32 页,缺省使用 16 页,从 ORACLE 移植到 DM 使用默认值就
可。
(3)关于大小写敏感 CASE_SENSITIVE。DM 为了兼容不同的数据库,在初始化数据
库的时候有一个参数字符串比较大小写敏感,用于确定数据库对象及数据是否区分大小写,
默认为区分,不可更改。建议 MYSQL 和 SQLSERVER 迁移过来的系统,使用大小写不敏感,
ORACLE 迁移过来的系统,使用大小写敏感,以便和原来系统匹配。
(4)关于字符集 CHARSET。建议采用默认值 GB18030,如果需要国际字符可以采用
Unicode,GB18030 数字字母占 1 个字节,普通汉字占 2 个字节,部分繁体及少数民族文
字占 4 字节,Unicode 在达梦中采用 UTF-8 编码格式,欧洲的字母字符占 1 到 2 个字节,
亚洲的大部分字符占 3 个字节,附加字符为 4 个字节。如果只存储中文和字母数字,一般
来说 GB18030 更节省空间一些。
初始化:./dminit path=/home/dmdba/orcl_to_dm/ page_size=32 CHARSET=0
2.2 修改dm.ini参数
COMPATIBLE_MODE :是否兼容其他数据库模式。0:不兼容,1:兼容 SQL92 标准,2:兼容 ORACLE,3:兼容 MS SQL SERVER,4:兼容 MYSQL,5:兼容 DM6,6:兼容 Teradata,所以当从Oracle移植到DM7 时,修改值为2;当前先只修改此参数,后续具体情况具体分析。
URL连接串添加:?comOra=true,
示例如下:jdbc:dm://192.168.0.1:5236?comOra=true
CALC_AS_DECIMAL = 1
COMPATIBLE_MODE=2
PK_WITH_CLUSTER=0
ENABLE_RQ_TO_NONREF_SPL=2
ORDER_BY_NULLS_FLAG=1
BLANK_PAD_MODE=1
2.3 创建用户表空间和用户
从 Oracle 移植到 DM8,要求必须创建新的用户和表空间,不要把数据迁移到系统管
理员 SYSDBA 用户下和 MAIN 表空间下。
create tablespace "TEST" datafile '/home/dmdba/orcl_to_dm/DAMENG/TEST.DBF' size 2048 CACHE = NORMAL;
create user "TEST" identified by "TEST123" limit failed_login_attemps 3, password_lock_time 1, password_grace_time 10 default tablespace "TEST" default index tablespace "TEST";
grant "DBA","PUBLIC","RESOURCE","SOI","VTI" to "TEST" with admin option;
三、迁移数据库
3.1 创建迁移名称
3.2创建迁移方式
3.3 数据源连接信息
3.4 目标数据库连接信息
3.5 选择需要迁移的用户
目录、公共同义词、上下文可以不勾选;使用默认数据类型映射关系(M),字符长度*(L)注意在字符串截断问题上进行勾选设置
3.6选择迁移的对象
点击转换之后显示设置表隐射关系。注意勾选显示行记录,在普通表栏位可以选择读取和提交行数,可以适当进行调整数值大小,大字段表中数值调整小一点,提高效率。快速装载在大表迁移是尽量不选择勾选,以提高速度。同时在制定迁移策略得时候,可以将表数据进行分片。采取多个任务进行迁移数据得方式,提高速度效率
3.7创建迁移任务并形成迁移信息列表
3.8 开始迁移
迁移完成之后检查报错,发现全部是同义词报错信息,可以忽略,当然迁移完之后具体报错信息具体处理
四、校验数据库
4.1统计达梦数据库信息
–统计页大小
select page;
–通过编码格式
select unicode;
–统计大小写敏感参数
select case_sensitive;
–根据指定用户统计用户下的各对象类型和数目
select object_type,count() from all_objects where
owner=‘TEST’ group by object_type;
select object_type,count() from all_objects where
owner=‘E3WEB’ group by object_type;
–统计每个表的数据量到表数据记录表
create table dm_tables(tab_owner varchar(100),tab_name
varchar(100),tab_count int);
begin
for rec in (select owner,object_name from all_objects where
owner=‘OA8000_DM2015’ and object_type=‘TABLE’) loop
begin
execute immediate ‘insert into dm_tables select ‘’’|| rec.owner
||’’’,’’’|| rec.object_name ||’’’,count(*) from '|| rec.owner || ‘.’
|| rec.object_name;
exception when others then
print rec.owner || ‘.’ || rec.object_name || ‘get count error’;
end;
end loop;
end;
4.2数据库移植完毕后的收尾工作
4.2.1更新统计信息
数据核对完成无问题后,应进行一次全库的统计信息更新工作。统计信息更新脚本示例如下:
DBMS_STATS.GATHER_SCHEMA_STATS(
‘HNSIMIS’, --HNSIMIS 为模式名
100,
FALSE,
‘FOR ALL COLUMNS SIZE AUTO’);
更新统计信息的目的在于大批量迁移数据后,可能会导致数据库优化器根据错误的统计信息
得到错误的查询计划,严重影响查询性能。
4.2.2数据备份
再对数据更新完统计信息后,在数据量不大,磁盘空间足够的情况下应进行一次数据备份工
作。数据备份有两种方式:正常停止数据库后,拷贝备份 data 文件夹;或者开启归档日志
后,进行物理备份。
–命令行开启归档
–关闭或者开启归档
ALTER DATABASE ARCHIVELOG;
–调整数据库到mount状态
alter database mount;
–设置归档路径以及归档日志大小
ALTER DATABASE ADD ARCHIVELOG ‘DEST = /home/dmarch, TYPE = local, FILE_SIZE = 128, SPACE_LIMIT = 10240’;
–开启归档
alter database archivelog;
–查看归档状况
select arch_mode from v$database;
–进行全备
backup database full backupset ‘/home/dmbak/DB_FULL_20201111’;
4.2.3整理对象脚本
整理所有数据库对象脚本,这是为了对项目移植情况进行记录和备份,方便再次进行数据迁
移。备份的数据库对象脚本包括:序列定义及当前值,表定义,索引定义,视图定义,函数
定义,存储过程定义,包及包体定义、自定义类型和同义词定义。
脚本对象导出可通过达梦数据迁移 DTS 工具来进行。