Hotfix release available: 2025-05-14b "Librarian".
upgrade now! [56.2] (what's this?)
Hotfix release available: 2025-05-14a "Librarian".
upgrade now! [56.1] (what's this?)
New release available: 2025-05-14 "Librarian".
upgrade now! [56] (what's this?)
prog:oracle
Schema
Lisa tabelisse veerg koos foregin key-ga:
alter table ipdb.ports add rootdevice_id number(9) references ipdb.devices(device_id) not null;
Eemalda veerg:
alter table ipdb.ports drop column root_device_id;
Lisa tabel:
CREATE TABLE ipdb.vlan_connections ( vlan_connection_id NUMBER (9) PRIMARY KEY, connection1_id NUMBER (9) REFERENCES ipdb.connections(connection_id), connection2_id NUMBER (9) REFERENCES ipdb.connections(connection_id) , creator_id NUMBER (9) NOT NULL , created TIMESTAMP(6) WITH TIME ZONE DEFAULT SYSDATE NOT NULL , modifier_id NUMBER (9) , modified TIMESTAMP(6) WITH TIME ZONE );
Muuda veergu:
alter table ipdb.devices modify root_device_id not null;
Lisa index:
CREATE UNIQUE INDEX anto_common_klient_kl_id_idx ON anto_common_klient(kl_id); CREATE INDEX anto_common_klient_kl_nimi_idx ON anto_common_klient(kl_nimi);
Lisa kasutaja:
CREATE USER mingi_username IDENTIFIED BY mingi_password DEFAULT tablespace users TEMPORARY tablespace temp; GRANT CONNECT, resource TO mingi_username; -- anna 6igus tabelit kasutada (prefix "ipdb" n2itab kasutajat, kellele see tabel kuulub) GRANT SELECT, UPDATE ON ipdb.ip_networks TO mingi_username; -- v6ta 6igused 2ra REVOKE ALL ON ipdb.ip_networks FROM mingi_username; -- anna 6igus package-s olevaid funktsioone kasutada GRANT EXECUTE ON ipdb_ip TO adsldb; -- p2ringu tegemine (NB! tabelile alati vaja omaniku prefix lisada) SELECT * FROM ipdb.ip_networks;
Materialized view'de tegemine:
CREATE MATERIALIZED VIEW "IPDB"."ANTO_COMMON_KLIENT" NOCACHE NOLOGGING REFRESH COMPLETE START WITH SYSDATE NEXT TRUNC(SYSDATE)+1+7/24 -- uuendatakse iga p2ev kell 07:00 WITH ROWID AS SELECT * FROM COMMON.KLIENT@ANTODB.CC.ELION.EE;
PL/SQL
Trigger:
CREATE OR REPLACE TRIGGER ti_device_addports AFTER INSERT ON devices FOR EACH ROW DECLARE BEGIN IPDB_MODEL_PORTS.NEW_DEVICE(:NEW.device_id, :NEW.device_model_id, :NEW.creator_id); END;
Custum exeption:
raise_application_error(-20002, 'Sloti tüüp ei kata seadme tüüpi');
Päringud
Connect by
Leiab mingi alamseadme ülima parenti. Näiteks kui on vaja teada millises reaalses kastis asub võrgukaart. Võrkari parentiks on näiteks emaplaat, aga meie tahame teada hoopis kasti ennast ehk siis emaplaadi parentit.
SELECT DISTINCT CONNECT_BY_ROOT device_id FROM devices WHERE device_id = :device_id START WITH parent_device_id IS NULL CONNECT BY parent_device_id = PRIOR device_id
Väljastab kõik antud tüübi alamtüübid. Kasutus: mis tüüpidega seadmed sobivad antud slotti.
SELECT type_id FROM types START WITH type_id = :TYPE CONNECT BY parent_id = PRIOR type_id;
Väljastab kõik tüübid, millega seade ühilduv on, s.t. mis tüüpi slottidesse saab seadet panna. Mudeli järgi:
SELECT type_id FROM types START WITH type_id IN ( SELECT type_id FROM device_model_types WHERE device_model_id = :model_id) CONNECT BY PRIOR parent_id = type_id;
Seadme järgi:
SELECT type_id FROM types START WITH type_id IN ( SELECT type_id FROM devices INNER JOIN device_model_types USING (device_model_id) WHERE device_id = :device_id ) CONNECT BY PRIOR parent_id = type_id;
Misc
Kui mingis skriptis UTF-8 stringid ei taha läbi tulla, siis vaja selline variable paika panna:
export NLS_LANG=.AL32UTF8
REGEXP
SELECT REGEXP_REPLACE('M123L04-12-05', '(.*)-(.*)-(.*)-(.*)', '\1-Lxx-\3-\4') FROM dual; SELECT SUBSTR('M123-L04-12-05', REGEXP_INSTR('M123-L04-12-05', '-L',1, 1, 0, 'i')) RESULT FROM dual; SELECT instr('ABCD-L01-12','-') FROM dual; -- leiab mis positsioonil tekstis asub ESIMENE sidekriips SELECT instr('ABCD-L01-12','-',1,2) FROM dual; -- leiab mis positsioonil tekstis asub TEINE sidekriips
prog/oracle.txt · Last modified: 2019/09/20 15:52 by 127.0.0.1
