1srvctl [root@wangzilong oracle]# srvctl Usage: srvctl <command> <object> [<options>] commands: e
1 srvctl
[root@wangzilong oracle]# srvctl Usage: srvctl <command> <object> [<options>] commands: enable|disable|start|stop|status|add|remove|modify|getenv|setenv|unsetenv|config|upgrade objects: database|service|asm|diskgroup|listener|home|onsFor detailed help on each command and object and its options use: srvctl <command> -h or srvctl <command> <object> -h
1.1 看帮助
srvctl start -h
[root@wangzilong oracle]# srvctl start -hThe SRVCTL start command starts, Oracle Restart enabled, non-running objects.Usage: srvctl start database -d <db_unique_name> [-o <start_options>]Usage: srvctl start service -d <db_unique_name> [-s "<service_name_list>"] [-o <start_options>]Usage: srvctl start asm [-o <start_options>]Usage: srvctl start listener [-l <lsnr_name>]Usage: srvctl start diskgroup -g <dg_name>Usage: srvctl start ons [-v]Usage: srvctl start home -o <oracle_home> -s <state_file>For detailed help on each command and object and its options use: srvctl <command> <object> -h
1.2 看数据库是否已经启动
bash-4.1$ srvctl status database -d orclDatabase is running.
bash-4.1$ crs_stat -t ora.orcl.dbName Type Target State Host ------------------------------------------------------------ora.orcl.db ora....se.type ONLINE ONLINE wangzilong #bash-4.1$ crs_stat -t ora.orcl.dbName Type Target State Host ------------------------------------------------------------ora.orcl.db ora....se.type ONLINE ONLINE wangzilong bash-4.1$ crs_stat ora.orcl.dbNAME=ora.orcl.dbTYPE=ora.database.typeTARGET=ONLINESTATE=ONLINE on wangzilong#crs_start 启动#crs_stop 关闭
2 实例启动的阶段
sqlplus启动的三个阶段
2.1 nomount 实例启动阶段(参数文件)
startup nomount;
根据参数文件的位置启动实例,
根据参数文件中定义数据库的名字,参数文件中内存的分配情况,参数文件定义的权限、位置和个数,将这些过程写入到用户日志和告警日志,启动后台进程,初始化部分视图。(v$parameter,v$spprameter 就可以访问)
2.2 mount 数据库的装载(使用参数文件和控制文件)
alter database mount;
更具参数文件中定义的控制文件的位置和个数装载数据库。
2.3 open 阶段,叫做数据库的打开阶段
根据控制文件中定义的数据库名,数据文件和日志文件的名字,位置,个数。(控制文件中的记录的SCN 号和数据库文件,日志文件是否一致,如果一致,数据库打开,如果不一致,启动的时候做实例恢复)
3 实例关闭的阶段
3.1 close-- 关闭数据库
alter database close;关闭数据库文件和日志文件
3.2 dismount 卸载数据库
alter database dismount 将实例与数据库链接断开
3.3 shutdown 关闭实例
shutdown
4 实例关闭的模式
4.1 shutdonw |shutdown normal 正常关闭(不推荐)
old connect 等待
ckpt
如同有用户还没有推出,则要一直等待,所以不推荐
4.2 shutdown immediate 一致性关闭
相比上面的关闭,如果有老的链接不会等待,直接回滚。
4.3 shutdown transactional 居于事务的关闭数据库
old connect 等事物结束
ckpt
4.4 shutdown abort 强制关闭
一般不会使用,只有前面三种没有办法关闭的时候(出了故障)强制关闭
5 文件管理
生命周期:nomount--mount--open--close--dismount--shutdown
5.1 参数文件管理
- 二进制参数文件:spfile 。spfileORACLE_SID.ora.例如spfileorcl.ora默认位置在$ORACLE_HOME/dbs/spfile*.ora,只能在服务器上使用
- 文本参数文件:pfile 。名字一般是initORACLE_SID.ora 位置在$ORACLE_HOME/dbs/init*.ora,服务器和客户端都可以使用
- 二进制参数文件和文本参数文件的优先级:spfileORACLE_SID.ora -- spfile。ora--initORACLE_SID.ora--init.ora
- 二进制参数文件和文本参数文件可以相互装换
- show parameter spfile,如果有则表示使用的是二进制参数文件启动,否则则表示使用的是文本参数文件启动数据库
- create pfile from spfile;二进制装为文本文件。路径默认是在$ORACLE_HOME/dbs spfile文件可以指定路径。
- create spfile from pfile 文本参数文件转换为二进制参数文件。
- select name,value from v$spparameter; 可以看参数文件中可以定义那些参数.
- 动态参数:参数修改后不需要重启数据库,立即生效的。
- 静态参数:当前不会生效,数据库重启之后才有效。alter system set 参数名=值,如果能成功,则说明是动态的参数。alter system set 参数名 = 值 scope=spfile|memory|both; 如果这样修改才能成功的说明是静态参数
- 会话参数:修改之后只在当前会话有效,其他会话无效 alter session set 参数名
5.2 密码文件管理
5.3 控制文件管理
5.4 日志文件管理
1 日志文件作用
记录用户的DML,部分DDL 操作,以及管理员对数据库的更改。主要用来做恢复使用。
2 日志文件的工作原理
日志文件通过lgwr 进程将日志缓冲区中的内容顺序存放在日志文件中。
current:表示当前正在使用的日志组
active 活动状态:表示记录的日志信息有可能还没有写入日志文件,如果丢失会丢数据
inactive:表示非活动状态,表示这种状态的信息已经全部记录在日志文件中,文件丢失不会影响数据库数据的丢失
unused:表示从来都没有使用过,一般不会看见的。
日志组:一个数据库中至少要有两个组,一个组下面的日志文件叫做日志成员,每个组下面至少要有一个日志文件。每个组下面的日志文件都是一样的,互为镜像。1个日志中的成员日志文件大小都是一样的。日志文件中有lsn 日志编号。
select group#,status from v$log;
SQL> select group#,status from v$log; GROUP# STATUS---------- ---------------- 1 INACTIVE 2 INACTIVE 3 CURRENT
3 日志文件在项目中的规划
至少有3个组,一个组下面至少有2个日志成员,且分开存放。日志切换表示一个组写慢再写下一个组,日志切换时间保证在15到30分钟切一次才三正常。v$log_history 里面记录了每一次切换日志的时间
SQL> select recid,first_time from v$log_history; RECID FIRST_TIM---------- --------- 1 18-NOV-16 2 18-NOV-16 3 18-NOV-16 4 18-NOV-16 5 18-NOV-16
4 日志文件的管理
日志组的增加:日志组不能满足业务需要的时候增加一个日志组。alter database add logfile group groupname (‘log_file_path1’,'log_file_path2',…) size group_size
SQL> select group#,bytes/1024/1024 from v$log; GROUP# BYTES/1024/1024---------- --------------- 1 50 2 50 3 50 1* alter database add logfile group 4 ('/u01/product/oradata/orcl/redo04.log','/u01/product/oradata/orcl/redo041.log') size 50MSQL> /Database altered. 1* select a.group#,b.member from v$log a,v$logfile b where a.group# = b.group#SQL> / GROUP# MEMBER---------- --------------------########## /u01/product/oradata /orcl/redo03.log########## /u01/product/oradata /orcl/redo02.log########## /u01/product/oradata /orcl/redo01.log########## /u01/product/oradata /orcl/redo04.log GROUP# MEMBER---------- --------------------########## /u01/product/oradata /orcl/redo041.log#日志增加成功
日志组的删除:
current 的日志是不能删除的。只有最后两个日志组的时候是不能删除的。
actinve 的日志不能删除
alter database drop logfile group group_name.组删除之后实体文件可以不删除,也可以删除,不影响系统的运行。
SQL> select a.group#,b.member,a.status from v$log a,v$logfile b where a.group# = b.group#; GROUP# MEMBER STATUS---------- -------------------------------------------------- ---------------- 3 /u01/product/oradata/orcl/redo03.log CURRENT 2 /u01/product/oradata/orcl/redo02.log INACTIVE 1 /u01/product/oradata/orcl/redo01.log INACTIVE 4 /u01/product/oradata/orcl/redo04.log UNUSED 4 /u01/product/oradata/orcl/redo041.log UNUSED# 下面准备删除current状态下的日志SQL> alter database drop logfile group 3;alter database drop logfile group 3*ERROR at line 1:ORA-01623: log 3 is current log for instance orcl (thread 1) - cannot dropORA-00312: online log 3 thread 1: '/u01/product/oradata/orcl/redo03.log'# 报错,不能删除current状态的日志组SQL> alter database drop logfile group 1;Database altered.# 删除inactive 状态下的是可以的。SQL> select a.group#,b.member,a.status from v$log a,v$logfile b where a.group# = b.group#; GROUP# MEMBER STATUS---------- -------------------------------------------------- ---------------- 3 /u01/product/oradata/orcl/redo03.log CURRENT 2 /u01/product/oradata/orcl/redo02.log INACTIVE 4 /u01/product/oradata/orcl/redo04.log UNUSED 4 /u01/product/oradata/orcl/redo041.log UNUSED
日志组下成员的增加:
alter database add logfile member 'path' to group group_name;
SQL> alter database add logfile member '/u01/product/oradata/orcl/redo21.log' to group 2;Database altered.SQL> select a.group#,b.member,a.status from v$log a,v$logfile b where a.group# = b.group#; GROUP# MEMBER STATUS---------- -------------------------------------------------- ---------------- 3 /u01/product/oradata/orcl/redo03.log CURRENT 2 /u01/product/oradata/orcl/redo02.log INACTIVE 2 /u01/product/oradata/orcl/redo21.log INACTIVE 4 /u01/product/oradata/orcl/redo04.log UNUSED 4 /u01/product/oradata/orcl/redo041.log UNUSED# 组下成员增加成功
日志组下成员的删除:
如果一个组下面只有一个成员不能删除
current,active 状态的日志成员是不能被删除的。
alter database drop logfile member ‘path’;
SQL> alter database drop logfile member '/u01/product/oradata/orcl/redo21.log';Database altered.# 组下成员删除成功
日志组的扩容,先新建符合大小的日志文件,在用下面的命令切换,最后在把原来的日志文件删除。
切换日志(多切换几次) alter system switch logfile; 把原来的日志文件都切换成inactive 状态下删除就可以了。
SQL> select a.group#,b.member,a.status ,a.bytes from v$log a,v$logfile b where a.group# = b.group#; GROUP# MEMBER STATUS BYTES---------- -------------------------------------------------- ---------------- ---------- 5 /u01/product/oradata/orcl/redo05.log CURRENT 104857600 6 /u01/product/oradata/orcl/redo06.log INACTIVE 104857600 7 /u01/product/oradata/orcl/redo07.log INACTIVE 104857600# 日志文件已经扩大到100M
日志文件的丢失:
inactive 丢失(运行状态下)
alter database clear logfile group group_name ;这个系统会自动创建系统中配置的有的日志文件,只是重新建的日志文件里面没有内容。
如果在重启数据库的情况下需要做一下三步:
SQL> select a.group#,b.member,a.status ,a.bytes from v$log a,v$logfile b where a.group# = b.group#; GROUP# MEMBER STATUS BYTES---------- -------------------------------------------------- ---------------- ---------- 5 /u01/product/oradata/orcl/redo05.log CURRENT 104857600 6 /u01/product/oradata/orcl/redo06.log INACTIVE 104857600 7 /u01/product/oradata/orcl/redo07.log INACTIVE 104857600# redo06.log 里面的文件是inactive 状态的,如果它丢失会怎么了?[root@wangzilong orcl]# rm -rf redo06.logSQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.# 关闭数据库SQL> startup mount;ORACLE instance started.Total System Global Area 2438529024 bytesFixed Size 2230792 bytesVariable Size 570426872 bytesDatabase Buffers 1845493760 bytesRedo Buffers 20377600 bytesDatabase mounted.# 数据库挂载成功SQL> recover database until cancel;Media recovery complete.# 需要让数据库不检查日志SQL> alter database open resetlogs; Database altered.# 在重新生成序列号的情况下打开数据库[root@wangzilong orcl]# ll redo06.log-rw-r----- 1 oracle dba 104858112 Dec 6 14:13 redo06.log# 日志文件6 已经重新建回来了。
active 丢失
alter system checkpoint;触发ckpt 会把日志文件中的写入磁盘文件,然后日志文件就会从active 文件切换到inactive 状态下,然后再用上面的clear 把文件建回去。这只能保证系统正常运行,但是会丢数据的。
GROUP# MEMBER STATUS BYTES---------- --------------------------------------------- ---------------- ---------- 5 /u01/product/oradata/orcl/redo05.log ACTIVE 104857600 6 /u01/product/oradata/orcl/redo06.log CURRENT 104857600 7 /u01/product/oradata/orcl/redo07.log UNUSED 104857600# 如果上面的文件5丢失了怎么办?# 由于active 文件表示日志里面还有脏数据没有写入磁盘,所以我们需要手动触发ckpt写数据SQL> alter system checkpoint;System altered.SQL> select a.group#,b.member,a.status ,a.bytes from v$log a,v$logfile b where a.group# = b.group#; GROUP# MEMBER STATUS BYTES---------- --------------------------------------------- ---------------- ---------- 5 /u01/product/oradata/orcl/redo05.log INACTIVE 104857600 6 /u01/product/oradata/orcl/redo06.log CURRENT 104857600 7 /u01/product/oradata/orcl/redo07.log UNUSED 104857600# 日志文件5 已经变成inactiveSQL> alter database clear logfile group 5;Database altered.# 用clear 日志5重新建[root@wangzilong orcl]# ll redo05.log-rw-r----- 1 oracle dba 104858112 Dec 6 14:24 redo05.log
如果是active状态的日志文件丢失后关闭数据库,无法重启,如何处理?也和上面的inactive 一样的操作。
current 丢失(启动状态下)
alter system switch logfile;
alter system checkpoing;
alter database clear logfile group group_name
current 丢失(关闭状态下):
三部:启动到mount,recover 不使用恢复,重建日志方式打开
日志丢失重启的时候报错,需要不使用恢复,recover database until calcle
alter datrabase open resetlogs;
5 日志文件相关的视图
v$log
v$logfile
v$log_history
重点:组3个以上,成员分开,会增加组,增加成员,删除成员如何处理。
6 归档日志 archivelog
inactive -- arc 进程处理归档
默认情况下归档日志放在闪回区,由db_recovery_file_dest='path'
如果上面的路径放满列,可以设置log_archive_dest
archive log list或者v$database;
SQL> archive log list;Database log mode No Archive ModeAutomatic archival DisabledArchive destination USE_DB_RECOVERY_FILE_DESTOldest online log sequence 1Current log sequence 1# 查看是否有归档功能,Oldest online log sequence 表示下一个归档的日志是1号
设置为归档:
startup mount
alter database archivelog;
SQL> startup mount;ORACLE instance started.Total System Global Area 2438529024 bytesFixed Size 2230792 bytesVariable Size 570426872 bytesDatabase Buffers 1845493760 bytesRedo Buffers 20377600 bytesDatabase mounted.SQL> alter database archivelog;Database altered.SQL> alter database open;Database altered.SQL> archive log list;Database log mode Archive Mode # 已经开启归档Automatic archival EnabledArchive destination USE_DB_RECOVERY_FILE_DESTOldest online log sequence 1Next log sequence to archive 1Current log sequence 1# 归档日志路径SQL> show parameter DB_RECOVERY_FILE_DEST;NAME TYPE VALUE------------------------------------ ----------- ------------------------------db_recovery_file_dest string /u01/product/fast_recovery_are adb_recovery_file_dest_size big integer 4122MSQL> desc v$archived_log;# 上面v$archived_log 里面记录归档日志的详细信息SQL> alter database noarchivelog;Database altered.# 上面关闭归档SQL> archive log list;Database log mode No Archive ModeAutomatic archival DisabledArchive destination USE_DB_RECOVERY_FILE_DESTOldest online log sequence 1Current log sequence 1
5.5 用户管理
5.6 对象管理
7 控制文件
7.1 控制文件的作用
记录数据结构与行为
7.2 控制文件在项目中的规划
控制文件最大可以达到8个,最少1个。工作当中控制文件规划是少2个以上,且分开存放。
控制文件大小在100M 以内,如果超过100M就需要重建
SQL> desc v$controlfile; Name Null? Type ----------------------------------------- -------- ---------------------------- STATUS VARCHAR2(7) NAME VARCHAR2(513) IS_RECOVERY_DEST_FILE VARCHAR2(3) BLOCK_SIZE NUMBER FILE_SIZE_BLKS NUMBER# 名字,大小,下面还有一个也能看控制文件信息SQL> desc v$controlfile_record_section; Name Null? Type ----------------------------------------- -------- ---------------------------- TYPE VARCHAR2(28) RECORD_SIZE NUMBER RECORDS_TOTAL NUMBER RECORDS_USED NUMBER FIRST_INDEX NUMBER LAST_INDEX NUMBER LAST_RECID NUMBER# 下面可以看到控制文件的个数等信息SQL> show parameter control_files;NAME TYPE VALUE------------------------------------ ----------- ------------------------------control_files string /u01/product/oradata/orcl/cont rol01.ctl, /u01/product/fast_r ecovery_area/orcl/control02.ct l
7.3 控制文件的管理
7.3.1 控制文件增加
1 如果数据库是关闭状态,则启动,start nomount
2 修改参数 control_files
3 将存在的控制文件复制给新建的
4 启动。alter database mount;
5 alter database open;
alter system set control_file = …………,这里原来的控制文件照抄,在自己增加一个
6 如果数据库是打开的,先修改参数control_files,shutdown immediate,将控制文件复制一份给新建的,startup
SQL> alter system set control_files='/u01/product/oradata/orcl/control01.ctl','/u01/product/fast_recovery_area/orcl/control02.ctl','/u01/product/oradata/orcl/control02.ctl' scope=spfile; *ERROR at line 1:ORA-02095: specified initialization parameter cannot be modified# 增加完后报错了,下面需要重启并新建[root@wangzilong orcl]# cp control01.ctl control02.ctl# 新建登录sqlplus 并启动[root@wangzilong orcl]# sqlplus sys/123456 as sysdbaSQL*Plus: Release 11.2.0.3.0 Production on Mon Dec 5 15:49:07 2016Copyright (c) 1982, 2011, Oracle. All rights reserved.Connected to an idle instance.# 启动SQL> startupORACLE instance started.Total System Global Area 2438529024 bytesFixed Size 2230792 bytesVariable Size 570426872 bytesDatabase Buffers 1845493760 bytesRedo Buffers 20377600 bytesDatabase mounted.Database opened.# 启动成功,下面检查添加的控制文件是否成功SQL> select name from v$controlfile;NAME--------------------------------------------------------------------------------/u01/product/oradata/orcl/control01.ctl/u01/product/fast_recovery_area/orcl/control02.ctl/u01/product/oradata/orcl/control02.ctl
注意:复制控制文件的时候一定要在oracle 用户下
7.3.2 控制文件减少
1 shutdown immediate;shut abort;
2 startup nomount
3 修改参数
4 alter database mount;
alter database open;
解释:直接把需要移除的控制文件删除,配置文件里面删除重启就可以了。
7.3.3 控制文件版本不一致的处理
只需要高版本的复制给低版本的就可以了。
7.3.4 控制文件部分丢失的处理
已有的复制给丢失的,或者直接删除丢失的控制文件就可以了。(前提是有备份)
7.3.5 控制文件有备份全丢失的处理
备份:alter database backup controlfile to '/tmp/con.ctl';备份的就是二进制控制文件。
SQL> alter database backup controlfile to '/tmp/cron.ctl';Database altered.[root@wangzilong tmp]# ll cron.ctl -rw-r----- 1 oracle dba 9748480 Dec 5 16:24 cron.ctl# 这样备份,如果控制文件丢失可以直接把备份的拷贝过去就可以用
alter database backup controlfile to trace as '/tmp/con.sql'; 备份控制文件成一个脚本。
SQL> alter database backup controlfile to trace as '/tmp/con.sql';Database altered.
这个备份如果要使用的需要用@ /tmp/con.sql 调用即可。
7.3.6 控制文件没有备份全丢失的处理
只能手动写了。
create controlfile reuse database database_name noresetlogs noarchivelog
logfile
group 1 '/u01/oracle/oradata/updba/redo01.log' size 50M
group 2 '/u01/oracle/oradata/updba/redo01.log' size 50M
group 3 ^^^^^
datafile
'/u01/oracle/oradata/updba/system01.dbf',
'/u01/oracle/oradata/updba/sysaux01.dbf',
'/u01/oracle/oradata/updba/undotbs01.dbf',
^^^^
charater set al32utf8
上面的logfile,datafile 可以在视图里面查:
# 日志文件SQL> select group#,member from v$logfile; GROUP#----------MEMBER-------------------------------------------------------------------------------- 3/u01/product/oradata/orcl/redo03.log 2/u01/product/oradata/orcl/redo02.log 1/u01/product/oradata/orcl/redo01.log
# 数据文件SQL> select file#,name from v$datafile; FILE#----------NAME-------------------------------------------------------------------------------- 1/u01/product/oradata/orcl/system01.dbf 2/u01/product/oradata/orcl/sysaux01.dbf 3/u01/product/oradata/orcl/undotbs01.dbf FILE#----------NAME-------------------------------------------------------------------------------- 4/u01/product/oradata/orcl/users01.dbf
8 存储逻辑
存储结构与数据文件
存储结构
database---tablespace-- segment--extent--bloks-- datafile
tablespace 表空间:
8.1 表空间分类
1 永久表空间,指的是创建数据
system 系统表空间/字典表空间/永久表空间,存储当前数据库数据字典的信息。
oracle 内部的基表也放在永久表空间。比如user_,dba_,all_ 开头的都在这里。
内部使用的工具也放在这里
sysaux 辅助表空间,10G 后才有,主要用来减轻system 表空间的负担,里面放oracle内部工具
v$sysaux_occupants;
2 undo (回退)表空间 ,处理事物等
主要存放用户对数据块更改前的前镜像,主要用来做闪会操作或者rollback
3 临时表空间,存放临时数据,比如排序
temp 表空间,存放用户的临时数据,排序的时候也要使用临时表空间。
当排序时内存不足的时候,就用到临时表空间。
4 用户表空间
users/example 用户表空间,是oracle 内部使用的模板数据库使用的表空间。工作中用户表空间需要手动创建。
8.2 表空间创建
表空间状态:online 表示联机,可读可写。
offline 离线,表示表空间和实例断开链接。
read write 可读可写
read only 只读
system 表空间,undo ,tmpe 不可以offline,也不可以read only。sysaux 不能read only,可以offline。其他的用户表空间随便哪个操作都可以;
alter tablespace sysaux offline
表空间大小分类:
小表表空间:一个表空间下面可以存放多个数据文件。可以存放1024个,每一个数据文件不能超过32G ,数据文件的头只占用4K
大表表空间:一个表空间下面只能存放一个数据文件。最大可以达到128T,最小可以达到8T,可以放40亿个数据块,数据文件头占4M
查看表空间文件的位置:
1* select file_name,tablespace_name from dba_data_filesSQL> /FILE_NAME TABLESPACE_NAME---------------------------------------- ------------------------------/u01/product/oradata/orcl/wzl01.dbf WZL_TABLESPACE/u01/product/oradata/orcl/users01.dbf USERS/u01/product/oradata/orcl/undotbs01.dbf UNDOTBS1/u01/product/oradata/orcl/sysaux01.dbf SYSAUX/u01/product/oradata/orcl/system01.dbf SYSTEM
create [smallfile|bigfile] tablespace tablespace_name datafile 'path' size <> [extend uniform size <>|autoextend on <> segment management local|auto ];
create tablespace sarah datafile 'path.dbf' size 50M ;
SQL> create tablespace wzl_tablespace datafile '/u01/product/oradata/orcl/wzl01.dbf' size 50M;Tablespace created.# 下面再建一个50M 自动增长的大表空间SQL> create bigfile tablespace wzl_big_tablespace datafile '/u01/product/oradata/orcl/wzl02.dbf' size 50M autoextend on;Tablespace created.
select bigfile,tablespace_name from dba_tablespaces;
SQL> select TABLESPACE_NAME,BLOCK_SIZE,NEXT_EXTENT,STATUS from dba_tablespaces;TABLESPACE_NAME BLOCK_SIZE NEXT_EXTENT STATUS------------------------------ ---------- ----------- ---------SYSTEM 8192 ONLINESYSAUX 8192 ONLINEUNDOTBS1 8192 ONLINETEMP 8192 1048576 ONLINEUSERS 8192 ONLINEWZL_TABLESPACE 8192 ONLINE6 rows selected.
select tablespace_name,bytes from dba_data_files; 可以查看表空间有多大
、SQL> select tablespace_name,bytes from dba_data_files;TABLESPACE_NAME BYTES------------------------------ ----------WZL_TABLESPACE 52428800USERS 5242880UNDOTBS1 162529280SYSAUX 639631360SYSTEM 744488960
alter database default tablespace <> 可以制定对象默认存放的表空间
SQL> alter database default tablespace WZL_TABLESPACE;Database altered.SQL> select tablespace_name,table_name from user_tables;TABLESPACE_NAME TABLE_NAME------------------------------ ------------------------------USERS EMPNEWWZL_TABLESPACE TMP_WZL_20161206_1USERS TMP_20161206_2USERS TMP_20161206USERS LEMPUSERS TMP1USERS EMP1USERS DEPT1USERS SALGRADEUSERS BONUSUSERS EMP# 建表后默认都放在指定的表空间下
SQL> select property_name,property_value from database_properties where property_name like '%DEF%';PROPERTY_NAME PROPERTY_VALUE-------------------- ------------------------------DEFAULT_TEMP_TABLESP TEMPACEDEFAULT_PERMANENT_TA WZL_TABLESPACEBLESPACEDEFAULT_EDITION ORA$BASEDEFAULT_TBS_TYPE SMALLFILE# 查看默认使用的表空间信息
8.3 表空间的管理
8.3.1 表空间的修改
只有用户自己新建的报表空间可以修改。
alter tablespace <> rename to <>;
TABLESPACE_NAME------------------------------SYSTEMSYSAUXUNDOTBS1TEMPUSERSWZL_TABLESPACEWZL_BIG_TABLESPACE7 rows selected.SQL> alter tablespace WZL_TABLESPACE rename to WZL_TABLESPACE_tmp;Tablespace altered.#表空间改名成功SQL> select tablespace_name from dba_tablespaces;TABLESPACE_NAME------------------------------SYSTEMSYSAUXUNDOTBS1TEMPUSERSWZL_TABLESPACE_TMPWZL_BIG_TABLESPACE7 rows selected.
8.3.2 表空间下数据库文件或者表空间的迁移
只有用户建的表空间可以迁移(磁盘空间已满),如果表空间不够又不迁移数据文件中的数据会被清空。
1 在open 状态下迁移
不能够离线的都不可以做迁移操作。
整体迁移表空间:
第一步:alter tablespace <> offline;
TABLESPACE_NAME STATUS------------------------------ ---------SYSTEM ONLINESYSAUX ONLINEUNDOTBS1 ONLINETEMP ONLINEUSERS ONLINEWZL_TABLESPACE_TMP ONLINEWZL_BIG_TABLESPACE ONLINE7 rows selected.SQL> alter tablespace WZL_TABLESPACE_TMP offline;Tablespace altered.# 已经离线
第二部:在dba_data_files;里面能看到数据文件,可以把它用cp 拷贝走
1* select TABLESPACE_NAME,FILE_NAME from dba_data_filesSQL> /TABLESPACE_NAME FILE_NAME-------------------- ----------------------------------------WZL_TABLESPACE_TMP /u01/product/oradata/orcl/wzl01.dbfWZL_BIG_TABLESPACE /u01/product/oradata/orcl/wzl02.dbfUSERS /u01/product/oradata/orcl/users01.dbfUNDOTBS1 /u01/product/oradata/orcl/undotbs01.dbfSYSAUX /u01/product/oradata/orcl/sysaux01.dbfSYSTEM /u01/product/oradata/orcl/system01.dbf# 下面将数据文件拷贝到其他地方SQL> ho cp /u01/product/oradata/orcl/wzl01.dbf /u01/product/oradata/wzl001.dbf
第三步:然后在系统中修改:
alter tablespasce <> rename datafile 'oldpath' to 'new_path';
SQL> alter tablespace WZL_TABLESPACE_TMP rename datafile '/u01/product/oradata/orcl/wzl01.dbf' to '/u01/product/oradata/wzl001.dbf';Tablespace altered.
第四步:最后在online
SQL> select TABLESPACE_NAME,FILE_NAME from dba_data_files;TABLESPACE_NAME FILE_NAME-------------------- ----------------------------------------WZL_TABLESPACE_TMP /u01/product/oradata/wzl001.dbfWZL_BIG_TABLESPACE /u01/product/oradata/orcl/wzl02.dbfUSERS /u01/product/oradata/orcl/users01.dbfUNDOTBS1 /u01/product/oradata/orcl/undotbs01.dbfSYSAUX /u01/product/oradata/orcl/sysaux01.dbfSYSTEM /u01/product/oradata/orcl/system01.dbfSQL> alter tablespace WZL_TABLESPACE_TMP online;Tablespace altered.# 表空间上线成功
迁移表空间下的某个数据文件:
第一步:离线数据文件:
alter database datafile 6 offline; oracle 会将数据文件头部scn号码锁住状态变为recover
1* select file#,name,status from v$datafileSQL> / FILE# NAME STATUS---------- ---------------------------------------- ------- 1 /u01/product/oradata/orcl/system01.dbf SYSTEM 2 /u01/product/oradata/orcl/sysaux01.dbf ONLINE 3 /u01/product/oradata/orcl/undotbs01.dbf ONLINE 4 /u01/product/oradata/orcl/users01.dbf ONLINE 5 /u01/product/oradata/wzl001.dbf ONLINE 6 /u01/product/oradata/orcl/wzl02.dbf ONLINE# 下面数据文件被离线,状态改为recoerSQL> select a.tablespace_name,a.file_name,a.bytes,b.status from dba_data_files a,v$datafile b where a.file_name = b.name;TABLESPACE_NAME FILE_NAME BYTES STATUS-------------------- ---------------------------------------- ---------- -------WZL_TABLESPACE_TMP /u01/product/oradata/wzl001.dbf RECOVERWZL_BIG_TABLESPACE /u01/product/oradata/orcl/wzl02.dbf 52428800 ONLINEUSERS /u01/product/oradata/orcl/users01.dbf 5242880 ONLINEUNDOTBS1 /u01/product/oradata/orcl/undotbs01.dbf 162529280 ONLINESYSAUX /u01/product/oradata/orcl/sysaux01.dbf 639631360 ONLINESYSTEM /u01/product/oradata/orcl/system01.dbf 744488960 SYSTEMWZL_TABLESPACE_TMP /u01/product/oradata/wzl002.dbf 52428800 ONLINE
第二步:物理文件拷贝走
[root@wangzilong orcl]# ll wzl001.dbf-rw-r----- 1 root root 62922752 Dec 7 11:43 wzl001.dbf[root@wangzilong orcl]# pwd/u01/product/oradata/orcl
第三步:修改系统数据
alter database rename file 'oldpath' to 'newpath';
SQL> alter database rename file '/u01/product/oradata/wzl001.dbf' to '/u01/product/oradata/orcl/wzl001.dbf';Database altered.
第四步: 恢复数据文件
recover datafile 5;
SQL> recover datafile 5;Media recovery complete.SQL> select file#,name,status from v$datafile; FILE# NAME STATUS---------- ---------------------------------------- ------- 1 /u01/product/oradata/orcl/system01.dbf SYSTEM 2 /u01/product/oradata/orcl/sysaux01.dbf ONLINE 3 /u01/product/oradata/orcl/undotbs01.dbf ONLINE 4 /u01/product/oradata/orcl/users01.dbf ONLINE 5 /u01/product/oradata/orcl/wzl001.dbf OFFLINE 6 /u01/product/oradata/orcl/wzl02.dbf ONLINE 7 /u01/product/oradata/wzl002.dbf ONLINE7 rows selected.# 数据文件5 已经恢复成功。状态从recoer 变为 offline
第五步:online 联机数据文件
alter database datafile 6 online;
SQL> alter database datafile '/u01/product/oradata/orcl/wzl001.dbf' online;Database altered.SQL> select file#,name,status from v$datafile; FILE# NAME STATUS---------- ---------------------------------------- ------- 1 /u01/product/oradata/orcl/system01.dbf SYSTEM 2 /u01/product/oradata/orcl/sysaux01.dbf ONLINE 3 /u01/product/oradata/orcl/undotbs01.dbf ONLINE 4 /u01/product/oradata/orcl/users01.dbf ONLINE 5 /u01/product/oradata/orcl/wzl001.dbf ONLINE 6 /u01/product/oradata/orcl/wzl02.dbf ONLINE 7 /u01/product/oradata/wzl002.dbf ONLINE7 rows selected.# 数据文件5 已经上线成功
注意:在非归档模式下是不可以对表空间里面的某个数据文件下线的。用archive log list 查看是否是归档,如果是非归档,则设置为归档。如果设置归档失败,则需要恢复数据库recover database。然后关闭数据库,重启数据库到mount 状态下,这个时候设置归档alter database archivelog 就会成功,然后再继续对表空间中的数控文件下线就没有问题
2 在mount 状态下迁移(工作中不建议使用)
第一步:把文件拷贝走
第二步:修改系统中文件的路径
alter database rename file ‘oldpath' to 'newpath';
第三步:打开数据库alter database open;
8.3.3 表空间的扩容
表空间的使用率达到85%以上需要扩容
desc dba_data_files; 里面能看到总的大小
SQL> select tablespace_name,bytes/1024/1024 from dba_data_files;TABLESPACE_NAME BYTES/1024/1024-------------------- ---------------WZL_TABLESPACE_TMP 50WZL_BIG_TABLESPACE 50USERS 5UNDOTBS1 155SYSAUX 610SYSTEM 710
desc dba_free_space 里面能看到剩余表空间
SQL> select tablespace_name,bytes/1024/1024 from dba_free_space where tablespace_name = 'WZL_TABLESPACE_TMP';TABLESPACE_NAME BYTES/1024/1024-------------------- ---------------WZL_TABLESPACE_TMP 48.9375
上面表空间和剩余空间可以计算除表空间的使用率
SQL> select a.tablespace_name,a.bytes/1024/1024 total_space,b.bytes/1024/1024 free_space,(a.bytes/1024/1024-b.bytes/1024/1024)/a.bytes/1024/1024 use_l from dba_data_files a,dba_free_space b where a.tablespace_name = b.tablespace_name and a.tablespace_name = 'WZL_TABLESPACE_TMP';TABLESPACE_NAME TOTAL_SPACE FREE_SPACE USE_L-------------------- ----------- ---------- ----------WZL_TABLESPACE_TMP 50 48.9375 1.9327E-14
8.3.3.1 修改表空间为自动增长(之后只需要关注磁盘就可以了) autoextend on
dba_data_file.autoextensible 表示是否是自动增长
alter database <> datafile 'oldpath' autoextend on;
SQL> select tablespace_name,AUTOEXTENSIBLE,file_name from dba_data_files;TABLESPACE_NAME AUT FILE_NAME-------------------- --- ----------------------------------------WZL_TABLESPACE_TMP NO /u01/product/oradata/wzl001.dbfWZL_BIG_TABLESPACE YES /u01/product/oradata/orcl/wzl02.dbfUSERS YES /u01/product/oradata/orcl/users01.dbfUNDOTBS1 YES /u01/product/oradata/orcl/undotbs01.dbfSYSAUX YES /u01/product/oradata/orcl/sysaux01.dbfSYSTEM YES /u01/product/oradata/orcl/system01.dbf6 rows selected.# 表空间WZL_TABLESPACE_TMP 不自动增长SQL> alter database datafile '/u01/product/oradata/wzl001.dbf' autoextend on;Database altered.# 设置自动增长成功SQL> select tablespace_name,AUTOEXTENSIBLE,file_name from dba_data_files;TABLESPACE_NAME AUT FILE_NAME-------------------- --- ----------------------------------------WZL_TABLESPACE_TMP YES /u01/product/oradata/wzl001.dbfWZL_BIG_TABLESPACE YES /u01/product/oradata/orcl/wzl02.dbfUSERS YES /u01/product/oradata/orcl/users01.dbfUNDOTBS1 YES /u01/product/oradata/orcl/undotbs01.dbfSYSAUX YES /u01/product/oradata/orcl/sysaux01.dbfSYSTEM YES /u01/product/oradata/orcl/system01.dbf6 rows selected.
8.3.3.2 重新修改表空间大小
alter database datafile ‘path’ resize 60M;
SQL> alter database datafile '/u01/product/oradata/wzl001.dbf' resize 60M;Database altered.# 增加到60M SQL> select tablespace_name,AUTOEXTENSIBLE,file_name,bytes from dba_data_files;TABLESPACE_NAME AUT FILE_NAME BYTES-------------------- --- ---------------------------------------- ----------WZL_TABLESPACE_TMP YES /u01/product/oradata/wzl001.dbf 62914560WZL_BIG_TABLESPACE YES /u01/product/oradata/orcl/wzl02.dbf 52428800USERS YES /u01/product/oradata/orcl/users01.dbf 5242880UNDOTBS1 YES /u01/product/oradata/orcl/undotbs01.dbf 162529280SYSAUX YES /u01/product/oradata/orcl/sysaux01.dbf 639631360SYSTEM YES /u01/product/oradata/orcl/system01.dbf 7444889606 rows selected.# 修改表空间大小成功
8.3.3.3 给表空间下增加数据文件
alter tablespace <> add datafile 'newpath' size 50M;
建议增加的数据文件放在不同的磁盘,利于IO 访问,利于数据库安全
SQL> alter tablespace WZL_TABLESPACE_TMP add datafile '/u01/product/oradata/wzl002.dbf' size 50M;Tablespace altered.SQL> select tablespace_name,AUTOEXTENSIBLE,file_name,bytes from dba_data_files;TABLESPACE_NAME AUT FILE_NAME BYTES-------------------- --- ---------------------------------------- ----------WZL_TABLESPACE_TMP YES /u01/product/oradata/wzl001.dbf 62914560WZL_BIG_TABLESPACE YES /u01/product/oradata/orcl/wzl02.dbf 52428800USERS YES /u01/product/oradata/orcl/users01.dbf 5242880UNDOTBS1 YES /u01/product/oradata/orcl/undotbs01.dbf 162529280SYSAUX YES /u01/product/oradata/orcl/sysaux01.dbf 639631360SYSTEM YES /u01/product/oradata/orcl/system01.dbf 744488960WZL_TABLESPACE_TMP NO /u01/product/oradata/wzl002.dbf 524288007 rows selected.# 上面表空间WZL_TABLESPACE_TMP 中添加列一个数据文件
8.3.4 表空间的删除
表空间下没有对象可以这么删除 drop tablespasce <> ;
表空间下的对象也同时删除 drop tablespace <> including contents;
但是上面两种方法不会删除物理文件。
drop tablespace <> including contents and datafiles; 删除表空间,删除表空间里面的对象,删除物理文件。
8.3.5 表空间视图的查询
dba_tablespaces :查询所有的表空间有那些
dba_data_files; dba_free_space ; 查询表空间下大小。
v$tablespace; 也可以看到,表空间的信息。是动态的。
8.4 undo 表空间
8.4.1 作用
8.4.1.1 回退操作
8.4.1.2 闪回操作
8.4.1.3 一致性
8.4.2 创建
undo 表空间出问题了需要创建表空间,并设置为默认的undo
create undo tablespace <> datafile 'path' size <> autoextend on;
工作中需要undo 表空间创建为自动增长的表空间。
SQL> create undo tablespace undowzl1 datafile '/u01/product/oradata/orcl/undowzl1.dbf' size 100M autoextend on;Tablespace created.# undo 表空间已经创建成功SQL> select tablespace_name,contents from dba_tablespaces;TABLESPACE_NAME CONTENTS-------------------- ---------SYSTEM PERMANENTSYSAUX PERMANENTUNDOTBS1 UNDOTEMP TEMPORARYUSERS PERMANENTWZL_TABLESPACE_TMP PERMANENTWZL_BIG_TABLESPACE PERMANENTUNDOWZL1 UNDO8 rows selected.SQL> select tablespace_name,segment_name from dba_rollback_segs where tablespace_name like 'UNDOW%';TABLESPACE_NAME SEGMENT_NAME-------------------- ------------------------------UNDOWZL1 _SYSSMU11_1766216107$UNDOWZL1 _SYSSMU12_2229279369$UNDOWZL1 _SYSSMU13_1058550138$UNDOWZL1 _SYSSMU14_3194392635$UNDOWZL1 _SYSSMU15_2910016055$UNDOWZL1 _SYSSMU16_3978893589$UNDOWZL1 _SYSSMU17_3298471941$UNDOWZL1 _SYSSMU18_485156876$UNDOWZL1 _SYSSMU19_1750812237$UNDOWZL1 _SYSSMU20_3915053547$10 rows selected.# 自己新建的表空间默认也是10个段
设置为默认undo 表空间
alter system set undo_tablespace = undowzl1 scope=spfile;
SQL> alter system set undo_tablespace=UNDOWZL1;System altered.
1* select tablespace_name,segment_name,status from dba_rollback_segs where tablespace_name like 'UNDOT%'SQL> /TABLESPACE_NAME SEGMENT_NAME STATUS-------------------- ------------------------------ ----------------UNDOTBS1 _SYSSMU1_1240252155$ OFFLINEUNDOTBS1 _SYSSMU2_111974964$ OFFLINEUNDOTBS1 _SYSSMU3_4004931649$ OFFLINEUNDOTBS1 _SYSSMU4_1126976075$ OFFLINEUNDOTBS1 _SYSSMU5_4011504098$ OFFLINEUNDOTBS1 _SYSSMU6_3654194381$ OFFLINEUNDOTBS1 _SYSSMU7_4222772309$ OFFLINEUNDOTBS1 _SYSSMU8_3612859353$ OFFLINEUNDOTBS1 _SYSSMU9_3945653786$ OFFLINEUNDOTBS1 _SYSSMU10_3271578125$ OFFLINE10 rows selected.# offline 表示不使用
8.4.3 查看undo 表空间
查看当前使用的undo表空间是哪一个,大小是多大
show parameter undo_
SQL> show parameter undo_;NAME TYPE VALUE------------------------------------ ----------- ------------------------------undo_management string AUTO # 自动|手动管理方式undo_retention integer 900 #事物操作在保持时间undo_tablespace string UNDOTBS1 # undo 表空间名称
查看当前系统使用的默认的永久undo 表空间
8.4.4 undo 的管理
9i 叫回退段 rollback segment
10g 的时候有rollback segment 和undo
aum:auto undo management 自动管理
mum:manual undo management 手动管理
11g:undo 如果设置为手动管理,普通用户就不可以做DML 操作,sys 可以做。
10个段
SQL> select tablespace_name,segment_name from dba_rollback_segs where tablespace_name like 'UNDO%';TABLESPACE_NAME SEGMENT_NAME-------------------- ------------------------------UNDOTBS1 _SYSSMU1_1240252155$UNDOTBS1 _SYSSMU2_111974964$UNDOTBS1 _SYSSMU3_4004931649$UNDOTBS1 _SYSSMU4_1126976075$UNDOTBS1 _SYSSMU5_4011504098$UNDOTBS1 _SYSSMU6_3654194381$UNDOTBS1 _SYSSMU7_4222772309$UNDOTBS1 _SYSSMU8_3612859353$UNDOTBS1 _SYSSMU9_3945653786$UNDOTBS1 _SYSSMU10_3271578125$10 rows selected.
默认undo100M 大小。
SQL> select tablespace_name,bytes/1024/1024 bytes from dba_data_files where tablespace_name like 'UNDO%';TABLESPACE_NAME BYTES-------------------- ----------UNDOTBS1 155
删除undo :
undo 默认是不可以offline,不可以删除。如果要删除,可以设置为手动不要自动管理,重启状态就可以看到是offline 不使用,这个时候就可以删除了
SQL> alter system set undo_management=manual scope=spfile;System altered.# 修改为手动SQL> show parameter undo_;NAME TYPE VALUE------------------------------------ ----------- ------------------------------undo_management string MANUALundo_retention integer 900undo_tablespace string UNDOWZL1# 已经改不不自动了SQL> select tablespace_name,status from dba_rollback_segs where tablespace_name='UNDOWZL1';TABLESPACE_NAME STATUS-------------------- ----------------UNDOWZL1 OFFLINEUNDOWZL1 OFFLINEUNDOWZL1 OFFLINEUNDOWZL1 OFFLINEUNDOWZL1 OFFLINEUNDOWZL1 OFFLINEUNDOWZL1 OFFLINEUNDOWZL1 OFFLINEUNDOWZL1 OFFLINEUNDOWZL1 OFFLINE# 这个时候可以删除了SQL> drop tablespace UNDOWZL1;Tablespace dropped.# 再在mount条件下修改默认使用undo 表空间 1* alter system set undo_tablespace=undotbs1 scope=spfileSQL> /System altered.# 在重启数据库SQL> startup force;ORACLE instance started.Total System Global Area 2438529024 bytesFixed Size 2230792 bytesVariable Size 570426872 bytesDatabase Buffers 1845493760 bytesRedo Buffers 20377600 bytesDatabase mounted.Database opened.SQL> show parameter undo_NAME TYPE VALUE------------------------------------ ----------- ------------------------------undo_management string AUTOundo_retention integer 900undo_tablespace string UNDOTBS1
如果undo 表空间中有内容丢失如何处理:
1 shutdown immediate;
2 修改undo 管理方式为手动
alter system set undo_management=manual scope=spfile;
SQL> show parameter undo_;NAME TYPE VALUE------------------------------------ ----------- ------------------------------undo_management string MANUALundo_retention integer 900undo_tablespace string UNDOTBS1# 已经设置为手动
3 重启数据库
shutdown immediate;
startup mount;
4 将数据文件离线
alter database datafile <> offline drop;
SQL> alter database datafile '/u01/product/oradata/orcl/undotbs01.dbf' offline drop;Database altered.# 已经删除了undo 表空间
5 打开数据库
alter database open;
6 删除丢失的undo 表空间
drop tablespace undotbs;
SQL> drop tablespace UNDOTBS1;Tablespace dropped.
7 新建一个undo 设为默认的
create undo tablespace undotbs2 autoextend on;
SQL> create undo tablespace undotbs2 datafile '/u01/product/oradata/orcl/undotbs02.dbf' size 50M autoextend on;Tablespace created.
alter system set undo_tablespace=undotbs2;
SQL> alter system set undo_tablespace=undotbs2 scope=spfile;System altered.
注意:由于之前为了删除undo 表空间修改管理模式为吗怒阿里手动,这个时候系统不会使用undo 表空间了才可以删除。但是如果自己新建了新的表空间顺便设置为默认的undo 表空间的时候会报错说只能在auto模式下设置,但是当我们在mount模式下修改为auto的时候 数据库又无法open,所以无法将新建的undo设置为默认undo表空间,会陷入死循环的尴尬,这个时候需要重新设置为手动,然后在修改为默认表空间的语句后面加上 scope=spfile,就好了,最后在重启到mount 模式喜爱修改为auto 就可以open。
8 把undo 的管理设置为自动管理
alter system set undo_management=auto scpoe=spfile;
SQL> alter system set undo_management=auto scope=spfile;System altered.
startup force;
SQL> show parameter undo_;NAME TYPE VALUE------------------------------------ ----------- ------------------------------undo_management string AUTOundo_retention integer 900undo_tablespace string UNDOTBS2
如果6删除不成功
7 创建隐藏除数文件
create pfile= ‘path' from spfile;
8 加隐藏参数过滤活动的undo 段
select segment_name from dba_rollback_segs where tablespace_name = '';
查到活动的undo 段用vi 添加到上面创建的pfile 中:
添加:corrupted_rollback=segments=('',''^)
9 使用pfile 启动数据库
startup pfile=‘path’;
10 删除undotbs1;
drop tablespace undotbs1 including conents and datafiles;
重新创建一个undo 并设置为自动管理,且设置为默认 undo 文件重启数据库就可以了。
8.4.5 undo 表空间的扩容
有三种方法
1 将undo 表空间下数据文件改为autoextend on
alter database datafile 'path' autoextend on;
2 将undo 表空间下的数据文件大小重新设置resize
alter database datafile 'path' resize <>;
3 给undo表空间增加爱数据文件
alter tablespace <> add datafile 'path' size <> ;
8.5 临时表空间temp
1 临时表空间的作用
a:存放临时文件
b:排序内存不够用的时候是使用临时表空间
select tablespace_name from database_properties;
desc dba_temp_files;能看到临时表空间的详细信息。
1* select TABLESPACE_NAME,FILE_NAME from dba_temp_filesSQL> /TABLESPACE_NAME FILE_NAME-------------------- --------------------------------------------------TEMP /u01/product/oradata/orcl/temp01.dbf
2 临时表空间的创建
create tmporary tablespace <> tempfile 'path' size <>;
SQL> create temporary tablespace tempwzl1 tempfile '/u01/product/oradata/orcl/tempwzl01.dbf' size 20M;Tablespace created.
3 临时表空间的管理
扩容有三种方法:改为自动增长,修改大小,添加数据文件
4 临时表空间丢失如何处理
11g -- 中临时表空间丢失只需要重启就可以了。或者创建一个临时表空间并设置为默认就可以了。
alter database default temporary tablespace <>;
dba_temp_files;
SQL> alter database default temporary tablespace tempwzl1;Database altered.SQL> select tablespace_name,file_name from dba_temp_files;TABLESPACE_NAME FILE_NAME-------------------- --------------------------------------------------TEMP /u01/product/oradata/orcl/temp01.dbfTEMPWZL1 /u01/product/oradata/orcl/tempwzl01.dbf# 下面可以看到默认的临时表空间已经修改了 1* select PROPERTY_NAME,PROPERTY_VALUE from database_properties where PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE'SQL> /PROPERTY_NAME PROPERTY_VALUE------------------------------ ----------------------------------------DEFAULT_TEMP_TABLESPACE TEMPWZL1