понедельник, 18 октября 2010 г.

Tablespace Information

Here are some scripts related to Tablespace Information .
Источник: http://vsbabu.org/oracle/sect03.html

Information

TABLESPACE INFORMATION NOTES:


  • Tablespace Name - Name of the tablespace

  • Initial Extent - Default initial extent size

  • Next Extent - Default incremental extent size

  • Min Extents - Default minimum number of extents

  • Max Extents - Default maximum number of extents

  • PCT Increase - Default percent increase for extent size

  • Status - Tablespace status: ONLINE, OFFLINE, or INVALID (tablespace has been dropped)

  • Contents - Type of tablespace. This column will have 'TEMPORARY' (v7.3+) for dedicated temporary tablespaces, and 'PERMANENT' for tablespaces that can store both temporary sort segments and permanent objects.
    select TABLESPACE_NAME,
     INITIAL_EXTENT,
     NEXT_EXTENT,
     MIN_EXTENTS,
     MAX_EXTENTS,
     PCT_INCREASE,
     STATUS,
     CONTENTS
    from  dba_tablespaces
    order  by TABLESPACE_NAME 
    
    

    Coalesced Exts

    WAIT STATISTIC NOTES:

  • Tablespace Name - Name of tablespace

  • Total Extents - Total number of free extents in tablespace

  • Extents Coalesced - Total number of coalesced free extents in tablespace

  • % Extents Coalesced - Percentage of coalesced free extents in tablespace

  • Total Bytes - Total number of free bytes in tablespace

  • Bytes Coalesced - Total number of coalesced free bytes in tablespace

  • Total Blocks - Total number of free oracle blocks in tablespace

  • Blocks Coalesced - Total number of coalesced free Oracle blocks in tablespace

  • % Blocks Coalesced - Percentage of coalesced free Oracle blocks in tablespace
    select TABLESPACE_NAME,
     TOTAL_EXTENTS,
     EXTENTS_COALESCED,
     PERCENT_EXTENTS_COALESCED,
     TOTAL_BYTES,
     BYTES_COALESCED,
     TOTAL_BLOCKS,
     BLOCKS_COALESCED,
     PERCENT_BLOCKS_COALESCED
    from  dba_free_space_coalesced
    order  by TABLESPACE_NAME
    
    

    Usage

    TABLESPACE USAGE NOTES:

    1. Tablespace Name - Name of the tablespace
    2. Bytes Used - Size of the file in bytes
    3. Bytes Free - Size of free space in bytes
    4. Largest - Largest free space in bytes
    5. Percent Used - Percentage of tablespace that is being used - Careful if it is more than 85%
    select a.TABLESPACE_NAME,
     a.BYTES bytes_used,
     b.BYTES bytes_free,
     b.largest,
     round(((a.BYTES-b.BYTES)/a.BYTES)*100,2) percent_used
    from  
     (
      select  TABLESPACE_NAME,
       sum(BYTES) BYTES 
      from  dba_data_files 
      group  by TABLESPACE_NAME
     )
     a,
     (
      select  TABLESPACE_NAME,
       sum(BYTES) BYTES ,
       max(BYTES) largest 
      from  dba_free_space 
      group  by TABLESPACE_NAME
     )
     b
    where  a.TABLESPACE_NAME=b.TABLESPACE_NAME
    order  by ((a.BYTES-b.BYTES)/a.BYTES) desc
    
    

    Users Default (SYSTEM)

    SYSTEM TABLESPACE USAGE NOTES:

  • Username - Name of the user

  • Created - User creation date

  • Profile - Name of resource profile assigned to the user

  • Default Tablespace - Default tablespace for data objects

  • Temporary Tablespace - Default tablespace for temporary objects

  • Only SYS, SYSTEM and possibly DBSNMP should have their default tablespace set to SYSTEM.
    select  USERNAME,
     CREATED,
     PROFILE,
     DEFAULT_TABLESPACE,
     TEMPORARY_TABLESPACE
    from  dba_users
    order  by USERNAME
    
    

    Objects in SYSTEM TS

    OBJECTS IN SYSTEM TABLESPACE NOTES:

  • Owner - Owner of the object

  • Object Name - Name of object

  • Object Type - Type of object

  • Tablespace - Tablespace name

  • Size - Size (bytes) of object

  • Any user (other than SYS, SYSTEM) should have their objects moved out of the SYSTEM tablespace
    select OWNER,
     SEGMENT_NAME,
     SEGMENT_TYPE,
     TABLESPACE_NAME,
     BYTES
    from  dba_segments
    where TABLESPACE_NAME = 'SYSTEM'
    and OWNER not in ('SYS','SYSTEM')
    order  by OWNER, SEGMENT_NAME
    
    

    Freespace/Largest Ext

    FREE, LARGEST, & INITIAL NOTES:

  • Tablespace - Name of the tablespace

  • Total Free Space - Total amount (bytes) of freespace in the tablespace

  • Largest Free Extent - Largest free extent (bytes) in the tablespace
    select  TABLESPACE_NAME,
     sum(BYTES) Total_free_space,
        max(BYTES) largest_free_extent
    from  dba_free_space
    group  by TABLESPACE_NAME
    
    

  • среда, 29 сентября 2010 г.

    Установка htop на CentOS

    htop — продвинутый монитор процессов, написанный для GNU/Linux. Он был задуман заменить стандартную программу top. Htop показывает динамический список системных процессов, список обычно выравнивается по использованию ЦПУ. В отличие от top htop показывает все процессы в системе. Также показывает время непрерывной работы, использование процессоров и памяти.
    Htop часто применяется в тех случаях, когда информации даваемой утилитой top недостаточно, например при поиске утечек памяти в процессах.
    Htop написан на языке Си и использует для отображения библиотеку Ncurses.
    Для установки необходимо сначала скачать RPM-пакет:

    wget http://packages.sw.be/htop/htop-0.8.3-1.rh9.rf.i386.rpm

    И далее произвести его установку:

    rpm -ihv htop-0.8.3-1.rh9.rf.i386.rpm

    После того как система уведомит вас об успешной инсталляции, следует выполнить htop.

    Дополнительные ссылки:

    вторник, 28 сентября 2010 г.

    Заметки по MySQL

    1) Подключение к базе без ввода пароля:

    mysql -u application -papplication


    2)

    select concat('rename table ', table_name, ' to ' , lower(table_name) , ';') from information_schema.tables where table_schema = 'your_schema_name';

    Автоматическая генерация Excel-файлов

    В ходе работы как-то возникла необходимость автоматического создания Excel-файла на основе заданного шаблона и подстановка в него заданных значений. Каждый файл должен иметь уникальное имя.

    понедельник, 27 сентября 2010 г.

    Заметки по ORACLE

    0) Подключение под SYSDBA:
    1) Изменение пароля для схемы IAMUSER на NEWPASSWD:

    ALTER USER IAMUSER IDENTIFIED BY NEWPASSWD;

    2) Просмотр активных сессий пользователя IAMUSER:

    SELECT * FROM V$SESSION WHERE status='ACTIVE' AND username='IAMUSER';

    3) Создание схемы IAMUSER с паролем PASSWD, раздача ей прав (CONNECT, RESOURCE):

    CREATE USER IAMUSER IDENTIFIED BY PASSWD DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP";
    GRANT "CONNECT" TO IAMUSER;
    GRANT "RESOURCE" TO IAMUSER;

    4) Несколько консольных команд для работы с Enterprise Manager:

    emctl status dbconsole - проверка статуса запуска em
    emctl start dbconsole - запуск em

    5) Чтобы посмотреть детально значения даты-времени:

    TO_CHAR(DATE_FIELD, 'DD.MM.YY HH24:MI')

    6) Блокировка или разблокировка пользователя
    SQL> ALTER USER username ACCOUNT LOCK;
    SQL> ALTER USER username ACCOUNT UNLOCK;
    
    
    7) Как убить запрос 
    SELECT sid, serial#, status, server
    FROM v$session
    WHERE username = 'JWARD'
    
    ALTER SYSTEM KILL SESSION 'sid, serial'
    
    
    8) Количество подвисших запросов можно подсмотреть в системной вьюшке:
    SELECT COUNT(last_call_et) FROM gv$session WHERE status='ACTIVE' AND last_call_et>=10 AND username IS NOT NULL
    
    Сами же запросы (если есть повод реагировать и шевелиться дальше) выковыриваем более детально так:
    SELECT username, machine, last_call_et, (SELECT sql_text FROM gv$sql WHERE sql_id=s.sql_id AND inst_id=s.inst_id) sql_text 
    FROM gv$session s 
    WHERE 
    status='ACTIVE'
    AND last_call_et>=10 
    AND username IS NOT NULL
     
    9. Вывод заблокированных объектов ORACLE:
    select     oracle_username || ' (' || s.osuser || ')' username
    ,  s.sid || ',' || s.serial# sess_id
    ,  owner || '.' || object_name object
    ,  object_type
    ,  decode( l.block
    ,       0, 'Not Blocking'
    ,       1, 'Blocking'
    ,       2, 'Global') status
    ,  decode(v.locked_mode
    ,       0, 'None'
    ,       1, 'Null'
    ,       2, 'Row-S (SS)'
    ,       3, 'Row-X (SX)'
    ,       4, 'Share'
    ,       5, 'S/Row-X (SSX)'
    ,       6, 'Exclusive', TO_CHAR(lmode)) mode_held
    from       v$locked_object v
    ,  dba_objects d
    ,  v$lock l
    ,  v$session s
    where      v.object_id = d.object_id
    and        v.object_id = l.id1
    and        v.session_id = s.sid
    order by oracle_username
    ,  session_id
    
    
    
    9) -- Показывает список пользователей определенных в базе данных
    -- и показывает из временные табличные пространства и табличное
    -- пространство по-умолчанию 
    SET LINESIZE 145
    SET PAGESIZE 9999
    SET VERIFY   off
    
    COLUMN username             FORMAT a15  HEAD 'Username'
    COLUMN account_status       FORMAT a17  HEAD 'Status'
    COLUMN expiry_date                      HEAD 'Expire Date'
    COLUMN default_tablespace   FORMAT a25  HEAD 'Default Tbs.'
    COLUMN temporary_tablespace FORMAT a10  HEAD 'Temp Tbs.'
    COLUMN created                          HEAD 'Created On'
    COLUMN profile              FORMAT a10  HEAD 'Profile'
    COLUMN sysdba               FORMAT a6   HEAD 'SYSDBA'
    COLUMN sysoper              FORMAT a7   HEAD 'SYSOPER'
    
    SELECT DISTINCT
           A.USERNAME USERNAME, 
           A.ACCOUNT_STATUS ACCOUNT_STATUS,
           TO_CHAR(A.EXPIRY_DATE, 'DD-MON-YYYY HH24:MI:SS') EXPIRY_DATE,
           A.DEFAULT_TABLESPACE DEFAULT_TABLESPACE,
           A.TEMPORARY_TABLESPACE TEMPORARY_TABLESPACE,
           TO_CHAR(A.CREATED, 'DD-MON-YYYY HH24:MI:SS') CREATED,
           A.PROFILE PROFILE,
           DECODE(P.SYSDBA,'TRUE', 'TRUE','') SYSDBA,
           DECODE(P.SYSOPER,'TRUE','TRUE','') SYSOPER
    FROM DBA_USERS A, 
         V$PWFILE_USERS  P
    WHERE P.USERNAME (+) = A.USERNAME 
    ORDER BY USERNAME
    
    
    Размер и свободное место для всех табличных пространств 
    SELECT a.tablespace_name, "Free, MB", "Total, MB" FROM
      (SELECT tablespace_name, ROUND(SUM(bytes)/1024/1024) AS "Total, MB" FROM dba_data_files GROUP BY tablespace_name
      UNION
      SELECT tablespace_name, ROUND(SUM(bytes)/1024/1024) AS "Total, MB" FROM dba_temp_files GROUP BY tablespace_name) a,
      (SELECT tablespace_name, ROUND(SUM(bytes)/1024/1024) AS "Free, MB" FROM dba_free_space GROUP BY tablespace_name) b
    WHERE a.tablespace_name = b.tablespace_name (+)
    ORDER BY a.tablespace_name;

    четверг, 23 сентября 2010 г.

    Проблема с подключением на сайты антивирусов

    Часто приходилось сталкиваться с проблемой, когда ПК, зараженный вирусом, не позволяет зайти на сайты антивирусных программ В Интернет, таких как: Dr.Web, Kaspersky, Nod. После чистки ПК и удаления всех вирусов проблема подключения на указанные сайты может остаться. Решить проблемы можно с помощью запуска следующего скрипта в AVZ:

    begin
    SearchRootkit(true, true);
    SetAVZGuardStatus(True);
    QuarantineFile('c:\windows\system32\drivers\synsenddrv.sys','');
    QuarantineFile('c:\docume~1\user\locals~1\temp\synsql.exe','');
    QuarantineFile('c:\windows\system32\16d6697f.exe','');
    QuarantineFile('c:\windows\system32\sdra64.exe','');
    DeleteFile('c:\windows\system32\drivers\synsenddrv.sys');
    DeleteFile('c:\docume~1\user\locals~1\temp\synsql.exe');
    DeleteFile('c:\windows\system32\16d6697f.exe');
    DeleteFile('c:\windows\system32\sdra64.exe');
    RegKeyParamDel('HKEY_CURRENT_USER','Software\Microsoft\Windows\CurrentVersion\Run','synsql');
    BC_ImportAll;
    ExecuteSysClean;
    BC_DeleteSvc('synsend');
    BC_Activate;
    ExecuteRepair(19);
    ExecuteRepair(20);
    RebootWindows(true);
    end.

    После перезагрузки компьюетра выполнить:

    begin
    CreateQurantineArchive(GetAVZDirectory+'quarantine .zip');
    end.

    Также может помочь чистка ветки реестра:

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes\]

    воскресенье, 19 сентября 2010 г.

    CentOS 5.5 (Final) + OpenVZ

    Небольшая статья о том, как я устанавливал OpenVZ на CentOS 5.5 (Final).
    1) Для начала необходимо установить репозиторий OpenVZ. В своей работе с Linux я использую установщик пакетов yum, поэтому в статье буду использовать именно этой утилитой. 

    cd /etc/yum.repos.d
    wget http://download.openvz.org/openvz.repo

    2) Переходим к установке ядра OpenVZ, выполняем:

    yum install ovzkernel [flavor]

    Здесь вместо [flavor] должен стоять параметр устанавливаемого ядра. Этот параметр выбирается исходя из следующих условий, который подробно можно узнать на http://wiki.openvz.org/Kernel_flavors. Исходя из целей виртуализации, мной был выбрано значение PAE.

    3) Далее необходимо убедиться, что ядро прописалось в загрузчик (grub). Просмотрим файл /boot/grub/grub.conf, в нем должно примерно следующее:

    title Fedora Core (2.6.8-022stab029.1)
    root (hd0,0)
    kernel /vmlinuz-2.6.8-022stab029.1 ro root=/dev/sda5 quiet rhgb vga=0x31B
    initrd /initrd-2.6.8-022stab029.1.img

    Внесем несколько изменений, чтобы OpenVZ корректно запускалось на нашей CentOS.

    4) На вики, посвященной OpenVZ, говориться о достаточно большом количестве параметров, который должны быть изменены в /etc/sysctl.conf для корректной работы. Но мне было достаточно установить 1 для net.ipv4.ip_forward.

    5) Теперь необходимо отключить SELinux в файле /etc/sysconfig/selinux с помощью команды:

    SELINUX=disabled

    6) Предварительные настройки операционной системы завершены,выполним перезагрузку:

    reboot -f

    7) После перезагрузки переходим к настройке виртуальных машин. Сначала скачаем шаблон, который будем устанвливать на нашу первую виртуалку:

    cd /vz/template/cache
    wget http://download.openvz.org/template/precreated/contrib/centos-5-i386-default.tar.gz

    Как видно, устанавливаем centos-5-i386-default. Посный список возможных шаблонов есть на сайте http://wiki.openvz.org/Download/template/precreated.

    8) Теперь будем устанавливать непосредственно виртулку. Для этого выполняем команду:

    vzctl create 101 -–ostemplate centos-5-i386-default -–config vps.basic

    На этом этапе у меня были проблемы с поиском конфигурационного файла. Но исходя их сообщений системы в каком именно файле она ищет конфигурацию, копировал содержимое и радовался установке.

    Значение 101 - выбрано случайным образом, но оно должно быть уникальным для контейнеров, развернутых на одной ОС.

    9) Установим запуск созданной виртуалки при запуске ОС:

    vzctl set 101 -–onboot yes -–save

    10) Пропишем название хоста и IP-адрес:

    vzctl set 101 –-hostname testvirtual –-save
    vzctl set 101 –-ipadd 192.168.0.101 –-save

    11) Установим количество сокетов и сервером имен:

    vzctl set 101 –-numothersock 120 –-save
    vzctl set 101 –-nameserver 213.133.98.98 –-nameserver 213.133.99.99 –save

    12) Запустим созданную виртуалку:

    vzctl start 101

    13) Установим пароль для пользователя root:

    vzctl exec 101 passwd

    14) Подключимся к виртуалке:

    vzctl enter 101

    15) Для выхода использыем привычное

    exit

    16) Для просмотра списка запучещенных контейнеров:

    vzlist

    17) Для остановки, перезапуска или удаления виртуальной машины, исполуйте следущие команды:

    vzctl stop 101
    vzctl restart 101
    vzctl destroy 101

    Дополнительные ссылки:

    суббота, 18 сентября 2010 г.

    Статический адрес в Linux

    Настройки присвоения IP-адресов хранятся в Linux, перейти в нее можно 
    с помощью следующей команды:
    cd /etc/sysconfig/network-scripts
    Сами настройки хранятся в файле ifcfg-eth0. 
    Пример обычно файла с заданием статического IP:
    # File: ifcfg-eth0
    #
    #
    DEVICE=eth0
    IPADDR=192.168.1.100
    NETMASK=255.255.255.0
    BOOTPROTO=static
    ONBOOT=yes
    #
    # The following settings are optional
    #
    BROADCAST=192.168.1.255
    NETWORK=192.168.1.0 
    
    При динамическом выделении IP, файл буде выглядеть следующим образом:
    #
    # File: ifcfg-eth0
    #
    DEVICE=eth0
    BOOTPROTO=dhcp
    ONBOOT=yes  
    После смены конфигурации достаточно перегрузить сервис network:
    service network restart