Если ваш компьютер/сервер находится в домене, то чтобы корректно установить oracle потребуется зайти под локальной учетной записью с правами администратора. СУБД установится и под доменной учетной записью, но при этом сам экземпляр БД (instance) будет создана некорректно и его придется пересоздавать и перенастраивать. Как это сделать будет написано дальше.
Что такое "экземпляр БД"? Это отдельная БД со своим именем, пользователями, таблицами, настройками, правами. В Oracle могут быть созданы и работать несколько экземпляров БД. Экземпляр можно остановить, создать, удалить и это никак не будет влиять на другие экземпляры. По умолчанию создается только один экземпляр.
1. Проверка работы БД
SQL*Plus: Release 11.2.0.2.0 Production on ****************** Copyright (c) 1982, 2010, Oracle. All rights reserved. SQL>На данный момент вы просто запустили её. Но к БД доступа, на данный момент, вы не имеете. Чтобы получить доступ к БД нужно к ней подключиться. Для этого существует команда CONNECT. Чтобы с помощью неё подключиться к БД с правами администратора без логина и пароля, необходимо чтобы учетная запись пользователя под которой запущен SQL*Plus была в группах Администраторы и ORA_DBA. В этом случае команда для подключения выгладит так:
CONNECT / AS SYSDBAТеперь проверим запущен ли экземпляр БД командой:
STARTUPЭта команда запускает экземпляр БД. Если экземпляр уже запущен, то вы увидите:
ORA-01081: cannot start already-running ORACLE - shut it down firstЕсли не был запущен, но успешно запустился:
ORACLE instance started. Total System Global Area ********* bytes Fixed Size ******* bytes Variable Size ********* bytes Database Buffers ********* bytes Redo Buffers ******* bytes Database mounted. Database opened.Если же не был запущен и при попытке запустить возникла ошибка, вы увидите сообщение об ошибке:
ORA-01078: failure in processing system parameters ORA-01565: error in identifying file 'C:\oraclexe\app\oracle\product\11.2.0\serv er\dbs\spfileXE.ora' ORA-27041: unable to open file OSD-04002: unable to open file O/S-Error: (OS 2) ?? ??????? ????? ????????? ????.Если у вас на данном этапе не возникло проблем, то теперь вы можете делать с БД все что захотите: останавливать, запускать, создавать таблицы, добавлять данные и пункт 2 вы можете пока не читать.
2. Что делать если вы устанавливали СУБД Oracle из под доменной учетной записи и теперь не можете запустить БД
* Ниже будет использоваться абсолютный путь расположения директории Oracle, у меня это C:\ORACLEXE. Название экземпляра БД - XE.
Начнем с того, что восстановил главный настоечный файл БД - spfile. Он должен располагаться здесь - C:\ORACLEXE\APP\ORACLE\product\11.2.0\server\dbs\ и иметь имя - spfile<имя_экземпляра_БД>.ora, в нашем случае spfileXE.ora. Но его там нет. Но зато есть файл init.ora. С помощью него мы получим spfile.
Откроем init.ora:
# Change '<ORACLE_BASE>' to point to the oracle base (the one you specify at
# install time)
db_name='ORCL'
memory_target=1G
processes = 150
audit_file_dest='<ORACLE_BASE>/admin/orcl/adump'
audit_trail ='db'
db_block_size=8192
db_domain=''
db_recovery_file_dest='<ORACLE_BASE>/flash_recovery_area'
db_recovery_file_dest_size=2G
diagnostic_dest='<ORACLE_BASE>'
dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
#undo_tablespace='UNDOTBS1'
# You may want to ensure that control files are created on separate physical
# devices
control_files = (ora_control1, ora_control2)
compatible ='11.2.0'
В нем везде заменим (перед этим можно сделать резервную копию) <ORACLE_BASE> на c:\oraclexe\app\oracle и сохраняем.
Далее в SQL*Plus вызываем команду:
CREATE SPFILE='C:\ORACLEXE\APP\ORACLE\product\11.2.0\server\dbs\spfileXE.ora' FROM PFILE='C:\ORACLEXE\APP\ORACLE\product\11.2.0\server\dbs\init.ora'Теперь мы имеем рабочий spfile и можем повторить попытку запустить экземпляр БД командой STARTUP в SQL*Plus. Теперь она должна пройти но при этом выдать ошибку:
ORACLE instance started. Total System Global Area 644468736 bytes Fixed Size 1385488 bytes Variable Size 192941040 bytes Database Buffers 444596224 bytes Redo Buffers 5545984 bytes ORA-00205: error in identifying control file, check alert log for more infoСвязано это с тем, что на самом деле запуск экземпляра состоит из нескольких этапов:
1) Запуск экземпляра.
2) Монтирование (mount).
3) Открытие доступа (open).
Мы смогли запустить экземпляр, но смонтировать данные не смогли. Это потому, что нам нечего монтировать - файлов содержащих данные нету. Если вы загляните в директорию C:\oraclexe\app\oracle\oradata\XE, то увидите что она пуста. Так быть не должно. Чтобы это исправить нужно вызвать команду CREATE DATABASE <имя_экземпляра_БД>, которая создаст необходимые для работы БД файлы. Синтаксис вызова такой:
CREATE DATABASE xe USER SYS IDENTIFIED BY 123456 USER SYSTEM IDENTIFIED BY 123456 LOGFILE GROUP 1 ('c:\oraclexe\app\oracle\oradata\xe\redo01.log') SIZE 100M, GROUP 2 ('c:\oraclexe\app\oracle\oradata\xe\redo02.log') SIZE 100M, GROUP 3 ('c:\oraclexe\app\oracle\oradata\xe\redo03.log') SIZE 100M MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXLOGHISTORY 1 MAXDATAFILES 100 MAXINSTANCES 1 CHARACTER SET US7ASCII NATIONAL CHARACTER SET AL16UTF16 DATAFILE 'c:\oraclexe\app\oracle\oradata\xe\system01.dbf' SIZE 325M REUSE EXTENT MANAGEMENT LOCAL SYSAUX DATAFILE 'c:\oraclexe\app\oracle\oradata\xe\sysaux01.dbf' SIZE 325M REUSE DEFAULT TEMPORARY TABLESPACE tempts1 TEMPFILE 'c:\oraclexe\app\oracle\oradata\xe\temp01.dbf' SIZE 20M REUSE UNDO TABLESPACE UNDOTBS1 DATAFILE 'c:\oraclexe\app\oracle\oradata\xe\undotbs01.dbf' SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;В конце выполнения команда должна выдать "Database created."
Если теперь вы заглянете в папку C:\oraclexe\app\oracle\oradata\XE, то должны увидеть следующие файлы:
REDO01.LOG
REDO02.LOG
REDO03.LOG
SYSAUX01.DBF
SYSTEM01.DBF
TEMP01.DBF
UNDOTBS01.DBF
Все. Теперь вы можете попробовать создать таблицу:
CREATE TABLE tbl_test1(id int, col1 int);Вставить в нее данные:
INSERT INTO tbl_test1 VALUES(1, 1); INSERT INTO tbl_test1 VALUES(2, 2); INSERT INTO tbl_test1 VALUES(3, 3);и считать их:
SELECT * FROM tbl_test1;
Спасибо большое за пост - сильно помог!
ОтветитьУдалитьБольшое спасибо. Очень помогло
ОтветитьУдалитьНо теперь при подключении через клиент ввожу логин SYS и пароль (который указывал при установке). Клиент возвращает ошибку "Некорректный логин или пароль"
После 2х дней шаманства, удалось поднять сервер
ОтветитьУдалитьИнструкцию описываю ниже (спасибо автору статьи):
В sqlplus вводим Conn SYS as sysdba
Пароль указываем который был при установке
Startup
Если ошибка ORA-01078: failure in processing system parameters, то ищем файлик C:\oraclexe\app\oracle\product\11.2.0\server\dbs\init.ora
Редактируем его
db_name='ORCL'
memory_target=1G
processes = 150
audit_file_dest='C:\oraclexe\app\oracle\admin\ORCL\adump'
audit_trail ='db'
db_block_size=8192
db_domain=''
db_recovery_file_dest='C:\oraclexe\app\oracle\fast_recovery_area'
db_recovery_file_dest_size=2G
diagnostic_dest='C:\oraclexe\app\oracle\product\11.2.0'
dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
# You may want to ensure that control files are created on separate physical
# devices
control_files = (ora_control1, ora_control2)
compatible ='11.2.0'
Создаем недостающие директории
В файле C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN\sqlnet.ora
Меняем значение на SQLNET.AUTHENTICATION_SERVICES = (NONE)
Создаем SPFILEORCL.ora
В sqlplus вводим CREATE SPFILE='C:\ORACLEXE\APP\ORACLE\product\11.2.0\server\dbs\spfileORCL.ora' FROM PFILE='C:\ORACLEXE\APP\ORACLE\product\11.2.0\server\dbs\init.ora'
Если все гуд, то увидим надпись File created
Далее создаем БД
Создаем директорию C:\oraclexe\app\oracle\oradata\ORCL
В SQLPLUS вводим команду:
CREATE DATABASE ORCL
USER SYS IDENTIFIED BY 123456
USER SYSTEM IDENTIFIED BY 123456
LOGFILE GROUP 1 ('C:\oraclexe\app\oracle\oradata\ORCL\redo01.log') SIZE 100M,
GROUP 2 ('C:\oraclexe\app\oracle\oradata\ORCL\redo02.log') SIZE 100M,
GROUP 3 ('C:\oraclexe\app\oracle\oradata\ORCL\redo03.log') SIZE 100M
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
MAXINSTANCES 1
CHARACTER SET US7ASCII
NATIONAL CHARACTER SET AL16UTF16
DATAFILE 'C:\oraclexe\app\oracle\oradata\ORCL\system01.dbf' SIZE 325M REUSE
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE 'C:\oraclexe\app\oracle\oradata\ORCL\sysaux01.dbf' SIZE 325M REUSE
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE 'C:\oraclexe\app\oracle\oradata\ORCL\temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE UNDOTBS1
DATAFILE 'C:\oraclexe\app\oracle\oradata\ORCL\undotbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
Если все гуд, увидим Database created
Создаем тестовую таблицу и наполняем ее данными:
СREATE TABLE test1(id int, col1 int);
INSERT INTO test1 VALUES(1, 1);
INSERT INTO test1 VALUES(2, 2);
INSERT INTO test1 VALUES(3, 3);
SELECT * FROM test1;
Заводим юзера для БД
CREATE USER USER1 IDENTIFIED BY 123123;
Где USER1 – логин, 123123 – пароль
Добавляем права юзеру:
Делаем админом - GRANT dba TO USER1 WITH ADMIN OPTION;
Права на создание таблиц - GRANT create session, create table TO USER1;
Выделяем ресурсы для юзера - ALTER USER USER1 QUOTA 50m ON system;
На стороне клиента указываем TNS:
ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL) ) )
Где - адрес сервера
Set ORACLE_HOME=C:\oraclexe\app\oracle\product\11.2.0\server
Set SYSTEM_PASS=123123
Запустить catalog.sql, catproc.sql
Пример:
conn SYS as SYSDBA
123123
@C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin\cataproc.sql
Подключиться через клиент и радоваться жизни