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> 

 

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