基础概念:Oracle数据库、实例、用户、表空间、表之间的关系(推荐5篇)

时间:2019-05-15 09:40:01下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《基础概念:Oracle数据库、实例、用户、表空间、表之间的关系》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《基础概念:Oracle数据库、实例、用户、表空间、表之间的关系》。

第一篇:基础概念:Oracle数据库、实例、用户、表空间、表之间的关系

基础概念:Oracle数据库、实例、用户、表空间、表之间的关系

数据库:

Oracle数据库是数据的物理存储。这就包括(数据文件ORA或者DBF、控制文件、联机日志、参数文件)。其实Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。可以看作是Oracle就只有一个大数据库。

实例:

一个Oracle实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和内存结构(Memory Structures)组成。一个数据库可以有n个实例。

用户:

用户是在实例下建立的。不同实例可以建相同名字的用户。

表空间:

表空间是一个用来管理数据存储逻辑概念,表空间只是和数据文件(ORA或者DBF文件)发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。数据文件(dbf、ora):

数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,真 正是在某一个或者多个数据文件中。而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不 能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。注:

表的数据,是有用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。由于oracle的数据库不是普通的概 念,oracle是有用户和表空间对数据进行管理和存放的。但是表不是有表空间去查询的,而是由用户去查的。因为不同用户可以在同一个表空间建立同一个名 字的表!这里区分就是用户了!关系示意图:

理解1:

Oracle数据库可以创建多个实例,每个实例可以创建多个表空间,每个表空间下可以创建多个用户(同时用户也属于表空间对应的实例)和数据库文件,用户可以创建多个表(每个表随机存储在一个或多个数据库文件中),如下图:

理解2: 理解1MS有误。

实例下有和,授权访问,是管理的,经授权在中创建,随机存储到不同的中。如下图所示:

操作1:

安装Oracle后会有默认的实例,即ORCL。一般不创建多个实例,在默认实例下创建表空间和用户等。1,运行CMD进入DOS界面,首先输入:sqlplus,回车;再输入:sys/sys as sysdba,回车,即进入“SQL〉”操作状态。

2,输入:CREATE TABLESPACE 表空间名称 LOGGING DATAFILE 'c:表空间数据文件.ora' SIZE 500M autoextend on next 200m maxsize 2048m;,表空间创建完成。

3,输入:CREATE USER 用户名称 PROFILE default IDENTIFIED BY 用户密码 DEFAULT TABLESPACE 授权访问的表空间名称 TEMPORARY TABLESPACE temp ACCOUNT UNLOCK;,用户创建完成,并授权用户访问某表空间。

具体操作如下图所示:

操作2:

创建表和插入数据,并查询浏览插入的数据。1,创建表,输入: create table 表名(字段名称1 字段类型, 字段名称2 字段类型, 字段名称3 字段类型);,回车。

2,插入数据,输入:insert into 表名(字段1,字段2,字段3)VALUES(值1,值2,值3);,回车。3,查询数据,输入:select * from 表名;,回车。具体操作如下图所示:

第二篇: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;

第三篇:Oracle表空间和数据文件的关系

数据库的物理结构是由数据库的操作系统文件所决定,每一个Oracle数据库是由三种类型的文件组成: 数据文件和控制文件。数据库的文件为数据库提供真正的物理存储。

每一个Oracle数据库有一个或多个物理的数据文件(data file)。一个数据库的数据文件包含全部数据库数据。逻辑数据库结构(如表,索引等)的数据物理地存储在数据库地数据文件中。数据文件通常为*.dbf格式,例如: userCIMS.dbf.数据文件有一下特征:①、一个数据文件仅与一个数据库联系;②、一旦建立, 数据文件只增不减;③、一个表空间(数据库存储地逻辑单位)由一个或多个数据文件组成。

其次, 我们再来叙述一下Oracle的逻辑结构: Oracle的逻辑结构包括表空间(tablespace), 段(segment), 数据块(data block)以及模式对象(schema object)。

Oracle数据库在逻辑上是由多个表空间组成的, 表空间在物理上包含一个或者多个数据文件。而数据文件大小是块大小的整数倍;表空间中存储的对象叫段, 比如数据段, 索引段和回退段。段由区组成, 区是磁盘分配的最小单位。段的增大是通过增加区的个数来实现的。每个区的大小是数据块大小的整数倍,取得大小可以不同;数据块是数据库中的最小的I/O单位,同时也是内存数据缓冲区的单位,及数据文件存储空间单位。块的大小由参数DB_BLOCK_SIZE设置,其值影设置为操作系统块大小的整数倍。

⑴ 表空间(TABLESPACE)表空间是数据库中最大的逻辑单位,每一个表空间由一个或多个数据文件组成,一个数据文件只能与一个表空间相联系。每一个数据库都有一个SYSTEM表空间,该表空间是在数据库创建或数据库安装时自动创建的,用于存储系统的数据字典表,程序系统单元,过程函数,包和触发器等,也可用于存储用户数据表,索引对象。表空间具有在线(online)和离线(offline)属性,可以将除SYSTEM以外的任何表空间置为离线。⑵ 段(SEGMENT)数据库的段可以分为4类:数据段,索引段,回退段和临时段。⑶ 区

区是磁盘空间分配的最小单位。磁盘按区划分,每次至少分配一个区。区存储在段中,它由连续的数据块组成。⑷ 数据块

数据块是数据库中最小的数据组织单位与管理单位,是数据库文件磁盘存储空间单位,也是数据库I/O的最小单位,数据块大小由DB_BLOCK_SIZE参数决定,不同的ORACLE版本BD_BLOCK_SIZE的默认值是不同的。查询DB_BLOCK_SIZE可以使用sql:

select name, value from v$parameter where name = 'db_block_size';⑸ 模式对象

模式对象是一种应用,包括:表、聚簇、试图、索引序列生成器、同义词、哈希、程序单元、数据库链的等。

最后说一下ORACLE的用户、表空间和数据文件的关系:

一个用户可以使用一个或多个表空间,一个表空间也可以提供多个用户使用。用户和表空间没有隶属关系,表空间是一个用来管理数据存储的逻辑概念,表空间只是和数据文件发生关系,数据文件是物理的。一个表空间可以包含多个数据文件,而一个数据文件只能隶属于一个表空间。

总结一下:解释数据库、表空间、数据文件、表、数据的最好办法就是想象一个装满东西的柜子。数据库其实就是柜子,柜中的抽屉是表空间,抽屉中的文件夹是数据文件,数据夹中的纸是表,写在纸上的信息就是数据。

第四篇: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 '' TO '';5. 用ALTER DATABASE OPEN 打开数据库; 6. 备份控制文件。为文件更名

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 '' REUSE;Oracle公司建议无论你是否改变数据库结构、或加数据文件、或重新命名文件或删除重做日志文件,都要进行备份。

可以从视图V$CONTROLFILE中查到控制文件的信息,status字段表示控制文件的状态,一般总是为空。如:

SQL> select * from v$controlfile;另外V$CONTROLFILE_RECORD_SECTION 视图存储控制文件所记录的信息。它的结构如下:

SQL> desc V$CONTROLFILE_RECORD_SECTION

第五篇:Oracle建表空间各种语句

在创建用户之前,先要创建表空间:

其格式为:格式: create tablespace 表间名 datafile '数据文件名' size 表空间大小;如:

SQL> create tablespace news_tablespace datafile 'F:oracleproduct10.1.0oradatanewsnews_data.dbf' size 500M;其中'news_tablespace'是你自定义的表空间名称,可以任意取名;'F:oracleproduct10.1.0oradatanewsnews_data.dbf'是数据文件的存放位置,'news_data.dbf'文件名也是任意取;'size 500M'是指定该数据文件的大小,也就是表空间的大小。

现在建好了名为'news_tablespace'的表空间,下面就可以创建用户了:

其格式为:格式: create user 用户名 identified by 密码 default tablespace 表空间表;如:

SQL> create user news identified by news default tablespace news_tablespace;默认表空间'default tablespace'使用上面创建的表空间。

接着授权给新建的用户:

SQL> grant connect,resource to news;--表示把 connect,resource权限授予news用户

SQL> grant dba to news;--表示把 dba权限授予给news用户

授权成功。

ok!数据库用户创建完成,现在你就可以使用该用户创建数据表了!1.建表空间

create tablespace hoteldata datafile 'D:javaOracleproduct10.1.0oradatazznorclhoteldata.dbf'size 200m autoextend on next 10m maxsize unlimited;2.建用户 create user hotel identified by hotel default tablespace hoteldata account unlock;//identified by 后面的是密码,前面的是用户名 3.用户授权

grant resource,connect,RECOVERY_CATALOG_OWNER to hotel;grant create table to hotel;alter user hotel quota unlimited ON OSDB;alter user hotel default tablespace hoteldata;4.删除表空间

DROP TABLESPACE hoteldata INCLUDING CONTENTS AND DATAFILES;5.删除用户

DROP USER hotel CASCADE 6.删除表的注意事项

在删除一个表中的全部数据时,须使用TRUNCATE TABLE 表名;因为用DROP TABLE,DELETE * FROM 表名时,TABLESPACE表空间该表的占用空间并未释放,反复几次DROP,DELETE操作后,该TABLESPACE上百兆的空间就被耗光了。oracle sqlplus脚本建库总结(原创)******************************************************************/--查询表空间参数

select tablespace_name,min_extents,max_extents,pct_increase,status from dba_tablespaces;--查询数据文件信息

--autoextensible数据库已满后是否自动扩展

select tablespace_name,bytes,autoextensible,file_name from dba_data_files;/******************************************************************/--创建表空间

--一般信息

--DATAFILE:数据文件目录--存储

--AUTOEXTEND:数据文件满后自动扩展--ON NEXT:增量

--MAXSIZE UNLIMITED:最大容量无限制--SIZE:文件大小--存储

--启用事件记录:LOGGING为生成从做日志并可恢复,NOLOGGING为快速更新不生成日志且不可恢复

--MANAGEMENT LOCAL:本地管理--缺省:自动分配

--UNIFORM SIZE:统一分配

--MANAGEMENT DICTIONARY:在字典中管理--DEFAULT STORAGE:覆盖默认区值--INITIAL:初始大小--NEXT :下一个大小--MINEXTENTS:最小数量

--MAXEXTENTS UNLIMITED :最大数量不限制--PCTINCREASE:增量,单位“%”--MINIMUM EXTENT:最小区大小 CREATE TABLESPACE “TEST” NOLOGGING DATAFILE 'G:ORACLEORADATAMYORACLETEST.ora' SIZE 5M REUSE AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL UNIFORM SIZE 12K;--最好写成相对路径,免得出错 CREATE TABLESPACE “TEST” NOLOGGING DATAFILE '../DATABASE/TEST.ora' SIZE 5M REUSE--建议用'../oradata/TEST.ora' AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL UNIFORM SIZE 12K;CREATE TABLESPACE “TEST” LOGGING DATAFILE 'G:ORACLEORADATAMYORACLETEST.ora' SIZE 5M EXTENT MANAGEMENT DICTIONARY DEFAULT STORAGE(INITIAL 1K NEXT 2K MINEXTENTS 5 MAXEXTENTS 67 PCTINCREASE 4)MINIMUM EXTENT 3K;/******************************************************************/--增加表空间, 注意这里test.ora1不能与原表空间文件名称相同--添加一个新的大小为5M数据库文件test.ora1 alter tablespace mytesttablespace add datafile 'c:testtest.ora1' size 5M;/******************************************************************/--修改表空间数据库文件属性,myoracle为sid--将test.ora1数据库文件改为3M,其中resize可以是ONLINE, OFFLINE, RESIZE, AUTOEXTEND 或 END/DROP alter database myoracle datafile 'c:testtest.ora1' resize 3M;alter database myoracle datafile '$ORACLE_HOME/oradata/undo102.dbf' autoextend on next 10m maxsize 500M;/******************************************************************/ /*删除表空间

语法:drop tablespace tablespace_name including contents and datafiles;删除表空间时要系统不会删除表空间数据库文件,要彻底删除要手动删除 */ drop tablespace mytesttablespace including contents and datafiles;/******************************************************************/--创建用户--命令:

--CREATE USER 名称 IDENTIFIED BY 口令 DEFAULT TABLESPACE “默认表空间名” TEMPORARY TABLESPACE “TEMP” ACCOUNT UNLOCK--一般属性

--DEFAULT TABLESPACE :默认表空间名

--TEMPORARY TABLESPACE :临时表空间名,默认TEMP--ACCOUNT :用户状态,默认UNLOCK 未锁定;LOCK 锁定 CREATE USER “TEST” PROFILE “DEFAULT” IDENTIFIED BY “test” DEFAULT TABLESPACE “TEST” TEMPORARY TABLESPACE “TEMP” ACCOUNT UNLOCK;--可以写成

CREATE USER “TEST” PROFILE “DEFAULT” IDENTIFIED BY “test” DEFAULT TABLESPACE “TEST”;/******************************************************************/--用户授权

--grant “connect,resource,dba” to “someuser” with admin option;--WITH ADMIN OPTION :管理选项--授予usertest DBA权限

grant dba to “usertest” with admin option;--取消授权

--REVOKE “RESOURCE” FROM “SCOTT”;/******************************************************************/--建表

--在usertest方案下建表,注意表名不能用关键字,否则报错ORA-00903: 表名无效

--语法:

--create table [schema.](--[default ][,]--.......--)TABLESPACE TABLESPACE_NAME;--schema:表示所属的用户名称或模式名称亦即方案--table_name:表示新建表的名称--column_name:表示字段名称

--data type:表示字段的数据类型

--default :表示字段的默认值--constraint:表示约束条件--TABLESPACE_NAME:所用表空间 CREATE TABLE “TEST”.“TEST”(“ID” NUMBER(10)DEFAULT 0 NOT NULL, “NAME” VARCHAR2(20)NOT NULL, “INFO” VARCHAR2(1000), PRIMARY KEY(“ID”))TABLESPACE “TEST”;--也可以写成

CREATE TABLE “TEST”.“TEST”(“ID” NUMBER(10)DEFAULT 0 PRIMARY KEY, “NAME” VARCHAR2(20)NOT NULL, “INFO” VARCHAR2(1000))TABLESPACE “TEST”;/******************************************************************/--插入数据--语法:

--INSERT INTO tablename(column1,column2,…)VALUES(expression1,expression2,…);

INSERT INTO “TEST”.“TEST”(“ID” ,“NAME” ,“INFO”)VALUES(1 ,'testname' ,'');--也可以写成

INSERT INTO “TEST”.“TEST” VALUES(1 ,'testname' ,'');/******************************************************************/

下载基础概念:Oracle数据库、实例、用户、表空间、表之间的关系(推荐5篇)word格式文档
下载基础概念:Oracle数据库、实例、用户、表空间、表之间的关系(推荐5篇).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐