Русские буквы в SQLPlus под Windows

Неоднократно сталкивался с проблемой русских букв в SQLPlus, поэтому решил зафиксировать, для того чтобы больше не искать по интернету.

Итак, если видим кракозябры вместо букв, то делаем:

1. Смотрим что у нас с NLS_LANG в реестре. Должно быть:

HKLM\Software\Oracle\Home0\NLS_LANG = AMERICAN_AMERICA.CL8MSWIN1251

Скорее всего, там RUSSIAN_RUSSIA - меняем.


2. Деламе батник которым будем запускать SQLPlus:

@mode con cp select=1251
@sqlplus
@exit


Всё.
Запускаем, при помощи bat файла, SQLPlus  и радуемся русским буквам. :)

Подробнее

Работа с деревьями в Oracle (PL/SQL)

В этой публикации объясняется, как работать со специфическими методами, которые присутствуют в базе данных Oracle, для работы с Деревьями. Итак, сразу к делу...

--Создаем таблицу для экспериментов с деревьями.
create table my_tree (
  id number,
  id_parent number,
  nm varchar2(100)
  );


--Добавляем нашей тестовой таблице индекс (для порядка).
create index idx_my_tree on my_tree(id,id_parent);

--Заполняем нашу тестовую таблицу классификатора (категориями продуктов).
insert into MY_TREE values (1,null, 'Продукты');
insert into MY_TREE values (2,1, 'Колбасы');
insert into MY_TREE values (3,1, 'Полуфабоикаты');
insert into MY_TREE values (4,1, 'Фрукты');
insert into MY_TREE values (5,3, 'Котлеты');
insert into MY_TREE values (6,3, 'Пельмени');
insert into MY_TREE values (7,3, 'Манты');
insert into MY_TREE values (8,3, 'Бифштексы');
insert into MY_TREE values (9,2, 'Копченая');
insert into MY_TREE values (10,2, 'Вареная');
insert into MY_TREE values (11,4, 'Помидоры');
insert into MY_TREE values (12,4, 'Огурцы');
insert into MY_TREE values (13,4, 'Бананы');
insert into MY_TREE values (14,2, 'Салями');
Подробнее

Создание пользователя (схемы) в Oracle

Пример простого создания пользователя (схемы) в БД Oracle:

--Создаем нового пользователя test с паролем 240580
create user test IDENTIFIED BY 240580
default tablespace users
temporary tablespace temp

--Добавляем квоту на дисковое пространство.
alter user test quota 100M on users;

--Разрещаем создавать сессии пользователю (подключаться)
grant create session to test

--Разрешаем создавать таблицы пользователю
grant create table to test

--Разрешаем создавать процедуры
grant create procedure to test

--Разрешаем создавать триггеры
grant create trigger to test

--Разрешаем создавать представления
grant create view to test

--Разрешаем создвавть счетчики
grant create sequence to test

--Разрешаем изменять таблицы, процедуры, триггеры и профиль
grant alter any table to test;
grant alter any procedure to test;
grant alter any trigger to test;
grant alter profile to test;

--Разрешаем удаления
grant delete any table to test;
grant drop any table to test;
grant drop any procedure to test;
grant drop any trigger to test;
grant drop any view to test;
grant drop profile to test;

Вот и всё, полноценный пользователь создан, можно пользоваться!

Подробнее

Узнаем какая сессия блокирует пакет Oracle

Чтобы узнать какая сессия блокирует пакет:

SELECT s.*,
       l.lock_type,
       l.mode_held,
       l.mode_requested,
       l.lock_id1,
       'alter system kill session '''|| s.sid|| ','|| s.serial#|| ''' immediate;' kill_sid
FROM   dba_lock_internal l,
       v$session s
WHERE  s.sid = l.session_id
AND    UPPER(l.lock_id1) LIKE '%ПАКЕТ%'
AND    l.lock_type = 'Body Definition Lock'
Подробнее

Oracle - добавляем размер табличного пространства

Ещё это метод излечения ошибки типа: 

ORA-01654: unable to extend.

Узнаем размеры табличного пространства и свободное место:

select file_name,tablespace_name,user_bytes/1024/1024,bytes/1024/1024,
    maxbytes/1024/1024,autoextensible from dba_data_files;

Добавляем еще места:

ALTER TABLESPACE USERS_INDX -- Это TABLESPACE_NAME
ADD DATAFILE 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS_IDX01.DBF' 
SIZE 100M
AUTOEXTEND ON NEXT 100M
MAXSIZE 4G;
Подробнее

Исправляем ошибку ORA-00604: error occured at recursive SQL level 1ORA-12705 в Oracle SQL Developer

Ошибка при установке соединения с сервером из Oracle SQL Developer:

ORA-00604: error occured at recursive SQL level 1ORA-12705: Cannot access NLS data files or invalid enviroment specified


Для исправления делаем следующие действия:

    Открываем <папку_со_средой>\ide\bin\ide.conf
    Дописываем туда две строчки:

    AddVMOption -Duser.language=en
    AddVMOption -Duser.region=us

И всё!

Подробнее

Проверка адреса электронной почты на корректность средствами PL/SQL

Простейшая проверка адреса электронной почты выглядит так:

select * from EMailsTable et where REGEXP_LIKE (et.Email, '[A-z0-9._%-]+@[A-z0-9._%-]+\.[A-z]{2,4}')


Скрипт выбирает из таблицы с E-Mail адресами только те адреса которых попадают под заданное регулярное выражение.

Подробнее

Пример отправки почты в C#

Простой вариант отправки почты, стандартными средствами.

Для него нам необходимо подключить библиотеки:

using System.Net;
using System.Net.Mail;
using System.Net.Mime;


Сам код отправки письма с вложением:

//Указываем SMTP сервер и авторизуемся.
SmtpClient Smtp_Client = new SmtpClient("почтовый сервер", порт);
Smtp_Client.Credentials = new NetworkCredential("пользователь", "пароль");
//Выключаем или включаем SSL - (например для гугла должен быть включен).
Smtp_Client.EnableSsl = false;

//Приступаем к формированию самого письма
MailMessage Message = new MailMessage();
Message.From = new MailAddress("ot_kogo@mail.ру");
Message.To.Add(new MailAddress("komu@mail.ру"));
Message.Subject = "Тема сообщения";
Message.Body = "Само сообщение";

//Теперь прикрепим файл к сообщению...

string file = "полный путь до файла";
Attachment attach = new Attachment(file, MediaTypeNames.Application.Octet);

// Добавляем информацию для файла
ContentDisposition disposition = attach.ContentDisposition;
disposition.CreationDate = System.IO.File.GetCreationTime(file);
disposition.ModificationDate = System.IO.File.GetLastWriteTime(file);
disposition.ReadDate = System.IO.File.GetLastAccessTime(file);

Message.Attachments.Add(attach);

Smtp_Client.Send(Message);//непосредственно само отправление...


Вот и всё. Письмо отправлено!

Подробнее