数据迁移,从dm迁移到dm.
1.部署dm数据库.
数据库软件部署目录: /home/dmdba/dmdbms
源数据库初始化目录: /home/dmdba/dmdbms/source
目标数据库初始目录: /home/dmdba/dmdbms/target
源数据库初始化:
dminit PATH=/home/dmdba/dmdbms/data DB_NAME=SOURCE INSTANCE_NAME=SOURCE EXTENT_SIZE=32 PAGE_SIZE=32 CASE_SENSITIVE=0 PORT_NUM=5236
注册服务
./dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dmdbms/data/SOURCE/dm.ini -p SOURCE
目标数据库初始化:
dminit PATH=/home/dmdba/dmdbms/data DB_NAME=TARGET INSTANCE_NAME=TARGET EXTENT_SIZE=32 PAGE_SIZE=32 CASE_SENSITIVE=1 PORT_NUM=5237
注意: 字符集相同, 大小写敏感不同
注册服务
./dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dmdbms/data/TARGET/dm.ini -p TARGET
2.启动数据库,并在源库初始化数据
启动
systemctl start DmServiceSOURCE
查看源库配置:
创建测试数据:
create tablespace PROD_TS DATAFILE 'PRDO_TS01.DBF' SIZE 128 AUTOEXTEND ON NEXT 1 MAXSIZE 1024 ;
create user app IDENTIFIED BY App123456 DEFAULT TABLESPACE PROD_TS DEFAULT INDEX TABLESPACE PROD_TS ;
grant public ,resource, soi,svi ,vti to app ;
create table app.emp as select * from RESOURCES.EMPLOYEE ;
select a.EMPLOYEEID ,a.TITLE from APP."emp" a;
create table app.test (id int ,title VARCHAR(50)) ;
insert into app."test" select a.EMPLOYEEID ,a.TITLE from APP."emp" a;
commit ;
create INDEX app.idx_test_id ON app."test" (id) ;
create VIEW app.v_test AS select * from app."test" ;
查看目标库配置
创建迁移的表空间和用户
create tablespace PROD_TS DATAFILE 'PRDO_TS01.DBF' SIZE 128 AUTOEXTEND ON NEXT 1 MAXSIZE 1024 ;
create user app IDENTIFIED BY App123456 DEFAULT TABLESPACE PROD_TS DEFAULT INDEX TABLESPACE PROD_TS ;
grant public ,resource, soi,svi ,vti to app ;
1.启动dm数据库迁移工具DTS
新建工程
新建迁移:
点击 下一步
选择 DM ==> DM ,下一步
配置数据源信息 ,下一步.
配置目标数据库信息,下一步
去掉,保持对象名大小写 ,下一步
下一步.
完成.
查看迁移报告.
在目标库执行测试语句
select * from APP.EMP ;
select * from APP.TEST ;
select * from APP.V_TEST ;
select * from SYS.DBA_INDEXES a where a.OWNER = 'APP' ;
目标库的表名,视图名,索引名变为大写.
数据迁移成功.
功能语句:
统计dm数据库基本信息:
--统计页大小
select page;
--通过编码格式
select unicode;
--统计大小写敏感参数
select case_sensitive;
统计dm数据库中的对象以及表数据量
--根据指定用户统计用户下的各对象类型和数目
select object_type,count(*) from all_objects where owner='APP' group by object_type;
--统计指定用户下所有的对象,并记录到新的记录表中
create table dm_objects(obj_owner varchar(100),obj_name varchar(100),obj_type varchar(50));
insert into dm_objects select owner,object_name,object_type from all_objects where owner='APP';
select * from dm_objects ;
--统计每个表的数据量到表数据记录表
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='APP' 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;
select * from dm_tables;
更新统计信息
DBMS_STATS.GATHER_SCHEMA_STATS( 'APP', 100, FALSE, ' FOR ALL COLUMNS SIZE AUTO ' );
数据备份
backup database to db_full_220906 backupset 'db_full_220906' ; --提前打开归档.
整理对象脚本.
其他和数据导出相同 ,生成数据对象的sql脚本文件.