Автор работы: Пользователь скрыл имя, 11 Февраля 2013 в 03:24, курс лекций
Применение подхода открытых систем в настоящее время является основной тенденцией в области информационных технологий и средств вычислительной техники, поддерживающих эти технологии. Идеологию открытых систем реализуют в своих последних разработках все ведущие фирмы - поставщики средств вычислительной техники, передачи информации, программного обеспечения и разработки прикладных информационных систем. Их результативность на рынке информационных технологий и систем определяется согласованной (в пред конкурентной фазе) научно-технической политикой и реализацией стандартов открытых систем.
Тема 1. Особенности работы в многопользовательских средах 6
1.1. Открытые Системы, процессы стандартизации и профили стандартов. 6
1.1.1. Понятие подхода Открытых Систем. 6
1.1.2. Архитектура Открытых Систем. 7
1.1.3. Преимущества идеологии открытых систем. 10
1.1.4. Открытые Системы и объектно-ориентированный подход 11
1.1.5. Стандарты Открытых Систем 13
1.1.6. Профили стандартов Открытых Систем 15
1.1.7. Заключение 16
1.2. Архитектура «клиент-сервер» и «клиент-серверные» технологии. 17
1.2.1. Введение. 17
1.2.2. Традиционные подходы в моделировании 17
1.2.3. Серверы приложений 18
1.2.4. Заключение 21
1.3. Построение многопользовательских информационных систем и управление ими. 21
1.3.1. Цели администрирования 21
1.3.2. Обязанности системного администратора 21
1.3.3. Проблема организации администрирования крупных информационных систем. 22
1.3.4. Администрирование СУД 26
1.3.5. Технические средства обеспечения безопасности информационных технологий. 28
1.3.6. Задачи администратора 28
1.3.7. Планирование эффективной рабочей среды 29
Тема 2. Системная архитектура Oracle. 30
2.1. Архитектура 30
2.2. Сервер 30
2.3. Файлы. 37
2.3.1. Файлы параметров 38
2.3.2. Файлы данных 40
2.3.3. Временные файлы 44
2.3.4. Управляющие файлы 45
2.3.5. Файлы журнала повторного выполнения 46
Тема 3. Администрирование в среде Unix. 48
3.1. Включение станции Sun SPARCstation. 48
3.2. Регистрация нового пользователя. 49
3.3. Начало работы в системе. 50
3.3.1. Вход. 50
3.3.2. Пользовательский профайл 51
3.3.3. Выключение системы. 52
3.4. Несколько простейших команд Unix. 52
3.4.1. Некоторые наиболее употребительные команды. 54
3.5. Очень кратко о редакторе VI. 54
3.6. Базовые принципы системы UNIX 56
3.6.1. Что входит в ядро 56
3.6.2. Файловая система UNIX. 57
3.7. Утилита системного администратора SYSADM. 57
3.8. Несколько сетевых команд Unix. 58
3.8.1. finger. Кто работает в системе 58
3.8.2. talk. Вызвать пользователя на разговор 58
3.8.3. mailx. Послать кому-нибудь электронную почту 59
3.8.4. telnet. Залогиниться на удаленную машину 59
3.8.5. ftp. File Trasfer Protocol. Пересылка файлов 59
3.8.6. ping. "Прозвонить" удаленную машину 60
3.9. Сетевая файловая система NFS 60
3.9.1. Для того, чтобы Unix-машина служила NFS сервером 61
3.9.2. Активизация NFS. 61
3.10. Система печати LP 62
3.10.1 Подключить к системе новый принтер. 62
3.11. Графическая оболочка X-Windows System 63
3.11.1. Основная идея X Windows 63
3.11.2. Как это запускается? 64
3.11.3. Конфигурирование X Windows 65
3.11.4. Запуск X Windows 65
3.11.5. Настройки пользовательского окружения X Windows 65
Тема 4. Администрирование в сетях с операционными системами типа Windows (NT, 2000, 2003). 67
4.1. Установка Windows Server 2003. 69
4.1.1. Первые шаги 69
4.1.2. Текстовый этап 69
4.1.3. Графический этап. 70
4.1.4. Новое имя, новая роль 72
4.2. Служба каталогов Active Directory 73
4.2.1. Назначение службы каталога 74
4.2.2. Основные понятия Active Directory 74
4.2.3. Развертывание Active Directory 75
4.2.4. Управление объектами 76
4.2.5. Заключение 77
4.3. Доступ к сетевым ресурсам 77
4.3.1. Сервис WINS 78
4.3.2. Установка принт-сервера 81
4.4. Система доменных имен 82
4.4.1. DNS - необходимость 82
4.4.2. Структура DNS 83
4.4.3. Построение DNS 85
4.4.4. Настройка DNS 85
4.4.5. Подключаемся к Интернету 86
4.5. Служба DHCP 88
4.5.1. Преимущества использования DHCP 89
4.5.2. Реализация DHCP 89
4.5.3. Установка DHCP 89
4.5.4. Администрирование сервера DHCP 90
4.6. Маршрутизация и удаленный доступ 91
4.6.1. Проблема роста 91
4.6.2. Межсетевой мост 92
4.6.3. Маршрутизатор 93
4.6.4. Удаленный доступ 95
4.6.5. Протокол NAT 97
4.6.6. Результаты работы 98
4.7. Серверы в Windows Server 2003. 99
4.7.1. Распределяем роли 99
4.7.2. Веб-сервер 100
4.7.3. Internet Information Services (IIS) 100
4.7.4. Настройка веб-сайтов 103
4.7.5. Настройка FTP-сервера 104
4.7.6. Настраиваем почтовый сервер 104
4.7.7. Службы общения. 107
4.7.8. Заелючение. 108
4.8. Профилактические и сервисные работы 109
4.8.1. Резервное копирование 109
4.8.2. Профилактика 110
4.8.3. Установка обновлений 111
4.8.4. Заключение 112
4.9. Консольные команды управления 112
4.9.1. Основные консольные команды. 113
4.9.2. Заключение. 117
Тема 5. Сеть Интернет, ее функционирование и архитектурные особенности. 118
5.1. Краткое историческое введение 118
5.2. Что составляет Internet ? 120
5.3. Административное устройство Internet 121
5.4. Финансы 122
5.5. Как структура Internet сказывается на Пользователе ? 122
5.6. Потенциальные пользователи 123
5.7. Доступ в Internet 125
5.8. Планы на будущее 126
5.8.1. Стандартные протоколы ISO 126
5.8.2. Международные связи 126
5.8.3. Коммерциализация 127
5.8.4. Приватизация 128
Тема 6. Сетевые протоколы. 129
6.1. Протоколы, обеспечивающие прикладные услуги 129
6.2. Протоколы, обеспечивающие транспортные услуги 130
6.3. Протоколы, обеспечивающие сетевые услуги. 130
6.4. Протоколы Интернет 130
Тема 7. Стек протоколов TCP/IP. 132
7.1. История и перспективы стека TCP/IP. 132
7.2. Структура стека TCP/IP. Краткая характеристика протоколов. 133
Тема 8. Программирование сокетов. 136
8.1. Создание сокета 136
8.2. Привязка к локальным именам. 137
8.3. Установление связи 137
8.4. Передача данных. 138
8.5. Закрывание сокетов. 139
8.6. Пример функции, для установления WWW коннекта. 140
Тема 9. Язык Perl и CGI-программирование. 142
9.1. Основные особенности Perl 142
9.1.1 Введение 142
9.2 Взаимодействие с СУБД 142
9.2.1 Взаимодействие с Oracle 142
9.3 Написание модулей CGI 147
9.4 Обработка файлов формата DBF 148
Тема 10. Язык HTML (Список элементов HTML). 151
10.1. Базисные элементы. 151
10.2. Определение структуры. 151
10.3. Внешний вид. 151
10.4. Ссылки и графика. 152
10.5. Разделители. 152
10.6. Списки. 153
10.7. Фон и цвета. 153
10.8. Специальные символы. 153
10.9. Формы. 154
10.10. Таблицы 154
10.11. Фреймы. 155
10.12. Язык Java. 156
10.13. Разное. 156
Тема 11. Управление WEB-сервером Apache. 157
Тема 12. Комплексные решения – построение ISP (Internet Service Provider – поставщика услуг Интернет). 160
Если сокет больше не используется, процесс может закрыть его с помощью функции close, вызвав ее с соответствующим дескриптором сокета:
close(s);
Если данные были ассоциированы с сокетом, обещающим доставку (сокет типа stream), система будет пытаться осуществить передачу этих данных. Тем не менее, по истечении довольно таки длительного промежутка времени, если данные все еще не доставлены, они будут отброшены. Если пользовательский процесс желает прекратить любую передачу данных, он может сделать это с помощью вызова shutdown на данном сокете для его закрытия. Вызов shutdown вызывает "моментальное" отбрасывание всех стоящих в очереди данных. Формат вызова следующий:
shutdown(s, how);
где how имеет одно из следующих значений:
/*
------------------------------
MakeConnection
Function allocates a socket and estabishes a connection
with remote host. Default port number 80.
Input : WWW server name (with port number, if it is not 80)
Output : file descriptor on success
-1 on error
------------------------------
*/
int MakeConnection(unsigned char* ServerName){
int s;
struct sockaddr_in ssin;
struct hostent* hp;
int PortNum;
unsigned char strHlp[STRNGLEN], *pch;
/* use default port number - 80 or specific number from the
server name */
strcpy(strHlp,ServerName);
pch = strchr(strHlp,':');
if(pch==NULL){
PortNum = 80;
}else{
pch[0] = '\0';
pch++;
PortNum = atoi(pch);
if(PortNum==0){
PortNum = 80;
}
}
/* get host by name - resolve host name into IP address */
if( (hp=gethostbyname(strHlp)) == NULL )
{
return -1;
}
bzero(&ssin, sizeof(ssin));
bcopy(hp->h_addr, &ssin.sin_addr, hp->h_length);
ssin.sin_family = hp->h_addrtype;
ssin.sin_port = htons(PortNum);
/* allocate a socket */
if((s=socket(AF_INET, SOCK_STREAM, 0))==-1)
{
return -1;
}
/* make a connection */
if(connect(s, &ssin, sizeof(ssin), 0)==-1){
return -1;
}
return s; /* socket descriptor */
}
Perl - интерпретируемый язык, приспособленный
для обработки произвольных
Perl позволяет осуществлять доступ к различным СУБД. Здесь будет освещен вопрос доступа к СУБД Oracle.
9.2.1.1. Основные функции доступа.
Мы приведем здесь пример программы, которая создает таблицу, помещает в нее некоторые данные и потом производит выборку строк из этой таблицы.
#!/usr/local/bin/perl
use Oraperl;
# подключаем модуль Oraperl
$system_id = 'T:bdhost.com:Base';
$lda = &ora_login($system_id,'scott',
# вход в систему
$st = 'create table EMP (name varchar2(100),
organization varchar2(100))';
$csr = &ora_open($lda,$st) || die $ora_errstr;
&ora_close($csr);
# создание таблицы в базе данных
$st = 'insert into EMP values
(\'John Smit\', \'NATO\')';
$csr = &ora_open($lda, $st);
&ora_close($csr);
# помещение строки в таблицу
$st = 'select name from EMP
where organization = \'NATO\'';
$csr = &ora_open($lda,$st);
# выбираем из таблицы значения столбца name,
# которым сответствует значение столбца organization
# равное 'NATO'
@result = &ora_fetch($csr);
# помещаем эти значения в массив @result
&ora_close($csr);
print @result;
&ora_logoff($lda);
# выход из системы
В результате в базе создалась таблица из двух столбцов с одной записью:
Name |
Organozation |
John Smit |
NATO |
Для взаимодействия с Oracle в Perl есть специальный модуль Oraperl.pm. Основными функциями для доступа к базе данных являются:
&ora_login
$lda = &ora_login($system_id,$usernam
Для того, чтобы получить доступ к информации, хранимой в Oracle необходимо сначала войти в систему. Это осуществляется вызовом функции &ora_login(). Эта функция имеет три параметра: системный идентификатор базы данных, имя пользователя в базе и пароль пользователя. Возвращается идентификатор регистрации в системе (Oracle Login Data Area). Несколько доступов могут осуществляться одновременно. Эта функция эквивалентна функции OCI(Oracle Call Interface) olon или orlon.
&ora_open
$csr = &ora_open($lda, $statement [,$cache])
Для определения SQL-запроса в базу данных программа должна вызывать функцию &ora_open. Эта функция имеет как минимум два параметра: идентификатор регистрации и SQL выражение. Необязательный третий параметр описывает размер буфера строк для SELECT оператора. Возвращается курсор Oracle. Если третий параметр опущен, то используется стандартный размер буфера.
$csr = &ora_open($lda,'select ename,
sal from emp order by ename',10);
Эта функция эквивалентна функции OCI oopen или oparse.
&ora_bind
&ora_bind($csr, $var, ...)
Если SQL выражение содержит обращение к переменным языка Perl, то необходимо подставить вместо имен значения переменных. Для этого используется функция &ora_bind.
$csr = &ora_open($lda, 'insert into emp values (:1,:2)');
&ora_bind($csr,$ename,$sal);
- подставляет в SQL выражение вместо :1 и :2 значения переменных $ename и $sal.
&ora_fetch
$nfields = &ora_fetch($csr[, trunc]);
@array = &ora_fetch($csr);
Эта функция используется с оператором SQL SELECT для извлечения информации из базы данных и имеет только один обязательный параметр - идентификатор курсора, полученный в результате вызова функции &ora_open. В скалярном контексте она возвращает число выбранных строк, в списковом - массив выбранных строк. Второй необязательный параметр содержит информацию о том, можно ли обрезать данные типов LONG и LONG RAW или выдавать сообщение об ошибке. Если параметр опущен, то информация берется из переменной $ora_trunc. Если произошло обрезание данных, то переменная $ora_errno принимает значение 1406. Эта функция эквивалентна функции OCI ofetch.
&ora_close
&ora_close($csr)
Если открытый курсор не будет больше использоваться, то его нужно закрыть вызовом функции &ora_close. Это эквивалентно функции OCI oclose.
&ora_do
&ora_do($lda,$statement)
Не все SQL-выражения возвращают данные или содержат переменные для подстановки. В таких случаях функция &ora_do выступает в качестве альтернативы &ora_open и &ora_close. Первым параметром является идентификатор регистрации, вторым -- SQL выражение.
&ora_do($lda,'drop table employee');
это эквивалентно:
&ora_close(&ora_open($lda, 'drop table employee'));
&ora_logoff
&ora_logoff($lda)
Для выхода из системы используется функция &ora_logoff. Она эквивалентна функции OCI ologoff.
9.2.1.2. Дополнительные функции.
Дополнительные возможности
&ora_titles
@titles = &ora_titles($csr)
Программа может определить название полей, содержимое которых будет извлечено запросом, вызовом функции &ora_title. Эта функция имеет один параметр - курсор. Заголовки обрезаются до длины поля.
&ora_length
@length = &ora_length($csr)
Программа может определить длину каждого из полей, возвращенных запросом, с помощью вызова функции &ora_length. Она имеет только один параметр - курсор и возвращает массив целых чисел.
&ora_types
@types = &ora_types($csr)
Программа может определить тип каждого из полей, возвращенных запросом, с помощью вызова функции &ora_types. Она имеет один параметр - курсор и возвращает массив целых чисел. Эти типы определяются в документации по OCI и в файле oraperl.ph для Oracle v6.
&ora_autocommit
&ora_autocommit($lda,$on_or_
Режим автоматического завершения
транзакций можно установить или
отменить вызовом функции &ora_
&ora_commit, &ora_rollback
&ora_commit($lda)
&ora_rollback($lda)
Изменения в базе данных могут быть сохранены или отменены вызовом этих функций. Они имеют один параметр - идентификатор регистрации в системе. Транзакции, результат которых уже был сохранен не могут быть отменены &ora_rollback. Эти функции также действуют на все время пребывания в системе, а не на отдельные операторы.
&ora_version
&ora_version()
Эта функция печатает версию и информацию об авторских правах, касающуюся Oraperl. Она не возвращает ничего.
9.2.1.3 Переменные.
В модуле Oraperl.pm есть шесть специальных переменных:
$ora_cache
$ora_long
$ora_trunc
$ora_errno
$ora_errstr
$ora_verno
Эти переменные используются для определения поведения Oraperl в определенных условиях.
$ora_cache Эта переменная определяет размер буфера для функции &ora_open() и SELECT-выражения, если точный размер буфера не указан. Как правило устанавливается размер буфера равный пяти. Присваивание этой переменной значения, равного нулю, устанавливает значение этой переменной равным первоначальному значению. Присваивание отрицательной величины приводит к ошибке.
$ora_long Обычно Oraperl спрашивает базу данных о длине каждого поля и соответствующим образом распределяет буферное пространство. Это невозможно для полей типа LONG и LONGRAW. Распределение пространства в предположении максимально возможной длины (65535 bytes) привело бы к излишним тратам памяти. Поэтому когда &ora_open() определяет, что поле имеет тип LONG, память распределяется согласно значению переменной $ora_long. При инициализации она принимает значение 80 (для совместимости с продуктами Oracle), но в программе ее можно устанавливать произвольным образом.
$ora_trunc Так как Oraperl не может точно определять длину значений типа LONG, возникают ситуации, когда значение $ora_long недостаточно для хранения полученных данных. В таком случае, если у &ora_fetch есть необязательный второй параметр, происходит обрезание данных. Если второй параметр опущен, то вместо него используется значение $ora_trunc.
$ora_errno Содержит код ошибки произошедшей при последнем вызове какой-либо функции. Есть два интересных случая, касающихся &ora_fetch(). В первом случае, если произошло обрезание данных типа LONG или LONGRAW и обрезание было разрешено, тогда выполнение этой функции полностью успешно, но $ora_errno принимает значение 1406, для индикации того, что произошло обрезание. Во втором случае, если &ora_fetch() возвратила false, то $ora_errno принимает значение 0 в случае конца данных или код ошибки, если действительно произошла ошибка.
$ora_errstr Содержит сообщение об ошибке, соответствующее значению $ora_errno.
$ora_verno Содержит версию Oraperl в формате v.ppp, где v - основной номер версии, а ppp - patchlevel.
9.2.1.4 Переменные для подстановки.
Oraperl позволяет SQL выражению содержать обращение к переменным языка Perl. Они состоят из двоеточия и следующего за ним номера. Например:
$csr = &ora_open($lda,"insert into tel values(:1,:2)");
Эти два имени :1 и :2 называются переменными для подстановки. Функция &ora_bind() используется для привязывания переменных к их значениям.
&ora_bind($csr, "Annette","3-222-2-22-22-22");
&ora_bind($csr,$name,$
Номера переменных должны следовать в порядке возрастания начиная с 1, так как &ora_bind выполняет подстановку именно в таком порядке.
Язык Perl очень широко используется
при написании исполняемых
#!/usr/local/bin/perl
sub Print {
$len = 100;
$buf = "";
read(STDIN, $buf,$len);
# считываем из стандартного потока ввода
# в переменную $buf количество символов
# $len
@ar = split(/[&=]/,$buf);
# разбиваем строку в массив строк,
# разделителями служат & и =.
$output = "Content-type: text/html\n\n
# посылает тип MIME передаваемого документа
<HTML><HEAD><TITLE>Result</
<BODY BGCOLOR=\"#FFAAAA\">
<H1>Hi there</H1><HR><BR>";
$i = 0;
while ($i <= $#ar) {
$ar[$i] =~ s/\+/ /g;
# заменяем в элементах массива + на пробел
$output .= "$ar[$i]\n";
# конкатенация переменной $output с
# элементом массива
$i++; }
$output .="<HR></BODY></HTML>";
# завершаем HTML страницу
print $output;
}
eval &Print;
# выполняем подпрограмму
# считывание, обработку и вывод информации
В данном примере был проиллюстрирован случай считывания параметров из входного потока. Если параметры передаются CGI-модулю в командной строке, то они помещаются в служебный массив @ARGV. Например, если параметры пишуться в URL:
http://www.host.ru/cgi-bin/
Как видно из примера, написать CGI-модуль на Perl совсем не сложно. Существуют также различные модули для облегчения написания CGI. Документацию по ним и сами модули доступны на сервере http://www.perl.com/
Для взаимодействия с файлами этого формата существует специальный модуль - Xbase.pm На текущий момент поддерживается только возможность чтения таких файлов. Этот модуль подключается стандартным образом: use Xbase;
Новый Xbase объект создается следующим образом:
$database = new Xbase;
Будет создан объект $database, который в дальнейшем будет использоваться для взаимодействия со всевозможными методами, которые поддерживает модуль. Доступ к базе данных осуществляется следующим образом:
Информация о работе Математическое обеспечение и администрирование информационных систем