Tabele fara clustered index
Mai jos este o procedura care rulata pe o baza de date Microsoft Sql Server, returneaza toate tabelele ce nu au clustered index definit.
[mai mult...]Soluții pentru problemele tale IT
Mai jos este o procedura care rulata pe o baza de date Microsoft Sql Server, returneaza toate tabelele ce nu au clustered index definit.
[mai mult...]Table: INDEXING [ON | OFF] Clause
Decizia despre ce partiții sunt indexate se ia folosind INDEXING [ON | OFF] asociată fiecărei partiții, implicit fiind INDEXING ON. Creăm un tabel partiționat cu trei partiții. Primele două partiții au indexarea activată. Una implicit și alta în mod explicit. A treia partiție are indexarea dezactivată.
— Creați și completați tabelul partiționat.
drop table t1 purge;
create table t1 (
id number,
description varchar2(50),
created_date date
)
partition by range (created_date) (
partition part_2021 values less than (date ‘2021-01-01’),
partition part_2022 values less than (date ‘2022-01-01’) indexing on,
partition part_2023 values less than (date ‘2023-01-01’) indexing off
);
insert into t1 values (1, ‘t1 one’, date ‘2021-07-01’);
insert into t1 values (2, ‘t1 two’, date ‘2023-07-01’);
insert into t1 values (3, ‘t1 three’, date ‘2023-01-01’);
commit;
Coloana INDEXING a viewului USER_TAB_PARTITIONS ne arată starea de indexare a fiecărei partiții. Doar partiția 2023 are INDEXING dezactivat.
column table_name format a20
column partition_name format a20
select table_name,
partition_name,
indexing
from user_tab_partitions
where table_name = ‘T1’
order by 1,2;
TABLE_NAME PARTITION_NAME INDE
——————– ——————– —-
T1 PART_2021 ON
T1 PART_2022 ON
T1 PART_2023 OFF
SQL>
Schimbăm clauza de indexare pentru o partiție folosind comanda ALTER TABLE … MODIFY PARTITION. Dezactivăm indexarea pentru partițiile 2021 și 2022 și activăm indexarea pentru partiția 2023.
alter table t1 modify partition part_2021 indexing off;
alter table t1 modify partition part_2022 indexing off;
alter table t1 modify partition part_2023 indexing on;
Putem vedea modificările reflectate în rezultatul din vizualizarea USER_TAB_PARTITIONS. Indexarea este dezactivată pentru partițiile 2021 și 2022. Indexarea este activată pentru partiția 2023.
select table_name,
partition_name,
indexing
from user_tab_partitions
where table_name = ‘T1’
order by 1,2;
TABLE_NAME PARTITION_NAME INDE
——————– ——————– —-
T1 PART_2021 OFF
T1 PART_2022 OFF
T1 PART_2023 ON
SQL>
Index: INDEXING [FULL | PARTIAL] Clause
Chiar și cu setările de indexare a partiției activate, în mod implicit, indecșii sunt creați ca INDEXING FULL, deci setarea partiției este ignorată.
Creăm un index local pe coloana CREATED_DATE. Dacă nu specificăm clauza INDEXING în timpul creării indexului, acțiunea implicită este INDEXING FULL.
drop index t1_local_partial_idx;
— create index t1_local_partial_idx on t1(created_date) local indexing full;
create index t1_local_partial_idx on t1(created_date) local;
Verificând coloana STATUS a viewului USER_IND_PARTITIONS, vedem că toate partițiile indexului sunt utilizabile. În mod implicit, crearea indexului ignoră setarea INDEXARE a partițiilor de tabel.
column index_name format a25
select index_name,
partition_name,
status
from user_ind_partitions
where index_name = ‘T1_LOCAL_PARTIAL_IDX’
order by 1,2;
INDEX_NAME PARTITION_NAME STATUS
————————- ——————– ——–
T1_LOCAL_PARTIAL_IDX PART_2021 USABLE
T1_LOCAL_PARTIAL_IDX PART_2022 USABLE
T1_LOCAL_PARTIAL_IDX PART_2023 USABLE
SQL>
Verificând coloana INDEXING a vizualizării USER_INDEXES, vedem că indexul este marcat ca indexare COMPLET.
column indexing format a8
select index_name,
indexing
from user_indexes
where index_name = ‘T1_LOCAL_PARTIAL_IDX’
order by 1;
INDEX_NAME INDEXING
————————- ——–
T1_LOCAL_PARTIAL_IDX FULL
SQL>
Stergem indexul și îl creăm din nou, de data aceasta folosind clauza INDEXING PARTIAL.
drop index t1_local_partial_idx;
create index t1_local_partial_idx on t1(created_date) local indexing partial;
Acum vedem că partițiile de tabel marcate ca INDEXING OFF nu sunt indexate și au partiții de index marcate ca inutilizabile. Partiția de tabel din 2023 a fost marcată ca INDEXING ON, deci este indexată și vedem o partiție de index utilizabilă.
select index_name,
partition_name,
status
from user_ind_partitions
where index_name = ‘T1_LOCAL_PARTIAL_IDX’
order by 1,2;
INDEX_NAME PARTITION_NAME STATUS
————————- ——————– ——–
T1_LOCAL_PARTIAL_IDX PART_2021 UNUSABLE
T1_LOCAL_PARTIAL_IDX PART_2022 UNUSABLE
T1_LOCAL_PARTIAL_IDX PART_2023 USABLE
SQL>
Verificând coloana INDEXING a vizualizării USER_INDEXES, vedem că indexul este marcat ca indexare PARTIAL.
column indexing format a8
select index_name,
indexing
from user_indexes
where index_name = ‘T1_LOCAL_PARTIAL_IDX’
order by 1;
INDEX_NAME INDEXING
————————- ——–
T1_LOCAL_PARTIAL_IDX PARTIAL
SQL>
Indecșii globali pot fi creați și ca indecși parțiali, doar cu partițiile marcate incluse în index.
Creăm un index global parțial. Observați utilizarea clauzei de indexare “partial”. Indexul rezultat este marcat ca INDEXING PARTIAL.
create index t1_global_partial_idx on t1(description) global indexing partial;
— Verificati statusul indexului
select index_name,
indexing
from user_indexes
where index_name like ‘T1%’
order by 1;
INDEX_NAME INDEXING
————————- ——–
T1_GLOBAL_PARTIAL_IDX PARTIAL
T1_LOCAL_PARTIAL_IDX PARTIAL
SQL>
[mai mult...]Acest articol descrie instalarea bazei de date Oracle 19c pe Oracle Linux 7 X64 (OL7)
1: Download Software
Download the Oracle software from OTN or My Oracle Support
2 Fișierul hosts
Fișierul „/etc/hosts” trebuie să conțină un nume complet calificat pentru server.
De exemplu.
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.1.100 oel7.localdomain oel7
Setați numele de gazdă corect în fișierul „/etc/hostname”.
oel7.localdomain
3: Cerințe preliminare de instalare Oracle ( prerechizite)
Efectuați fie Configurarea automată, fie Configurarea manuală pentru a îndeplini cerințele preliminare de bază. Configurarea suplimentară este necesară pentru toate instalările
3.1 Automatic Setup
Folosirea packetului oracle-database-preinstall-19c va instala si va configura automat o parte din cerintele necesare instalarii bazei de date oracle 19c. Pentru instalare acestuia rulati conectat ca root urmatoarea comanda:
# yum install -y oracle-database-preinstall-19c
Configurare manuală
Dacă nu ați folosit pachetul „oracle-database-preinstall-19c” pentru a îndeplini toate cerințele preliminare, va trebui să efectuați manual următoarele configurari
Adăugați următoarele linii în fișierul „/etc/sysctl.conf” sau într-un fișier numit „/etc/sysctl.d/98-oracle.conf”.
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
Rulați una dintre următoarele comenzi pentru a modifica parametrii systemului de operare (kernel), în funcție de fișierul pe care l-ați editat.
/sbin/sysctl -p
# Or
/sbin/sysctl -p /etc/sysctl.d/98-oracle.conf
Adăugați următoarele linii într-un fișier numit „/etc/security/limits.d/oracle-database-preinstall-19c.conf”.
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 134217728
oracle soft memlock 134217728
Următoarele pachete sunt necesare pentru instalarea Oracle.
yum install -y bc
yum install -y binutils
yum install -y compat-libcap1
yum install -y compat-libstdc++-33
#yum install -y dtrace-modules
#yum install -y dtrace-modules-headers
#yum install -y dtrace-modules-provider-headers
yum install -y dtrace-utils
yum install -y elfutils-libelf
yum install -y elfutils-libelf-devel
yum install -y fontconfig-devel
yum install -y glibc
yum install -y glibc-devel
yum install -y ksh
yum install -y libaio
yum install -y libaio-devel
yum install -y libdtrace-ctf-devel
yum install -y libXrender
yum install -y libXrender-devel
yum install -y libX11
yum install -y libXau
yum install -y libXi
yum install -y libXtst
yum install -y libgcc
yum install -y librdmacm-devel
yum install -y libstdc++
yum install -y libstdc++-devel
yum install -y libxcb
yum install -y make
yum install -y net-tools # Clusterware
yum install -y nfs-utils # ACFS
yum install -y python # ACFS
yum install -y python-configshell # ACFS
yum install -y python-rtslib # ACFS
yum install -y python-six # ACFS
yum install -y targetcli # ACFS
yum install -y smartmontools
yum install -y sysstat
# Added by me.
yum install -y unixODBC
Creați noile grupuri de utilizatori și utilizatorii.
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
#groupadd -g 54324 backupdba
#groupadd -g 54325 dgdba
#groupadd -g 54326 kmdba
#groupadd -g 54327 asmdba
#groupadd -g 54328 asmoper
#groupadd -g 54329 asmadmin
#groupadd -g 54330 racdba
useradd -u 54321 -g oinstall -G dba,oper oracle
Additional Setup
Setați parola pentru utilizatorul „oracle”.
#passwd oracle
Setați Linux securizat la permisiv prin editarea fișierului „/etc/selinux/config”, asigurându-vă că marcajul SELINUX este setat după cum urmează.
SELINUX=permissive
Odată ce modificarea este completă, reporniți serverul sau executați următoarea comandă.
# setenforce Permissive
Dacă aveți paravanul de protecție Linux activat, va trebui să îl dezactivați sau sa il configurati. Pentru dezactivare folositi urmatoarele comenzi:
# systemctl stop firewalld
# systemctl disable firewalld
Creați directoarele în care va fi instalat software-ul Oracle.
mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
mkdir -p /u02/oradata
chown -R oracle:oinstall /u01 /u02
chmod -R 775 /u01 /u02
Setati variabilele de system
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/19.0.0/dbhome_1
Conectați-vă la utilizatorul Oracle. Dacă utilizați X display, setați variabila de mediu DISPLAY.
DISPLAY=<server-name>:0.0; export DISPLAY
Dezarhivați software-ul direct in foldderul ORACLE_HOME și porniți Oracle Universal Installer (OUI) lansând una dintre următoarele comenzi în directorul ORACLE_HOME. Modul interactiv va afișa ecrane de instalare a GUI pentru a permite intrarea utilizatorului, în timp ce modul silențios va instala software-ul fără a afișa niciun ecran, deoarece toate opțiunile necesare sunt deja specificate pe linia de comandă.
# Unzip software.
cd $ORACLE_HOME
unzip -oq /path/to/software/LINUX.X64_193000_db_home.zip
# Interactive mode.
./runInstaller
# Silent mode.
./runInstaller -ignorePrereq -waitforcompletion -silent \
-responseFile ${ORACLE_HOME}/install/response/db_install.rsp \
oracle.install.option=INSTALL_DB_SWONLY \
ORACLE_HOSTNAME=${ORACLE_HOSTNAME} \
UNIX_GROUP_NAME=oinstall \
INVENTORY_LOCATION=${ORA_INVENTORY} \
SELECTED_LANGUAGES=en,en_GB \
ORACLE_HOME=${ORACLE_HOME} \
ORACLE_BASE=${ORACLE_BASE} \
oracle.install.db.InstallEdition=EE \
oracle.install.db.OSDBA_GROUP=dba \
oracle.install.db.OSBACKUPDBA_GROUP=dba \
oracle.install.db.OSDGDBA_GROUP=dba \
oracle.install.db.OSKMDBA_GROUP=dba \
oracle.install.db.OSRACDBA_GROUP=dba \
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false \
DECLINE_SECURITY_UPDATES=true
Rulați scripturile de administrare (root) când vi se solicită.
Ca utilizator root, executați următoarele scripturi:
1. /u01/app/oraInventory/orainstRoot.sh
2. /u01/app/oracle/product/19.0.0/dbhome_1/root.sh
Acum sunteți gata să creați o bază de date.
[mai mult...]Pachetul UTL_MAIL a fost introdus în Oracle 10g pentru a oferi un API simplu care să permită trimiterea e-mailurilor din PL/SQL. În versiunile anterioare, acest lucru era posibil folosind pachetul UTL_SMTP, dar acest lucru necesita cunoștințe despre protocolul SMTP.
Setup
Pachetul este încărcat prin rularea următoarelor scripturi.
CONN sys/password AS SYSDBA
@$ORACLE_HOME/rdbms/admin/utlmail.sql
@$ORACLE_HOME/rdbms/admin/prvtmail.plb
În plus, parametrul SMTP_OUT_SERVER trebuie setat pentru a identifica serverul SMTP.
CONN sys/password AS SYSDBA
ALTER SYSTEM SET smtp_out_server=’smtp_server.domain.com’ SCOPE=SPFILE;
Restartarea bazei de date:
SHUTDOWN IMMEDIATE
STARTUP
Sugestia mea este să utilizați un mail relay pe serverul bazei de date, în loc să vă conectați direct la un server de e-mail extern.
Configurația unui mail relay poate fi simplă, cu o referință la „localhost” în parametrul SMTP_OUT_SERVER. Orice complexitate legată de conectarea la serverul dvs. de e-mail extern este apoi ascunsă în configurația mail relay
Trimiterea de e-mailuri
Odată cu finalizarea configurației, acum putem trimite un e-mail utilizând procedura SEND. Acceptă următorii parametri.
SENDER: Aceasta ar trebui să fie o adresă de e-mail validă.
RECIPIENTS: O listă de adrese de e-mail, separate prin virgulă.
CC : O listă opțională de adrese de e-mail separate prin virgulă.
BCC : o listă opțională de adrese de e-mail separate prin virgulă.
SUBJECT : linia de subiect pentru e-mail.
MESSAGE : Corpul e-mailului.
MIME_TYPE : Setat la „text/plain; charset=us-ascii’ implicit.
PRIORITY : (1-5) Setată implicit la 3.
REPLYTO: Introdus în 11gR2. O adresă de e-mail validă.
Mai jos este un exemplu de utilizare.
BEGIN
UTL_MAIL.send(sender => ‘eu@domain.com’,
recipients => ‘coleg1@domain.com,coleg2@domain.com’,
cc => ‘manager1@domain.com’,
bcc => ‘manager2@domain.com’,
subject => ‘UTL_MAIL Test’,
message => ‘Daca primesti mesajul , merge!’);
END;
/
Trimite e-mailuri cu atașamente
Pachetul acceptă și trimiterea de e-mailuri cu atașamente RAW și VARCHAR2 folosind pachetele SEND_ATTACH_RAW și, respectiv, SEND_ATTACH_VARCHAR2. Ele funcționează într-un mod similar cu procedura SEND, cu câțiva parametri suplimentari.
ATTACHMENT : Conținutul atașamentului. Acesta ar trebui să fie VARCHAR2 sau RAW, în funcție de procedura pe care o apelați.
ATT_INLINE : Indică dacă atașarea ar trebui să fie citită în linie. Implicit FALSE.
ATT_MIME_TYPE : Valoarea implicită este „text/plain; charset=us-ascii’.
ATT_FILENAME : Numele atașamentului.
Mai jos este un exemplu de trimitere a unui e-mail cu un atașament text.
BEGIN
UTL_MAIL.send_attach_varchar2 (
sender => ‘eu@domain.com’,
recipients => ‘coleg1@domain.com,coleg2@domain.com’,
cc => ‘manager1@domain.com’,
bcc => ‘manager2@domain.com’,
subject => ‘UTL_MAIL Test’,
message => ‘Daca primesti mesajul , merge!’,
attachment => ‘Acesta este conținutul atașamentului.’,
att_filename => ‘my_attachment.txt’
);
END;
/
Mai jos este o procedura ce returneaza pentru fiecare baza de date de pe ms sql server, dimensiunea memoriei consumate de acea baza.
[mai mult...]Mai jos este o procedura ce returneaza toate permisiunile de tip Deny de pe baza de date MSSQL pe care este rulata.
[mai mult...]