博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OCP读书笔记(19) - 数据库空间管理
阅读量:6481 次
发布时间:2019-06-23

本文共 5462 字,大约阅读时间需要 18 分钟。

传输表空间:将linux下的数据库中的test表空间传输到windows平台下的数据库

在传输表空间前,先确定一下源库与目标数据库字符集一致:

select * from nls_database_parameters where parameter =('NLS_CHARACTERSET');

1. 创建测试目录、测试表空间、测试用户、测试表:

SQL> create directory dump_dir as '/u01/app/oracle/trans'; SQL> create tablespace test datafile '/u01/app/oracle/oradata/orcl/test01.dbf' size 10M;SQL> create user test default tablespace test identified by a;SQL> grant connect, resource to test;SQL> conn test/aSQL> create table t as select * from user_tables;SQL> conn scott/tigerSQL> create table tt tablespace test as select * from emp;

2. 检测表空间是否是自包含的:

SQL> conn /as sysdbaSQL> execute dbms_tts.transport_set_check('test', true, true);SQL> select * from transport_set_violations;

3. 将表空间test设置为只读的:

SQL> alter tablespace test read only;SQL> exit

4. 使用数据泵将test的元数据导出:

[oracle@nylg ~]$ expdp \'/ as sysdba\' DIRECTORY=dump_dir DUMPFILE=test.dmp TRANSPORT_TABLESPACES=test

5. 检测linux平台与windowns平台的endian格式是否一样:

select platform_name, endian_format from v$transportable_platform order by 2, 1;

发现一致,可以进行传输,否则不可以传输

6. 将导出文件/u01/dir/test.dmp 和数据文件(test表空间所对应的数据文件test01.dbf)一起复制到目标数据库

登到windows平台

创建一个存放元数据文件的目录:

SQL> create directory dump_dir as 'c:\dir';

/u01/dir/test.dmp复制到c:\dir

/u01/app/oracle/oradata/orcl/test01.dbf放到windowns平台下的数据文件所在的目录

7. 在目标数据库上创建被传输的表空间所有的对象的属主

表空间test里所包含的对象的属主包括(在源库查询);

SQL> select distinct owner from dba_segments where tablespace_name= 'TEST';

在windows平台查看是否有scott和test两个用户:

SQL> select username from dba_users where username='SCOTT';SQL> select username from dba_users where username='TEST';

未选定行

发现没有test,在windows下创建test:

SQL> create user test identified by a;SQL> grant connect, resource to test;

8. 调用imp,进行可传输表空间的导入

C:\oracle\product\10.2.0\oradata\orcl>impdp '/ as sysdba' TRANSPORT_DATAFILES='C:\oracle\product\10.2.0\oradata\orcl\test01.dbf' DIRECTORY=dump_dir DUMPFILE=test.dmp

9. 导入后在源和目标数据库上,将test的表空间设置为读写状态

--在linux下:alter tablespace test read write;--在windowns:alter tablespace test read write;

10. 进行验证:

在windwos下:

sqlplus scott/tigerselect * from tab;conn test/aSQL> select * from tab;conn /as sysdbaSQL> alter user test default tablespace test;

迁移完毕

传输数据库:将linux上的orcl数据库传输到windows平台改名为nylg

1.查询v$transportable_platform确定linux平台与windows平台具有相同的endian格式

SQL> col PLATFORM_NAME for a40SQL> select platform_name, endian_format from v$transportable_platform order by 2

发现linux与windowns的endian格式一致都是little,所以可以执行整库迁移

2.调用dbms_tdb.check_db函数

该函数用来确定数据库是否已经准备好传输了(包括相同平台和不同平台的传输)该函数返回true,则说明可以进行数据库传输了,如果返回false则说明不能传输。

set serveroutput ondeclare  db boolean;begin  db := dbms_tdb.check_db('Linux IA (32-bit)');  if db then    dbms_output.put_line('The database can be transport');  else    dbms_output.put_line('The database can not be transport');  end if;end;/

数据库必须以read only方式打开

SQL> shutdown immediateSQL> startup mountSQL> alter database open read only;set serveroutput ondeclare     db boolean;begin    db := dbms_tdb.check_db('Linux IA (32-bit)');    if db then        dbms_output.put_line('The database can be transport');    else        dbms_output.put_line('The database can not be transport');    end if;end; /

The database can be transport

发现数据库已经准备好

3.调用dbms_tdb.check_external函数

该函数用来确定是否具有外部表,目录结构或者BFILE。该函数返回true或false,该结果主要提醒我们,源数据库中有这些外部对象。当把数据文件传输到目标站点上后,不要忘记了将这些对象所对应的文件也一起传输到目标站点上

declare  db_external boolean;begin  db_external := dbms_tdb.check_external();end;/

发现有一个外部表SH.SALES_TRANSACTIONS_EXT

还有目录:SYS.DUMP_DIR, SYS.DATA_PUMP_DIR, SYS.SUBDIR, SYS.XMLDIR, SYS.MEDIA_DIR,
SYS.LOG_FILE_DIR, SYS.DATA_FILE_DIR, SYS.WORK_DIR, SYS.ADMIN_DIR
bigfile:PM.PRINT_MEDIA

4.启动rman,执行convert database命令

在执行之前,先确定是否启用了多个默认的通道

rman target /show device type;

如果PARALLELISM的值大于1,则说明启用了并行通道,这时转换会报错,确认了PARALLELISM为1后,执行下面命令:

mkdir -p /u01/app/oracle/transrman target /convert database new database 'hndx' transport script '/u01/app/oracle/trans/trans.sql' to platform 'Microsoft Windows IA (64-bit)' db_file_name_convert '/u01/app/oracle/oradata/orcl' '/u01/app/oracle/trans/';

转换完以后除了生成转换以后的数据文件以外,还生成了两个文件:

/u01/app/oracle/trans/trans.sql:命令脚本文件

/u01/app/oracle/product/11.2/db/dbs/init_00oclf1f_1_0.ora:参数文件

修改参数文件,把目录的位置改为windwos平台上的位置,将转换后的数据文件传送到目标平台:

运行/u01/app/oracle/trans/trans.sql里的命令

创建服务hndx:oradim -NEW -SID hndxset oracle_sid=hndx创建控制文件:STARTUP NOMOUNT PFILE='c:\trans\inithndx.ora'CREATE CONTROLFILE REUSE SET DATABASE "HNDX" RESETLOGS ARCHIVELOGMAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100MAXINSTANCES 8MAXLOGHISTORY 292LOGFILEGROUP 1 'C:\oracle\product\10.2.0\oradata\hndx\redo01.log' SIZE 50M,GROUP 2 'C:\oracle\product\10.2.0\oradata\hndx\redo02.log' SIZE 50M,GROUP 3 'C:\oracle\product\10.2.0\oradata\hndx\redo03.log' SIZE 50MDATAFILE'C:\oracle\product\10.2.0\oradata\hndx\system01.dbf','C:\oracle\product\10.2.0\oradata\hndx\undotbs01.dbf','C:\oracle\product\10.2.0\oradata\hndx\sysaux01.dbf','C:\oracle\product\10.2.0\oradata\hndx\users01.dbf','C:\oracle\product\10.2.0\oradata\hndx\example01.dbf'CHARACTER SET AL32UTF8;以resetlogs方式启动数据库,创建日志文件:ALTER DATABASE OPEN RESETLOGS;添加临时文件:ALTER TABLESPACE TEMP ADD TEMPFILE 'C:\oracle\product\10.2.0\oradata\hndx\temp01.dbf'SIZE 20971520 AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;重新编译pl/sql代码:SHUTDOWN IMMEDIATESTARTUP UPGRADE PFILE='C:\trans\initnylg.ora'@@ ?\rdbms\admin\utlirp.sqlSHUTDOWN IMMEDIATEcreate spfile from pfile='c:\trans\initnylg.ora';STARTUP.@@ ?\rdbms\admin\utlrp.sql创建口令文件:orapwd file=C:\oracle\product\10.2.0\db_1\database\PWDhndx.ora password=a

 

转载于:https://www.cnblogs.com/thlzhf/p/3385701.html

你可能感兴趣的文章
HDU 1198 Farm Irrigation 两种方法(dfs,并查集)
查看>>
openstack环境下的虚拟机通过浮动IP访问后能ping通外网IP不能ping通域名
查看>>
数据集市
查看>>
100ns周期200ns的正脉冲波形形状描述
查看>>
Linux -磁盘管理 ip http://blog.csdn.net/xh16319/article/details/17272455
查看>>
Spring常见开发问题解决(乱码,异常)
查看>>
PHP获取上个月最后一天的一个容易忽略的问题
查看>>
盒子模型实际占用空间
查看>>
IO系列之三: 常见操作
查看>>
1月16日学习内容整理:存储库MongoDB之pymongo模块
查看>>
[转]译文:WebKit for Developers
查看>>
小白的进阶之路3
查看>>
一些常用图书资源
查看>>
python起步——zoj 1001、1037、1048、1049
查看>>
编译过程
查看>>
vim设置
查看>>
CentOS7使用firewalld打开关闭防火墙与端口
查看>>
AE开发之txt转shp
查看>>
VS2008切换时卡死解决方法
查看>>
springboot websocket(一)
查看>>