Oracle数据库创建表空间、建立用户、授权、还原备份

时间:2019-05-14 20:09:30下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《Oracle数据库创建表空间、建立用户、授权、还原备份》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《Oracle数据库创建表空间、建立用户、授权、还原备份》。

第一篇: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数据库是数据的物理存储。这就包括(数据文件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-sql语句-创建表空间、数据库

1、查看表空间的名称及大小

select t.tablespace_name, round(sum(bytes/(1024*1024)),0)ts_size from dba_tablespaces t, dba_data_files d where t.tablespace_name = d.tablespace_name group by t.tablespace_name;

2、查看表空间物理文件的名称及大小

select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0)total_space from dba_data_files order by tablespace_name;

3、查看回滚段名称及大小

select segment_name, tablespace_name, r.status,(initial_extent/1024)InitialExtent,(next_extent/1024)NextExtent, max_extents, v.curext CurExtent From dba_rollback_segs r, v$rollstat v Where r.segment_id = v.usn(+)order by segment_name;

4、查看控制文件

select name from v$controlfile;获取创建表空间的sql select

dbms_lob.substr(dbms_metadata.get_ddl('TABLESPACE',a.tablespace_name))from dba_tablespaces a;

SQL> select sid,serial# from v$session where username='TEST';alter system kill session '150,9019';查看被锁的表 select object_name,machine,s.sid,s.serial#,s.event from gv$locked_object l,dba_objects o,gv$session s where l.object_id=o.object_id and l.session_id=s.sid;alter system kill session ‘sid,serial#’;

5、查看日志文件

select member from v$logfile;

6、查看表空间的使用情况

select sum(bytes)/(1024*1024)as free_space,tablespace_name from dba_free_space group by tablespace_name;

SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,(B.BYTES*100)/A.BYTES “% USED”,(C.BYTES*100)/A.BYTES “% FREE” FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;

Select b.tablespace_name as表空间名,b.bytes as字节数,(b.bytes-sum(nvl(a.bytes,0)))as已使用,sum(nvl(a.bytes,0))as剩余空间,sum(nvl(a.bytes,0))/(b.bytes)*100 as 剩余百分比 from dba_free_space a,dba_data_files b where a.file_id=b.file_id group by b.tablespace_name,b.file_id,b.bytes order by b.file_id;

7、查看数据库库对象

select owner, object_type, status, count(*)count# from all_objects group by owner, object_type, status;

8、查看数据库的版本

Select version FROM Product_component_version Where SUBSTR(PRODUCT,1,6)='Oracle';

9.查看某个表空间内所占空间大于某个值的段(表或索引):

Select segment_name,bytes FROM dba_segments Where bytes>10000000 AND tablespace_name='tablespace_name';10.查看所有表空间的碎片程度(值在30以下表示碎片很多)

select tablespace_name,sum(bytes),sum(free),sum(free)*100/sum(bytes)from(select

b.file_id file_ID,b.tablespace_name tablespace_name,b.bytes Bytes,(b.bytes-sum(nvl(a.bytes,0)))used,sum(nvl(a.bytes,0))free,sum(nvl(a.bytes,0))/(b.bytes)*100

Percent

from dba_free_space a,dba_data_files b

where a.file_id=b.file_id

group by b.tablespace_name,b.file_id,b.bytes

order by b.file_id)group by tablespace_name order by sum(free)*100/sum(bytes);11.查看自上次数据库启动以来所有数据文件的读写次数

select

substr(DF.NAME,1,5)Drive,DF.NAME file_name,(fs.phyblkrd+fs.phyblkwrt)

from v$filestat fs,v$datafile df

where df.file#=fs.file#;

创建临时表空间: //创建临时表空间

create temporary tablespace mytest tempfile 'E:/Program/oracle/product/10.1.0/oradata/orcl/mytest.dbf' size 32m autoextend on next 32m maxsize 1024m extent management local;

//创建数据表空间

create tablespace mytest_data logging datafile 'E:/Program/oracle/product/10.1.0/oradata/orcl/mytest_data.dbf' size 32m autoextend on next 32m maxsize 1024m extent management local;//创建用户并指定表空间

create user testaccount identified by testpwd default tablespace mytest_data temporary tablespace mytest;//给用户授予权限

grant connect,resource to testaccount;(db2:指定所有权限)12,创建一个用户:

CREATE USER username IDENTIFIED BY password OR IDENTIFIED EXETERNALLYOR IDENTIFIED GLOBALLY AS ‘CN=user’[DEFAULT TABLESPACE tablespace][TEMPORARY TABLESPACE temptablespace][QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace[,QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace[PROFILES profile_name][PASSWORD EXPIRE][ACCOUNT LOCK or ACCOUNT UNLOCK];

//查看数据库中的所有用户: select * from all_users;//or select * from dba_users 13查看oracle最大连接数: Select session_max,session_current,sessions_highwater,users_max from v$license;Select username,count(username)from v$session group by username;加密存储过程 WRAP

INAME=D:ORACLESOURCEDATE.SQL ONAME=D:ORACLESOURCEDATA.PLD

第四篇: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 数据库表空间(tablespace)的创建、删除、修改、扩展以及检查(小编推荐)

Oracle 数据库表空间(tablespace)的创建、删除、修改、扩展以及检查-------------oracle 数据库表空间学习

-----------------------oracle 数据库表空间的作用 1.决定数据库实体的空间分配;2.设置数据库用户的空间份额;3.控制数据库部分数据的可用性;4.分布数据于不同的设备之间以改善性能;5.备份和恢复数据。

--oracle 可以创建的表空间有三种类型: 1.temporary: 临时表空间,用于临时数据的存放;create temporary tablespace “sample”......2.undo : 还原表空间.用于存入重做日志文件.create undo tablespace “sample”......3.用户表空间: 最重要,也是用于存放用户数据表空间 create tablespace “sample”......--注:temporary 和 undo 表空间是oracle 管理的特殊的表空间.只用于存放系统相关数据.--oracle 创建表空间应该授予的权限

1.被授予关于一个或多个表空间中的resource特权;2.被指定缺省表空间;3.被分配指定表空间的存储空间使用份额;4.被指定缺省临时段表空间。

select tablespace_name “表空间名称”,status “状态”,extent_management “区管理方式”,allocation_type “磁盘扩展管理方式”,segment_space_management “段管理方式” from dba_tablespaces;--查询各个表空间的区、段管理方式--

1、建立表空间--语法格式: create tablespace 表空间名

datafile '文件标识符' 存储参数 [...] |[minimum extent n]--设置表空间中创建的最小范围大小 |[logging|nologging] |[default storage(存储配置参数)] |[online|offline];--表空间联机脱机

|[permanent|temporary]--指定该表空间是用于保存永久的对象还是只保存临时对象 |[...]--其中:文件标识符=’文件名’[size整数[km][reuse]--实例

create tablespace data01 datafile '/oracle/oradata/db/data01.dbf' size 500m uniform size 128k;--指定区尺寸为128k,如不指定,区尺寸默认为64k create tablespace “test” logging datafile 'd:oracleoradataoraclesample.ora' size 5m, 'd:oracleoradataoracledd.ora' size 5m extent management local uniform segment space management auto;--详解 /* 第一: create tablespace “sample” 创建一个名为 “sample” 的表空间.对表空间的命名,遵守oracle 的命名规范就可了.第二: logging 有 nologging 和 logging 两个选项, nologging: 创建表空间时,不创建重做日志.logging 和nologging正好相反, 就是在创建表空间时生成重做日志.用nologging时,好处在于创建时不用生成日志,这样表空间的创建较快,但是没能日志,数据丢失后,不能恢复;但是一般我们在创建表空间时,是没有数据的,按通常的做法,是建完表空间,并导入数据后,是要对数据做备份的;所以通常不需要表空间的创建日志,因此,在创建表空间时,选择 nologging,以加快表空间的创建速度.第三: datafile 用于指定数据文件的具体位置和大小.datafile 的文件是建立表空间后创建的,不过文件路径必须存在才是合法的datafile设置

如: datafile 'd:oracleoradataora92luntan.ora' size 5m 说明文件的存放位置是 'd:oracleoradataora92luntan.ora' , 文件的大小为5m.如果有多个文件,可以用逗号隔开: 如:datafile 'd:oracleoradataora92luntan.ora' size 5m, 'd:oracleoradataora92dd.ora' size 5m 但是每个文件都需要指明大小.单位以指定的单位为准如 5m 或 500k.对具体的文件,可以根据不同的需要,存放大不同的介质上,如磁盘阵列,以减少io竟争.指定文件名时,必须为绝对地址,不能使用相对地址.第四: extent management local 存储区管理方法

在字典中管理(dictionary): 将数据文件中的每一个存储单元做为一条记录,所以在做dm操作时,就会产生大量的对这个管理表的delete和update操作.做大量数据管理时,将会产生很多的dm操作,严得的影响性能,同时,长时间对表数据的操作,会产生很多的磁盘碎片.本地管理(local): 用二进制的方式管理磁盘,有很高的效率,同进能最大限度的使用磁盘.同时能够自动跟踪记录临近空闲空间的情况,避免进行空闲区的合并操作。

第五: segment space management 磁盘扩展管理方法: segment space management: 使用该选项时区大小由系统自动确定。由于 oracle 可确定各区的最佳大小,所以区大小是可变的。

uniform segment space management:指定区大小,也可使用默认值(1 mb)。

第六: 段空间的管理方式: auto: 只能使用在本地管理的表空间中.使用local管理表空间时,数据块中的空闲空间增加或减少后,其新状态都会在位图中反映出来。

位图使 oracle 管理空闲空间的行为更加自动化,并为管理空闲空间提供了更好的性,但对含有lob字段的表不能自动管理.manual: 目前已不用,主要是为向后兼容.*/--

2、修改表空间配置--语法格式: alter tablespce 表空间名

(add datafile 文件标识符[,文件标识符]...|rename datafile ’文件名’[,’文件名’]...to ’文件名’[,’文件名’]...|default storage(存储配置参数)|online|offline[normal|immediate] |(begin|end)backup);--实例

--A、改变表空间状态--1.使表空间脱机

alter tablespace game offline;--如果是意外删除了数据文件,则必须带有recover选项 alter tablespace game offline for recover;--2.使表空间联机

alter tablespace game online;--3.使数据文件脱机

alter database datafile 3 offline;--4.使数据文件联机

alter database datafile 3 online;--5.使表空间只读

alter tablespace game read only;--6.使表空间可读写

alter tablespace game read write;--B、扩展表空间

--首先查看表空间的名字和所属文件

select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0)total_space from dba_data_files order by tablespace_name;--1.增加数据文件 alter tablespace game add datafile '/oracle/oradata/db/game02.dbf' size 1000m;--2.手动增加数据文件尺寸

alter database datafile '/oracle/oradata/db/game.dbf'resize 4000m;--3.设定数据文件自动扩展

alter database datafile '/oracle/oradata/db/game.dbf' autoextend on next 100m maxsize 10000m;--4.设定后查看表空间信息

select a.tablespace_name,a.bytes total,b.bytes used, c.bytes free,(b.bytes*100)/a.bytes “% used”,(c.bytes*100)/a.bytes “% free” from sys.sm$ts_avail a,sys.sm$ts_used b,sys.sm$ts_free c where a.tablespace_name=b.tablespace_name and a.tablespace_name=c.tablespace_name;--详解 /* */--

3、删除表空间--语法格式: drop tablespace表空间名[including contents [and datafile]];--详解 /* */--

4、检查表空间使用情况

--(1)检查当前用户空间分配情况

select tablespace_name,sum(extents),sum(blocks),sum(bytes)from user_segments group by tablespace_name--(2)a.检查各用户空间分配情况 select owner,tablespace_;select owner,tablespace_name,sum(extents),sum(blocks),sum(bytes)from dba_segments group by owner,tablespace_name;--(3)检查当前用户数据库实体空间使用情况

select tablespace_name,segment_name,segment_type, count(extent_id),sum(blocks),sum(bytes)from user_extents group by tablespace_name,segment_name,segment_type;--(4)检查各用户空间使用情况

select owner,tablespace_name,count(extent_id),sum(blocks), sum(bytes)from user_extents group by owner,tablespace_name;--(5)检查数据库空间使用情况 select tablespace_name,count(extent_id),sum(blocks),sum(bytes)from user_extents group by tablespace_name;--(6)检查当前用户自由空间情况

select tablespace_name,count(block_id),sum(blocks),sum(bytes)from user_free_space group by tablespace_name;--(7)检查数据库自由空间情况

select tablespace_name,count(block_id),sum(blocks),sum(bytes)from dba_free_space group by tablespace_name;--详解

下载Oracle数据库创建表空间、建立用户、授权、还原备份word格式文档
下载Oracle数据库创建表空间、建立用户、授权、还原备份.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


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

相关范文推荐