Создание БД в Oracle без системных таблиц
Скачал 19с. После установки решил создать свои таблицы и БД, но оказалось, что БД, которая создается уже вся в системных таблица и т.д..
Кто может подсказать, как создать БД и при этом, чтобы база была пуста (без системных таблиц).
Работаю в SQL Developer.
UPD: После захода под пользователем system у меня такие системные таблицы сразу есть:
UPD:
C:\> lsnrctl status
Connecting to (DESCRIPTI0N=(ADDRESS=(PR0T0C0L=TCP)(H0ST=localhost)(P0RT=1521))) STATUS of the LISTENER
Alias LISTENER
Version TNSLSNR for 64-bit Windows: Version 19.0.0.0.0 - Production
Start Date 13-1UL-2020 23:56:07
Uptime 0 days 4 hr. 20 min. 28 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File C:\App\db_home\network\admin\listener.ora
Listener Log File C:\App\Myoracle\diag\tnslsnr\DESKT0P-FRAN7VN\listener\alert\log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=DESKTOP-FRAN7VN)(PORT=5500))(Security=(my_wallet_^ Services Summary___
Service "52448234712340b69f274bcc790ecfe0" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "CLRExtProc" has 1 instance(s).
Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "c908dd6e99b547e4a6f598505d671dcl" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "oraclel" has 1 instance(s).
Instance "oraclel", status READY, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclpdb" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
UPD: Файл tsnname.ora (прим.ред.: см. историю правок)
Ответы (1 шт):
После установки решил создать свои таблицы и БД, но оказалось, что БД, которая создается уже вся в системных таблица и т.д.
В инсталяторе была отмечена радио-кнопка "(х) Create and configure a database". То есть, БД была создана сразу же при установке продукта.
БД состоит из двх частей: контейнера (CDB) и (одной или нескольких) подключаемых БД (PDB). Кратко об их отличаях уже повествовал в этом ответе.
Подключение с системной учётной записью без указания конкретного PDB осуществляется к CDB.
Здесь можно администрировать существующие PDB или создавать новые. Было бы удивительно, не увидеть здесь системных таблиц.
Важно: Содавать новых пользователей, новые таблицы, или что-то менять в CDB не следует.
Следуюший шаг - создать нового пользователя БД. Учитывая то, что создание нового пользователя, веделения ему прав и привилегий в продуктивной среде, занимаются администраторы БД, то далее следует читать только для БД, создаваемых в тестовых целях (для дома, для семьи).
Для создания нового пользователя в PDB, надо сначала туда перейти:
$ sqlplus /nolog
SQL> conn / as sysdba
Connected.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO
SQL> alter session set container=pdb1;
Session altered.
SQL> show con_name
CON_NAME
------------------------------
PDB1
Теперь, в основном, две возможности:
- Рекомендуемая: создать пользователя с минимальным набором прав и привилегий, далее выделять их по мере необходимости.
- Или создать сразу административного пользователя, который может всё (Осторожно! В БД нет предупреждения: "Вы действительно хотите ...")
Нормальный пользователь (один из нас):
SQL> create user iam identified by iam;
User created.
SQL> alter user iam quota unlimited on users;
User altered.
SQL> grant create session, create table, create view,
create procedure, create sequence to iam;
Grant succeeded.
SQL> conn iam/iam@localhost/pdb1
Connected.
Административный пользователь (и Бог и Царь):
SQL> create user iam identified by iam;
User created.
SQL> grant dba to iam;
Grant succeeded.
SQL> conn iam/iam@localhost/pdb1
Connected.
