- Залогиниться на сервер NFS (в нашем случае 192.168.2.95).
- Добавляем в файл /etc/exports на сервере:
где 192.168.2.96 - ip-адрес или доменное имя клиента;/u02/data 192.168.2.96(rw,no_root_squash)
/u02/data - директория на сервере.
- Перезапустить сервер NFS:
$ /etc/init.d/nfs restart .................................................................. Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS daemon: [ OK ] Starting NFS mountd: [ OK ]
- Залогиниться на клиент NFS (в нашем случае 192.168.2.96).
- Необходимо подмонтировать данный ресурс в директорию:
где 192.168.2.95 - адрес сервера;$ mount 192.168.2.95:/u02/data /share
/u02/data - расшаренная директория на сервере;
/share - директория на клиенте.
- Если нужно чтобы сетевая папка монтировалась автоматически при старте системы, тогда добавляем в файл /etc/fstab:
192.168.2.95:/u02/data /share nfs timeo=50,hard,intr
- В случае невозможности подмонтирования сетевого ресурса необходимо разрешить доступ к портам (111, 2049) настройкой firewall (лучше) или выполнить следующую команду (хуже) на сервере:
Или отключить полность:$ service iptables stop
$ chkconfig iptables off
понедельник, 26 марта 2012 г.
Настройка NFS на Linux
четверг, 15 марта 2012 г.
Клонирование Oracle Fusion Middleware 11g
Клонирование Oracle Fusion Middleware 11g (SOA Suite, ODI, IDM, Webcenter и т.д.) условно можно разделить на две логические части:
- Клонирование Middleware Home;
- Клонирование доменов.
- окружения должны быть идентичными, т.к. сервер назначения и сервер источник должны иметь одну и ту же операционную систему и разрядность (32 или 64);
- система назначения и система источник должны иметь одного и того же административного пользователя (например, weblogic), но пароли могут быть различны. После завершения клонирования можно изменить пользователя.
Клонирование Middleware Home
Типовая структура Middleware Home (MW_HOME):- Останавливаем все сервера (AdminServer и ManagedServer-а) всех доменов (на источнике), которые используют клонируемый Middleware Home;
- На источнике перейти в директорию:
$ cd $MW_HOME/oracle_common/bin/
- Затем выполнить команду:
где javaHome – директория c JDK;$ ./copyBinary.sh -javaHome /opt/jrockit-jdk1.6.0_26-R28.1.4-4.0.1/ -archiveLoc /tmp/mw_copy.jar -sourceMWHomeLoc /opt/Middleware/
archiveLoc – имя файла для экспорта;
sourceMWHomeLoc – директория в которой развернут MW_HOME. - Скопировать файл экспорта с сервера источника на сервер назначения. А так же следующие файлы:
$ ls $MW_HOME/oracle_common/bin/pasteBinary.sh $ ls $MW_HOME/oracle_common/jlib/cloningclient.jar
- Запускаем импорт Middleware Home на сервере назначения:
где javaHome – директория c JDK;$ ./pasteBinary.sh -javaHome /u01/jdk1.6.0_30/ -archiveLoc mw_copy.jar -targetMWHomeLoc /u01/ofm
archiveLoc – имя файла для импорта;
targetMWHomeLoc – директория в которой будет развернут MW_HOME.
Клонирование доменов
- Проверяем, что все сервера домена (на источнике) для клонирования стартованы.
- Если в домене есть machine типа Unix Machine, то необходимо изменить её на тип Machine. Для этого необходимо:
Далее найти следующую строку (или строки если несколько машин):$ cp $DOMAIN_HOME/config/config.xml $DOMAIN_HOME/config/config.xml.bkp $ vi $DOMAIN_HOME/config/config.xml
И заменить её (или их) на:<machine xsi:type="unix-machineType">
После этого перезапустить AdminServer.<machine>
- На сервере источнике перейти в директорию:
$ cd $MW_HOME/oracle_common/bin/
- Затем выполнить на источнике команду:
где javaHome – директория c JDK;$ ./copyConfig.sh -javaHome /opt/jrockit-jdk1.6.0_26-R28.1.4-4.0.1/ -archiveLoc /tmp/soa_domain.jar -sourceDomainLoc /opt/user_projects/domains/soa_domain/ -sourceMWHomeLoc /opt/Middleware/ -domainHostName oracle-sb.tsretail.ru -domainPortNum 9000 -domainAdminUserName weblogic -domainAdminPassword /tmp/wlspwd.txt
archiveLoc – имя файла для экспорта;
sourceDomainLoc – директория домена;
sourceMWHomeLoc – директория в которой развернут MW_HOME;
domainHostName – хост домена;
domainPortNum – порт AdminServer-а;
domainAdminUserName – логин администратора;
domainAdminPassword – путь к текстовому файлу с паролем администратора.
- Скопировать файл экспорта с сервера источника на сервер назначения.
- На сервере назначения перейти в директорию:
$ cd $MW_HOME/oracle_common/bin/
- Запускаем генерацию плана переноса домена на сервере назначения:
где javaHome – директория c JDK;$ ./extractMovePlan.sh -javaHome /u01/jdk1.6.0_30 -archiveLoc /home/weblogic/clone_domain/soa_domain.jar -planDirLoc /home/weblogic/clone_domain/plan
archiveLoc – имя файла для экспорта;
planDirLoc – директория в которую будет сгенерирован план.
- Редактируем сгенерированный план переноса:
Следует обратить внимание на создание текстовых файлов содержащих пароли к Data Source-ам и указание пути к файлу с паролем для каждого конкретного Data Source-а.$ vi /home/weblogic/clone_domain/plan/moveplan.xml
- Если требуется, то можно и изменить параметры адаптеров, композитов и деплоймент планов в соответствующих директориях:
$ /home/weblogic/clone_domain/plan/ $ ls -l total 312 drwxr-xr-x 2 weblogic app 4096 Mar 14 10:47 adapters drwxr-xr-x 2 weblogic app 12288 Mar 14 10:47 composites drwxr-xr-x 2 weblogic app 4096 Mar 14 10:48 deployment_plans -rw-r--r-- 1 weblogic app 274543 Mar 14 10:44 moveplan.xml
- Запускаем импорт домена на сервере назначения:
где javaHome – директория c JDK;$ ./pasteConfig.sh -javaHome /u01/jdk1.6.0_30 -archiveLoc /home/weblogic/clone_domain/soa_domain.jar -movePlanLoc /home/weblogic/clone_domain/plan/moveplan.xml -targetDomainLoc /u01/user_projects/domains/clonned_soa_domain -targetMWHomeLoc /u01/ofm/ -domainAdminPassword /home/weblogic/clone_domain/plan/domainpwd.txt
archiveLoc – имя файла для экспорта;
sourceDomainLoc – директория домена;
movePlanLoc – имя файла плана переноса;
targetDomainLoc – директория в которую импортируется домен;
targetMWHomeLoc – директория в которой развернут MW_HOME;
domainAdminPassword – путь к текстовому файлу с паролем администратора.
понедельник, 20 февраля 2012 г.
Основы Oracle Fusion Middleware High Availability
Обеспечение высокой доступности это одна из ключевых требований в любом промышленном внедрении. Внедрение систем высокой доступности обеспечивает минимизацию времени простоя системы и максимизацию времени доступности.
Простой системы бывает двух видов:
Табл.1 Планируемые простои и их решения для семейства продуктов Oracle Fusion Middleware
Табл.2 Непланируемые простои и их решения для семейства продуктов Oracle Fusion Middleware
Решения высокой доступности можно разделить на два вида:
Концептуальная схема решения глобальной высокой доступности:
Простой системы бывает двух видов:
- Планируемый – запланированные административные операции;
- Непланируемый – любой незапланированный сбой.
Табл.1 Планируемые простои и их решения для семейства продуктов Oracle Fusion Middleware
Операции | Решения |
Развертывание и удаление приложений | Hot Deployment |
Патчинг | Rolling Patching |
Конфигурационные изменения | Online configuration ChangesChange NotificationBatching of changesDeferred Activation |
Масштабируемость | Cluster Scale-Out |
Табл.2 Непланируемые простои и их решения для семейства продуктов Oracle Fusion Middleware
Тип сбоя | Решения |
Программный сбой | Death Detection and restart using Node Manager for Java EE and OPMN for system components.Server Clusters & Load BalancingCold Failover ClustersServer MigrationService MigrationState Replication and Replica aware Stubs |
Аппаратный сбой | Server Clusters & Load BalancingServer MigrationClusterware Integration |
Потеря данных | Backup and Recovery |
Site Disaster | Oracle Fusion Middleware Disaster Recovery Solution |
Решения высокой доступности можно разделить на два вида:
- Локальная высокая доступность – предоставляется в одном датацентре;
- Глобальная высокая доступность – предоставляется в географически различных датацентрах (защищает от региональных бедствий, например наводнений).
- «Активный-Активный» - развертываются на двух или более инстансах, которые улучшают масштабируемость и предоставляют высокую доступность . В данном виде все инстансы работают параллельно. Самым ярким примером является кластеризация.
- «Активный-Пассивный» - один инстанс (активный) обслуживает запросы, а другой (пассивный) находится в стадии ожидания. В случае выхода из строя активного инстанса все запросы перенаправляются на выполнение на пассивный инстанс, который становится активным. Пассивный инстанс так же называют standby-инстансом.
Концептуальная схема решения глобальной высокой доступности:
четверг, 26 января 2012 г.
Ошибка "java.lang.AssertionError: Could not obtain the localhost address" при старте Weblogic-сервера и вариант её решения
Ошибка:
При старте Weblogic-сервера возникает следующая ошибка и происходит ошибка старта (сервер переходит в статус FAILED):
По имени хоста (выделено синим выше) на котором напускается Weblogic-сервер невозможно получить его IP-адрес.
Решение:
Варианты решения:
При старте Weblogic-сервера возникает следующая ошибка и происходит ошибка старта (сервер переходит в статус FAILED):
<BEA-000386> <Server subsystem failed. Reason: java.lang.AssertionError: Could not obtain the localhost address. The most likely cause is an error in the network configuration of this machine.
java.lang.AssertionError: Could not obtain the localhost address. The most likely cause is an error in the network configuration of this machine.
at weblogic.server.channels.AddressUtils$AddressMaker.getLocalHost(AddressUtils.java:38)
at weblogic.server.channels.AddressUtils$AddressMaker.<clinit>(AddressUtils.java:33)
at weblogic.server.channels.AddressUtils.getIPAny(AddressUtils.java:154)
at weblogic.protocol.configuration.ChannelHelper.checkConsistency(ChannelHelper.java:61)
at weblogic.server.channels.ChannelService.start(ChannelService.java:207)
at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Caused By: java.net.UnknownHostException: vm1.mydomain.com : vm1.mydomain.com
at java.net.InetAddress.getLocalHost(InetAddress.java:1360)
at weblogic.server.channels.AddressUtils$AddressMaker.getLocalHost(AddressUtils.java:36)
at weblogic.server.channels.AddressUtils$AddressMaker.<clinit>(AddressUtils.java:33)
at weblogic.server.channels.AddressUtils.getIPAny(AddressUtils.java:154)
at weblogic.protocol.configuration.ChannelHelper.checkConsistency(ChannelHelper.java:61)
at weblogic.server.channels.ChannelService.start(ChannelService.java:207)
at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Причина:По имени хоста (выделено синим выше) на котором напускается Weblogic-сервер невозможно получить его IP-адрес.
Решение:
Варианты решения:
- Прописать в DNS
- Прописать в файл /etc/hosts
понедельник, 19 декабря 2011 г.
Выгрузка данных по измерениям Hyperion EPMA из Oracle RDBMS
- Подключиться к схеме данных приложения EPMA.
- Выполнить запрос:
SELECT TYPE_NAME,lpad(' ',2*(level-1))|| member_code AS member_code, alias_default, operation, generation, data_storage, uda_text AS uda, formula, smart_list_name, smart_list_label FROM (SELECT ob_type.TYPE_NAME , obj.object_name member_code, al.object_name alias_default, obj.generation, obj.parent_id, obj_par.object_name parent_member, (CASE WHEN m.consol_op1=0 THEN '+' WHEN m.consol_op1=1 THEN '-' WHEN m.consol_op1=2 THEN '*' WHEN m.consol_op1=3 THEN '/' WHEN m.consol_op1=4 THEN '%' WHEN m.consol_op1=5 THEN '~' WHEN m.consol_op1=6 THEN '^' ELSE 'Undefined' END) AS operation, (CASE WHEN m.data_storage=0 THEN 'Store data' WHEN m.data_storage=1 THEN 'Never share' WHEN m.data_storage=2 THEN 'Label Only' WHEN m.data_storage=3 THEN 'Shared member' WHEN m.data_storage=4 THEN 'DynamicCalc and Store' WHEN m.data_storage=5 THEN 'Dynamic' ELSE 'Undefined' END) data_storage, uda.uda_text, en.name AS smart_list_name, en.label AS smart_list_label, mf.formula FROM hsp_object obj, hsp_object obj_par, hsp_object_type ob_type, (SELECT obj_al.object_name,al.member_id FROM hsp_alias al, hsp_object obj_def, hsp_object obj_al, hsp_object_type ob_al_type WHERE al.aliastbl_id = obj_def.object_id(+) AND al.alias_id = obj_al.object_id(+) AND obj_def.object_name = 'Default' AND obj_al.object_type = ob_al_type.object_type AND ob_al_type.type_name = 'Alias' ) al, hsp_member m, hsp_member_formula mf, hsp_enumeration en, (SELECT uda.member_id,sys_xmlagg(xmlelement(col, ud.uda_value||' ')).extract('/ROWSET/COL/text()').getclobval() AS uda_text FROM hsp_member_to_uda uda, hsp_uda ud WHERE uda.uda_id=ud.uda_id GROUP BY uda.member_id ) uda WHERE obj.parent_id = obj_par.object_id(+) AND obj.object_type = obj_par.object_type(+) AND obj.object_type = ob_type.object_type AND ob_type.TYPE_NAME IN ('Scenario','Year','Time Period','Version','Entity','Account','User Defined Dimension Member' ) AND al.member_id(+) = obj.object_id AND m.member_id=obj.object_id AND mf.member_id(+)=obj.object_id AND uda.member_id(+)=obj.object_id AND m.enumeration_id=en.enumeration_id(+) ORDER BY ob_type.TYPE_NAME,obj.generation) START WITH parent_member IS NULL CONNECT BY prior member_code = parent_member;
- По результату данного запроса сделать подзапрос по колонке TYPE_NAME (соответствует типу измерения). Варианты:
- Account
- Entity
- Version
- Time Period
- Year
- Scenario
- User Defined Dimension Member
Подписаться на:
Сообщения (Atom)