Oracle 12c CDB 和 PDB 表空間管理和配置 說明



 注:本文謝絕轉載。

 

1  管理CDB中的表空間

    CDB表空間的管理和non-CDB 表空間的管理一樣,CDB 也有一個實例,在安裝的時候指定。

 

 

--查看錶空間:

SQL> select instance_name fromv$instance;

INSTANCE_NAME

----------------

Cndba

 

SQL> col file_name for a50

SQL> selecttablespace_name,file_id,file_name from dba_data_files;

 

TABLESPACE_NAME                   FILE_ID FILE_NAME

------------------------------ ------------------------------------------------------------

USERS                                   6 /u01/app/oracle/oradata/cndba/users01.dbf

UNDOTBS1                                4/u01/app/oracle/oradata/cndba/undotbs01.dbf

SYSAUX                                  3/u01/app/oracle/oradata/cndba/sysaux01.dbf

SYSTEM                                  1 /u01/app/oracle/oradata/cndba/system01.dbf

 

--切換container

SQL> set lin 140                 

SQL> select con_id, dbid, guid, name ,open_mode from v$pdbs;

 

   CON_ID       DBID GUID                             NAME         OPEN_MODE

---------- ------------------------------------------ ------------ ----------

        2 4088301206 F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED     READ ONLY

        3  426143573F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA    READ WRITE

        4 1231796139 F812DE1B6A8F363AE0430A01A8C0C759 PCNDBA2      READ WRITE

 

SQL> alter session setcontainer=pcndba2;

 

Session altered.

 

SQL> selecttablespace_name,file_id,file_name from dba_data_files;

 

TABLESPACE_NAME      FILE_ID FILE_NAME

----------------- ------------------------------------------------------------

SYSTEM                    12/u01/app/oracle/oradata/cndba/pcndba2/system01.dbf

SYSAUX                    13/u01/app/oracle/oradata/cndba/pcndba2/sysaux01.dbf

USERS                     14/u01/app/oracle/oradata/cndba/pcndba2/pcndba2_users01.dbf

 

 

--表空間具體操作示例

SQL> alter session setcontainer=CDB$ROOT;

Session altered.

 

SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

 

SQL> CREATE TABLESPACE dave

 2    DATAFILE'/u01/app/oracle/oradata/cndba/pcndba2/dave01.dbf' SIZE 1M

 3    AUTOEXTEND ON NEXT 1M;

Tablespace created.

 

SQL> ALTER TABLESPACE dave ADD

 2    DATAFILE'/u01/app/oracle/oradata/cndba/pcndba2/dave02.dbf' SIZE 1M

 3    AUTOEXTEND ON NEXT 1M;

 

Tablespace altered.

 

--查看:

SQL> selecttablespace_name,file_id,file_name from dba_data_files;

 

TABLESPACE_NAME                   FILE_ID FILE_NAME

------------------------------ ------------------------------------------------------------

SYSTEM                                 1/u01/app/oracle/oradata/cndba/system01.dbf

SYSAUX                                  3/u01/app/oracle/oradata/cndba/sysaux01.dbf

UNDOTBS1                                4/u01/app/oracle/oradata/cndba/undotbs01.dbf

USERS                                  6/u01/app/oracle/oradata/cndba/users01.dbf

DAVE                                   16/u01/app/oracle/oradata/cndba/pcndba2/dave02.dbf

DAVE                                   15/u01/app/oracle/oradata/cndba/pcndba2/dave01.dbf

 

 

--drop 表空間:

SQL> drop tablespace dave includingcontents and datafiles;

Tablespace dropped.

 

SQL> selecttablespace_name,file_id,file_name from dba_data_files;

 

TABLESPACE_NAME                   FILE_ID FILE_NAME

------------------------------ ------------------------------------------------------------

SYSTEM                                  1/u01/app/oracle/oradata/cndba/system01.dbf

SYSAUX                                  3/u01/app/oracle/oradata/cndba/sysaux01.dbf

UNDOTBS1                                4/u01/app/oracle/oradata/cndba/undotbs01.dbf

USERS                                   6/u01/app/oracle/oradata/cndba/users01.dbf

 

 

2  管理PDB的表空間

 

PDB 表空間的管理和CDB一樣,只需要切換到正確的container即可。

 

 

 

SQL> select name,open_mode from v$pdbs;

 

NAME                           OPEN_MODE

------------------------------ ----------

PDB$SEED                       READ ONLY

PDBCNDBA                       READ WRITE

PCNDBA2                        READ WRITE

 

SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

 

SQL> alter session setcontainer=pcndba2;

Session altered.

 

SQL> show con_name

CON_NAME

------------------------------

PCNDBA2

 

 

SQL> col tablespace_name for a15

SQL> col file_name for a60

SQL> selecttablespace_name,file_id,file_name from dba_data_files;

 

TABLESPACE_NAME    FILE_ID FILE_NAME

--------------- ----------------------------------------------------------------------

SYSTEM                  12/u01/app/oracle/oradata/cndba/pcndba2/system01.dbf

SYSAUX                  13 /u01/app/oracle/oradata/cndba/pcndba2/sysaux01.dbf

USERS                   14/u01/app/oracle/oradata/cndba/pcndba2/pcndba2_users01.dbf

 

SQL> CREATE TABLESPACE dave

 2    DATAFILE'/u01/app/oracle/oradata/cndba/pcndba2/dave01.dbf' SIZE 1M

 3    AUTOEXTEND ON NEXT 1M;

Tablespace created.

 

SQL> ALTER TABLESPACE dave ADD

 2    DATAFILE'/u01/app/oracle/oradata/cndba/pcndba2/dave02.dbf' SIZE 1M

 3    AUTOEXTEND ON NEXT 1M;

 

Tablespace altered.

 

SQL> selecttablespace_name,file_id,file_name from dba_data_files;

 

TABLESPACE_NAME    FILE_ID FILE_NAME

--------------- ----------------------------------------------------------------------

SYSAUX                  13/u01/app/oracle/oradata/cndba/pcndba2/sysaux01.dbf

SYSTEM                  12 /u01/app/oracle/oradata/cndba/pcndba2/system01.dbf

USERS                   14/u01/app/oracle/oradata/cndba/pcndba2/pcndba2_users01.dbf

DAVE                    17/u01/app/oracle/oradata/cndba/pcndba2/dave01.dbf

DAVE                    18/u01/app/oracle/oradata/cndba/pcndba2/dave02.dbf

 

SQL> DROP TABLESPACE dave INCLUDINGCONTENTS AND DATAFILES;

Tablespace dropped.

 

SQL> selecttablespace_name,file_id,file_name from dba_data_files;

TABLESPACE_NAME    FILE_ID FILE_NAME

--------------- ----------------------------------------------------------------------

SYSTEM                  12/u01/app/oracle/oradata/cndba/pcndba2/system01.dbf

SYSAUX                  13/u01/app/oracle/oradata/cndba/pcndba2/sysaux01.dbf

USERS                   14/u01/app/oracle/oradata/cndba/pcndba2/pcndba2_users01.dbf

 

 

 

3  Undo 表空間

 

CDB中的undo 表空間只能從CDB中管理,不能從non-CDB中管理。

PDB 沒有自己的undo 表空間,PDB 中直接使用CDB中的undo 表空間。

 

如果連上PDB,是看不到undo 表空間的。

 

SQL> show con_name

 

CON_NAME

------------------------------

PCNDBA2

SQL> select tablespace_name fromdba_tablespaces;

 

TABLESPACE_NAME

---------------

SYSTEM

SYSAUX

TEMP

USERS

 

 

--切換到CDB中:

SQL> alter session setcontainer=CDB$ROOT;

Session altered.

 

SQL> show con_name

 

CON_NAME

------------------------------

CDB$ROOT

 

SQL> select tablespace_name fromdba_tablespaces;

 

TABLESPACE_NAME

---------------

SYSTEM

SYSAUX

UNDOTBS1

TEMP

USERS

 

SQL> select name from v$datafile;

 

NAME

----------------------------------------------------------------------

/u01/app/oracle/oradata/cndba/system01.dbf

/u01/app/oracle/oradata/cndba/sysaux01.dbf

/u01/app/oracle/oradata/cndba/undotbs01.dbf

/u01/app/oracle/oradata/cndba/pdbseed/system01.dbf

/u01/app/oracle/oradata/cndba/users01.dbf

/u01/app/oracle/oradata/cndba/pdbseed/sysaux01.dbf

/u01/app/oracle/oradata/cndba/pdbcndba/system01.dbf

/u01/app/oracle/oradata/cndba/pdbcndba/sysaux01.dbf

/u01/app/oracle/oradata/cndba/pdbcndba/SAMPLE_SCHEMA_users01.dbf

/u01/app/oracle/oradata/cndba/pdbcndba/example01.dbf

/u01/app/oracle/oradata/cndba/pcndba2/system01.dbf

/u01/app/oracle/oradata/cndba/pcndba2/sysaux01.dbf

/u01/app/oracle/oradata/cndba/pcndba2/pcndba2_users01.dbf

 

13 rows selected.

 

--查看TEMP 表空間:

SQL> select name from v$tempfile;

 

NAME

----------------------------------------------------------------------

/u01/app/oracle/oradata/cndba/temp01.dbf

/u01/app/oracle/oradata/cndba/pdbseed/pdbseed_temp01.dbf

/u01/app/oracle/oradata/cndba/pdbcndba/pdbcndba_temp01.dbf

/u01/app/oracle/oradata/cndba/pcndba2/temp01.dbf

SQL>

 

4  Temporary 表空間

CDB 中的temporary 表空間只從在CDB中管理。

 

PDB 可以有自己的temporary表空間,也可以不用,在創建PDB的時候如果沒有指定temporary表空間,那麼就會公用CDB的temporary 表空間。

 

SQL> select name from v$pdbs;

 

NAME

----------------------------------------------------------------------

PDB$SEED

PDBCNDBA

PCNDBA2

 

SQL> alter session set container=pcndba2;

 

Session altered.

 

SQL> show con_name

 

CON_NAME

------------------------------

PCNDBA2

 

SQL> select file_name fromdba_data_files;

 

FILE_NAME

------------------------------------------------------------

/u01/app/oracle/oradata/cndba/pcndba2/sysaux01.dbf

/u01/app/oracle/oradata/cndba/pcndba2/system01.dbf

/u01/app/oracle/oradata/cndba/pcndba2/pcndba2_users01.dbf

 

 

SQL> CREATE TEMPORARY TABLESPACE temp2

 2    TEMPFILE'/u01/app/oracle/oradata/cndba/pcndba2/temp02.dbf' SIZE 5M

 3    AUTOEXTEND ON NEXT 1M;

 

Tablespace created.

 

SQL> select name from v$tempfile;

 

NAME

----------------------------------------------------------------------

/u01/app/oracle/oradata/cndba/pcndba2/temp01.dbf

/u01/app/oracle/oradata/cndba/pcndba2/temp02.dbf

 

SQL> drop tablespace temp2 includingcontents and datafiles;

Tablespace dropped.

 

SQL> select name from v$tempfile;

 

NAME

----------------------------------------------------------------------

/u01/app/oracle/oradata/cndba/pcndba2/temp01.dbf

 

 

5  Default Tablespaces

 

CDB 中的defaulttablespace 和 default temporary tablespace 只能在CDB中操作。

 

 

PDB 的中defaulttablespace 和 default temporary tablespace有兩種修改方法:

 

(1)  使用ALTER PLUGGABLE DATABASE命令

推薦使用這種方法,法語如下:

 

CONN pdb@pdb1

ALTER PLUGGABLE DATABASE DEFAULT TABLESPACEusers;

ALTER PLUGGABLE DATABASE DEFAULT TEMPORARYTABLESPACE temp;

 

(2)爲了向後的兼容性,也可以使用ALTERDATABASE 命令修改:

CONN pdb@pdb1

ALTER DATABASE DEFAULT TABLESPACE users;

ALTER DATABASE DEFAULT TEMPORARY TABLESPACEtemp;

 

注意:

不管使用哪種方法,在修改之前,主要要保證container是正確的。

 

 

 

 

 

 

 

--------------------------------------------------------------------------------------------

版權所有,文章禁止轉載,否則追究法律責任!

 

AboutDave:

--------------------------------------------------------------------------------------------

QQ:492913789

Email:[email protected]

Blog:  http://www.cndba.cn/dave

Weibo:    http://weibo.com/tianlesoftware

Twitter:  http://twitter.com/tianlesoftware

Facebook: http://www.facebook.com/tianlesoftware

Linkedin: http://cn.linkedin.com/in/tianlesoftware

 

Dave 的QQ羣:

--------------------------------------------------------------------------------------------

注意:加羣必須註明表空間和數據文件關係 | 不要重複加羣

CNDBA_1: 104207940 (滿)    CNDBA_2: 62697716 (滿)   CNDBA_3: 283816689

CNDBA_4: 391125754   CNDBA_5: 62697850    CNDBA_6: 62697977   CNDBA_7: 142216823(滿)

發佈了1007 篇原創文章 · 獲贊 535 · 訪問量 1369萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章