Oracle
 sql >> база данни >  >> RDS >> Oracle

Основно администриране на Oracle 12c Multitenant

Проверете дали базата данни е 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 реда.


Създаване на общи потребители с достъп до всички pdbs

SQL> СЪЗДАВАНЕ НА ПОТРЕБИТЕЛ 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Клиентски и мрежови компоненти на Oracle не бяха открити

  2. Oracle:Актуализиране на колона на таблица с помощта на ROWNUM във връзка с клауза ORDER BY

  3. Тип дата без час в Oracle

  4. Функция NANVL() в Oracle

  5. Грешка в изхода на SQL Fiddle