oraclec存儲對象管理

建立一個大表空間big_tbs,大小爲1G,然後刪掉

SQL> create bigfile tablespace big_tbs datafile '/home/app/oracle/oradata/ORCL/datafile/big_tbs.dbf' size 1g;

表空間已創建。

SQL> drop tablespace big_tbs including contents and datafiles;

表空間已刪除。

建立一個index_tbs表空間,每個區大小1M,  然後查下該表空間的數據文件

SQL> create tablespace index_tbs datafile '/home/app/oracle/oradata/ORCL/datafile/index_tbs.dbf' size 10m uniform size 1m;

表空間已創建。

SQL> select file_name from dba_data_files where tablespace_name='INDEX_TBS';

FILE_NAME
--------------------------------------------------------------------------------
/home/app/oracle/oradata/ORCL/datafile/index_tbs.dbf

建立一個data表空間,指定默認存儲方式(初始化區512k,下一個區512k)

SQL> create tablespace data datafile '/home/app/oracle/oradata/ORCL/datafile/data.dbf' size 10m default storage (initial 512k next 512k);

表空間已創建。

建立一個prod表空間,自動增長,大小不限制,  使用ASSM技術

extent management local 定義本地管理表空間(LMT),segment space management auto 定義自動段空間管理(ASSM)

SQL> create tablespace prod datafile '/home/app/oracle/oradata/ORCL/datafile/prod.dbf'size 10m autoextend on next 1m maxsize unlimited extent management local segment space management auto;

表空間已創建。

修改data表空間大小爲100M,併爲其增加一個100M的數據文件

SQL> select file_name from dba_data_files where tablespace_name = 'DATA';

FILE_NAME
--------------------------------------------------------------------------------
/home/app/oracle/oradata/ORCL/datafile/data.dbf

SQL> alter database datafile '/home/app/oracle/oradata/ORCL/datafile/data.dbf' resize 100m;

數據庫已更改。

SQL> alter tablespace data add datafile '/home/app/oracle/oradata/ORCL/datafile/data1.dbf' size 100m;

表空間已更改。

SQL> select file_name from dba_data_files where tablespace_name='DATA';

FILE_NAME
--------------------------------------------------------------------------------
/home/app/oracle/oradata/ORCL/datafile/data.dbf
/home/app/oracle/oradata/ORCL/datafile/data1.dbf

SQL> 

建立一個表空間db4k,使用4k的塊

默認建立的表空間爲8k,若想用不同塊表空間,需激活對應db cache。激活時設置大小不能超過SGA內存總和,通常是2的N次方


SQL> show parameter db_%_cache_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_16k_cache_size                    big integer 0
db_2k_cache_size                     big integer 0
db_32k_cache_size                    big integer 0
db_4k_cache_size                     big integer 0
db_8k_cache_size                     big integer 0
db_flash_cache_size                  big integer 0
db_keep_cache_size                   big integer 0
db_recycle_cache_size                big integer 0

SQL> alter system set db_4k_cache_size=16m scope=both ;

系統已更改。

SQL> show parameter db_4k_cache_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_4k_cache_size                     big integer 16M

SQL> create tablespace db4k datafile '/home/app/oracle/oradata/ORCL/datafile/db4k.dbf' size 10m blocksize 4k extent management local;

表空間已創建。

建立臨時表空間組gtemp, gtemp包含temp1.temp2表空間,每個大小100M,並設置爲系統默認臨時表空間


SQL> create temporary tablespace temp1 tempfile '/home/app/oracle/oradata/ORCL/datafile/temp1.tmp' size 100m;

表空間已創建。

SQL> create temporary tablespace temp2 tempfile '/home/app/oracle/oradata/ORCL/datafile/temp2.tmp' size 100m;

表空間已創建。

SQL> alter tablespace temp1 tablespace group gtemp;

表空間已更改。

SQL> alter tablespace temp2 tablespace group gtemp;

表空間已更改。


SQL> select * from dba_tablespace_groups;

GROUP_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------
GTEMP                          TEMP1
GTEMP                          TEMP2

已選擇 2 行。

SQL> alter database default temporary tablespace gtemp;

數據庫已更改。

如何修改系統默認表空間,用戶默認表空間等

SQL> select * from dba_tablespace_groups;

GROUP_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------
TEMP_TEST                      TMP_01
TEMP_TEST                      TMP_02
TMP_TEST                       TMP_03
TMP_TEST                       TMP_04
GTEMP                          TEMP1
GTEMP                          TEMP2

已選擇 6 行。

SQL> alter database default temporary tablespace temp_test;

數據庫已更改。

SQL> alter user orcl temporary tablespace gtemp;
alter user orcl temporary tablespace gtemp

建立日誌組3個,每個組2個成員,成員大小200M,分開存放確保不導致I/O競爭,再分別添加新的日誌文件到日誌文件組,刪除

SQL> select count(*) from v$logfile;

  COUNT(*)
----------
        13

SQL> alter database add logfile group 6 ('/home/app/oracle/oradata/ORCL/datafile/redo6.log','/home/app/oracle/oradata/ORCL/datafile/redo16.log') size 200m;

數據庫已更改。

SQL> alter database add logfile group 7 ('/home/app/oracle/oradata/ORCL/datafile/redo7.log','/home/app/oracle/oradata/ORCL/datafile/redo17.log') size 200m;

數據庫已更改。

SQL> alter database add logfile member '/home/app/oracle/oradata/ORCL/datafile/redo26.log' to group 6;

數據庫已更改。

SQL> alter database add logfile member '/home/app/oracle/oradata/ORCL/datafile/redo27.log' to group 7;

數據庫已更改。

SQL> select count(*) from v$logfile;

  COUNT(*)
----------
        19

SQL> alter database drop logfile group 6;

數據庫已更改。

SQL> select count(*) from v$logfile;

  COUNT(*)
----------
        16

SQL> 

使用OMF建立表空間omf1,日誌組等

SQL> show parameter db_create_online_log_dest    #5個空的聯機日誌文件存放處

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_online_log_dest_1          string
db_create_online_log_dest_2          string
db_create_online_log_dest_3          string
db_create_online_log_dest_4          string
db_create_online_log_dest_5          string
SQL> show parameter recovery

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      
db_recovery_file_dest_size           big integer 0
recovery_parallelism                 integer     0
remote_recovery_file_dest            string
SQL> alter system set db_recovery_file_dest_size=4g scope=both;   #設置閃回區空間大小

系統已更改。

SQL> alter system set db_recovery_file_dest='/home/app/oracle/fast_recovery_area' scope=both;     #設置閃回區路徑

系統已更改。

SQL> show parameter db_create_file_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest                  string     
SQL> alter system set db_create_file_dest='/home/app/oracle/oradata';  #設置OMF數據文件存儲路徑

系統已更改。

SQL> create tablespace omf1;   #創建OMF表空間

表空間已創建。

SQL> select file_name from dba_data_files where tablespace_name='OMF1';

FILE_NAME
--------------------------------------------------------------------------------
/home/app/oracle/oradata/ORCL/datafile/o1_mf_omf1_grk0l9ft_.dbf

SQL> 

如上可以看到,沒有指定文件的路徑和名稱,oracle會自動創建一個OMF表空間。如果我們設置了上面這些參數,那麼在創建聯機重做日誌文件、使用恢復區、創建表空間時,oracle會自動管理這些文件的路徑、大小、名稱

查詢表空間信息 

SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
SMALL_TBS
BIGFILE_TBS
INDEX_TBS
DATA_TBS
TEST_TBS
DB4K

......

已選擇 24 行。

SQL> select name from v$tablespace;

NAME
------------------------------
SYSAUX
SYSTEM
UNDOTBS1
USERS
TEMP
SYSTEM
SYSAUX
UNDOTBS1
TEMP
SYSTEM
SYSAUX

......

已選擇 33 行。

幾乎所有dba_視圖都需要+s,而且需要全稱。而v$視圖則不需要+s和只需要name


查看數據文件

SQL> select file_name from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------------
/home/app/oracle/oradata/ORCL/datafile/o1_mf_system_gqjmogkw_.dbf
/home/app/oracle/oradata/ORCL/datafile/o1_mf_sysaux_gqjmqc3s_.dbf
/home/app/oracle/oradata/ORCL/datafile/o1_mf_undotbs1_gqjmrhqc_.dbf
/home/app/oracle/oradata/ORCL/datafile/o1_mf_users_gqjmrk7y_.dbf
/home/app/oracle/oradata/ORCL/datafile/small_tbs.dbf
/home/app/oracle/oradata/ORCL/datafile/bigfile_tbs.dbf
/home/app/oracle/oradata/ORCL/datafile/index_tbs.dbf
/home/app/oracle/oradata/ORCL/datafile/data_tbs.dbf
/home/app/oracle/oradata/ORCL/datafile/data_tbs2.dbf
/home/app/oracle/oradata/ORCL/datafile/test_tbs.dbf
/home/app/oracle/oradata/ORCL/datafile/db4k.dbf

FILE_NAME
--------------------------------------------------------------------------------
/home/app/oracle/oradata/ORCL/datafile/o1_mf_omf_test_gr36kdfh_.dbf
/home/app/oracle/oradata/ORCL/datafile/o1_mf_tbs_test_gr39z1x6_.dbf
/home/app/oracle/oradata/ORCL/datafile/o1_mf_read_onl_gr3nclj5_.dbf
/home/app/oracle/oradata/ORCL/datafile/data.dbf
/home/app/oracle/oradata/ORCL/datafile/data1.dbf
/home/app/oracle/oradata/ORCL/datafile/prod.dbf
/home/app/oracle/oradata/ORCL/datafile/db4k2.dbf
/home/app/oracle/oradata/ORCL/datafile/o1_mf_omf1_grk0l9ft_.dbf

已選擇 19 行。

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
/home/app/oracle/oradata/ORCL/datafile/o1_mf_system_gqjmogkw_.dbf
/home/app/oracle/oradata/ORCL/datafile/o1_mf_sysaux_gqjmqc3s_.dbf
/home/app/oracle/oradata/ORCL/datafile/o1_mf_undotbs1_gqjmrhqc_.dbf
/home/app/oracle/oradata/ORCL/datafile/disk4/o1_mf_system_gqjmv71l_.dbf
/home/app/oracle/oradata/ORCL/datafile/o1_mf_sysaux_gqjmv6yq_.dbf
/home/app/oracle/oradata/ORCL/datafile/o1_mf_users_gqjmrk7y_.dbf
/home/app/oracle/oradata/ORCL/datafile/o1_mf_undotbs1_gqjmv71q_.dbf
/home/app/oracle/oradata/ORCL/923E312DA539A787E055000000000001/datafile/o1_mf_sy
stem_gqjnjt03_.dbf

/home/app/oracle/oradata/ORCL/923E312DA539A787E055000000000001/datafile/o1_mf_sy

NAME
--------------------------------------------------------------------------------
saux_gqjnjtg4_.dbf

/home/app/oracle/oradata/ORCL/923E312DA539A787E055000000000001/datafile/o1_mf_un
dotbs1_gqjnjtg5_.dbf

/home/app/oracle/oradata/ORCL/923E312DA539A787E055000000000001/datafile/o1_mf_us
ers_gqjnnd3f_.dbf

/home/app/oracle/oradata/ORCL/datafile/small_tbs.dbf
/home/app/oracle/oradata/ORCL/datafile/bigfile_tbs.dbf
/home/app/oracle/oradata/ORCL/datafile/data_tbs.dbf

NAME
--------------------------------------------------------------------------------
/home/app/oracle/oradata/ORCL/datafile/test_tbs.dbf
/home/app/oracle/oradata/ORCL/datafile/o1_mf_omf_test_gr36kdfh_.dbf
/home/app/oracle/oradata/ORCL/datafile/o1_mf_tbs_test_gr39z1x6_.dbf
/home/app/oracle/oradata/ORCL/datafile/o1_mf_read_onl_gr3nclj5_.dbf
/home/app/oracle/oradata/ORCL/datafile/data_tbs2.dbf
/home/app/oracle/oradata/ORCL/datafile/db4k2.dbf
/home/app/oracle/oradata/ORCL/datafile/index_tbs.dbf
/home/app/oracle/oradata/ORCL/datafile/data.dbf
/home/app/oracle/oradata/ORCL/datafile/prod.dbf
/home/app/oracle/oradata/ORCL/datafile/data1.dbf
/home/app/oracle/oradata/ORCL/datafile/db4k.dbf

NAME
--------------------------------------------------------------------------------
/home/app/oracle/oradata/ORCL/datafile/o1_mf_omf1_grk0l9ft_.dbf

已選擇 26 行。

SQL> select file_name from dba_data_files where tablespace_name='DATA';

FILE_NAME
--------------------------------------------------------------------------------
/home/app/oracle/oradata/ORCL/datafile/data.dbf
/home/app/oracle/oradata/ORCL/datafile/data1.dbf

datafile (數據文件) 裏面看不到臨時表空間的信息,需要到tempfile裏面查


SQL> select file_name from dba_temp_files;

FILE_NAME
--------------------------------------------------------------------------------
/home/app/oracle/oradata/ORCL/datafile/o1_mf_temp_gqjmv0b6_.tmp
/home/app/oracle/oradata/ORCL/datafile/temp1.tmp
/home/app/oracle/oradata/ORCL/datafile/temp2.tmp
/home/app/oracle/oradata/ORCL/datafile/tmp_01.tmp
/home/app/oracle/oradata/ORCL/datafile/tmp_02.tmp
/home/app/oracle/oradata/ORCL/datafile/tmp_03.tmp
/home/app/oracle/oradata/ORCL/datafile/tmp_04.tmp

已選擇 7 行。

SQL> select name from v$tempfile;

NAME
--------------------------------------------------------------------------------
/home/app/oracle/oradata/ORCL/datafile/o1_mf_temp_gqjmv0b6_.tmp
/home/app/oracle/oradata/ORCL/datafile/temp012019-09-11_09-36-16-118-AM.dbf
/home/app/oracle/oradata/ORCL/923E312DA539A787E055000000000001/datafile/o1_mf_te
mp_gqjnjtg6_.dbf

/home/app/oracle/oradata/ORCL/datafile/tmp_01.tmp
/home/app/oracle/oradata/ORCL/datafile/tmp_02.tmp
/home/app/oracle/oradata/ORCL/datafile/tmp_03.tmp
/home/app/oracle/oradata/ORCL/datafile/tmp_04.tmp
/home/app/oracle/oradata/ORCL/datafile/temp1.tmp
/home/app/oracle/oradata/ORCL/datafile/temp2.tmp

已選擇 9 行。

表空間脫機與聯機

對於表空間,根據不用環境,可能需要經常對其操作,很多情況需要表空間處於脫機狀態

SQL> create tablespace tbs_test;

表空間已創建。

SQL> !
[oracle@localhost ~]$ \rm /home/app/oracle/oradata/ORCL/datafile/o1_mf_tbs_test_groh6wn6_.dbf 

[oracle@localhost ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on 星期三 9月 25 09:05:36 2019

Copyright (c) 1982, 2016, Oracle.  All rights reserved.


連接到: 
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> shutdown immediate
ORA-01116: 打開數據庫文件 40 時出錯             #有報找不到數據文件
ORA-01110: 數據文件 40: '/home/app/oracle/oradata/ORCL/datafile/o1_mf_tbs_test_groh6wn6_.dbf'
ORA-27041: 無法打開文件
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

SQL> alter database datafile 40 offline drop;  #將此文件脫機,非歸檔模式下加drop

數據庫已更改。

SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啓動。

Total System Global Area  536870912 bytes
Fixed Size                  8794848 bytes
Variable Size             306187552 bytes
Database Buffers          213909504 bytes
Redo Buffers                7979008 bytes
數據庫裝載完畢。
數據庫已經打開。

SQL> alter tablespace tbs_test offline for recover;  #當數據文件被誤刪,脫機要加上for recover

表空間已更改。

只讀與只寫表空間


SQL> create tablespace read_only;

表空間已創建。

SQL> alter tablespace read_only read only;

表空間已更改。

SQL> select status,tablespace_name from dba_tablespaces;

STATUS    TABLESPACE_NAME
--------- ------------------------------
ONLINE    SYSTEM
ONLINE    SYSAUX
ONLINE    UNDOTBS1
ONLINE    TEMP
ONLINE    USERS
ONLINE    SMALL_TBS
ONLINE    BIGFILE_TBS
ONLINE    INDEX_TBS
ONLINE    DATA_TBS
ONLINE    TEST_TBS
ONLINE    DB4K

STATUS    TABLESPACE_NAME
--------- ------------------------------
ONLINE    TMP_01
ONLINE    TMP_02
ONLINE    TMP_03
ONLINE    TMP_04
ONLINE    OMF_TEST
OFFLINE   TBS_TEST
READ ONLY READ_ONLY
......

已選擇 24 行。

SQL> create user c##debug identified by debug default tablespace read_only temporary tablespace gtemp;     #12c之後創建用戶時要c##或C##開頭

用戶已創建。

SQL> grant connect,resource,dba to debug;
grant connect,resource,dba to debug
                              *
第 1 行出現錯誤:
ORA-01917: 用戶或角色 'DEBUG' 不存在


SQL> grant connect,resource,dba to c##debug;

授權成功。

SQL> conn c##debug/debug
已連接。
SQL> create table test (NAME VARCHAR2(10));

表已創建。

SQL> insert into test values('haha');
insert into test values('haha')
            *
第 1 行出現錯誤:
ORA-01647: 表空間 'READ_ONLY' 是隻讀的, 無法在其中分配空間

SQL> conn / as sysdba
已連接。
SQL> alter tablespace read_only read write;

表空間已更改。

SQL> create table test (NAME VARCHAR2(10));

表已創建。

SQL> insert into test values('haha');

已創建 1 行。

SQL> commit;

提交完成。

SQL> select * from test;

NAME
----------
haha

SQL> 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章