Baza: Oracle
Baza danych Oracle to zaawansowany system zarządzania relacyjnymi bazami danych, opracowany przez firmę Oracle Corporation. Jest powszechnie używany w przedsiębiorstwach i organizacjach na całym świecie ze względu na swoją niezawodność, wydajność i wszechstronność. Oracle oferuje pełne wsparcie dla standardów SQL, co ułatwia integrację z istniejącymi aplikacjami i narzędziami. Jego zaawansowane funkcje obejmują transakcyjność, zabezpieczenia, replikację danych, zarządzanie danymi w chmurze, oraz możliwość obsługi dużych ilości danych i zapytań równoległych. Dodatkowo, Oracle zapewnia szeroką gamę narzędzi administracyjnych i monitorowania, które ułatwiają zarządzanie bazą danych, w tym narzędzia do tworzenia kopii zapasowych, optymalizacji wydajności, zarządzania użytkownikami i kontrolowania dostępu. Dzięki swojej skalowalności i niezawodności, Oracle jest często wybierany do obsługi krytycznych aplikacji biznesowych, takich jak systemy zarządzania relacjami z klientami (CRM), systemy zarządzania zasobami przedsiębiorstwa (ERP) oraz systemy bankowości i finansów.
W niniejszym wpisie wykonamy instalację i konfigurację darmowej bazy danych oferowanej przez Oracle.
Założenia
Zakładam posiadanie podstawowej wiedzy o:
– docker
– cli
– client bazodanowy
– openssl
Akcja
Instalacja
1.Dodajemy do pliku /etc/hosts wpis kierujący nas do nowej domeny bazy danych.
1 | 127.0.0.1 oracle.e-strix.pl |
2.Tworzymy strukturę katalogów wykorzystując docker compose
Instalacja
Uruchomienie lokalne
Przykładowy tekst
1 2 3 4 5 6 7 | ├── config │ └── xe11 │ ├── Dockerfile │ ├── init.sql │ └── script.sh ├── docker-compose.yml └── README.md |
Struktura
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | zrodlo https://hub.docker.com/r/oracleinanutshell/oracle-xe-11g docker-compose up --no-deps --build zbuduj docker-compose build uruchom docker-compose up usun docker-compose -f docker-compose.yml down wejscie do kontenera docker exec -it --user=oracle oracle11xe bash |
README.md
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | version: '3.7' services: oracle11xe: image: oracle11xe container_name: oracle11xe build: ./config/xe11 ports: - 1521:1521 networks: db_net: ipv4_address: 10.99.105.2 networks: db_net: ipam: driver: default config: - subnet: "10.99.105.0/24" |
docker-compose.yml
1 2 3 4 5 6 | FROM wnameless/oracle-xe-11g-r2 ADD init.sql /docker-entrypoint-initdb.d/ ADD script.sh /docker-entrypoint-initdb.d/ EXPOSE 1521 |
config/xe11/Dockerfile
1 2 3 4 5 6 7 8 9 10 11 12 13 | CREATE USER USER_KAMIL IDENTIFIED BY USER_PASSWORD; GRANT CONNECT, RESOURCE TO USER_KAMIL; CREATE TABLESPACE TS_UTILS_DATA DATAFILE 'TS_UTILS_DATA.DBF' SIZE 120M AUTOEXTEND ON NEXT 20M MAXSIZE 2048M; CREATE TABLESPACE TS_UTILS_IDX DATAFILE 'TS_UTILS_IDX.DBF' SIZE 20M AUTOEXTEND ON NEXT 20M MAXSIZE 2048M; ALTER USER USER_KAMIL DEFAULT TABLESPACE TS_UTILS_DATA; ALTER USER USER_KAMIL QUOTA UNLIMITED ON TS_UTILS_DATA; ALTER USER USER_KAMIL QUOTA UNLIMITED ON TS_UTILS_IDX; GRANT SELECT ON SYS.DBA_PENDING_TRANSACTIONS TO USER_KAMIL; GRANT SELECT ON SYS.PENDING_TRANS$ TO USER_KAMIL; GRANT SELECT ON SYS.DBA_2PC_PENDING TO USER_KAMIL; GRANT EXECUTE ON SYS.DBMS_XA TO USER_KAMIL; GRANT FORCE ANY TRANSACTION TO USER_KAMIL; |
config/xe11/init.sql – Tworzenie użytkownika/schematu
1 |
config/xe11/script.sh
Mierzenie rozmiaru tabel
Poszczególne tabele
1 2 3 4 5 6 | SELECT (BYTES)/1024/1024 as size_in_mega, segment_name FROM user_segments ORDER BY size_in_mega DESC; |
Całość
1 2 3 4 | SELECT SUM(BYTES)/1024/1024 as size_in_mega FROM user_segments; |
Plan zapytań
Eksport bazy
1 | exp USER/password@//127.0.0.186:1521/XE FULL=y FILE=dump.dmp GRANTS=y ROWS=y |
Import bazy
1 | imp USER/password@//127.0.0.1:1521/XE FILE=dump.dmp |
SELECT * FROM dba_users;
SELECT * FROM all_users;
select name from v$database;
SELECT sys_context('userenv','instance_name') FROM dual;
select username, account_status
from DBA_USERS;
cat setPassword.sh
echo $ORACLE_PWD
echo $ORACLE_SID
grep $ORACLE_HOME /etc/oratab | cut -d: -f1
show con_name
sqlplus sys@ORCLCDB as sysdba
sqlplus sys@ORCLCDB as sysdba
alter database mount;
alter database open;
show pdbs;
alter pluggable database ORCLPDB1 open;
alter session set container=ORCLPDB1;