Проверете дали базата данни е CDB или не-CDB
SQL> изберете cdb от v$database;CDB---ДА
Свързване с контейнер
$ export ORACLE_SID=pcdb01$ sqlplus / като sysdbaSQL> покажи con_nameCON_NAME------------------------------CDB$ROOTSQL> показване на con_idCON_ID------------------------------1SQL> показване на pdbs;CON_ID CON_NAME ОТВОРЕН РЕЖИМ ОГРАНИЧЕН-------- -- ------------------------------ ---------- -------- --2 PDB$SEED САМО ЧЕТЕНЕ NO3 PRD_PDB_CON ЧЕТЕНЕ ЗАПИСАНЕ NO4 PRD_PDB_TEN ЧЕТЕНЕ ЗАПИСАНЕ NO
Навигирайте в PDBs
SQL> промяна на набора от сесии container=PDB$SEED;Променена сесия.SQL> промяна на набор от сесии контейнер=PRD_PDB_CON;Променена сесия.SQL>
Информация за PDBs
SQL> КОЛОНА PDB_NAME ФОРМАТ A15SQL> КОЛОНА PDB_NAME ФОРМАТ A15SQL> ИЗБЕРЕТЕ PDB_ID, PDB_NAME, СТАТУС ОТ DBA_PDBS ПОРЪЧАЙТЕ ПО PDB_ID;PDB_ID PDB_NAME СТАТУС---------- ---------- ----- ---------2 PDB$SEED NORMAL3 PRD_PDB_CON NORMAL4 PRD_PDB_TEN NORMAL
Проверка/промяна на параметър
SQL> изберете * от v$system_parameter;SQL> изберете * от PDB_SPFILE$;SQL> промените системния набор parameter_name=value;SQL> промените системния набор parameter_name=value CONTAINER=CURRENT;
Стартиране и изключване на PDB
Някои типични стойности:
СТАРТ [НОМАЛ | МОНТИРАНЕ | ОГРАНИЧИ | ОБНОВЛЕНИЕ | СИЛА | САМО ЗА ЧЕТЕНЕ]
ИЗКЛЮЧВАНЕ [НЕЗАБАВНО | ABORT]
$ export ORACLE_SID=pcdb01$ sqlplus / as sysdbaSQL> незабавно изключване;
Спрете Pluggable Database
SQL> промяна на включваща база данни PRD_PDB_CON затвори [непосредствено];SQL> промяна на включваща база данни ВСИЧКИ ОСВЕН PRD_PDB_CON затвори [незабавно];SQL> промяна на включваща база данни ВСИЧКИ затваряне;SQL> промяна на включваща база данни PRD_PDB_CON затвори [незабавно] [в];
Или:
SQL> alter SESSION SET CONTAINER =PRD_PDB_CON;SQL> незабавно изключване;
Стартирайте Pluggable Database
СТАРТИРАНЕ СИЛА
СТАРТ ОТВОРЕНО ПРОЧЕТЕНЕ НАПИШЕТЕ [ОГРАНИЧВАНЕ]
СТАРТ ОТВОРЕНО САМО ЧЕТЕНЕ [ОГРАНИЧВАНЕ]
НАДСТРОЙВАНЕ НА СТАРТИРАНЕ
ИЗКЛЮЧВАНЕ [НЕЗАБАВНО]
SQL> промяна на включаемата база данни PDB01 open;SQL> промяна на включваща база данни ВСИЧКИ ОСВЕН PRD_PDB_CON open;SQL> промяна на включваща база данни ВСИЧКИ отворени;SQL> промяна на включваща база данни PDB01 отваряне [instances=all];
Или:
SQL> alter SESSION SET CONTAINER =PRD_PDB_CON;SQL> стартиране;SQL> alter PLUGGABLE DATABASEОТВОРЕНО ЧЕТЕНЕ ЗАПИШИ [РЕГРИСТРИРАН] [FORCE];SQL> alter променя ПЪЛНЯВАЩА се БАЗА ДАННИ ОТВОРЕТЕ НАДСТРОЙКА [RESTRICTED];SQL> променя PLUGGABLE DATABASE ЗАТВОРИ [НЕЗАБАВНО];
Запазване на стартовото състояние на PDB (12.1.0.2 по-нататък)
SQL> alter PLUGGABLE DATABASE pdb2 OPEN;SQL> alter PLUGGABLE DATABASE pdb2 SAVE STATE;
Изгледът DBA_PDB_SAVED_STATES показва информация за запазеното състояние на контейнерите.
SQL> COLUMN con_name FORMAT A20SQL> COLUMN instance_name FORMAT A20SQL> SELECT con_name, instance_name, state FROM dba_pdb_saved_states;CON_NAME INSTANCE_NAME STATE-------------------- --- ----------------- --------------PRD_PDB_CON pcdb01 ОТВОРЕНО
Размер на включваемата база данни
SQL> ИМЕ НА КОЛОНА ФОРМАТ A20SQL> ИЗБЕРЕТЕ DBID, ИМЕ, CON_ID, CON_UID, TOTAL_SIZE ОТ V$CONTAINERS ПОРЪЧАЙТЕ ПО CON_ID;DBID ИМЕ CON_IDCON_UID TOTAL_SIZE----------------- ---------------------- ---------- ---------- -------- --2732069181 CDB$ROOT 1 1 03552543733 PDB$SEED 2 3552543733 7759462404008367944 PRD_PDB_CON 3 4008367944 1208367944 1208367944 1208367944 1208367944 1208367944 1208367944 1208367944 1208367944 1208367944 124RD2765 124RD2776 1208367944 1208367944 3552543733 3552543733
Време за стартиране на включваща се база данни
SQL> задайте размер на реда 180SQL> име на col за a30SQL> col open_time за a33SQL> изберете con_id,name,dbid,open_mode,open_time от v$containers;CON_ID NAME DBID OPEN_MODE OPEN_TIME--------- - --------------- -------------- ---------- ---------- - --------------------------------1 CDB$ROOT 456650806 ПРОЧЕТЕТЕ ПИШЕТЕ 17-МАР-18 11.59.36.176 PM -03 :002 PDB $ SEED 2688102972 Прочетете само 17-MAR-18 11.59.36.182 PM -03:003 PDB_PN1O0101 1079206163 ПРОЧЕТЕТЕ ПИСАНЕ 18-МАР-18 12.00.00.589 AM -03:004 PDB_BATCHWEB 2340495643 ПРОЧЕТЕТЕ ПИСАНИЯ 18-МАР-18 12.00.03.4855. AM -03:004 избрани редове.
Време за актуализация на включваща се база данни
SQL> задайте размер на реда 180SQL> име на col за a30SQL> col open_time за a28SQL> изберете име, етаж(sysdate-cast(open_time като дата))||'Дни '||floor(((sysdate-cast(open_time като дата))-floor(sysdate-cast(open_time като дата)))*24)||'часове '||round(((sysdate-cast(open_time като дата)-floor(sysdate-cast(open_time като дата) ) *24)-floor((sysdate-cast(open_time като дата)-floor(sysdate-cast(open_time като дата))*24)))*60)||'minutes' "Време на работа на базата данни"от v$containers;NAME;NAME Време за работа на базата данни-------------- ---------------------------CDB$ROOT 1331 дни 11 часа 28 минути PDB $SEED 1331 дни 11 часа 28 минути PDB_PN1O0101 1331 дни 11 часа 28 минути PDB_BATCHWEB 1331 дни 11 часа 28 минути 4 избрани реда.
Име на услугите
SQL> ИМЕ НА КОЛОНА ФОРМАТ A30SQL> ИЗБЕРЕТЕ ИМЕ,CON_ID,PDB ОТ V$SERVICES ПОРЪЧАЙТЕ ПО CON_ID;ИМЕ CON_ID PDB----------------------- ------- ---------------- ------------------------------pcdb01XDB 1 CDB $ROOTSYS$BACKGROUND 1 CDB$ROOTSYS$USERS 1 CDB$ROOTpcdb01 1 CDB$ROOTprd_pdb_con 3 PRD_PDB_CONprd_pdb_ten 4 избрани PRD_PDB_TEN6 реда.
Създаване на общи потребители с достъп до всички pdbsSQL> СЪЗДАВАНЕ НА ПОТРЕБИТЕЛ c##user1 ИДЕНТИФИЦИРАН С password1 CONTAINER=ВСИЧКИ;Създаден потребител.SQL> ПРЕДОСТАВЯТЕ СЪЗДАВАНЕ НА СЕСИЯ НА c##user1 CONTAINER=ВСИЧКИ;Предоставянето е успешно.Създаване на общи потребители без достъп до pdbs
SQL> СЪЗДАВАНЕ НА ПОТРЕБИТЕЛ c##user2 ИДЕНТИФИЦИРАН С password1;User created.SQL> ПРЕДОСТАВЯТЕ СЪЗДАВАНЕ НА СЕСИЯ НА c##user2;Предоставянето е успешно.Създайте локален потребител с достъп само до pdb
SQL> СЪЗДАВАНЕ НА ПОТРЕБИТЕЛ user3 ИДЕНТИФИЦИРАН С password3 CONTAINER=CURRENT;User created.SQL> ПРЕДОСТАВЯТЕ СЪЗДАВАНЕ НА СЕСИЯ НА user3 CONTAINER=CURRENT;Предоставянето е успешно.Създаване на обща роля
SQL> CONN / AS SYSDBASQL> СЪЗДАВАНЕ НА РОЛЯ c##role1;Role created.SQL> ПРЕДОСТАВЯ СЪЗДАВАНЕ НА СЕСИЯ НА c##role1;Предоставянето е успешно.
Предоставяне на роля на обикновен потребител
SQL> GRANT c##role1 TO c##user1 CONTAINER=ALL;Предоставянето бе успешно.
Предоставете роля на обикновен потребител на локален потребител
SQL> alter SESSION SET CONTAINER =PRD_PDB_CON;Session altered.SQL> GRANT c##role1 TO user2;Предоставянето е успешно.Локални роли
SQL> CONN / AS SYSDBASQL> alter SESSION SET CONTAINER =PRD_PDB_CON;Session altered.SQL> CREATE ROLE role1;Role created.SQL> GRANT CREATE SESSION TO role1;Предоставянето е успешно.Създаване на PDBs
SQL> създаване на включваща база данни HMLPDB администратор администратор на потребител, идентифициран от PassDw1 роли =(DBA);SQL> създаване на включваща база данни DSVPDB администратор на потребител, идентифициран от Manager1roles =(DBA) съхранение (MAXSIZE 1G) FILE_NAME_CONVERT=('/u01/app /oracle/oradata/pcdb01/pcdb01_pdbseed_','/u01/app/oracle/oradata/dsvpdb/dsvpdb_');SQL> създайте включваща се база данни DSVPDB1 от DSVPDB file_name_convert=('/DSVPDB/'/'/DSVPDB);С изключение на PDB
SQL> промяна на включваща се база данни DSVPDB1 затвори [незабавно] [instances=all];SQL> пускане на включваща се база данни DSVPDB1, включително файлове с данни;Изключване PDBs
$ sqlplus / като sysdbaSQL> промяна на включваща база данни PRD_PDB_CON затвори;SQL> промяна на включваща база данни PRD_PDB_CON изключи в '/tmp/prd_pdb_con.xml';Включване на PDBs
$ sqlplus / като sysdbaSQL> създайте включваща се база данни PRD_PDB_CON с помощта на '/tmp/prd_pdb_con.xml' FILE_NAME_CONVERT=('/oradata/cdb1/prd_pdb_con', '/oradata/cdb_pdb2/prd_pdb_con', '/oradata/cdb_db2_pdb_con', '/oradata/cdb_pdb2/prd_converter Plug'); отворен;Конфигуриране на услуги на Oracle RAC с CDB
$ srvctl добавяне на услуга -db CDB01 -service new_service -pdb PRD_PDB_CON$ srvctl модифициране на услуга -db CDB01 -service new_service -pdb PRD_PDB_CON$ srvctl премахване на услуга -db CDB01 -service new_serviceBEGINDBMS_SERVICE.CREATE'network_name> => 'new_service.com');END;/BEGINDBMS_SERVICE.DELETE_SERVICE(service_name => 'new_service');END;/С основния контейнер имаме cdb_tablespaces и cdb_data_files показва пространството за таблици и файловете с данни на всички контейнери в CDB.
Когато са свързани към PDB, cdb_tablespaces и cdb_data_files показват същата информация като dba_tablespaces, dba_data_files за PDB.
SQL> alter session set container=CDB$ROOT;Session altered.SQL> изберете име_на_таблица, con_id от cdb_tablespaces подреждане по con_id;TABLESPACE_NAME CON_ID------------------- ------------- -------- Система 1Sysaux 1UndotBS2 1TEMP 1USERS 1UNDOTBS1 1System 3Sysaux 3TBS_GEN_01 3TEMP 3TBS_CON_IDX_01 3TBS_CON_DT_01 3USERS 3SYSTEM 4SYSAUX 4TBS_GEN_01 4USERS 4SEMP 418 ROWS 4TBS_CON_01 -----------------------------SYSTEMSYSAUXUNDOTBS1TEMPUSERSUNDOTBS26 реда избрани.Как да проверя за функцията за локално отмяна в 12.2
В Oracle Database 12c Release 1 всички контейнери в даден екземпляр споделят едно и също пространство за таблици за отмяна.
В Oracle 12c Release 2 всеки контейнер в даден екземпляр може да използва собствено пространство за таблици за отмяна.
SQL> незабавно изключване;SQL> надстройка при стартиране;SQL> промяна на локалното отмяна на базата данни на;SQL> незабавно изключване;SQL> стартиране;SQL> col property_name format a30SQL> col property_value format a30SQL> изберете property_name, property_value от ime_project_ ='LOCAL_UNDO_ENABLED';PROPERTY_NAME PROPERTY_VALUE---------------- -------------- LOCAL_UNDO_ENABLED TRUEПрепратки
https://docs.oracle.com