第一篇:Oracle大型数据库 实验五 重做日志文件、表空间管理操作
集美大学计算机工程学院实验报告
课程名称:大型数据库技术 指导教师:杨艳华
班级:计算12 姓名:
实验成绩:
上机实践日期:2014.12 上机实践时间:2学时 实验项目名称:重做日志文件、表空间管理操作 学号:20 实验项目编号:实验五 组号:
一、实验目的
1、理解重做日志文件的基本概念;
2、掌握重做日志文件组及其成员的添加、移动、删除等操作;
3、掌握归档重做日志的设置;
4、理解表空间的基本概念和分类;
5、掌握永久表空间的创建和管理操作;
6、掌握还原表空间的管理。
二、实验要求
1、完成重做日志文件组及其成员文件的管理操作;
2、完成归档重做日志的设置;
3、完成永久表空间和临时表空间的管理操作;
4、完成还原表空间的管理。
三、实验内容
(1)查看数据库当前重做日志文件组及成员的设置情况,然后,为数据库添加一组重做日志,组内包含两个成员文件,分别为redo4a.log和redo4b.log,大小分别为5MB。
1(2)为上面新添加的那组重做添加一个日志成员,命名为“redo4c-姓名简拼.log”,实现重做日志的多路存储。
(3)把数据库从非归档模式修改为归档模式,之后创造条件让数据库立即归档,并检查归档是否成功
(4)创建永久表空间
创建一个表空间名为“TB+学号后三位+姓名简拼” 空间的大小为50M 表空间包括两个数据文件:表空间名_01.dbf(30M)和表空间名_02.dbf(20M),大小均不能自动扩展 数据文件均存放在Oracle的安装根目录
(5)改变上述永久表空间的可用性
先将表空间脱机 再进行联机
(6)创建一个4K的非标准块表空间,命名为“tbf+学号后三位+姓名简拼”,数据文件存储在”
(7)创建一个临时表空间
名为“TTB+学号后三位+姓名简拼”
包含一个数据文件:表空间名_01.dbf,大小为(学号后三位*2)M,存储在”
(8)查看数据库内各个表空间及其类型,以及区管理方式、分配类型和段空间管理方法、表空间的状态。
(9)删除前面创建的非标准块表空间,同时删除表空间的内容和对应的操作系统文件。
(10)创建一个还原表空间,命名为“UNDO+学号后三位+姓名简拼”,其中包含一个数据文件(存储在”
(11)为前面创建的永久表空间添加一个数据文件,命名为“表空间名_03.dbf”,该文件初始大小为50M,允许自动扩展,存储在”
(12)将永久表空间中初始的两个文件移动到”
(13)同时将前面创建的永久表空间和UNDO表空间内的文件进行重命名,把文件名中的“_”去掉。
三、实验小结
1、通过本次实验,我对重做日志文件组及其成员的添加、移动、删除等操作、归档重做日志的设置、表空间的基本概念和分类、永久表空间的创建和管理操作、还原表空间的管理都有了更为深入的了解和掌握;
2、切换数据库状态前,必须关闭数据库,由于没有关闭数据库,导致在数据库状态切换过程中遇到了很多问题;
3、通过本次实验,我能够完成重做日志文件组及其成员文件的管理操作、完成归档重做日志的设置、完成永久表空间和临时表空间的管理操作。
第二篇:oracle 数据文件、表空间、日志文件、控制文件数据库管理
实验四 oracle 数据库管理
一、试验目的
掌握对数据文件、表空间、日志文件、控制文件的常用命令,作为DBA的必要准备。
二、实验内容
2.1 数据文件的管理
(1)在安装完毕之后,在INITsid.ORA参数文件有一个DB_FILES 参数,用于设置当前实例的数据外文件的个数。如: db_files = 80 如果在INITsid.ORA文件没有该参数,则可以用下面查询语句从视图中查到。如: SQL> col name for a20 SQL> col value for a50 SQL> set lin 100 SQL> select name,value from v$parameter where name = 'db_files';NAME VALUE---------------------------------------db_files 1024(2)行命令建立表空间:
例1 CREATE TABLESPACE user_stu DATAFILE 'h:/oracle/oradata/orcl/user_stu.dat' SIZE 20M DEFAULT STORAGE(INITIAL 10K NEXT 50K MINEXTENTS 1 MAXEXTENTS 99 PCTINCREASE 10)ONLINE;例2:建立一个新的表空间,具有两个数据文件: CREATE TABLESPACE CRM_TAB
DATAFILE 'h:/oracle/oradata/orcl/crm01.dbf' size 10 MB,'h:/oracle/oradata/orcl/crm02.dbf' size 10 MB;(3)对一个已存在的表空间追加新数据文件: 例1 ALTER TABLESPACE user_stu
Add datafile 'H:/oracle/oradata/orcl/user_stu01.dbf' size 30M;例2 为表空间增加数据文件 ALTER TABLESPACE users ADD DATAFILE 'userora1.dbf ' SIZE 10M;(4)数据文件更名
ALTER TABLESPACE users RENAME DATAFILE? 'filename1', 'filename2' TO 'filename3', 'filename4';(5)变更数据文件大小 在创建表空间时,可以将表空间说明为自动扩展或固定大小。因而管理员的一项工作就是查看系统所有的表空间对应的数据文件情况。看是否为自动扩展。如: SQL> col tablespace_name for a12 SQL> col file_name for a48 SQL> select tablespace_name,file_name,AUTOEXTENSIBLE ,bytes from dba_data_files
(6)数据文件的自动扩展与调整。重新调整数据文件大小的命令如下: ALTER DATABASE DATAFILE [datafile_name] RESIZE [new_size];
当我们发现数据文件过大而不可能用完时,可以用上面命令将数据文件调小。对于设置数据文件的自动扩展问题,可用下面命令来达到: ALTER DATABASE DATAFILE [ file_spec ] AUTOEXTEND ON NEXT [increment_size] MAXSIZE [max_size,UNLIMITED]; 如:
ALTER DATABASE DATAFILE 'H:ORACLEORADATAORCLUSER_STU01.DBF' AUTOEXTEND ON NEXT 10m MAXSIZE 60M;(7)行命令修改表空间:
ALTER TABLESPACE USER_STU ONLINE;(8)ALTER TABLESPACE accounting OFFLINE NORMAL;(9)行命令删除表空间:
DROP TABLESPACE 表空间名 INCLUDING CONTENTS CASCADE CONSTRAINTS(10)、与数据文件有关的视图
select file_name from dba_data_files;select * from v$datafile;DBA_DATA_FILES DBA_EXTENTS DBA_FREE_SPACE V$DATAFILE V$DATAFILE_HEADER(11)、为了保证表空间的可用,除了掌握表空间的创建外,还应该查看dba_free_space中表空间的信息,以确保系统正常运行。一般管理员应该关心的内容有:表空间共有多少个;总共有多少自由空间;最大的自由空间是什么;下面例子是一个经常使用的脚本,可以查出数据文件和表空间的可用情况。clear buffer clear columns clear breaks column a1 heading 'Tablespace' format a15 column a2 heading 'data File' format a45 column a3 heading 'Total|Space' format 999,999.99 column a4 heading 'Free|Space' format 999,999.99 column a5 heading 'Free|perc' format 999,999.99 break on a1 on report compute sum of a3 on a1 compute sum of a4 on a1 compute sum of a3 on report compute sum of a4 on report set linesize 120 select a.tablespace_name a1, a.file_name a2, a.avail a3, nvl(b.free,0)a4, nvl(round(((free/avail)*100),2),0)a5 from(select tablespace_name, substr(file_name,1,45)file_name, file_id, round(sum(bytes/(1024*1024)),3)avail from sys.dba_data_files group by tablespace_name, substr(file_name,1,45), file_id)a,(select tablespace_name, file_id, round(sum(bytes/(1024*1024)),3)free from sys.dba_free_space group by tablespace_name, file_id)b where a.file_id = b.file_id(+)order by 1, 2;(12)查询是否存在表的扩展超出表空间可用大小 一般在系统使用较长时间后,表空间的连续块被多次的修改与删除等操作后出现了许多的不连续的块(叫碎片)。这样就有可能出现表的扩展所需要的连续块不能满足的情况。为了避免这样的情况发生而导致扩展失败,管理员要经常查询系统的表空间情况。下面就是这样的一个脚本:
Col segment_name for a20 Select segment_name, segment_type, owner, a.tablespace_name tablespace, Initial_extent, next_extent, pct_increase,b.bytes max_bytes From dba_segments a,(select tablespace_name, max(bytes)bytes from dba_free_space group by tablespace_name)b where a.tablespace_name=b.tablespace_name and next_extent > b.bytes;(13)查询表空间自由、最大及碎片
其实,平常管理最关系就是表空间的总量、最大字节、使用多少、碎片多少等。下面脚本可以查询出所有表空间的自由空间、总空间数、已用空间、自由百分比及最大块的字节数。set pau off
col free heading 'Free(Mb)' format 99999.9 col total heading 'Total(Mb)' format 999999.9 col used heading 'Used(Mb)' format 99999.9 col pct_free heading 'Pct|Free' format 99999.9 col largest heading 'Largest(Mb)' format 99999.9 compute sum of total on report compute sum of free on report compute sum of used on report break on report select substr(a.tablespace_name,1,13)tablespace, round(sum(a.total1)/1024/1024, 1)Total, round(sum(a.total1)/1024/1024, 1)-round(sum(a.sum1)/1024/1024, 1)used, round(sum(a.sum1)/1024/1024, 1)free, round(sum(a.sum1)/1024/1024, 1)*100/round(sum(a.total1)/1024/1024, 1)pct_free, round(sum(a.maxb)/1024/1024, 1)largest, max(a.cnt)fragment from(select tablespace_name, 0 total1, sum(bytes)sum1, max(bytes)MAXB, count(bytes)cnt from dba_free_space group by tablespace_name union select tablespace_name, sum(bytes)total1, 0, 0, 0 from dba_data_files group by tablespace_name)a group by a.tablespace_name 2.2 日志文件的管理
(0)日志查询
select group#,bytes from v$log;? select group#,bytes from v$logfile;
(1)实现强行的日志切换 Alter system switch logfile;(2)检测点(checkpoint)
Oracle为了在出现故障后能退回去重演原来的信息,就需要一个叫开始点。在这个开始点时刻,数据和事务是已知的。这样的开始点就叫检测点。在Oracle里,只要检查点一到(出现)。Oracle就强行将当前的SGA中的redo区的改动过的块写入重做日志文件中。这个步骤完成后,在重做日志文件中放入一个特殊的检测点标志记录。如果在下一个检测点完成前出现失败,恢复操作进程就会在日志文件和数据文件前一个检测点同步(改回去)。检测点检查完成后,对数据块的任何改动都记录在其检测点标志后写入重做日志项中。因此,恢复也就只能从最近的检测点标志记录开始。
Oracle在INITsid.ORA文件中给出LOG_CHECKPOINT_INTERVAL参数可以设置检测点的数目。比如 日志文件大小为1000块,而设置检查点间隔LOG_CHECKPOINT_INTERVAL为250,则文件写达到 1/
4、2/
4、3/4及4/4时产生检测点(250块、500块、750块和1000块处)。可用下面命令来查日志文件大小: SQL> select group#,bytes from v$log;show parameter log_checkpoint_interval(3)添加日志组
建立一个新组4,组内有两个成员 ALTER DATABASE ADD LOGFILE GROUP 4('H:/oracle/oradata/orcl/redo0401.log', 'H:/oracle/oradata/orcl/redo0402.log')size 10m;===当添加一个日志组时,可以不给出组号,有系统自动分配一个组号=== ALTER DATABASE ADD LOGFILE('H:/oracle/oradata/orcl/redo0501.log', 'H:/oracle/oradata/orcl/redo0502.log')size 10m;此时添加的组号为5
(4)为日志组增加成员 ALTER DATABASE ADD LOGFILE MEMBER 'log22.log' TO GROUP 2;===添加成员时,可以不给定成员的大小,因为oracle要求组内的所有成员的大小一律相等。
(5)如果将一个日志成员从一个硬盘移到另一个硬盘,就需要重新命名日志成员名字。需要进行下面步骤:
1. 关闭数据库,并进行完全备份;
2. 使用操作系统命令拷贝原来的日志文件到新的地方; 3. 用startup mount 启动数据库; 4. 用ALTER DATABASE RENAME FILE '
ALTER DATABASE RENAME FILE 'filename1', 'filename2' TO 'filename3', 'filename4';
(6)日志删除
a.删除日志组成员:
在下面情况下可能需要删除重做日志文件,如日志文件个数太多(超出需要);日志文件的大小不一致等。这样的情况可以删除日志组成员。b.当日志组损坏时,就删除日志组,但必须满足:
a)删除一个日志组后,系统中至少还有两个其它的日志组; b)被删除的日志组必须是不需要存档; c)不是正在使用的日志组。删除日志文件的语法:
ALTER DATABASE database_name DROP LOGFILE GROUP group_number | file_name |(file_name,file_name(,...))删除日志成员的语法:
ALTER DATABASE database_name DROP LOGFILE MEMBER file_name;c.联机重做日志的紧急替换:
当一个重做日志组偶而被损坏使数据库不能继续使用时,不能直接删除它们,而是要用一个干净的文件或一组成员去替代这个损坏的日志组。联机重做日志的紧急替换命令语法如下: ALTER DATABASE database_name CLEAR[UNARCHIVED] LOGFILE group_identifier [UNRECOVERABLE DATAFILE] 如果该文件正在等待存档(归档模式),就需要UNARCHIVED。
如果需要脱机恢复一个数据文件,就用UNRECOVERABLE DATAFILE。d.了解重做日志的当前状态: V$LOGFILE V$LOG V$THREAD V$LOG_HISTORY e.例子:
删除一个组3:
ALTER DATABASE DROP LOGFILE GROUP 3;删除一个成员:
ALTER DATABASE DROP? LOGFILE MEMBER '/orant/oradata'mydb02'redo02.log';4.了解重做日志的当前状态的视图主要有: V$LOGFILE V$LOG V$THREAD V$LOG_HISTORY 5.例子:
察看是否归档
ARCHIVE? LOG? LIST 日志归档
alter database noarchivelog;
3、控制文件的管理(1)关于控制文件
控制文件存放有数据库的结构信息,包括数据文件、日志文件。控制文件是一个二进制文件,它是在数据库建立时自动被建立。控制文件可以在当你改变文件名或移动文件时而被更新。在任何时候,你都不能编辑控制文件。控制文件的内容包括:
数据库名字(控制文件只能属于一个数据库)。 数据库建立时的邮戳。
数据文件-名字,位置及联机/脱机。 重做日志文件-名字及位置。 表空间名字。 当前日志序列号。 最近检查点信息。
恢复管理器信息(RMAN)。(2)控制文件信息
在spfile.ora的配置文件中 有:
control_files =(“/home/oracle/app/oracle/oradata/s450/control01.ctl”, “/home/oracle/app/oracle/oradata/s450/control02.ctl”, “/home/oracle/app/oracle/oradata/s450/control03.ctl”)(3)查询控制文件的信息
show parameters;select * from v$controlfile;desc V$CONTROLFILE_RECORD_SECTION v$datafile db_data_files v$logfile v$log v$controlfile show parameter control_files
其中,RECORD_SIZE NUMBER 记录字节大小 RECORDS_TOTAL NUMBER 段的记录数
RECORDS_USED NUMBER 段中已使用的记录数 FIRST_INDEX NUMBER 第一个记录索引位置 LAST_INDEX NUMBER 最后一个记录索引位置 LAST_RECID NUMBER 最后一个记录ID号
select * from V$CONTROLFILE_RECORD_SECTION;7.6.4 控制文件信息的更改
需要在spfile.ora中做出相应的更改。建立控制文件的步骤 1.建立控制文件准备。
必须有数据文件(查DBA_DATA_FILES数据字典)、日志文件(查V$LOGFILE数据字典)的详细列表。下面是创建控制文件的命令:
CREATE CONTROLFILE SET DATABASE “ORACLE” NORESETLOGS NOARACHIVELOG MAXLOGFILES 32 MAXLOGMEMBERS 2 MAXDATAFILES 32 MAXINSTANCES 1 MAXLOGHISTORY 1630 LOGFILE GROUP 1 'C:ORACLEDATABASELOG1ORCL.LOG' SIZE 200K, GROUP 2 'C:ORACLEDATABASELOG2ORCL.LOG' SIZE 200K, DATAFILE 'C:ORACLEDATABASESYS1ORCL.ORA', 'C:ORACLEDATABASEUSER1ORCL.ORA', 'C:ORACLEDATABASERBS1ORCL.ORA', 'C:ORACLEDATABASETMP1ORCL.ORA', 'C:ORACLEDATABASEAPPDATA1.ORA', 'C:ORACLEDATABASEAPPINDX1.ORA',;在例子中,参数选件与 CREATE DATABASE类似。NORESETLOGS 指定联机的日志文件不要重新设置。2. 关闭数据库。
3. 用NOMOUNT选件启动数据库,记住,安装数据库,Oracle需要打开控制文件。4. 用类似上面建立新的控制文件。并在INITsid.ORA参数文件中指定。5. 使用ALTER DATABASE OPEN命令打开数据库。6. 关闭数据库并备份数据库。
提示:如果你的数据库正常,则可以用ALTER DATABASE BACKUP CONTROLFILE TO TRACE 命令来产生一个CREATE CONTROLFILE 的命令。该命令产生后被写到跟踪文件中。请参考INITsid.OAR的USER_DUMP_DEST所指的目录找到跟踪文件,它就在跟踪文件中。
建立好控制文件后,就要确定如何来补救被丢失的数据文件,可以从V$DATAFILE视图来查到丢失的数据文件,这些数据文件的名字为MISSINGnnnn。如果你建立的控制文件带有RESETLOGS选件,则丢失的数据文件就不能加回数据库中。如果你建立的控制文件带有NORESETLOGS选件,则丢失的数据文件可以由数据库的介质恢复被加回数据库中。当数据库启动后可以 用下面命令进行备份:
ALTER DATABASE BACKUP CONTROL FILE TO '
可以从视图V$CONTROLFILE中查到控制文件的信息,status字段表示控制文件的状态,一般总是为空。如:
SQL> select * from v$controlfile;另外V$CONTROLFILE_RECORD_SECTION 视图存储控制文件所记录的信息。它的结构如下:
SQL> desc V$CONTROLFILE_RECORD_SECTION
第三篇:oracle表空间管理及操作实用案例
Oracle
表空间管理及操作详解(附带案例)
一:表空间概述
表空间是数据库的逻辑组成部分,从物理上讲,数据库数据存放在数据文件中;数据库逻辑上讲是由一个或者多个表空间组成,数据文件则是存放在表空间中,表空间有一个或者多个数据文件组成即表空间有数据文件构成的。
数据库,表空间,段,区,块,按大小排列依次是:数据库---》表空间-----》段-----》区----》块。
1.建立表空间的作用:
(1.)控制数据库占用的磁盘空间。(2).dba可以将不同的数据类型部署到不同的位置,这样有利于提高i/o性能,同时有利与备份和恢复等管理操作。
二:管理表空间和数据文件。
(1)建立表空间create tablespace;一般情况下建立表空间是特权用户或者dba来执行的,如果其他用户来创建表空间,则用户建必须要具有create tablespace的系统权限。(2)建立数据表空间
在建立数据库后,为便于管理表,最好建立自己的表空间。
create tablespace sp02 datafile 'd:testsp02.dbf' size 20m uniform size 128k 说明:执行完上述命令后,会建立名称为sp02的表空间,并为该表空间建立名称为sp02.dbf的数据文件,区的大小为128k。(3.)在表空间建表
create table tablesp02(ID number(5),name varchar2(20))tablespace sp02(4)显示当前用户拥有哪些表。
select * from tab;
(5).知道表空间名,显示该表空间包括的所有表。
select * from all_tables where tablespace_name='表空间名'。
注:拥有权限不同的用户在进行以上操作得到的结果可能不同。System可以查看得到某空间的所拥有表。(比如users表空间)(6)知道表名,查看该表属于那个表空间。
select TABLESPACE_NAME, TABLE_NAME from user_tables where TABLE_NAME='EMP';(7)知道表名,查看该表属于那个表空间,属于哪个用户。
select owner,TABLESPACE_NAME, TABLE_NAME from all_tables where TABLE_NAME='EMP';(8)改变表空间的状态 使表空间可读写
alter tablespace 表空间名 read write;
删除表空间,一般情况下由特权用户或者dba来操作。具有drop tablespace系统权限。
drop tablespace ‘表空间’includeing contens and datafiles;
说明:includeing contens表示删除表空间时,删除该空间的所有数据库对象而datafiles表示将数据库文件也删除。(9)改变表空间的状态(1)使用空间脱机
alter tablespace 表空间名 offline(2)使用空间联机
alter tablespace表空间名online(3)只读表空间
建立表空间时,表空间可以读写,如果不希望在表空间上执行update,delete,insert操作。那么可以将表空间修改为只读。alter talbespace sp01 read only;
三:移动数据文件:
(1)确定数据文件所在的表空间(知道表属于哪个表空间)Select tablespace_name from dba_data_files where file_name='D:TEST 5.DBF';(2)使用表空间脱机
确保数据文件的一致性,将表空间转换为offline的状态。alter tablespace sp01 offline;
(3)使用命令移动数据文件到指定的目标位置。host move d:testsp01.dpf c:testsp01.dbf;(4)执行alter tablespace命令
在物理上移动了数据后,还必须执行alter tablespace命令对数据库文件进行逻辑修改。
alter tablespace sp01 rename datefile ‘d:sp01.dbf’ to 'c:sp01.dbf'(5)使得表空间联机
在移动了数据文件后,为了使用户可以访问该表空间,必须将其变为online状态:
alter tablespace sp01 online;
四:显示表空间信息:
查询数据视图字典dba_tablespace,显示表空间的信息:
select tablespace_name from dba_tablespaces 显示某个表空间的详细信息: select * from dba_tablespaces where TABLESPACE_NAME='SP05';显示表空间所包含的数据文件。查询数据字典视图dba_data_files。可显示表空间所包含的数据文件如下:
select file_name,bytes from dba_data_files where tablespace_name='SP05';常用表空间,undo表空间和临时表空间,非标准块的表空间。了解表空间的各个状态:如何改变表空间的的状态的方法。(online,offline,read write,read only)system是系统表空间,不能作为只读,如果是普通表空间,那么我们可以设为只读。
五:附加案例:建一个表空间,在表空间里面建表,并且增加表空间的存储空间。
1.建立表空间 create tablespace sp05 datafile 'd:testsp05.dbf' size 20m uniform size 128k 2.建表
create table tablesp05(ID number(5),name varchar2(20))tablespace sp02 3.insert into tablesp05 select * from tablesp05;(重复多步提示空间不足)
4,拓展表空间,扩大存储空间。
alter tablespace sp05 add datafile 'D:test 5.dbf' size 20m;
拓展表空间的存储空间这里有三种方法:
(1)增加数据文件alter tablespace sp05 add datafile 'D:test 5.dbf' size 20m;
(2)修改数据文件大小
alter database datafile 'd:testsp05.dbf' resize 50m;数据文件不要超过500m。(3)设置文件的自动增长 alter database datafile 'D:testSP05.dbf' autoextend on next 10m maxsize 500m;
第四篇:oracle表空间和数据文件的管理实验
表空间和数据文件的管理实验
试验目的:全面掌握表空间和数据文件的创建、管理过程 试验内容:
1、创建表空间、增加数据文件
2、管理表空间和数据文件的的各种操作 试验步骤:
1、掌握表空间和数据文件相关的概念
1)oracle默认的表空间
系统默认的表空间:SYSTEM、SYSAUX、UNDOTBS1、EMP、EXAMPLE、USERS 2)系统表空间
SYSTEM、SYSAUX是系统表空间,SYSTEM用于存放oracle数据字典的结构和内部元数据。
SYSAUX是SYSTEM的辅助表空间用于存放个模式(用户)的对象元数据。
3)非系统表空间
由DBA根据需要创建,存放用户自己的数据,也可以包含临时数据以及UNDO数据。
2、创建表空间
1)创建表空间的语法
CREATE [smallfile|bigfile] TABLESPACE tablespace_name DATAFILE ‘/path/filename’ SIZE [k|m] REUSE
[‘/path/filename’ SIZE [k|m] REUSE]
[AUTOEXTEND [ON|OFF] NEXT [k|m] MAXSIZE [UNLIMITED|[K|M]]] [ONLINE|OFFLINE] [LOGGING|NOLOGGING] [PERMANENT|TEMPORARY] [DICTIONARY|LOCAL]
2)定义表空间名字及属性
创建两个表空间ts_test1、ts_test2,本地化管理(Local,默认)、永久表空间(permantent,默认)
3)定义数据文件名字、路径、初始大小、自动扩展等属性
数据文件data_test1、data_test2 路径:c:disk1data_test1.dbf c:disk2data_test2
4)创建脚本:
a、创建本地永久表空间
//创建本地永久表空间ts_test1和ts_test2,默认为永久和本地
SQL>create tablespace ts_test1 datafile ‘c:disk1data_file1.dbf’ size=50m reuse autoextend on next 10m;
SQL>create tablespace ts_test2 datafile ‘c:disk2data_file2.dbf’ size=50m reuse autoextend on next 10m maxsize unlimited;查看一下创建完成的结果
//查看dba_tablespaces结构
SQL>desc dba_tablespaces;
//查看字典中的所有表空间情况,extent_management值为local时为本地表空间 SQL>select tablespace_name,status,extent_management,content from dba_tablespaces;//查看创建表空间时创建的数据文件,首先查看dba_data_files字典结构 SQL>desc dba_data_files;//查看数据文件情况 SQL>set linesize 120 SQL>col file_name for a20 SQL>col file_id for a20 SQL>col tablespace_name a30 SQL>col online_status for a20 SQL>select file_name,file_id,tablespace_name,online_status from dba_data_files;
b、创建还原表空间和临时表空间
//创建还原表空间
SQL>create undo tablespace test_undo datafile ‘c:disk3test_undo’ size 20m;
//查看创建结果,contents为表空间内容类型,如undo
SQL>select tablespace_name,contents from dba_tablespaces;
c、创建临时表空间
//创建临时表空间
SQL>create temporary tablespace test_temp
tempfile ‘c:disk4test_temp.dbf’ size 20m extent management local;
//查询创建结果
SQL>select tablespace_name,extent_management,contents from dba_tablespaces;d、增加数据文件
//增加数据文件
SQL>alter tablespace ts_test1 add datafile ‘c:disk1ts_test11.dbf’ size 10m;
//查看增加数据文件的结果
SQL>col file_name for a30
SQL>col tablespace_name for a30 SQL>select file_name,tablespace_name from dba_data_files;
3、管理表空间的各种操作
1)改变表空间的读写状态
//将表空间设为只读
//这时表空间应为online状态,表空间不能包含回滚段,不能是归档模式
//查看数据库日志模式
SQL>archive log list;//查看表空间contents
SQL>select tablespace_name,contents from dba_tablespaces where tablespace_name like‘TS_%’;
//修改为只读
SQL>alter tablespace ts_test1 read only;2)表空间脱机离线、在线连接
SQL>alter tablespace ts_test1 offline;
SQL>alter tablespace ts_test1 online;
//查看表空间状态
SQL>select tablespace_name,status from dba_tablespaces;3)修改表空间名称 //查询当前表空间名称和所包含的数据文件
SQL>select file_name,tablespace_name from dba_data_files;//确认表空间处在online状态
SQL>select tablespace_name,status from dba_tablespaces;//表空间改名
SQL>alter tablespace ts_test2 rename to ts_test22;//查询修改结果
SQL>Col file_name for a30;SQL>col tablespace_name for a30;SQL>select file_name,tablespace_name from dba_data_files;4)设置默认表空间
SQL>alter database default tablespace users //设置默认临时表空间
SQL>alter database default temporary tablespace temp;5)删除表空间
SQL>drop tablespace ts_test2;//仅删除表空间信息不删除表空间数据文件 SQL>drop tablespace ts_test2 includng contents;//包括数据文件全部删除 查看删除后的结果情况
SQL>select file_name,tablespace_name from dba_data_files;6)切换undo表空间
SQL>alter system set undo_tablespace =undotbs02;7)删除undo表空间
要删除正在使用的undo表空间,首先切换undo表空间后在进行删除 例如删除undost01 SQL>alter system set undo_tablespace=undost02;SQL>drop tablespace undost01;8)查询undo表空间信息
SQL>show parameter undo_tablespace;
4、管理数据文件的各种操作 1)在表空间中新增一个数据文件
SQL>alter tablespace ts_test1 add datafile ‘c:dsk1ta_test111.dbf’ size 50m;2)删除表空间中无数据的数据文件 第一种语法
SQL>alter database datafile ‘c:disk1ts_test1.dbf’ offline;//数据文件脱机 SQL>alter tablespace ts_test1 drop datafile ‘c:disk1ts_test111.dbf’;第二种语法:
SQL>alter database datafile ‘mytb.dbf’ offline drop;3)数据文件自动扩展设置
SQL>alter tablespace ts_test1 datafile ‘c:disk1ts_test1.dbf’ autoextend on next 10m maxsize 500m;4)重置数据文件大小,收回或扩数据文件空间
SQL>alter tablespace ts_test1 datafile ‘c:disk1ts_test1.dbf’ resize 45m;
查询重置数据文件大小后的结果
SQL>col file_name for a30;
SQL>col tablespace_name for a30;
SQL>select file_name,tablespace_name,bytes/(1024*1024)from dba_data_files;5)移动数据文件
有两条语句可以实现对数据文件的移动:
a、alter tablespace tablespace_name rename datafile ‘/path/file_name1’
to ‘/path/file_name_new’;
a这条语句主要适合用户表空间,在执行这条语句时表空间必须脱机才能执行。SQL>alter tablesapace ts_test2 offline;//使表空间ts_test2脱机
SQL>host copy c:disk2ts_test2.dbf c:disk1 //将数据文件拷贝到新的位置
SQL>alter tablespace rename datafile ‘c:disk2ts_test2.dbf’ to ‘c:disk1ts_test1.dbf’;b、alter database db_name rename file ‘/path/file_name1’ to ‘/path/file_name_new’;
这条语句使用于系统表空间及不能置为脱机的表空间中的数据文件。在使用该语句时,数据库必须在加载(mount)的状态且目标数据文件必须存在,因为该语句只是修改文件中指向数据文件的指针(地址)。SQL>shutdown immediate;SQL>host copy c:oracleproduct10.2.0oradatasystem01.dbf c:disk1 SQL>startup mount;SQL>alter database rename file ‘c:oracleproduct10.2.0oradataorclsystem01.dbf’ to ‘c:disk1system01.dbf’;SQL>alter database open;查询移动后的结果
SQL>select file_name,tablespace_name from dba_data_files;
第五篇:Oracle数据库创建表空间、建立用户、授权、还原备份
创建用户一般分四步: 第一步:创建临时表空间 第二步:创建数据表空间 第三步:创建用户并制定表空间 第四步:给用户授予权限
--Oracle创建临时表空间 如果没有指定的临时表空间,则可以不建 CREATE TEMPORARY TABLESPACE DB_TEMP TEMPFILE 'E:Oa DataOA_TEMP.DBF'
SIZE 32M AUTOEXTEND ON
NEXT 32M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL;
--Oracle创建表空间 如果没有指定的表空间,则可以不建 CREATE TABLESPACE DB_DATA LOGGING
DATAFILE 'E:Oa DataOA_DATA.DBF'
SIZE 32M AUTOEXTEND ON
NEXT 32M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL;
--创建用户“oa”,密码“oa”
CREATE USER OA IDENTIFIED BY OA ACCOUNT UNLOCK
DEFAULT TABLESPACE DB_DATA TEMPORARY TABLESPACE DB_TEMP;
--授权
GRANT CONNECT,RESOURCE,DBA TO OA;
--导入dmp文件到数据库 这个必须用命令窗口来执行,不是SQL语句--用户名就是要导入的用户,要导入给A,那用户名就是A imp 用户名/密码@数据库实例名 file=文件地址 full=y ignore=y;
exp system/123456@orcl file=oa.dmp owner=oa full=y;
使用expdp和impdp时应该注重的事项:
1、exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
2、expdp和impdp是服务端的工具程序,他们只能在oracle服务端使用,不能在客户端使用。
3、imp只适用于exp导出的文件,不适用于expdp导出文件;impdp只适用于expdp导出的文件,而不适用于exp导出文件。
4、对于10g以上的服务器,使用exp通常不能导出0行数据的空表,而此时必须使用expdp导出。
一、准备工作 1)、在备份目的路径建立备份文件夹 Oracle不会自动创建,务必手动创建 例如:d:bak 2)、用sys用户在oracle中创建逻辑目录
--oracleBak_dir这个就是这个逻辑目录的名字 SQL>create directory oracleBak_dir as ‘d:bak’;
3)、查看数据库中的逻辑目录 用来检查上面两步骤是否对应OK SQL>select * from dba_directories;4)、授权用户有对逻辑目录的读写权限
SQL>grant read,write on directory oracleBak_dir to 用户名;
二、导出
1)导出用户 登录的用户需要有导出权限
expdp 用户名/密码@orcl dumpfile=expdp.dmp directory=oracleBak_dir schemas=要导出的用户名;2)导出表
expdp用户名/密码@orcl tables=要导出的表名 dumpfile=expdp.dmp(备份文件的带后缀全名)directory=oracleBak_dir;3)按查询条件导
expdp 用户名/密码@orcl directory=oracleBak_dir dumpfile=expdp.dmp(备份文件的带后缀全名)tables=表名 query=’where deptno=20’(引号内为查询条件);4)按表空间导
expdp system/manager@orcl directory=oracleBak_dir dumpfile=tablespace.dmp(备份文件的带后缀全名)tablespaces=temp,example(表空间名称);5)导整个数据库
expdp system/manager@orcl directory=oracleBak_dir dumpfile=full.dmp full=y;
expdp system/orcl@orcl directory=oracleBak_dir dumpfile=full.dmp full=y;
三、导入数据 导入与导出雷同,不做解析 1)导入用户(从用户scott导入到用户scott)
impdp scott/tiger@orcl directory=oracleBak_dir dumpfile=expdp.dmp schemas=scott;2)导入表(从scott用户中把表dept和emp导入到system用户中)
impdp system/manager@orcl directory=oracleBak_dir dumpfile=expdp.dmp tables=scott.dept,scott.emp(原用户下.某表)remap_schema=scott:system(从用户scott导入到用户system);3)导入表空间 impdp system/manager@orcl directory=oracleBak_dir dumpfile=tablespace.dmp tablespaces=example;4)导入数据库
impdb system/manager@orcl directory=oracleBak_dir dumpfile=full.dmp full=y;5)追加数据
impdp system/manager@orcl schemas=systemtable_exists_action
directory=dump_dir
dumpfile=expdp.dmp 终止expdp/impdp的方法:
1从dba_datapump_jobs中查job_name select * from dba_datapump_jobs;2连接到需要终止的JOB impdp U/PWD@instance_name attach=SYS_IMPORT_TABLE_01(这里attach后面的就是1查出来的job_name)3终止对应的JOB Import> KILL_JOB 选Y
Oracle删除用户及表空间
以system用户登录,查找需要删除的用户:--查找用户
select * from dba_users;--查找工作空间的路径
select * from dba_data_files;
--删除用户
drop user 用户名称 cascade;--删除表空间
drop tablespace 表空间名称 including contents and datafiles cascade constraint;例如:删除用户名成为LYK,表空间名称为LYK--删除用户,及级联关系也删除掉 drop user LYK cascade;--删除表空间,及对应的表空间文件也删除掉
drop tablespace LYK including contents and datafiles cascade constraint;