表空间创建与删除完整步骤
- 格式:docx
- 大小:18.56 KB
- 文档页数:5
Oracle表空间创建及表创建-- 创建表空间,(数据库⽂件)create tablespace db3datafile 'E:\tablespace\db3.dbf'size 1m-- 创建表空间,(数据库⽂件),指定数据⽂件在哪⼉多⼤扩容create tablespace db2datafile 'E:\tablespace\db2.dbf'size 1m autoextend on next 1m maxsize unlimited-- 查询表select * from user_tablespaces-- 删除表空间drop tablespace db3-- 删除表空间及删除内容和⽂件drop tablespace db3 including contents and datafiles-- 更改表的状态alter tablespace db3 read onlyalter tablespace db3 read write-- 创建⽤户,密码create user user1 identified by user1-- 删除⽤户drop user user1-- 创建⽤户,密码,同时更改默认表空间create user user1 identified by user1default tablespace db3-- 创建后更改密码,更改默认表空间alter user user1 identified by user2alter user user1 default tablespace db3-- 授权登录grant create session to user1-- 授予⽤户dba权限,管理员权限grant dba to user1-- 授予查询某个表权限grant select on scott.dept to user1-- 撤销权限revoke dba from user1revoke select on scott.dept from user1-- user1创建表create table student(id number,name varchar2(20),birthday date)create table student2(id number(1),name varchar2(20),birthday date)create table student3(id number(5),name varchar2(20),birthday date) -- number默认number(5)-- 查表select * from user_tablesselect * from scott.dept -- 查询其他⽤户的表select * from user_tab_colsselect * from user_tab_cols where table_name='STUDENT' -- 要和表中相同为⼤写select * from user_tab_columns -- 和select * from user_tab_cols基本⼀样,少了⼏项-- 删表drop table student2-- 增、改、删表中字段使⽤ ()或者columnalter table student add chengji varchar2(10)alter table student add (math number(1),english number(1)) -- 增加多个字段需⽤括号()alter table student add (chengji2 varchar2(10)) -- 增统⼀都使⽤()alter table student rename (chengji to remark) -- xxalter table student rename column chengji to remark -- 改需使⽤关键字columnalter table student drop column chengji2 -- 删需使⽤关键字columnalter table student drop (english) -- 删使⽤()也⾏-- 注释comment on table student is '学⽣表'comment on column student.id is '编号'。
oracle创建⽤户、创建表空间、授权、建表的完整过程1.⾸先以sysdba的⾝份登录oracle conn /as sysdba 查询⽤户: select username from dba_users; 查询表空间 select username, default_tablespace from dba_users where username='⽤户名‘; 查询数据⽂件 select file_name, tablespace_name from dba_data_files;2.然后就可以来创建⽤户. create user ⽤户名 identified by 密码;3.修改⽤户的密码 alter user ⽤户名 identified by 新密码;4.创建⼀个表空间 create tablespace 表空间名 datafile '空间物理存储路径(f:\ts_zzg\zzg_data.dbf后缀随意)' size ⼤⼩(200M);5.将表空间分配给⽤户 alter user ⽤户名 default tablespace 表空间名;6.为⽤户分配权限 grant create session,create table,create view,create sequence,unlimited tablespace to ⽤户名; grant all privileges to ⽤户名;(全部权限)7.查看所有⽤户所在的表空间 select username,default_tablespace from dba_users;8.查询⽤户所具有的权限 select *from session_privs;9.删除⽤户及其相关对象 drop user ⽤户名;。
shell脚本操作oracle删除表空间、创建表空间、删除⽤户oracle下表空间的导出,⽤户的删除,表空间删除,⽤户新建,表空间新建,数据导⼊的shell使⽤⾮oracle⽤户执⾏该脚本参数说名$1:base表空间的⽤户名$2:同步表空间的⽤户名使⽤场景测试⽤,base表空间⽤于升级建⽴⼀些固化数据。
同步表空间⽤于测试⽤,每次去和base表空间拉平数据复制代码代码如下:#!/bin/shoraclehome=$ORACLE_HOMEecho $oraclehomelocaldir="/oracle/data"echo $localdir#删除已经存在的临时dmp⽂件rm -rf $localdir/$2temp.dmprmresult=$?echo "rm $2temp.dmp result:$rmresult"#将⽤户$1的表空间导出su - oracle -c "exp dba/dba file=$localdir/$2temp.dmp owner=$1"expresult=$?if [ "$expresult" != "0" ];thenecho "exp $1 tablespace failure"fi#先删除⽤户$2及其表空间,然后再新建该⽤户及表空间su - oracle -c "${ORACLE_HOME}/bin/sqlplus /nolog" <<EOFconnect / as sysdbadrop user $2 cascade;drop tablespace $2 including contents and datafiles;create tablespace $2 datafile '/oracle/product/10.2.0/oradata/$2.dbf' size 5M autoextend on;create user $2 identified by "$2" default tablespace $2 temporary tablespace TEMP profile DEFAULT;grant connect to $2;grant resource to $2;grant create any table to $2;grant create any trigger to $2;grant create any type to $2;grant create any view to $2;grant unlimited tablespace to $2;exitEOFcrdrresult=$?if [ "$crdrresult" != "0" ];thenecho "drop user and tablespace failure"echo "create user and tablespace failure"else#刚建完的⽤户不能马上使⽤,等候10秒sleep 10s#更换dmp⽂件中的表空间名sed -i 's/TABLESPACE "$1"/TABLESPACE "$2"/g' $localdir/$2temp.dmp#使⽤imp命令导出表空间数据到⽤户$2的表空间su - oracle -c "imp dba/dba file=$localdir/$2temp.dmp fromuser=$1 touser=$2"impresult=$?if [ "$impresult" != "0" ];thenecho "imp failure"elseecho "imp success"fifi。
神通数据库表空间内创建表1. 什么是数据库表空间数据库表空间是数据库管理系统中用于存储表和索引的逻辑容器。
它可以理解为一个文件夹,用于组织和管理数据库中的表和索引。
在数据库中,表空间是一个重要的概念,对于数据库的性能和管理都有着重要的影响。
2. 表空间的作用表空间在数据库中起到了以下几个重要的作用:2.1 存储表和索引表空间作为数据库中存储表和索引的逻辑容器,提供了存储和管理表和索引的能力。
它可以将表和索引组织在一起,方便数据库的管理和维护。
2.2 控制数据库的逻辑结构表空间可以用来控制数据库的逻辑结构,将不同的表和索引组织在不同的表空间中,可以根据需要对表和索引进行分组和分类,便于管理和维护。
2.3 控制数据库的物理结构表空间还可以用来控制数据库的物理结构,可以指定表空间的大小、位置和其他属性,以满足数据库的需要。
通过合理地设置表空间,可以提高数据库的性能和可用性。
3. 创建表空间的步骤在神通数据库中,创建表空间可以按照以下步骤进行操作:3.1 登录数据库首先,需要使用数据库管理工具登录到神通数据库,以便进行后续的操作。
3.2 创建表空间在登录成功后,可以使用SQL语句来创建表空间。
例如,可以使用以下语句创建一个名为my_tablespace的表空间:CREATE TABLESPACE my_tablespace DATAFILE 'my_tablespace.dat' SIZE 100M;这条语句创建了一个大小为100M的表空间,并将其存储在名为my_tablespace.dat的数据文件中。
3.3 指定默认表空间创建表空间后,可以将其设为默认表空间,以便新创建的表和索引自动存储在该表空间中。
可以使用以下语句来指定默认表空间:ALTER DATABASE SET DEFAULT TABLESPACE my_tablespace;这条语句将默认表空间设置为my_tablespace。
创建表空间第一篇:什么是表空间?在Oracle数据库中,表空间是数据库逻辑存储结构的一部分。
它是由一个或多个数据文件组成的逻辑存储单元,用于存储数据库中的表、索引、过程、触发器等对象。
一个表空间中可以包含多个数据文件,这些数据文件可以位于不同的磁盘上。
表空间的组织方式是物理和逻辑分离的,即表空间中的数据文件可以分散在不同的磁盘上,但是逻辑上它们是一个整体。
这种组织方式可以提高数据库的灵活性和可靠性。
在Oracle数据库中,默认情况下会创建一个表空间,这个表空间叫做SYSTEM表空间,它包含了数据库的系统表、系统索引和其他重要的对象。
除了SYSTEM表空间以外,我们还可以创建其他的表空间来存储用户表、索引、LOB数据等。
第二篇:创建表空间的步骤在Oracle数据库中,我们可以使用CREATE TABLESPACE语句来创建表空间。
下面是创建表空间的步骤:1. 打开SQL*Plus或者其他的Oracle命令行工具。
2. 以系统管理员的身份登录数据库。
3. 执行CREATE TABLESPACE语句。
语法如下:CREATE TABLESPACE tablespace_nameDATAFILE 'file_name' SIZE size[ AUTOEXTEND { ON | OFF } ] [ MAXSIZE max_size ][ LOGGING | NOLOGGING ][ ONLINE | OFFLINE ]其中,tablespace_name是要创建的表空间的名称,file_name是要创建的数据文件的名称,size是数据文件的大小,AUTOEXTEND参数指定数据文件是否可以自动扩展,MAXSIZE参数指定数据文件的最大大小,LOGGING参数指定是否将表空间的操作日志记录到日志文件中,ONLINE参数指定是否将表空间置为联机状态,OFFLINE参数指定是否将表空间置为脱机状态。
UNDO表空间详解目录UNDO表空间详解 (1)一、描述 (2)二、作用 (3)1. 回退事务 (3)2. 读一致性 (3)3. 事务恢复 (4)4. 倒叙查询(FlashBack Query) (4)三、UNDO参数 (5)1. UNDO_MANAGEMENT (5)2. UNDO_TABLESPACE (5)3. UNDO_RETENTION (5)四、UNDO表空间操作 (6)1. 建立UNDO表空间 (6)2. 修改UNDO表空间 (7)3. 切换UNDO表空间 (7)4. 删除UNDO表空间 (8)五、其他操作(段、区、块) (8)1. UNDO表空间及大小: (8)2. undo段 (9)3. undo段中区的状态: (10)六、统计信息 (11)1. 显示UNDO表空间统计信息 (11)2.显示UNDO段统计信息. (12)3.显示UNDO区信息 (12)4.显示活动事务信息. (13)5. V$ROLLSTAT中的常用列 (13)七、参考文档: (14)附件1: (14)附件2: (22)一、描述undo表空间是Oracle特有的概念,undo表空间中会自动分配undo段,这些undo段用来保存事务中的DML语句的undo信息,也就是来保存数据在被修改之前的值。
在rollback,实例恢复(前滚),一致性读CR块的构造时会使用到undo信息,由于undo的引入,从而Oracle 的select语句实现一致性读时,不需要任何锁。
undo表空间和其它表空间有很多类似的地方:undo数据块也会被读到buffer cache缓存起来,修改时也会产生redo log,数据也会写回到undo表空间的磁盘上。
所以崩溃后,undo块的buffer cache也会恢复过来。
Undo:是基于回滚的,当数据被误修改时,可以从修改的新状态回退到老状态,实现事物回滚,相当于撤销操作。
是回滚,就像倒录音带一样,把走过的路反向再走一遍回到原点。
Oracle tablespace (表空间)的创建、删除、修改、扩展及检查等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整数[k\m][reuse]--实例create tablespace data01datafile '/oracle/oradata/db/data01.dbf' size 500muniform size 128k; --指定区尺寸为128k,如不指定,区尺寸默认为64kcreate tablespace "test"loggingdatafile 'd:\oracle\oradata\oracle\sample.ora' size 5m,'d:\oracle\oradata\oracle\dd.ora' size 5mextent management localuniform segment space managementauto;--详解/*第一: create tablespace "sample"创建一个名为"sample" 的表空间.对表空间的命名,遵守oracle 的命名规范就可了. 第二: logging 有nologging 和logging 两个选项,nologging: 创建表空间时,不创建重做日志.logging 和nologging正好相反, 就是在创建表空间时生成重做日志.用nologging时,好处在于创建时不用生成日志,这样表空间的创建较快,但是没能日志,数据丢失后,不能恢复;但是一般我们在创建表空间时,是没有数据的,按通常的做法,是建完表空间,并导入数据后,是要对数据做备份的;所以通常不需要表空间的创建日志,因此,在创建表空间时,选择nologging,以加快表空间的创建速度.第三: datafile 用于指定数据文件的具体位置和大小.datafile 的文件是建立表空间后创建的,不过文件路径必须存在才是合法的datafile设置如: datafile 'd:\oracle\oradata\ora92\luntan.ora' size 5m说明文件的存放位置是'd:\oracle\oradata\ora92\luntan.ora' , 文件的大小为5m.如果有多个文件,可以用逗号隔开:如:datafile 'd:\oracle\oradata\ora92\luntan.ora' size 5m, 'd:\oracle\oradata\ora92\ dd.ora' size 5m但是每个文件都需要指明大小.单位以指定的单位为准如5m 或500k.对具体的文件,可以根据不同的需要,存放大不同的介质上,如磁盘阵列,以减少io竟争. 指定文件名时,必须为绝对地址,不能使用相对地址.第四: extent management local 存储区管理方法在字典中管理(dictionary):将数据文件中的每一个存储单元做为一条记录,所以在做dm操作时,就会产生大量的对这个管理表的delete和update操作.做大量数据管理时,将会产生很多的dm操作,严得的影响性能,同时,长时间对表数据的操作,会产生很多的磁盘碎片.本地管理(local):用二进制的方式管理磁盘,有很高的效率,同进能最大限度的使用磁盘.同时能够自动跟踪记录临近空闲空间的情况,避免进行空闲区的合并操作。
oracle创建和删除表空间(本⽂章内容仅在windows10下经测试能够运⾏,不能保证其他环境下的可靠性)--创建表空间create tablespace oracleTS1--指定表空间逻辑名称datafile 'D:/oracle_ts1.dbf'--指定表空间物理存储的⽂件路径size 100m--指定表空间⼤⼩autoextend on--设置⾃动扩容next 10m;--设置每次扩展容量⼤⼩关键字功能阐述create tablespace指定表空间逻辑名称,该关键字后需给定表空间逻辑名称,逻辑名称不区分⼤⼩写,不需要使⽤单引号包裹datafile指定表空间的物理存储⽂件路径,该关键字后需给定⼀个⽂件路径,⽂件后缀为.dbf ,路径可以是多级⽬录下的⽂件,但是所有的⽗⽬录必须⾃⼰创建好,否则创建不成功。
⽂件路径需使⽤单引号包裹size指定表空间⼤⼩,该关键字后需给定⼀个⽂件容量,可以使⽤m作为单位,不区分⼤⼩写,即兆,如100m,不需要使⽤单引号包裹autoextend on指定⾃动扩展表空间容量next⾃动每次扩展表空间容量的⼤⼩,该关键字后需给定⼀个⽂件容量,可以使⽤m作为单位,不区分⼤⼩写,如10m, 不需要使⽤单引号包裹删除表空间代码如下:--删除表空间逻辑单位,需⼿动删除⽂件drop tablespace oracleTS1;关键字功能阐述drop tablespace删除表空间,该关键字后需给定表空间逻辑名称,该逻辑名称对应的⽂件必须存在,否则会报错,使⽤该语句只能删除oracle数据库的表空间逻辑单位,需⼿动删除.dbf后缀的⽂件才能彻底删除。
Oracle 10g表空间创建的完整步骤当在数据库中创建用户时,基于应用性能和管理方面的考虑,最好为不同的用户创建独立的表空间。
1.创建表空间不论是Lnux环境,还是Wndows环境,都要首先创建好表空间的存放路径,根据自己的情况修改。
如:/opt/oracle/oradata/cocis 或D:\oracle\oradata\cocis若事先不创建该目录路径,则在创建表空间的时候会出错。
通过pl/sql登录到Oracle数据库上,然后执行菜单:文件/新建/命令窗口,打开一个命令窗口然后在该命令窗口中执行脚本创建和删除表空间引用创建表空间Sql>create tablespace histdb datafile'D:\oracle\product\10.2.0\oradata\orcl\histdb.dbf' size 200m autoextend on next 10m maxsize unlimited;Sql>alter database datafile 'D:\oracle\product\10.2.0\oradata\orcl\histdb.dbf' autoextend on;1) DATAFILE: 表空间数据文件存放路径2) SIZE: 起初设置为200M3) UNIFORM: 指定区尺寸为128k,如不指定,区尺寸默认为64k4) 空间名称histdb 与数据文件名称histdb.dbf 不要求相同,可随意命名.5) AUTOEXTEND ON/OFF 表示启动/停止自动扩展表空间6) alter database datafile ' D:\oracle\product\10.2.0\oradata\orcl\histdb.dbf ' resize 500m; //手动修改数据文件大小为500M删除表空间DROP TABLESPACE histdb INCLUDING CONTENTS AND DATAFILES;表空间已创建。
2.为应用创建用户创建用户的同时,为用户指定缺省的永久表空间和临时表空间。
SQL> create user cocis identified by cocis2 default tablespace cocis3 temporary tablespace temp;用户已创建。
SQL> select username,default_tablespace,temporary_tablespace2 from dba_users3 where username='COCIS';USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE------------------------------ ------------------------------ ------------------ COCIS COCIS TEMPSQL> selectusername,user_id,password,default_tablespace,temporary_tablespace2 from dba_users3 where username='COCIS';USERNAME USER_ID PASSWORD TEMPORARY_TABLESPACE------------------------------ ---------- -----------------------------------------------------COCIS 61 E031F623C0F15D34 COCIS3.权限的授予SQL> grant connect,resource to cocis;授权成功。
注释:当用户创建之后,一般只需要授予CONNECT和RESOURCE这两个角色即可。
若要单独进行授权,则需执行单独的授权命令,如grant create table to cocis;等。
如果要授予SYSDBA的权限给用户则用如下命令SQL> grant SYSDBA to cocis;---------------------------------------------------SQL> revoke unlimited tablespace from cocis;撤销成功。
SQL> alter user cocis quota unlimited on cocis;用户已更改。
注释:为了更严谨的管理,可以回收用户的UNLIMITED TABLESPACE权限,然后对用户的空间限额进行单独授权。
Oracle 使用时间长了,新增了许多user 和tablespace. 需要清理一下对于单个user和tablespace 来说,可以使用如下命令来完成。
步骤一:删除userdrop user ×× cascade说明:删除了user,只是删除了该user下的schema objects,是不会删除相应的tablespace的。
步骤二:删除tablespaceDROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;但是,因为是供开发环境来使用的db, 需要清理的user 和 table space 很多。
思路一:Export出DB中所有的user和tablespace, 筛选出系统的和有用的tablespace,把有用的信息load到一张表中去。
然后写例程循环,把不在有用表的tablespace删掉1. select username,default_tablespace from dba_users;2.create table MTUSEFULSPACE(ID Number(4) NOT NULL PRIMARY KEY,USERNAME varchar2(30),TABLESPACENAME varchar2(60),OWNERNAME varchar2(30));3.declare icount number(2);tempspace varchar2(60);beginfor curTable in (select username as allusr,default_tablespace as alltblspace from dba_users)looptempspace :=curTable.alltblspace;dbms_output.put_line(tempspace);select count(TABLESPACENAME) into icount from MTUSEFULSPACE where TABLESPACENAME = tempspace;if icount=0 thenDROP TABLESPACE tempspace INCLUDING CONTENTS AND DATAFILES; end if;commit;end loop;end;执行后会报如下错误ORA-06550: 第 10 行, 第 5 列:PLS-00103: 出现符号 "DROP"在需要下列之一时:begin case declare exitfor goto if loop mod null pragma raise return select updatewhile with <an identifier><a double-quoted delimited-identifier> <a bind variable> <<close current delete fetch lock insert open rollbacksavepoint set sql execute commit forall merge pipe06550. 00000 - "line %s, column %s:\n%s"*Cause: Usually a PL/SQL compilation error.*Action:好像是被锁了。
没办法,例程不能写,就只能组出语句执行了。
把需要删除的user, tablespace 导出到Excel. 使用CONCATENATE 组出SQL. 贴到SQLdevelop 批量执行。
整个删除会比较耗时间, 100多个user. 用了12个小时左右。
如要找datafile的具体位置,可以使用select , from v$tablespace t1, v$datafile t2 where t1.ts# = t2.ts#;SQL code--删除空的表空间,但是不包含物理文件drop tablespace tablespace_name;--删除非空表空间,但是不包含物理文件drop tablespace tablespace_name including contents;--删除空表空间,包含物理文件drop tablespace tablespace_name including datafiles;--删除非空表空间,包含物理文件drop tablespace tablespace_name including contents and datafiles;--如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTSdrop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;。