Servicii baze de date

MySql 60 Solutii

SQL Server 246 Solutii

Invisible Indexes in Oracle Database

Oracle permite ca indecșii să fie marcați ca invizibili. Indecșii invizibili sunt menținuți ca orice alt index, dar sunt ignorați de optimizator, cu excepția cazului în care parametrul OPTIMIZER_USE_INVISIBLE_INDEXES este setat la TRUE la nivel de instanță sau sesiune. Indecșii pot fi creați ca fiind invizibili folosind cuvântul cheie INVISIBLE, iar vizibilitatea lor poate fi comutată folosind comanda ALTER INDEX.

create index index_name on table_name(column_name) invisible;

alter index index_name invisible;
alter index index_name visible;

Indicii invizibili pot fi utili pentru procesele cu nevoi specifice de indexare, unde prezența indicilor poate afecta negativ alte zone funcționale. De asemenea, sunt utile pentru testarea impactului adăugării sau eliminării unui index.

Următorul script creează și populează un tabel, apoi creează un index invizibil pe acesta. create table tab1 as select level as id from dual connect by level <= 10000; create index ind1_id on tab1(id) invisible; exec dbms_stats.gather_table_stats(null, ‘tab1’, cascade=> true);

Starea curentă de vizibilitate a unui index este indicată de coloana VIZIBILITATE a vizualizărilor [DBA|ALL|USER]_INDEXES.

column index_name format a30
column visibility format a10

select index_name, visibility
from   user_indexes;

INDEX_NAME                     VISIBILITY
------------------------------ ----------
IND1_ID                      INVISIBLE

O interogare care utilizează coloana indexată din clauza WHERE ignoră indexul și efectuează o scanare completă a tabelului.

select * from tab1 where id = 9999;

select * from table(dbms_xplan.display_cursor);

----------------------------------------------------------------------------
| Id  | Operation         | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |        |       |       |     7 (100)|          |
|*  1 |  TABLE ACCESS FULL| TAB1   |     1 |     4 |     7   (0)| 00:00:01 |
----------------------------------------------------------------------------

Setarea parametrului OPTIMIZER_USE_INVISIBLE_INDEXES face ca indexul să fie disponibil pentru optimizator.

alter session set optimizer_use_invisible_indexes=true;

select * from tab1 where id = 9998;

select * from table(dbms_xplan.display_cursor);

------------------------------------------------------------------------------
| Id  | Operation        | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------
|   0 | SELECT STATEMENT |           |       |       |     1 (100)|          |
|*  1 |  INDEX RANGE SCAN| IND1_ID |     1 |     4 |     1   (0)| 00:00:01 |
------------------------------------------------------------------------------

Dacă faceți indexul vizibil, acesta este încă disponibil pentru optimizator atunci când parametrul OPTIMIZER_USE_INVISIBLE_INDEXES este resetat.

alter session set optimizer_use_invisible_indexes=false;
alter index ii_tab_id visible;

select * from TAB1 where id = 9997;

select * from table(dbms_xplan.display_cursor);

------------------------------------------------------------------------------
| Id  | Operation        | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------
|   0 | SELECT STATEMENT |          |       |       |     1 (100)|          |
|*  1 |  INDEX RANGE SCAN| IND1_ID  |     1 |     4 |     1   (0)| 00:00:01 |
------------------------------------------------------------------------------
 

Dacă faceți din nou indexul invizibil, acesta nu mai este disponibil pentru optimizator.

alter index ind1_id invisible;

select * from tab1 where id = 9996;

select * from table(dbms_xplan.display_cursor);

----------------------------------------------------------------------------
| Id  | Operation         | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |        |       |       |     7 (100)|          |
|*  1 |  TABLE ACCESS FULL| TAB1  |     1 |     4 |     7   (0)| 00:00:01 |
----------------------------------------------------------------------------
[mai mult...]

Enterprise Manager Database Express in Database 12c Release 1

Key things to remember about Enterprise Manager Database Express.

  • EM DB Express is not Cloud Control or Grid Control!
  • EM DB Express is not a replacement for the DB Control from 11g, as it has significantly less functionality.
  • A DBA will not be able to administer the database using just EM DB Express.

If your organisation uses Cloud Control, which it should, you will probably never use EM Database Express. If on the other hand you are playing around with the database and want a pretty interface to perform some tasks, the EM Database Express might be your answer.

Configuration

If you’ve done the sort of database installations described here, you’ve probably already got EM Database Express configured. Unlike the DB Control, it runs from inside the database using the XML DB infrastructure, so there are no additional parts to install or executables to start.

To get up and running, you just need to check the HTTPS port is set for the XML DB.

SQL> SELECT DBMS_XDB_CONFIG.gethttpport FROM dual;

GETHTTPPORT
-----------
          0

SQL> SELECT DBMS_XDB_CONFIG.gethttpsport FROM dual;

GETHTTPSPORT
------------
        5500

SQL> EXEC DBMS_XDB_CONFIG.sethttpsport(5500);

PL/SQL procedure successfully completed.


Once that is done, EM Database Express is accessible using the following type of URL.

https://<hostname>:<port>/em/

Example:

https://ol6-121.localdomain:5500/em/

 

Enter your database login details and click the “Login” button.

You are presented with the home page for the database.

Multitenant Configuration

For pluggable databases the configuration is a little different.

-- In the root container.
conn sys/SysPassword1@//localhost:1521/cdb1 as sysdba
exec dbms_xdb_config.sethttpsport(0);
exec dbms_xdb_config.setglobalportenabled(TRUE);

-- In each pluggable database.
conn sys/SysPassword1@//localhost:1521/pdb1 as sysdba
exec dbms_xdb_config.sethttpsport(5500);
Usage

The menu structure for DB Express is quite simple.

Configuration
  - Initialization Parameters
  - Memory
  - Database Feature Usage
  - Current Database Properties

Storage
  - Undo Management
  - Redo Log Groups
  - Archive Logs
  - Control Files

Security
  - Users
  - Roles

Performance
  - Performance Hub
  - SQL Tuning Advisor

You will notice, there is very little in the way of administration screens. This is not a tool a DBA will use to administer the database. Most of the screens are self explanatory. The only really interesting screen is the Performance Hub, which actually looks nicer than the Cloud Control equivalent.

[mai mult...]

Instalare baza de date Oracle 19c pe Oracle Linux 8 (OL8)

Situatie

Acest articol descrie instalarea bazei de date Oracle 19c pe Oracle Linux 8 X64 (OL8)

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 oel8.localdomain oel8

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.

dnf install -y bc    
dnf install -y binutils
#dnf install -y compat-libcap1
dnf install -y compat-libstdc++-33
#dnf install -y dtrace-modules
#dnf install -y dtrace-modules-headers
#dnf install -y dtrace-modules-provider-headers
#dnf install -y dtrace-utils
dnf install -y elfutils-libelf
dnf install -y elfutils-libelf-devel
dnf install -y fontconfig-devel
dnf install -y glibc
dnf install -y glibc-devel
dnf install -y ksh
dnf install -y libaio
dnf install -y libaio-devel
#dnf install -y libdtrace-ctf-devel
dnf install -y libXrender
dnf install -y libXrender-devel
dnf install -y libX11
dnf install -y libXau
dnf install -y libXi
dnf install -y libXtst
dnf install -y libgcc
dnf install -y librdmacm-devel
dnf install -y libstdc++
dnf install -y libstdc++-devel
dnf install -y libxcb
dnf install -y make
dnf install -y net-tools # Clusterware
dnf install -y nfs-utils # ACFS
dnf install -y python # ACFS
dnf install -y python-configshell # ACFS
dnf install -y python-rtslib # ACFS
dnf install -y python-six # ACFS
dnf install -y targetcli # ACFS
dnf install -y smartmontools
dnf install -y sysstat

# Added by me.
dnf install -y unixODBC

# New for OL8
dnf install -y libnsl
dnf install -y libnsl.i686
dnf install -y libnsl2
dnf install -y libnsl2.i686

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

  • Instalarea

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

# Fake Oracle Linux 7.
export CV_ASSUME_DISTID=OEL7.6

# 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...]