Skip to content

Instantly share code, notes, and snippets.

@m-sedl
Last active November 4, 2022 19:12
Show Gist options
  • Save m-sedl/0f0e6a5df4de9fe977d37538e0beef4f to your computer and use it in GitHub Desktop.
Save m-sedl/0f0e6a5df4de9fe977d37538e0beef4f to your computer and use it in GitHub Desktop.
dbsm hw 4

Как я развернул Oracle и подключился к нему

Разворачиваем Oracle

Я развернул в виде докер-контейнера. Так, имхо, меньше боли. Сделал я это командой:

docker run --name testdb \
-p 1521:1521 -p 5500:5500 \
-e ORACLE_PWD=<ваш пароль> \
-e ORACLE_CHARACTERSET=AL32UTF8 \
-d \
-v <ваша папка, где будут лежать данные>:/opt/oracle/oradata \
container-registry.oracle.com/database/express:21.3.0-xe

Проверяем, что конетйнер создался через docker ps. Спустя какое-то время наш контейнер должен перейти в состояние Up.

Подключаемся

Я использую DataGrip, мне с ним было проще.

В контейнере по умолчанию создались несколько пользователей. Среди них есть SYSTEM (база XEPDB1 или XE) и PDBADMIN (база XEPDB1). У всех у них одинаковый пароль, который вы задали при старте контейнера. SYSTEM это пользователь из под которого можно сделать много что (наделить нужными правами пользователя PDBADMIN), но новых пользователей создавать нельзя. Поэтому многие операции надо делать из под PDBADMIN.

--- run from DEVELOPER user
--- 4.2
drop table journal_backend;
create table journal_backend (
id NUMBER constraint id_pk primary key,
subject_ru VARCHAR(128),
subject_en VARCHAR(128),
students_number VARCHAR(128),
modal_mark NUMBER constraint mark_between_check check(modal_mark between 1 and 5)
);
insert into journal_backend values (1, 'математика', 'math', 20, 4);
insert into journal_backend values (2, 'русский язык', 'russian', 26, 5);
insert into journal_backend values (3, 'английский язык', 'english', 30, 3);
insert into journal_backend values (4, 'физика', 'physics', 19, 5);
insert into journal_backend values (5, 'информатика', 'computer science', 21, 4);
create or replace view journal_ru as
select id, subject_ru subject, students_number, modal_mark from journal_backend;
create or replace view journal_en as
select id, subject_en subject, students_number, modal_mark from journal_backend;
drop user user_ru;
create user user_ru identified by user_ru;
grant connect, resource to user_ru;
drop user user_en;
create user user_en identified by user_en;
grant connect, resource to user_en;
create synonym USER_RU.public_journal for DEVELOPER.JOURNAL_RU;
create synonym USER_EN.public_journal for DEVELOPER.JOURNAL_EN;
grant select on USER_RU.public_journal to USER_RU;
grant select on USER_EN.public_journal to USER_EN;
--- run from SYSTEM user
--- 4.1
drop user developer;
create user developer identified by pass;
grant
connect,
resource,
create user,
create any view,
create any synonym,
create role,
grant any role
to developer;
--- 4.4
drop profile simple_profile;
create profile simple_profile limit
SESSIONS_PER_USER 700
CPU_PER_CALL 30000;
alter user developer profile simple_profile;
--- 4.5
alter user developer profile simple_profile;
GRANT DBA to developer;
--- run from USER_EN user
select * from public_journal;
--- run from USER_RU user
select * from public_journal;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment