1 srvctlsql
[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|ons For 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 -h The 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
bash-4.1$ srvctl status database -d orcl Database is running.
bash-4.1$ crs_stat -t ora.orcl.db Name Type Target State Host ------------------------------------------------------------ ora.orcl.db ora....se.type ONLINE ONLINE wangzilong # bash-4.1$ crs_stat -t ora.orcl.db Name Type Target State Host ------------------------------------------------------------ ora.orcl.db ora....se.type ONLINE ONLINE wangzilong bash-4.1$ crs_stat ora.orcl.db NAME=ora.orcl.db TYPE=ora.database.type TARGET=ONLINE STATE=ONLINE on wangzilong #crs_start 啓動 #crs_stop 關閉
2 實例啓動的階段服務器
sqlplus啓動的三個階段session
2.1 nomount 實例啓動階段(參數文件)數據結構
startup nomount;oracle
根據參數文件的位置啓動實例,工具
根據參數文件中定義數據庫的名字,參數文件中內存的分配狀況,參數文件定義的權限、位置和個數,將這些過程寫入到用戶日誌和告警日誌,啓動後臺進程,初始化部分視圖。(v$parameter,v$spprameter 就能夠訪問)spa
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 參數文件管理
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 50M SQL> / 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 drop ORA-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.log SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. # 關閉數據庫 SQL> startup mount; ORACLE instance started. Total System Global Area 2438529024 bytes Fixed Size 2230792 bytes Variable Size 570426872 bytes Database Buffers 1845493760 bytes Redo Buffers 20377600 bytes Database 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 已經變成inactive SQL> 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 Mode Automatic archival Disabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 1 Current log sequence 1 # 查看是否有歸檔功能,Oldest online log sequence 表示下一個歸檔的日誌是1號
設置爲歸檔:
startup mount
alter database archivelog;
SQL> startup mount; ORACLE instance started. Total System Global Area 2438529024 bytes Fixed Size 2230792 bytes Variable Size 570426872 bytes Database Buffers 1845493760 bytes Redo Buffers 20377600 bytes Database mounted. SQL> alter database archivelog; Database altered. SQL> alter database open; Database altered. SQL> archive log list; Database log mode Archive Mode # 已經開啓歸檔 Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 1 Next log sequence to archive 1 Current log sequence 1 # 歸檔日誌路徑 SQL> show parameter DB_RECOVERY_FILE_DEST; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string /u01/product/fast_recovery_are a db_recovery_file_dest_size big integer 4122M SQL> desc v$archived_log; # 上面v$archived_log 裏面記錄歸檔日誌的詳細信息 SQL> alter database noarchivelog; Database altered. # 上面關閉歸檔 SQL> archive log list; Database log mode No Archive Mode Automatic archival Disabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 1 Current 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 sysdba SQL*Plus: Release 11.2.0.3.0 Production on Mon Dec 5 15:49:07 2016 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to an idle instance. # 啓動 SQL> startup ORACLE instance started. Total System Global Area 2438529024 bytes Fixed Size 2230792 bytes Variable Size 570426872 bytes Database Buffers 1845493760 bytes Redo Buffers 20377600 bytes Database 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_files SQL> / 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 ONLINE SYSAUX 8192 ONLINE UNDOTBS1 8192 ONLINE TEMP 8192 1048576 ONLINE USERS 8192 ONLINE WZL_TABLESPACE 8192 ONLINE 6 rows selected.
select tablespace_name,bytes from dba_data_files; 能夠查看錶空間有多大
、SQL> select tablespace_name,bytes from dba_data_files; TABLESPACE_NAME BYTES ------------------------------ ---------- WZL_TABLESPACE 52428800 USERS 5242880 UNDOTBS1 162529280 SYSAUX 639631360 SYSTEM 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 EMPNEW WZL_TABLESPACE TMP_WZL_20161206_1 USERS TMP_20161206_2 USERS TMP_20161206 USERS LEMP USERS TMP1 USERS EMP1 USERS DEPT1 USERS SALGRADE USERS BONUS USERS EMP # 建表後默認都放在指定的表空間下
SQL> select property_name,property_value from database_properties where property_name like '%DEF%'; PROPERTY_NAME PROPERTY_VALUE -------------------- ------------------------------ DEFAULT_TEMP_TABLESP TEMP ACE DEFAULT_PERMANENT_TA WZL_TABLESPACE BLESPACE DEFAULT_EDITION ORA$BASE DEFAULT_TBS_TYPE SMALLFILE # 查看默認使用的表空間信息
8.3 表空間的管理
8.3.1 表空間的修改
只有用戶本身新建的報表空間能夠修改。
alter tablespace <> rename to <>;
TABLESPACE_NAME ------------------------------ SYSTEM SYSAUX UNDOTBS1 TEMP USERS WZL_TABLESPACE WZL_BIG_TABLESPACE 7 rows selected. SQL> alter tablespace WZL_TABLESPACE rename to WZL_TABLESPACE_tmp; Tablespace altered. #表空間更名成功 SQL> select tablespace_name from dba_tablespaces; TABLESPACE_NAME ------------------------------ SYSTEM SYSAUX UNDOTBS1 TEMP USERS WZL_TABLESPACE_TMP WZL_BIG_TABLESPACE 7 rows selected.
8.3.2 表空間下數據庫文件或者表空間的遷移
只有用戶建的表空間能夠遷移(磁盤空間已滿),若是表空間不夠又不遷移數據文件中的數據會被清空。
1 在open 狀態下遷移
不可以離線的都不能夠作遷移操做。
總體遷移表空間:
第一步:alter tablespace <> offline;
TABLESPACE_NAME STATUS ------------------------------ --------- SYSTEM ONLINE SYSAUX ONLINE UNDOTBS1 ONLINE TEMP ONLINE USERS ONLINE WZL_TABLESPACE_TMP ONLINE WZL_BIG_TABLESPACE ONLINE 7 rows selected. SQL> alter tablespace WZL_TABLESPACE_TMP offline; Tablespace altered. # 已經離線
第二部:在dba_data_files;裏面能看到數據文件,能夠把它用cp 拷貝走
1* select TABLESPACE_NAME,FILE_NAME from dba_data_files SQL> / TABLESPACE_NAME FILE_NAME -------------------- ---------------------------------------- WZL_TABLESPACE_TMP /u01/product/oradata/orcl/wzl01.dbf WZL_BIG_TABLESPACE /u01/product/oradata/orcl/wzl02.dbf USERS /u01/product/oradata/orcl/users01.dbf UNDOTBS1 /u01/product/oradata/orcl/undotbs01.dbf SYSAUX /u01/product/oradata/orcl/sysaux01.dbf SYSTEM /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.dbf WZL_BIG_TABLESPACE /u01/product/oradata/orcl/wzl02.dbf USERS /u01/product/oradata/orcl/users01.dbf UNDOTBS1 /u01/product/oradata/orcl/undotbs01.dbf SYSAUX /u01/product/oradata/orcl/sysaux01.dbf SYSTEM /u01/product/oradata/orcl/system01.dbf SQL> alter tablespace WZL_TABLESPACE_TMP online; Tablespace altered. # 表空間上線成功
遷移表空間下的某個數據文件:
第一步:離線數據文件:
alter database datafile 6 offline; oracle 會將數據文件頭部scn號碼鎖住狀態變爲recover
1* select file#,name,status from v$datafile SQL> / 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 # 下面數據文件被離線,狀態改成recoer SQL> 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 RECOVER WZL_BIG_TABLESPACE /u01/product/oradata/orcl/wzl02.dbf 52428800 ONLINE USERS /u01/product/oradata/orcl/users01.dbf 5242880 ONLINE UNDOTBS1 /u01/product/oradata/orcl/undotbs01.dbf 162529280 ONLINE SYSAUX /u01/product/oradata/orcl/sysaux01.dbf 639631360 ONLINE SYSTEM /u01/product/oradata/orcl/system01.dbf 744488960 SYSTEM WZL_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 ONLINE 7 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 ONLINE 7 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 50 WZL_BIG_TABLESPACE 50 USERS 5 UNDOTBS1 155 SYSAUX 610 SYSTEM 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.dbf WZL_BIG_TABLESPACE YES /u01/product/oradata/orcl/wzl02.dbf USERS YES /u01/product/oradata/orcl/users01.dbf UNDOTBS1 YES /u01/product/oradata/orcl/undotbs01.dbf SYSAUX YES /u01/product/oradata/orcl/sysaux01.dbf SYSTEM YES /u01/product/oradata/orcl/system01.dbf 6 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.dbf WZL_BIG_TABLESPACE YES /u01/product/oradata/orcl/wzl02.dbf USERS YES /u01/product/oradata/orcl/users01.dbf UNDOTBS1 YES /u01/product/oradata/orcl/undotbs01.dbf SYSAUX YES /u01/product/oradata/orcl/sysaux01.dbf SYSTEM YES /u01/product/oradata/orcl/system01.dbf 6 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 62914560 WZL_BIG_TABLESPACE YES /u01/product/oradata/orcl/wzl02.dbf 52428800 USERS YES /u01/product/oradata/orcl/users01.dbf 5242880 UNDOTBS1 YES /u01/product/oradata/orcl/undotbs01.dbf 162529280 SYSAUX YES /u01/product/oradata/orcl/sysaux01.dbf 639631360 SYSTEM YES /u01/product/oradata/orcl/system01.dbf 744488960 6 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 62914560 WZL_BIG_TABLESPACE YES /u01/product/oradata/orcl/wzl02.dbf 52428800 USERS YES /u01/product/oradata/orcl/users01.dbf 5242880 UNDOTBS1 YES /u01/product/oradata/orcl/undotbs01.dbf 162529280 SYSAUX YES /u01/product/oradata/orcl/sysaux01.dbf 639631360 SYSTEM YES /u01/product/oradata/orcl/system01.dbf 744488960 WZL_TABLESPACE_TMP NO /u01/product/oradata/wzl002.dbf 52428800 7 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 PERMANENT SYSAUX PERMANENT UNDOTBS1 UNDO TEMP TEMPORARY USERS PERMANENT WZL_TABLESPACE_TMP PERMANENT WZL_BIG_TABLESPACE PERMANENT UNDOWZL1 UNDO 8 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$ OFFLINE UNDOTBS1 _SYSSMU2_111974964$ OFFLINE UNDOTBS1 _SYSSMU3_4004931649$ OFFLINE UNDOTBS1 _SYSSMU4_1126976075$ OFFLINE UNDOTBS1 _SYSSMU5_4011504098$ OFFLINE UNDOTBS1 _SYSSMU6_3654194381$ OFFLINE UNDOTBS1 _SYSSMU7_4222772309$ OFFLINE UNDOTBS1 _SYSSMU8_3612859353$ OFFLINE UNDOTBS1 _SYSSMU9_3945653786$ OFFLINE UNDOTBS1 _SYSSMU10_3271578125$ OFFLINE 10 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 MANUAL undo_retention integer 900 undo_tablespace string UNDOWZL1 # 已經改不不自動了 SQL> select tablespace_name,status from dba_rollback_segs where tablespace_name='UNDOWZL1'; TABLESPACE_NAME STATUS -------------------- ---------------- UNDOWZL1 OFFLINE UNDOWZL1 OFFLINE UNDOWZL1 OFFLINE UNDOWZL1 OFFLINE UNDOWZL1 OFFLINE UNDOWZL1 OFFLINE UNDOWZL1 OFFLINE UNDOWZL1 OFFLINE UNDOWZL1 OFFLINE UNDOWZL1 OFFLINE # 這個時候能夠刪除了 SQL> drop tablespace UNDOWZL1; Tablespace dropped. # 再在mount條件下修改默認使用undo 表空間 1* alter system set undo_tablespace=undotbs1 scope=spfile SQL> / System altered. # 在重啓數據庫 SQL> startup force; ORACLE instance started. Total System Global Area 2438529024 bytes Fixed Size 2230792 bytes Variable Size 570426872 bytes Database Buffers 1845493760 bytes Redo Buffers 20377600 bytes Database mounted. Database opened. SQL> show parameter undo_ NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_management string AUTO undo_retention integer 900 undo_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 MANUAL undo_retention integer 900 undo_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 AUTO undo_retention integer 900 undo_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_files SQL> / 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.dbf TEMPWZL1 /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