Как изменить часовой пояс в базе данных Oracle для одного SID, в системе с множеством настроенных SID БД

Мне нужно изменить часовой пояс для конкретной базы данных (SID). Там, где у меня есть сервер БД, настроено и установлено несколько баз данных (SID). Когда я подключил конкретный SID и запустил ниже Query:

alter database set time_zone='-05:00'

Я получил ошибку ниже:

ERROR at line 1:
ORA-02231: missing or invalid option to ALTER DATABASE

Но когда я запускаю запрос alter database set time_zone = 'EST';, он также не дает ошибки, но

Примечание. У меня есть несколько баз данных, настроенных на одном сервере БД. Мне нужно изменить часовой пояс, в частности, на одну базу данных (SID). Я не могу глобально изменить уровень системы (ОС) и уровень сервера БД.

Я не могу изменить часовой пояс, кто-нибудь может помочь.


person Gautam    schedule 16.11.2015    source источник
comment
Почему вы хотите изменить часовой пояс базы данных? Этот часовой пояс никак не влияет на поведение клиента.   -  person Wernfried Domscheit    schedule 16.11.2015
comment
Нам нужно включить QA для тестирования приложения в определенном часовом поясе с сайта приложения. Наш тест - это конкретное хранилище данных в БД. В противном случае нам нужно изменить так много SQL с логикой преобразования часового пояса на уровне приложения.   -  person Gautam    schedule 16.11.2015
comment
Как я уже сказал, DBTIMEZONE не влияет ни на один элемент приложения. Дополнительные сведения см. в этой документации: Установка часового пояса базы данных   -  person Wernfried Domscheit    schedule 16.11.2015
comment
Да, вы правы, я боюсь, но при тестировании моего приложения использовалось конкретное приложение часового пояса базы данных, в противном случае мне нужно изменить запрос кода и повторно развернуть приложение, теперь оно работает так, как я планировал. Т   -  person Gautam    schedule 17.11.2015


Ответы (1)


Я сделал следующие шаги, это сработало для меня:

$ ps -ef|grep pmon

Это покажет список, как показано ниже:

ORADEV    7554     1  0 Oct28 ?        00:00:03 ora_pmon_MDEV230
ORADEV   20649 32630  0 03:39 pts/9    00:00:00 grep pmon
ORADEV   23386     1  0 Nov12 ?        00:00:00 ora_pmon_MQA230POC

Я добавил следующую запись в файлы oraenv как:

$ vi oraenv (Он откроет файл в редакторе Vi) Добавлена ​​следующая запись в конец файлов:

if [[ ${ORACLE_SID} = "MQA230POC" ]]; then
   TZ=EST+05EDT
   export TZ
   echo "Time Zone set to EST"
else
  TZ=PST+08EDT
   export TZ
   echo "Time Zone set to PST"
fi

if [[ ${ORACLE_SID} = "MQA230POC" ]]; то эта строка будет иметь решающее значение для выбора конкретной базы данных.

И выполните следующую команду и проверьте и перезапустите базу данных:

$ . oraenv ORACLE_SID = [MQA230POC] ? Базой Oracle для ORACLE_HOME=/orasw/database12c/product/12.1.0.2/dbhome_1 является часовой пояс /orasw/database12c, для которого установлено значение EST.

$ sqlplus sys as sysdba
Enter password:XXXXX ( provide password) 

It will give message as below : 
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

--Выполните команду ниже, чтобы перезапустить БД:

SQL> shut immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup;
ORACLE instance started.

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

person Gautam    schedule 17.11.2015
comment
При этом вы не меняете часовой пояс базы данных! Вы изменили часовой пояс операционной системы базы данных (т.е. среды, в которой работает БД). Взгляните на этот ответ, чтобы увидеть разницу: stackoverflow.com/questions/29271224/ - person Wernfried Domscheit; 17.11.2015