OCP读书笔记(19) - 数据库空间管理
传输表空间:将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/a
SQL> create table t as select * from user_tables; SQL> conn scott/tiger
SQL> create table tt tablespace test as select * from emp;
2. 检测表空间是否是自包含的:
SQL> conn /as sysdba
SQL> 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/tiger
select * from tab; conn test/a
SQL> select * from tab; conn /as sysdba
SQL> alter user test default tablespace test;
迁移完毕
传输数据库:将linux上的orcl数据库传输到windows平台改名为nylg
1.查询v$transportable_platform确定linux平台与windows平台具有相同的endian格式
SQL> col PLATFORM_NAME for a40 SQL> 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 on declare
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 immediate
SQL> startup mount
SQL> alter database open read only; set serveroutput on declare
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/trans
rman 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 hndx
set oracle_sid=hndx 创建控制文件: STARTUP NOMOUNT PFILE='c:\trans\inithndx.ora'
CREATE CONTROLFILE REUSE SET DATABASE "HNDX" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 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 50M
DATAFILE
'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 IMMEDIATE
STARTUP UPGRADE PFILE='C:\trans\initnylg.ora'
@@ ?\rdbms\admin\utlirp.sql SHUTDOWN IMMEDIATE
create 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
OCP读书笔记(19) - 数据库空间管理的更多相关文章
- OCP读书笔记(12) - 执行闪回数据库
闪回数据库使用的是闪回日志,闪回日志存在于闪回目录(也就是快速闪回区中)闪回日志:就是数据块修改之前的镜像,简称前像 1.查看闪回目录的位置:show parameter recovery 如果闪回目 ...
- STL源码分析读书笔记--第二章--空间配置器(allocator)
声明:侯捷先生的STL源码剖析第二章个人感觉讲得蛮乱的,而且跟第三章有关,建议看完第三章再看第二章,网上有人上传了一篇读书笔记,觉得这个读书笔记的内容和编排还不错,我的这篇总结基本就延续了该读书笔记的 ...
- 《深入分析Java Web技术内幕》读书笔记之JVM内存管理
今天看JVM的过程中收获颇丰,但一想到这些学习心得将来可能被遗忘,便一阵恐慌,自觉得以后要开始坚持做读书笔记了. 操作系统层面的内存管理 物理内存是一切内存管理的基础,Java中使用的内存和应用程序的 ...
- SQL Server数据库空间管理 (1)
数据库经常遇到的问题: 1).数据库文件空间用尽 2).日志文件不停增长 3).数据库文件无法收缩 4).自动增长和自动收缩 本系列就以上面的4个问题入手分析并总结数据库空间的管理方法. 1. ...
- OCP读书笔记(2) - 配置恢复
RMAN的命令类型 1. sqlplus命令 [oracle@oracle admin]$ export ORACLE_SID=orcl [oracle@oracle admin]$ rman tar ...
- OCP读书笔记(14) - 管理数据库性能
搜集统计信息 1. dbms_stats gather_schema_stats 1)option:有四个选项: a.gather empty:只分析目前还没有搜集过统计信息的表 SQL> co ...
- OCP读书笔记(18) - 空间管理
OLTP 表压缩 压缩始终是非常占用CPU的过程,并且需要花费一定时间,通常,如果压缩数据,则数据必须解压缩后才能使用.虽然此要求在数据仓库环境中是可以接受的但在OLTP环境中可能无法接受 现在,在O ...
- OCP读书笔记(13) - 管理内存
SGA 1. 什么是LRULRU表示Least Recently Used,也就是指最近最少使用的buffer header链表LRU链表串联起来的buffer header都指向可用数据块 2. 什 ...
- OCP读书笔记(9) - 诊断数据库
数据库恢复顾问 Data Recovery Advisor的命令行选项 1. 启动 RMAN 进程并连接到目标$ rman target=/ 2. 假设发生了某个错误,希望找出原因,使用 list f ...
随机推荐
- Struts2图片文件上传,判断图片格式和图片大小
1. 配置Struts2能够上传的最大文件大小 使用Struts2进行文件上传的时候,Struts2默认文件大小最大为2MB,如果要传大一点的文件,就需要修改struts.xml配置文件,重新设置能够 ...
- poj1189 简单dp
http://poj.org/problem?id=1189 Description 有一个三角形木板,竖直立放.上面钉着n(n+1)/2颗钉子,还有(n+1)个格子(当n=5时如图1).每颗钉子和周 ...
- ALV双击单元格事件处理
*激发双击事件 FORM f_alv_user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield. "先引 ...
- 【Demo 0015】位置服务及地图
本章学习要点: 1. 掌握位置相关类(CLLocationManager,MKUserLocation) 基本用法; 2. 掌握地图视图(MKMapView)基本用法; ...
- 【Demo 0008】标签控制器
本章学习要点: 1. 了解标签控制器基础知识; 2. 掌握标签控制器层次结构; 3. 掌握标签控制器基本用法; 4. 掌握自定义标签控制器: ...
- QML中多样化的ListModel(MultiDelegate)
在QML的官方例子里面, 基本上都是一样的Delegate, 也就是说不管数据怎样, 样式都是不变的. 如果我们想要根据不同的数据类型来显示不同的UI该怎么办? 这里有一个例子. DataBank L ...
- 原型链(__proto__)
前面详细的解释了new的几个步骤,其中随意带过了一下原型链的概念,如果细读那篇文章,基本对原型也能有所理解. 原型有两个关键属性,一个是 __proto__ 一个是 prototype ,了解了这两个 ...
- flex网上办(苹果)桌面系统仿真
1.有登录界面 2.能够载入app(每一个app是单独的swf),并可拖动app的图标互相叠加 3.桌面上显示的哪些APP与目录是依据登陆的用户信息.从webservice中读取的(名字.图标信息等) ...
- 参数传递方法(Delphi1.0与win16API使用pascal方法,即从左到右)
参数传递方法李维的InsideVCL<第一章>中提到Windows定义的回调函数typedef LRESULT (CALLBACK*WNDPROC)(HWND,UNIT,WPARAM,LP ...
- [C++]引用浅析
Date:2013-12-22 Summary: 引用数据类型的一些概念记录(沟通中提到引用必须结合语境才能知道说的是引用变量还是“引用”这一行为,再次提到引用指的一般是引用变量) Contents: ...