创建临时表空间(精)
- 格式:doc
- 大小:18.50 KB
- 文档页数:3
达梦创建表空间语句
达梦数据库的创建表空间语句如下:
```
CREATE TABLESPACE <表空间名>
DATAFILE '<数据文件路径>'
SIZE <初始大小>
AUTOEXTEND ON NEXT <自动扩展增量>
MAXSIZE <最大大小>;
```
其中,`<表空间名>`是要创建的表空间的名称,`<数据文件路径>`是要存储数据文件的路径,`<初始大小>`是数据文件的初始大小,`<自动扩展增量>`是数据文件的自动扩展增量,`<最大大小>`是数据文件的最大大小。
例如,以下语句会创建一个名为"MY_TABLESPACE"的表空间,存储在"/home/dm/data.dbf"路径下,初始大小为100M,自动扩展增量为100M,最大大小为2000M:
```
CREATE TABLESPACE MY_TABLESPACE
DATAFILE '/home/dm/data.dbf'
SIZE 100M
AUTOEXTEND ON NEXT 100M
MAXSIZE 2000M;
```。
创建表空间创建Oracle数据库表空间是数据库管理员经常需要做的一项任务。
Oracle的表空间是用来存储数据库对象的物理存储区域,包括表、索引、视图等等。
在创建表空间时,需要考虑到数据库的性能和安全等因素。
以下是创建Oracle数据库表空间的步骤和注意事项。
步骤一:登录到Oracle数据库在创建表空间前,首先需要登录到Oracle数据库并以管理员身份登录。
可以使用SQL*Plus、SQL Developer等工具进行登录。
步骤二:选择合适的表空间名称和大小根据数据库的需要,选择合适的表空间名称和大小。
表空间名称应该能够反映出该空间的用途,如存储某个特定表或索引。
表空间大小需要根据数据量和增长率进行估计,以便在日后不必频繁地扩展表空间。
步骤三:创建表空间使用CREATE TABLESPACE命令来创建表空间,语法格式如下:CREATE TABLESPACE 表空间名称DATAFILE '存储路径' SIZE 表空间大小LOGGING/NONLOGGINGEXTENT MANAGEMENT {DICTIONARY | LOCAL};其中,表空间名称和大小是必须指定的。
存储路径是指数据文件的存储路径,可以使用相对路径或绝对路径。
LOGGING/NONLOGGING表示该表空间的存储是否记录数据库的日志。
EXTENT MANAGEMENT {DICTIONARY | LOCAL}表示该表空间使用字典管理或局部管理。
例如,以下命令将创建一个名为USR_TAB的表空间,大小为100MB,存储在路径C:\ORACLE\ORADATA\ORCL\USR_TAB01.DBF中,并且记录到数据库日志:CREATE TABLESPACE USR_TABDATAFILE 'C:\ORACLE\ORADATA\ORCL\USR_TAB01.DBF' SIZE 100MLOGGING;步骤四:为表空间添加数据文件使用ALTER TABLESPACE命令为表空间添加数据文件,语法格式如下:ALTER TABLESPACE 表空间名称 ADD DATAFILE '存储路径' SIZE 数据文件大小;其中,表空间名称是要添加数据文件的表空间名称,存储路径和数据文件大小需要指定。
深入undo和临时表空间1.什么是undo和临时表空间?要深入首先要知道什么是undo和临时表空间,接下来先对这2个表空间分别做介绍。
1.1什么是undo表空间undo表空间在oracle的归类中化为了永久表空间,同时undo表空间是一个本地管理的表空间,为系统管理的回滚数据保留。
一个数据库可以有多个undo 表空间,但是一次性只能使用一个。
当一个实例试图打开一个数据库的时候,oracle自动选择第一个可用的回滚表空间。
如果没有可用的回滚表空间,那么实例就是在没有回滚表空间的状态启动,并将回滚数据存储在system表空间,当然这是不推荐的做法。
undo表空间在oracle中是为数据库提供读一致性,每次要对数据进行操作的时候数据库会将数据复制一份到undo表空间中,作为BI保存。
以此为基础为oracle的MVCC 算法提供支持。
在此特性中可以查看数据库中多个时间点的不同数据,这一点也算是和临时表空间不同的一点。
总的来说oracle会尽力为回滚数据保留尽可能长的时间,oracle 会收集统计信息数据和回滚表空间的数据来自动调整保留周期。
如果回滚表空间被设置为AUTOEXTEND选项,并且没有指定最大的大小,那么回滚保留就不同了。
此时数据库调整保留周期比执行最长的查询的时间稍微长一点。
但是另外一方面oracle提供了undo表空间的自动管理,这自然也是推荐的方式,该方式数据库会自动的维护回滚段来满足性能需求。
这其中有一个重要的参数undo_retention,该参数指定了数据库会尽力为undo段的保留时间,默认为900秒。
之前说了是尽力,在没有指定guarantee参数的前提下,如果undo表空间不够了,就会不在保留一些undo段。
说到这里又要说undo数据的三种分类(active:正被活动的事务使用,需要保留并用于一致性;unexpired:事务已经完成,但是还没有超过保留期限,在空间不够的情况下就会删除这些信息,并重用;expired:事务已经完成,并且已经过了保留期限。
mybatis 临时表写法在 MyBatis 中,我们不能直接创建或使用临时表,因为 MyBatis 是一个基于SQL 的映射框架,它不提供直接操作数据库对象(如表)的功能。
然而,你可以在 SQL 语句中直接使用临时表。
如果你需要在 MyBatis 中使用临时表,你需要创建一个存储过程或者一个包含多个 SQL 语句的脚本,然后在 MyBatis 的映射文件中调用这个过程或脚本。
以下是一个简单的例子,说明如何在 MyBatis 中使用临时表:1. 首先,你需要创建一个包含创建临时表和插入数据的 SQL 语句的脚本。
例如:```sqlCREATE TEMPORARY TABLE temp_table ASSELECT FROM some_table WHERE some_condition;```2. 然后,你可以在 MyBatis 的映射文件中调用这个脚本。
例如:```xml<mapper namespace=""><select id="selectDataFromTempTable" resultType="">CALL my_script();</select></mapper>```在这个例子中,`my_script` 是包含创建临时表和插入数据的 SQL 语句的脚本的名字。
`selectDataFromTempTable` 是 MyBatis 的查询方法的名字,它返回一个 `MyData` 类型的对象列表。
请注意,具体的 SQL 语句和 MyBatis 的映射文件可能会根据你的需求和数据库的具体实现有所不同。
Oracle11g的驱动的位置D:\app\Administrator\product\11.1.0\db_1\jdbc\lib\下的ojdbc6.jar文件。
临时表空间:用来存放用户的临时数据,临时数据就是在需要时被覆盖,关闭数据库后自动删除,其中不能存放永久性数据。
例如当用户对很多数据行进行排序时,排序在PGA中进行。
但是如果排序的数据过多,导致内存不足时,oracle会把要排序的数据分成多份,每次只取一份放在PGA中进行排序,其他的部分都放到临时表空间中,当PGA里的部分排序完成后,把排序好的部分交换到临时表空间中,同时再从临时表空间里取一份没有排序的数据到PGA中进行排序,这样直到所有数据排序完成为止。
临时表空间组是一组由临时表空间组成的组,临时表空间组和临时表空间不能同名。
临时表空间组不能显式地创建和删除;当把第一个临时表空间分配给某个临时表空间组时,会自动创建这个临时表空间组;将临时表空间组的最后一个临时表空间删除时,会自动删除临时表空间组。
查看临时文件信息:select * from v$tempfile;select * from dba_temp_files;查看临时表空间组的信息:select * from dba_tablespace_groups;查看临时表空间的信息:select * from dba_tablespaces;查找默认的临时表空间:select property_name, property_value fromdatabase_properties where property_name ='DEFAULT_TEMP_TABLESPACE';创建临时表空间(不属于组):create temporary tablespace temp2 tempfile'D:\app\Administrator\oradata\orcl\temp2a.dbf' size 10m autoextend on;创建临时表空间(属于组):create temporary tablespace temp3 tempfile‘D:\app\Administrator\oradata\orcl\temp3a.dbf’ size 10m autoextend on tablespace group temp_grp;把某个临时表空间关联到组里:alter tablespace temp2 tablespace group temp_grp;把某个临时表空间移出组:alter tablespace temp2 tablespace group '';给一个临时表空间增加临时文件:alter tablespace temp2 add tempfile'D:\app\Administrator\oradata\orcl\temp2b.dbf' size 20m autoextend on;设置数据库的默认临时表空间为一个组:alter database default temporary tablespace temp_grp;对于DML语句来说,只要修改了数据块,Oracle数据库就会将修改前的数据保留下来,保存在undo segment里,而undo segment则保存在undo表空间里。
oracle 临时表用法Oracle临时表的用法临时表是Oracle数据库中用于临时存储数据的一种特殊表。
它在会话结束时自动销毁,不占用永久表空间。
通过使用临时表,可以在复杂的查询中临时存储中间结果或计算结果,以提高查询性能和效率。
使用临时表可以实现以下功能:1. 存储中间结果:在执行复杂的查询时,临时表可以用来存储中间结果,以便后续查询使用。
这样可以避免多次重复计算,提高查询效率。
2. 存储计算结果:如果需要对查询结果进行进一步计算或分析,可以将查询结果存储在临时表中,方便后续操作。
临时表可以根据需要创建索引,以进一步提高查询性能。
3. 存储大量数据:当需要处理大量数据时,临时表可以作为一种缓冲区,将数据存储在内存中,减少物理IO操作,提高查询速度。
创建临时表的语法如下:CREATE GLOBAL TEMPORARY TABLE table_name(column_name data_type,...)ON COMMIT {DELETE ROWS|PRESERVE ROWS};其中,table_name为临时表的名称,column_name为表的列名,data_type为列的数据类型。
ON COMMIT子句用于控制临时表的数据在事务提交之后的行为,DELETE ROWS表示在提交事务时删除所有数据,PRESERVE ROWS表示在提交事务时保留数据。
下面是一个简单的示例:CREATE GLOBAL TEMPORARY TABLE temp_table(id NUMBER,name VARCHAR2(50))ON COMMIT PRESERVE ROWS;INSERT INTO temp_table VALUES (1, 'John');INSERT INTO temp_table VALUES (2, 'Jane');SELECT * FROM temp_table;在这个示例中,我们创建了一个名为temp_table的临时表,并插入了两行数据。
YONYOU NC 6.5数据库参考脚本及临时表空间配置
2015年12月
版权所有(c) 2015用友网络科技股份有限公司
目录
YONYOU NC 6.5 数据库参考脚本及临时表空间配置 (1)
目录 (2)
1SQLSERVER参考脚本 (3)
2ORACLE参考脚本 (5)
3DB2参考脚本 (6)
1SQLServer参考脚本
NC应用数据库是SQL Server数据库时,NC使用tempdb数据库作临时表数据库,不需要另建。
对于tempdb 数据库,用户可以根据实际应用存储位置;对其大小要求,预调整到10000M,文件增长设置为自动增长,
2Oracle参考脚本
用户创建ORACLE数据库最高权限的脚本如下。
可以根据需求,修改参数大小。
酌情创建所需目录。
5
3DB2参考脚本
需要特别注意,本版支持的是DB2V10版本,在建库时,务必检查以下参数设置是否正确
7。
sql新建临时表并导入数据的方法
在SQL中,你可以使用`CREATE TABLE`语句来创建一个临时表,然后使用`INSERT INTO`语句将数据导入到这个临时表中。
下面是一个示例:
```sql
-- 创建临时表
CREATE TABLE TempTable (
ID INT,
Name VARCHAR(50)
);
-- 插入数据
INSERT INTO TempTable (ID, Name)
VALUES (1, 'John'),
(2, 'Jane'),
(3, 'Tom');
```
在上面的示例中,我们首先使用`CREATE TABLE`语句创建了一个名为
`TempTable`的临时表,它有两个列:`ID`和`Name`。
然后,我们使用
`INSERT INTO`语句将数据插入到临时表中。
请注意,临时表以``开头,并且只在当前会话中可见。
如果你想创建一个全局临时表,可以使用两个``号,例如`GlobalTempTable`。
希望这可以帮助到你!如果你有任何其他问题,请随时问。
sqlserver创建临时表的使⽤说明临时表产⽣:A: SELECT INTO和B:CREATE TABLE + INSERT INTO1. A 要⽐B 快很多。
但是A会锁定tempdb的SYSOBJECTS、SYSINDEXES、SYSCOLUMNS表,在多⽤户并发的时候,容易产⽣阻塞其他的进程。
2. 在并发系统中是⽤B. ⼤数量的单个语句中,使⽤A.创建临时表的⽅法:⽅法⼀:create table #临时表名(字段1 约束条件,字段2 约束条件,.....)create table ##临时表名(字段1 约束条件,字段2 约束条件,.....)⽅法⼆:select * into #临时表名 from 你的表;select * into ##临时表名 from 你的表;注:以上的#代表局部临时表,##代表全局临时表查询临时表select * from #临时表名;select * from ##临时表名;删除临时表drop table #临时表名;drop table ##临时表名;SQL SERVER临时表的使⽤drop table #Tmp --删除临时表#Tmpcreate table #Tmp --创建临时表#Tmp(ID int IDENTITY (1,1) not null, --创建列ID,并且每次新增⼀条记录就会加1WokNo varchar(50),primary key (ID) --定义ID为临时表#Tmp的主键);Select * from #Tmp --查询临时表的数据truncate table #Tmp --清空临时表的所有数据和约束相关例⼦:Declare @Wokno Varchar(500) --⽤来记录职⼯号Declare @Str NVarchar(4000) --⽤来存放查询语句Declare @Count int --求出总记录数Declare @i intSet @i = 0Select @Count = Count(Distinct(Wokno)) from #TmpWhile @i < @CountBeginSet @Str = 'Select top 1 @Wokno = WokNo from #Tmp Where id not in (Select top ' + Str(@i) + 'id from #Tmp)'Exec Sp_ExecuteSql @Str,N'@WokNo Varchar(500) OutPut',@WokNo OutputSelect @WokNo,@i --⼀⾏⼀⾏把职⼯号显⽰出来Set @i = @i + 1End临时表可以创建本地和全局临时表。
临时表创建及介绍ORACLE的临时表在应用系统中有很大的作用,它可以让用户只能够操作各自的数据中而互不干扰,不用担心会破坏或影响其他SESSION/TRANSACTION的数据,这也是数据安全的一种解决方法临时表分为SESSION、TRANSACTION两种,SESSION级的临时表数据在整个SESSION 都存在,直到结束此次SESSION;而TRANSACTION级的临时表数据在TRANACTION结束后消失,即COMMIT/ROLLBACK或结束SESSION都会清除TRANACTION临时表数据。
两种临时表的语法:create global temporary table 临时表名on commit preserve|delete rows用preserve时就是SESSION级的临时表,用delete就是TRANSACTION级的临时表例:1、SESSION级临时表--建立临时表create global temporary table temp_tbl(col_a varchar2(30)) on commit preserve rows--插入数据insert into temp_tbl values('test session table')--提交commit--查询数据select *from temp_tbl可以看到数据'test session table'记录还在--结束SESSION,重新登录,再查询数据select *from temp_tbl,这时候记录已不存在,因为系统在结束SESSION时自动清除记录2、TRANSACTION级临时表--建立临时表create global temporary table temp_tbl(col_a varchar2(30)) on commit delete rows--插入数据insert into temp_tbl values('test transaction table')--提交commit--查询数据select *from temp_tbl这时候可以看到刚才插入的记录'test transaction table'已不存在了;同样,如果不提交而直接结束SESSION,重新登录记录也不存在。
create temporary table as 用法create temporary table as 用法1. 简介create temporary table as是一种在数据库中创建临时表的方法。
临时表是在会话(session)结束时自动删除的表,可以用于存储临时数据或用于复杂查询的中间结果。
2. 创建临时表使用create temporary table as语法可以通过查询结果创建一个新的临时表。
具体语法如下:create temporary table <表名>as<查询语句>;3. 示例假设我们有一个学生表students,包含字段姓名和年龄。
现在我们想要根据年龄筛选出年龄大于等于18的学生,并将结果存储在临时表adults中。
create temporary table adultsasselect 姓名, 年龄from studentswhere 年龄 >= 18;4. 插入数据临时表也可以用于存储手动插入的数据。
我们可以通过insert into语句向临时表中插入数据。
具体语法如下:insert into <临时表名> (<列名1>, <列名2>, ...)values (<值1>, <值2>, ...);5. 示例假设我们已经创建了一个空的临时表temp_data,包含字段姓名和年龄。
现在我们想要在临时表中插入一条数据。
insert into temp_data (姓名, 年龄)values ('张三', 20);6. 查询临时表一旦我们创建了临时表,就可以使用普通的查询语句对其进行操作。
可以使用select语句查询临时表的内容。
select *from <临时表名>;7. 示例假设我们已经有了一个临时表temp_data,包含字段姓名和年龄。
现在我们想要查询临时表中的所有数据。
Oracle create tablespace语法详解CREATE [UNDO] TABLESPACE tablespace_name[DATAFILE datefile_spec1 [,datefile_spec2] ......[{MININUM EXTENT integer [k|m]|BLOCKSIZE integer [k]|logging clause | FORCE LOGGING|DEFAULT {data_segment_compression} storage_clause|[online|offline]|[PERMANENT|TEMPORARY]|extent_manager_clause|segment_manager_clause}]1、undo说明系统将创建一个回滚表空间。
在9i中数据库管理员可以不必管理回滚段,只有建立了undo表空间,系统就会自动管理回滚段的分配,回收的工作。
当然,也可以创建一般的表空间,在上面创建回滚段.不过对于用户来说,系统管理比自己管理要好很多.如果需要自己管理,请参见回滚段管理的命令详解.当没有为系统指定回滚表空间时,系统将使用system系统回滚段来进行事务管理。
//2、tablespace_name指出表空间的名称。
//3、datafile datefile_spec1指出表空间包含什么空间文件。
datefile_spec1是形如:['filename'] [SIZE integer [ K | M ]] [REUSE] [autoextend_clause][autoextend_clause]是形如:AUTOEXTEND { OFF | ON [ NEXT integer [ K | M ] ] [maxsize_clause] }其中filename是数据文件的路径名,可以是相对路径,也可以是绝对路径。
size是文件的大小,REUSE表示文件是否被重用.AUTOEXTEND表明是否自动扩展.OFF | ON 表示自动扩展是否被关闭.NEXT 表示数据文件满了以后,扩展的大小.maxsize_clause表示数据文件的最大大小.形如MAXSIZE { UNLIMITED | integer [ K | M ] }. UNLIMITED 表示无限的表空间.integer是数据文件的最大大小.DATAFILE 'D:"oracle"oradata"IMAGEDATA01.dbf' SIZE 2000M,'D:"oracle"oradata"IMAGEDATA02.dbf' SIZE 2000M//4、MININUM EXTENT integer [k|m]指出在表空间中范围的最小值。
oracle临时表的写法在实际开发中,我们常常会遇到需要存储临时数据的情况。
Oracle 数据库提供了临时表这一功能,它允许我们在会话级别临时存储和处理数据。
本文将介绍Oracle临时表的写法及使用技巧。
1. 创建临时表要创建一个Oracle临时表,我们可以使用CREATE GLOBAL TEMPORARY TABLE语句。
临时表的结构与普通表类似,但数据的生命周期仅限于会话级别。
其语法如下:CREATE GLOBAL TEMPORARY TABLE 表名(列名1 数据类型,列名2 数据类型,...)ON COMMIT [DELETE|PRESERVE] ROWS;其中,ON COMMIT DELETE ROWS表示在事务提交时清空临时表的数据,而ON COMMIT PRESERVE ROWS则表示保留数据。
根据实际需求选择合适的选项。
2. 插入数据向Oracle临时表插入数据的方式与普通表相同,我们可以使用INSERT INTO语句。
例如:INSERT INTO 临时表名 (列名1, 列名2, ...)VALUES (值1, 值2, ...);需要注意的是,临时表的数据只在当前会话中可见,其他会话无法访问到临时表,这样可以确保数据的安全性和独立性。
3. 查询临时表数据要查询Oracle临时表的数据,我们可以使用SELECT语句。
例如:SELECT 列名1, 列名2, ...FROM 临时表名;临时表的查询语法与普通表相同,可以使用各种条件、排序和聚合函数进行数据筛选和处理。
临时表的查询结果只在当前会话生效,不会对其他会话产生影响。
4. 删除临时表当我们不再需要临时表时,可以使用DROP TABLE语句将其删除。
例如:DROP TABLE 临时表名;这样可以释放临时表所占用的存储空间,并且清理临时表的定义。
值得注意的是,临时表的数据在会话结束后会自动清空,不需要手动删除。
综上所述,Oracle临时表为我们提供了一种临时存储和处理数据的方法。
Oracle数据库逻辑结构2.1.1Oracle系统体系结构话说与其他数据库产品不同,Oracle有其自己独特的系统体系结构。
Oracl e系统体系结构是整个Oracle服务器系统的框架,是管理和应用Oracle数据服务器的基础和核心。
Oracle系统体系结构由三部分组成:逻辑结构、物理结构和实例。
其中,实例是维系物理结构和逻辑结构的核心,如图2-1和图2-2所示。
图2-1表明了数据库三级模式及其物理文件之间的关系。
图2-1 数据库模式及其物理文件关系示意图图2-2 Oracle系统体系结构与功能不论是Oracle的应用开发还是数据库管理都是以实例作为切入点的。
只不过Oracle的应用程序开发主要是以数据库的逻辑对象为主(如表、索引和视图等),而数据库管理则是针对数据库的全部内容。
Oracle数据库由构成物理结构的各种文件组成,如数据文件、控制文件和重做日志文件等;实例是Oracle在内存中分配的一段区域SGA和服务器后台进程的集合。
Oracle数据库服务器就是数据库和实例的组合。
2.1.2Oracle逻辑结构Oracle的逻辑结构是一种层次结构。
主要由:表空间、段、区和数据块等概念组成。
逻辑结构是面向用户的,用户使用Oracle开发应用程序使用的就是逻辑结构。
数据库存储层次结构及其构成关系,结构对象也从数据块到表空间形成了不同层次的粒度关系,如图2-3和图2-4所示。
图2-3 Oracle 10g数据库层次结构图图2-4 段、区和数据块之间的关系1.数据块Oracle数据块(Data Block)是一组连续的操作系统块。
分配数据库块大小是在Oracle数据库创建时设置的,数据块是Oracle读写的基本单位。
数据块的大小一般是操作系统块大小的整数倍,这样可以避免不必要的系统I/O操作。
从Oracle9i开始,在同一数据库中不同表空间的数据块大小可以不同。
数据块是O racle最基本的存储单位,而表空间、段、区间则是逻辑组织的构成成员。
Oracle 创建表空间、创建用户以与授权、查看权限一、创建临时表空间# sqlplus / as sysdba;sql> CREATE TEMPORARY TABLESPACE test_tempTEMPFILE '/opt/oradata/test_temp.dbf'SIZE 32MAUTOEXTEND ONNEXT 32M MAXSIZE 2048MEXTENT MANAGEMENT LOCAL;二、创建用户表空间sql> CREATE TABLESPACE test_dataLOGGINGDATAFILE '/opt/oradata/test_data.dbf'SIZE 32MAUTOEXTEND ONNEXT 32M MAXSIZE 2048MEXTENT MANAGEMENT LOCAL;sql> select tablespace_name,block_size,extent_management,segment_space_managementfrom dba_tablespaceswhere tablespce_name like 'USER%';三、复原表空间sql> create undo tablespace user01_undodatafile '/u01/oracle/app/oracle/user01_undo.dbf'size 20M;sql> select tablespace_name,block_size,extent_management,segment_space_management from dba_tablespacesfrom tablespace_name like 'user01_%';sql> select tablespace_name,status,contentsfrom dba_tablespacesfrom tablespace_name like 'user01_%';四、创建用户并制定表空间sql> CREATE USER username IDENTIFIED BY passwordDEFAULT TABLESPACE TEST_DATATEMPORARY TABLESPACE TEST_TEMP;sql> GRANT role TO username;五、查看所有用户sql> SELECT * FROM DBA_USERS;sql> SELECT * FROM ALL_USERS;sql> SELECT * FROM USER_USERS;六、查看用户对象或角色权限sql> SELECT * FROM DBA_TAB_PRIVS;sql> SELECT * FROM ALL_TAB_PRIVS;sql> SELECT * FROM USER_TAB_PRIVS;七、查看所有角色sql> SELECT * FROM DBA_ROLES;八、查看用户或角色所拥有的角色sql> SELECT * FROM DBA_ROLE_PRIVS;sql> SELECT * FROM USER_ROLE_PRIVS;九、表空间脱机sql> select tablespace_name,status,contentsfrom dba_tablespaceswhere tablespce_name like 'user_%';sql> col name for a55sql> select file#,name,statusfrom v$datafilewhere file# >=8;设置脱机状态sql> alter tablespace user01 offline;sql> select tablespace_name,status,contents from dba_tablespaceswhere tablespce_name like 'user01_%'; sql> select file#,name,statusfrom v$datafilewhere file# >= 8;设置联机状态sql> alter tablespace user01 online;十一、只读表空间设置只读表空间sql> alter tablespace user01 read only;sql> select tablespce_name,status,contents from dba_tablespaceswhere tablespace_name like 'user_%';可读可写sql> alter tablespace user01 read write;sql> select tablespace_name,status,contentsfrom dba_tablespacewhere tablespace_name like 'user%';十二、改变表空间的存储设置sql> alter tablespace user01 minimum extent 100K;sql> alter tablespace user01default storage ( initial 100 k next 100 k maxextents 200);sql> set line 120sql> col tablespace_name for a15sql> select tablespace_name,initial_extent,next_extent,max_extents,pct_increase,min_extentsfrom dba_tablespaceswhere tablespace_name like 'user01%';十三、重置表空间大小sql> col file_name for a40sql> set line 100sql> col tablespace_name for a15sql> select file_id,tablespace_name,file_name,autoextensible from dba_data_fileswhere file_id >= 8order by file_id;sql> alter database datafile' ' autoextend onnext 1M;sql> select file_id,tablespace_name,file_name,autoextensiblefrom dba_data_fileswhere file_id >= 8order by file_id;十四、手工重置数据文件的大小sql> select file_id,file_name,tablespace_name,bytes/(1024*1024) MBfrom dba_data_fileswhere tablespace_name LIKE 'USERS01%'order by tablespace_name;sql> alter database datafile '/u01/oracle/app/oracle/oradata/db243/use01.dbf' resize 50M;sql> select file_id,file_name,tablespace_name,bytes/(1024*1024)MBfrom dba_data_fileswhere tablespace_name like '%USE%'order by tablespace_name;sql> alter tablespace use01add datafile '/u01/oracle/app/oracle/oradata/db243/use01_a.dbf'size 30M;sql> select file_id,file_name,tablespace_name,bytes/(1024*1024)MBfrom dba_data_fileswhere tablespace_name like '%USE%'order by tablespace_name;十五、移动数据文件的方法〔一〕、移动可以脱机的表空间# sqlplus / as sysdbasql> col file_name for a45sql> set line 120#查看数据库中数据文件的分布情况sql> select file_id,file_name,tablespace_name from dba_data_fileswhere file_name like '%ORADATA%'order by file_name;# 查看数据库表空间的状态sql> select tablespace_name,status,contents from dba_tablespaceswhere tablespace_name not like '%USE%';# 使表空间脱机sql> alter tablespace use01 offline;# 查看更改有没有成功sql> select tablespace_name,status,contentsfrom dba_tablespaceswhere tablespace_name not like '%USE%';# CP 数据文件# cp /u01/oracle/app/oracle/oradata/db243/use01.dbf /u01/oracle/app/oradata#使用命令来重新命名表空间所对应的数据文件名sql> alter tablespace use01 renamedatafile '/u01/oracle/app/oracle/oradata/db243/use01.dbf'to '/u01/oracle/app/oradata/use01.dbf';#表空间联机sql> alter tablespace use01 online;〔二〕、移动系统表空间Sql> shutdown immediatesql> startup mountsql> host cp /u01/oracle/app/oracle/oradata/db243/system01.dbf /u01/oracle/app/oradatasql> alter database renamefile '/u01/oracle/app/oracle/oradata/sb243/system01.dbf'to '/u01/oracle/app/oradata/system01.dbf';sql> alter database open;sql> select tablespace_name,status,contentsfrom dba_tablespaces;sql> select file_id,file_name,tablespace_namefrom dba_data_files;十六、迁移数据字典和本地管理的表空间Sql> connect sys/wuzihao as sysdba;sql> show user;#查看哪些表空间是数据字典管理的sql> select tablespace_name,block_size,extent_management,segment_space_management,min_extentsfrom dba_tablespaceswhere tablespace_name like '%USE%';#将数据字典管理的表空间迁移到本地管理的表空间sql> execute dbms_space_admin.tablespace_migrate_to_local('use01');#将本地管理的表空间迁移到数据字典管理的表空间sql> execute dbms_space_admin.tablespace_migrate_from_local('use01');十七、删除表空间#查询所有创建的表空间sql> select file_id,file_name,tablespace_namefrom dba_data_fileswhere file_id > 5order by file_id;#控制文件指向的数据文件指针删除sql> drop tablespace use01;#操作系统文件也删除sql> drop tablespace use01 including contents and datafiles;#临时表空间sql> col file for a50sql> col tablespace for a15sql> set line 120#查询临时表空间sql> select f.file#,t.ts#, “File〞,t.n ame “Tablespace〞from v$tempfile f,v$tablspace twhere f.ts# = t.ts#;#删除临时表空间sql>drop tablespace use01_temp including contents and datafiles;十八、利用OMF来管理表空间# sqlplus / as sysdba#设定数据文件存放的目录sql> alter system setdb_create_file_dest = '/u01/oracle/app/oradata';sql> create tablespace test01;sql> select file_id,file_name,tablespace_name,bytes/(1024*1024)MB from dba_data_files;sql> alter tablespace test01 add datafile 50M;十九、应用实例#查询所有的表空间信息sql> select file_id,file_name,tablespace_name,bytes/(1024*1024)MB from dba_data_files;#查看数据库表空间是数据字典管理,还是本地管理sql> select tablespace_name,block_size,extent_management,segment_space_management,min_extentsfrom dba_tablespaces;#查询所有的临时表空间sql> select f.file#,t.ts#, “File〞, “Tablespace〞from v$tempfile f,v$tablespace twhere f.ts# = t.ts#;#创建数据表空间sql> create tablespace pioneer_datadatafile '/u01/oracle/app/oradata/pioneer_data.dbf'size 100 Mextent management localuniform size 1M;#创建索引表空间sql> create tablespace pioneer_indexdatafile '/u01/oracle/app/oradata/pionner_index.dbf'size 100Mextent management localuniform size 1M;#创建复原表空间sql> create tablespce pioneer_undodatafile '/u01/oracle/app/oradata/pioneer_undo.dbf'size 100Mextent management local;#创建临时表空间sql> create temporary tablespace pioneer_tempdatafile '/u01/oracle/app/oradata/pioneer_temp.dbf'size 50Mextent management localuniform size 2M;#验证表空间是否创建成功sql> select file_id,file_name,tablespace_name,bytes/(1024*1024)MB from dba_tablespaceswhere tablespace_name like 'PION%';#验证临时表空间创建是否成功sql> select f.file#,t.ts#, “File〞, “Tablespace〞from v$tempfile f,v$tablespace twhere f.ts# = t.ts#and like 'PION%';#验证四个表空间是否本地管理,sql> select tablespace_name,block_size,extent_management, segment_space_management,min_extents,contents from dba_tablespaceswhere tablespace_name like 'PION%';。
/创建临时表空间
create temporary tablespace test_temp
tempfile 'E:\oracle\product\10.2.0\oradata\testserver\test_temp01.dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent management local;
//创建数据表空间
create tablespace test_data
logging
datafile 'E:\oracle\product\10.2.0\oradata\testserver\test_data01.dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent management local;
//创建用户并指定表空间
create user testserver_user identified by testserver_user
default tablespace test_data
temporary tablespace test_temp;
//给用户授予权限
grant connect,resource to testserver_user; (db2:指定所有权限)
导入导出命令:
Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程
数据库服务器导出到本地的dmp文件, imp命令可以把dmp文件从本地导入到远处的数据
库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使
用。
执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,
DOS中可以执行时由于 在oracle 8i 中 安装目录ora81BIN被设置为全局路径,
该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。
oracle用java编写,SQLPLUS.EXE、EXP.EXE、IMP.EXE这两个文件有可能是被包装后的
类文件。
SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类,完成导入导出功能。
下面介绍的是导入导出的实例。
数据导出:
1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp中
exp system/manager@TEST file=d:daochu.dmp full=y
2 将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:daochu.dmp owner=(system,sys)
3 将数据库中的表inner_notify、notify_staff_relat导出
exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp
tables=(inner_notify,notify_staff_relat)
4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like
'00%'"
上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。
也可以在上面命令后面 加上 compress=y 来实现。
数据的导入
1 将D:daochu.dmp 中的数据导入 TEST数据库中。
imp system/manager@TEST file=d:daochu.dmp
imp aichannel/aichannel@HUST full=y file=d:datanewsmgnt.dmp ignore=y
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上 ignore=y 就可以了。
2 将d:daochu.dmp中的表table1 导入
imp system/manager@TEST file=d:daochu.dmp tables=(table1)
基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。
注意:
操作者要有足够的权限,权限不够它会提示。
数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。
附录一:
给用户增加导入数据权限的操作
第一,启动sql*puls
第二,以system/manager登陆
第三,create user 用户名 IDENTIFIED BY 密码 (如果已经创建过用户,这步可以省略)
第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字
第五, 运行-cmd-进入dmp文件所在的目录,
imp userid=system/manager full=y file=*.dmp
或者 imp userid=system/manager full=y file=filename.dmp
执行示例:
F:WorkOracle_Databackup>imp userid=test/test full=y file=inner_notify.dmp
屏幕显示
Import: Release 8.1.7.0.0 - Production on 星期四 2月 16 16:50:05 2006
(c) Copyright 2000 Oracle Corporation. All rights reserved.
连接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
经由常规路径导出由EXPORT:V08.01.07创建的文件
已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入
导出服务器使用UTF8 NCHAR 字符集 (可能的ncharset转换)
. 正在将AICHANNEL的对象导入到 AICHANNEL
. . 正在导入表 "INNER_NOTIFY" 4行被导入
准备启用约束条件...
成功终止导入,但出现警告。
附录二:
Oracle 不允许直接改变表的拥有者, 利用Export/Import可以达到这一目的.
先建立import9.par,
然后,使用时命令如下:imp parfile=/filepath/import9.par
例 import9.par 内容如下:
FROMUSER=TGPMS
TOUSER=TGPMS2 (注:把表的拥有者由FROMUSER改为TOUSER,
FROMUSER和TOUSER的用户可以不同)
ROWS=Y
INDEXES=Y
GRANTS=Y
CONSTRAINTS=Y
BUFFER=409600
file==/backup/ctgpc_20030623.dmp
log==/backup/import_20030623.log