C:\Program Files\Oracle\VirtualBox>VBoxManage modifyhd "C:\Users\User\VirtualBox VMs\OCP11G\OCP11G.vdi" --resize 20000
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
finish
Network
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe dhcpserver add --netname baku
--ip 10.13.13.100 --netmask 255.255.255.0 --lowerip 10.13.13.101 --upperip 10.13
.13.254 -enable
Oracle Teknolojileri, Weblogic, SOA Suite, Java, Kurumsal Veri Sözlüğü, API Gateway, API Manager, Veri Sözlüğü, SOAGEN, Metanizer, Apinizer
13 Ekim 2011 Perşembe
7 Ekim 2011 Cuma
19 Ağustos 2011 Cuma
Tomcat admin console start
C:\>set TOMCAT_HOME=c:\tomcat\bin
C:\>set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_26
C:\>set PATH=$JAVA_HOME/bin:$PATH
edit c:\tomcat\conf\tomcat-users.xml
c:\tomcat\bin\startup.bat
C:\>set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_26
C:\>set PATH=$JAVA_HOME/bin:$PATH
edit c:\tomcat\conf\tomcat-users.xml
c:\tomcat\bin\startup.bat
25 Temmuz 2011 Pazartesi
ORA-01000: maximum open cursors exceeded hatasi
Error : ORA-01000: maximum open cursors exceeded
Cozum
Open cursor sayisini artirmak
ALTER SYSTEM SET open_cursors = 5000 SCOPE=BOTH;
Default degeri 300 olmali
SQL> show parameter open_cursor;NAME TYPE VALUE
------------------------------------ ----------- -----------------
open_cursors integer 300
SQL>
14 Temmuz 2011 Perşembe
Glassfish windows service gibi baslatmak
1. C:\glassfish3.1\glassfish\bin>asadmin create-service
2. C:\glassfish3.1\glassfish\domains\domain1\bin>domain1Service.exe start
3 .C:\glassfish3.1\glassfish\domains\domain1\bin>domain1Service.exe stop
4. C:\glassfish3.1\glassfish\domains\domain1\bin>domain1Service.exe uninstall
5. C:\glassfish3.1\glassfish\domains\domain1\bin>domain1Service.exe install
12 Temmuz 2011 Salı
Mysql create user
mysql>CREATE USER 'username'@'localhost' IDENTIFIED BY 'pass';mysql>GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost'->WITH GRANT OPTION;
5 Temmuz 2011 Salı
Oracle Enterprise Linux uzerine, Oracle 11gr2 Kurulumu
Bu makalemizde, Oracle Enterprise Linux 5 uzerine Oracle 11gr2 kurulumunu ve linux icin gerekli kernel ayarlarinin yapilmasini inceleyecez..
Linux uzerine kurulum icin asagidaki adimlari takip edecez.
- Download Software
- Unpack files
- Hosts File
- Set kernel parameters
- Setup
- Installation
- Post installation
Indirmek icin
Unpack Files
indirdigimiz file`lari zipden cikariyoruz.
# unzip linux.x64_11gR2_database_1of2.zip
# unzip linux.x64_11gR2_database_2of2.zip
Hosts Files
# vi /etc/hosts127.0.0.1 localhost.localdomain localhost 192.168.10.12 ora11g.localdomain ora11g
Set Kernel Parameters
Oracle`in tavsiye ettigi minimum degerleri asagidaki gibi olmalidir.
# vi /etc/sysctl.conffs.suid_dumpable = 1 fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 536870912 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048586
Yaptigimiz islemlerin, restart yapmadan uygulanmasi icin..
# vi /sbin/sysctl -p
Asagidaki satirlarida ekleyelim.
# vi /etc/security/limits.conforacle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240
SELINUX`u kapatmamiz gerekmektedir.
# vi /etc/selinux/config
SELINUX=disabled // bu satir disabled olmalidir.
Simdi kurulum icin, bize gerekli olan, paketleri yuklemeliyiz.
gerekli olan paketler, OEL 5 DVD`nin icinde bulabilir.
# From Oracle Linux 5 DVD cd /media/cdrom/Server rpm -Uvh binutils-2.* rpm -Uvh compat-libstdc++-33* rpm -Uvh compat-libstdc++-33*.i386.rpm rpm -Uvh elfutils-libelf* rpm -Uvh gcc-4.* rpm -Uvh gcc-c++-4.* rpm -Uvh glibc-2.* rpm -Uvh glibc-common-2.* rpm -Uvh glibc-devel-2.* rpm -Uvh glibc-headers-2.* rpm -Uvh ksh* rpm -Uvh libaio-0.* rpm -Uvh libaio-devel-0.* rpm -Uvh libgomp-4.* rpm -Uvh libgcc-4.* rpm -Uvh libstdc++-4.* rpm -Uvh libstdc++-devel-4.* rpm -Uvh make-3.* rpm -Uvh sysstat-7.* rpm -Uvh unixODBC-2.* rpm -Uvh unixODBC-devel-2.* rpm -Uvh numactl-devel-2* cd / eject
Simdi grouplar ve user ekleyecez.
# groupadd oinstall # groupadd dba # groupadd oper # groupadd asmadmin # useradd -g oinstall -G dba,oper,asmadmin oracle # passwd oracle
// Eger ASM kullanmayacaksaniz, asmadmin`e gerek yoktur.
Simdi Oracle software kurulumu icin, directory yaratacaz, ve oracle kullanicisina
yetki verecez.
# mkdir -p /u01/app/oracle/product/11.2.0/db_1 # chown -R oracle:oinstall /u01 # chmod -R 775 /u01
Buradan sonra "oracle" kullanicisi ile login oldukdan sonra, ".bash_profile" icine
asagidaki satirlari ekliyoruz.
# Oracle Settings TMP=/tmp; export TMP TMPDIR=$TMP; export TMPDIR ORACLE_HOSTNAME=ora11g.localdomain; export ORACLE_HOSTNAME ORACLE_UNQNAME=ORCL; export ORACLE_UNQNAME ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME ORACLE_SID=ORCL; export ORACLE_SID PATH=/usr/sbin:$PATH; export PATH PATH=$ORACLE_HOME/bin:$PATH; export PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
Gerekli islemleri yaptikdan sonra, zipden cikardigimiz "database" klasoru icindeki runInstaller`i calisitiriyoruz.
# cd database# ./runInstaller
Buradan sonra, karsiniza, grafik ekran gelecektir.
Ama eger runInstaller`i calistirken asagidaki hata ile karsilasirsaniz
[oracle@ertugrula database]$ ./runInstallerbash: ./runInstaller: Permission denied
Eger sizde benim gibi yukaridaki hata ile karsilastiysaniz yapmamiz gereken, permissionlar vermekte asagida oldugu gibi
[oracle@ertugrula grid]$ chmod u+x runInstaller
[oracle@ertugrula grid]$ chmod u+x ./install/.oui
[oracle@ertugrula grid]$ chmod u+x ./install/unzip
Simdi tekrar deneyiniz,
# ./runInstaller
4 Temmuz 2011 Pazartesi
chmod: changing permissions of `VBoxLinuxAdditions.run': Read-only file system
Virtual boxda tam ekran yaparken asagidaki hatayi aliyorsak;
# sudo ./VBoxLinuxAdditions.run
chmod: changing permissions of `VBoxLinuxAdditions.run': Read-only file system
Cozum:
# sudo sh VBoxLunuxAdditions.run
En iyi Backup alma yonteminden biri
Asagidaki kodumuz, en iyi backup alma yontemlerinden biridir, (Tabiki cok daha iyileri vardir.)
RMAN > BACKUP as COMPRESSED BACKUPSET DATABASE FORMAT
'/home/oracle/backup/datafile/dbf_%d_%t_%s.rman'
'/home/oracle/backup/datafile/dbf_%d_%t_%s.rman'
TAG='DBF_DB11G_20110321_1453' PLUS
ARCHIVELOG format '/home/oracle/backup/arcfile/arc_%d_%t_%s.rman'
TAG='ARC_DB11G_20110321_1453'
28 Haziran 2011 Salı
Fedora uzerine Virtualbox kurulurken cikan hata
Error! Your kernel source for kernel 2.6.35.6-45.fc14.x86_64 cannot be found at
/lib/modules/2.6.35.6-45.fc14.x86_64/build or /lib/modules/2.6.35.6-45.fc14.x86_64/source
/lib/modules/2.6.35.6-45.fc14.x86_64/build or /lib/modules/2.6.35.6-45.fc14.x86_64/source
#yum install gcc
#yum install dkms
#uname -r
// burada gorunen degeri yum install kernel-devel-xxxxxxx
// bende asagidaki gibi...
#yum install kernel-devel-2.6.35.6-45.fc14.x86_64
#sudo /etc/init.d/vboxdrv setup
26 Haziran 2011 Pazar
Oracle Scheduler
Bu makalemizde Oracle 11g icerisinde olan dbms_scheduler paketini kullanacagiz..
Bunun icin bir user yaratalim ve ona grant create job rolunu verelim..
job icinde kullanacagimiz bir table yaratalim...
tablomuzun icine biraz veri ekledikden sonra job icinde kullanalim..
------------------------------- JOB`un yaratilmiasi------------------
-----------------------JOB`larin listesini gorelim------------------------
-----------------------JOB`un aktiv edilmesi-------------------
SQL > begin
-----------------------JOB`un pasif edilmesi-------------------
-----------------------JOB`un kopyalanmasi-------------------
-----------------------JOB`un calistirilmasi-------------------
-----------------------JOB`un durdurulmasi-------------------
-----------------------JOB`un silinmesi-------------------
Bunun icin bir user yaratalim ve ona grant create job rolunu verelim..
sql > CREATE USER aslan IDENTIFIED BY aslan;
sql> GRANT DBA TO aslan;
sql > GRANT CREATE JOB TO aslan;
job icinde kullanacagimiz bir table yaratalim...
sql> CREATE TABLE EMP (ID NUMBER, NAME VARCHAR2(30), SAL NUMBER);
tablomuzun icine biraz veri ekledikden sonra job icinde kullanalim..
------------------------------- JOB`un yaratilmiasi------------------
sql > BEGIN
DBMS_SCHEDULER.CREATE_JOB(
job_name => 'upt_emp',
job_type => 'PLSQL_BLOCK',
job_action => 'update emp set sal = sal * 1.2;',
start_date => systimestamp,
repeat_interval => 'FREQ=YEARLY',
end_date => NULL,
enabled = TRUE,
comments => 'Iscilerin maaslarin artirilmasi');
END;
/
-----------------------JOB`larin listesini gorelim------------------------
SQL> select job_name, enabled, run_count from user_scheduler_jobs;
JOB_NAME ENABL RUN_COUNT
------------------------------ ----- ----------
UPT_EMP TRUE 0
-----------------------JOB`un aktiv edilmesi-------------------
SQL > begin
dbms_scheduler.enable(name => 'UPT_EMP');
end;
/
-----------------------JOB`un pasif edilmesi-------------------
SQL > begin
dbms_scheduler.disable(name => 'UPT_EMP');
end;
/
-----------------------JOB`un kopyalanmasi-------------------
SQL > begin
dbms_scheduler.copy_job('UPT_EMP', 'COP_UPT');
end;
/
// Bu kodu calistirdikdan sonra, joblarin sayisinin arttigini goreceksiniz ( ama kopy jobun disable olacaktir).-----------------------JOB`un calistirilmasi-------------------
SQL > begin
dbms_scheduler.run_job('UPT_EMP',TRUE);
end;
/
-----------------------JOB`un durdurulmasi-------------------
SQL > begin
dbms_scheduler.stop_job(job_name => 'UPT_EMP',
force => TRUE),
end;
/
// Burada job calisiyorsa durdurulucaktir ancak, job calismiyorsa, kod hata verecektir.-----------------------JOB`un silinmesi-------------------
SQL > begin
dbms_scheduler.drop_job(job_name => 'UPT_EMP',
force => TRUE),
end;
/
31 Mayıs 2011 Salı
26 Mayıs 2011 Perşembe
25 Mayıs 2011 Çarşamba
dbms_output.put_line kisa formasi
Ozelliklede PL/SQL`de console biseyler yazdirmak icin, DBMS_OUTPUT.PUT_LINE(); gibi uzun bi kod yazmamiz gerekiyor, ancak bu yolu yeni bir procedure yazarak asabiliriz.. Hemde cok basit bir sekilde...
CREATE OR REPLACE PROCEDURE yaz(
cn_text IN VARCHAR2 )
IS
BEGIN
SYS.DBMS_OUTPUT.PUT_LINE(cn_text);
END yaz;
CREATE OR REPLACE PROCEDURE yaz(
cn_text IN VARCHAR2 )
IS
BEGIN
SYS.DBMS_OUTPUT.PUT_LINE(cn_text);
END yaz;
kullanimi :
BEGIN
yaz('Hello World');
END;
SQL: ALTER TABLE Statement
ALTER TABLE deyimi, tabloyu yeniden adlandirma, colon ekleme, silme, degistirmek icin kullanilir. Asagida, ALTER TABLE deyimi ile birlikte neler yapabiliriz onlari gorelim.
Temel olarak bir tablonun adini degistirmek:
ALTER TABLE table_name RENAME TO new_table_name;Ornek :ALTER TABLE students RENAME TO ogrenciler;
Tabloya kolon(lar) ekleme :
ALTER TABLE table_name ADD column_name column-definition;Ornek :ALTER TABLE student ADD email varchar2(50);
Kolonlar ekleme :
| ALTER TABLE table_name | ||
| ADD ( | column_1 | column-definition, |
| column_2 | column-definition, | |
| ... | ||
| column_n | column_definition ); | |
Ornek :
| ALTER TABLE student | ||
| ADD ( | first_name | varchar2(50), |
| city | varchar2(45) ); | |
Kolon bilgilerini degistirme :
ALTER TABLE table_name MODIFY column_name column_type;
Ornek :
ALTER TABLE students MODIFY email varchar2(100) not null;
Kolon Silme :
ALTER TABLE table_name DROP COLUMN column_name;
Kolon Ismini degistirme :
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
Kolon Silme :
ALTER TABLE table_name DROP COLUMN column_name;
Ornek :
ALTER TABLE students DROP email ;Kolon Ismini degistirme :
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
Ornek :
ALTER TABLE students RENAME COLUMN email to mail_address;
Practice Exercise #1:
Asagidaki departments tablosunun ismini degistirin.
CREATE TABLE departments ( department_id number(10) not null, department_name varchar2(50) not null, CONSTRAINT departments_pk PRIMARY KEY (department_id) );
Solution:
ALTER TABLE departments
RENAME TO depts;
Practice Exercise #2:
Asagidaki Employees tablosuna, ismini salary, datatype number(6) olan bir kolon ekleyin.
CREATE TABLE employees ( employee_number number(10) not null, employee_name varchar2(50) not null, department_id number(10), CONSTRAINT employees_pk PRIMARY KEY (employee_number) );
Solution:
ALTER TABLE employees ADD salary number(6);
Practice Exercise #3:
Asagidaki Customers tablosuna, contact_name isminde ve varchar2(50) tipinde ve last_contancted isminde ve tarih tipinde colonlar ekleyin.
CREATE TABLE customers ( customer_id number(10) not null, customer_name varchar2(50) not null, address varchar2(50), city varchar2(50), state varchar2(25), zip_code varchar2(10), CONSTRAINT customers_pk PRIMARY KEY (customer_id) );
Solution:
ALTER TABLE customers ADD ( contact_name varchar2(50), last_contacted date );
Practice Exercise #4:
Employees tablosunda employee_name kolonun datatipini, 75 yapiniz.
CREATE TABLE employees ( employee_number number(10) not null, employee_name varchar2(50) not null, department_id number(10), CONSTRAINT employees_pk PRIMARY KEY (employee_number) );
Solution:
ALTER TABLE employees
MODIFY employee_name varchar2(75);
Practice Exercise #5:
change the customer_name column to NOT allow null values and change the state column to a varchar2(2) datatype.
CREATE TABLE customers ( customer_id number(10) not null, customer_name varchar2(50), address varchar2(50), city varchar2(50), state varchar2(25), zip_code varchar2(10), CONSTRAINT customers_pk PRIMARY KEY (customer_id) );
Solution:
ALTER TABLE customers MODIFY ( customer_name varchar2(50) not null, state varchar2(2) );
Practice Exercise #6:
Asagidaki tablodaki salary kolonunu siliniz.
CREATE TABLE employees ( employee_number number(10) not null, employee_name varchar2(50) not null, department_id number(10), salary number(6), CONSTRAINT employees_pk PRIMARY KEY (employee_number) );
Solution:
ALTER TABLE employees DROP COLUMN salary;
Practice Exercise #7:
Asagiadki tablodaki department_name kolonunun ismini, dept_name ile degistirin.
CREATE TABLE departments ( department_id number(10) not null, department_name varchar2(50) not null, CONSTRAINT departments_pk PRIMARY KEY (department_id) );
Solution:
ALTER TABLE departments
RENAME COLUMN department_name to dept_name;
16 Mayıs 2011 Pazartesi
jsf 2.0 ile gelen yenikler
Merhaba, bu makalemizde jsf 2.0 ile gelen yeniklerden ve Jsf 1.2 ile farklarindan, jsf 1.2 ile uyguladigimiz kodlari jsf 2.0 ile nasil
yaptigimizdan bahsetmeye calisacagim. Oncelikle jsf 2.0`in bize cok buyuk kolayliklar sagladigini belirtmek isterim, mesala artik applicatin.xml
dedigimiz diger bi adiyla faces-config.xml dosyasini jsf 2.0 ile kullanmamiza gerek kalmiyor, herseyi annotation`lar yardimi ile
kolaylikla yapiyoruz, ve bize xml ayar dosyalari ile ugrasmak degil, rahat rahat kod olusturmak kaliyor. Ilk karsilastirmamizdan baslayalim isterseniz.
Diyelim ki, birtane Backing Bean`imin olsun.
jsf 1.2 ile asagidaki sekilde kullaniyorduk.
UserBean.java
public class UserBean{
private String name;
getter / setter;
}
faces-config.xml
userBean
net.aslan.UserBean
request
bu sekilde kullaniyorduk, ama jsf 2.0 ile yapacagimiz sey cok basit, tek yapmamiz gereken classimiz uzerinde annotation olarak gostermek :)
Jsf 2.0 ile
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name="userBean")
@RequestScoped
public class UserBean{
@ManagedProperty("Ertugrul")
private String name;
getter / setter;
}
hepsi bukadar. Artik UserBean backing beanimiz hazir. normal bi sekilde kullanabiliriz. Ve tabiki istenildi
durumda projede faces-config.xml dosyasi kullanilabilinir.
Bu sekilde annotationlar yardimi ile converter`larimizi, validator`larimizi olusturabiliriz, bunlarida karsilastiracak olursak
Jsf 1.2 ile kullanimi
DateConverter
net.aslan.jsf.converters.DateConverter
emailValidator
net.aslan.jsf.validators.EmailValidator
bu sekilde faces-config.xml icinde olusturuyorduk ve, kullanirken
ve validatorlarida ayni sekilde kullaniyorduk. simdi jsf 2.0 ile ne kadar kolay yapilidigina bakalim.
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
@FacesConverter(value = "dateConverter")
public class DateConverter implements Converter {
}
bu sekilde classimizi converter olarak gosteriyoruz ve,
yapmamiz gereken bukadar. validatorlarimizida ayni sekilde kullaniyoruz
import javax.faces.validator.FacesValidator;
@FacesValidator(value = "emailValidator")
public class EmailValidator implements Validator {
}
bu sekilde,
Kendi olusturdugumuz custom componentlerimizide, diger http://www.jtpd.org/wiki/257311 makalemizde oldugu gibi yine annotation ile belirtiyoruz ve kullanabiliyoruz.
Gordugunuz gibi faces-config.xml ayar dosyasina hic bi sekilde ihtiyacimiz kalmadi..
Peki jsf 1.2 ile jsf 2.0 farklar bu kadar, elbetteki hayir. Simdi tek tek inceleyelim.
Oncelikle benimde daha once cok sorun yasadigim, url`nin diger sayfaya gittiginde degismeden kalmasi, diger sayfaya giderken url`nin
degismesi icin yapiyorduk, bu defada diger sayfaya giderken veriyi koruyamiyorduk.
Jsf 2.0 ile birlikte cok guzel bi cozum yolunu bulunmus ve benimde cok hosuma gitti :)
kullanimi asagidaki sekilde,
edit
/edit.xhtml
tek yapmamiz gereken bu satiri kullanmamiz, bu sekilde kullaninca artik url`i istedigimizde sekilde
degistirebiliyoruz ve en guzelide verileri kaybetmiyoruz :).
Bu kismi ayrintili bi sekilde incelemek icin, asagidaki linkden faydalanabilirsiniz.
http://blogs.sun.com/enterprisetechtips/entry/post_redirect_get_and_jsf
Ve bu ozelliklerden daha dogrusunu soylemek gerekirse, J2EE 6 ile gelen yeniklerden ve JSP page`inin yerine facelets`lar gibi cok hizli calisan ve cok cok kullanisli olan bi teknolojilenin J2ee specification`a eklemesi.
facelets`larin bize ne gibi yararlar saglandigi baska bir makalede genis
ve uygulamali bir sekilde gorecez. burada facelets`lar ile gelen template ozelliginden biraz bahsetmek istiyorum. Uygulamamiz icin sablaon olusturmak ve bunu jsp`de oldugu gibi her sayfada tekrar tekrar kullanmak gibi cok buyuk bi zahmetten kurtariyor bizi, butun bunlari diger bi makelede uyuglamali
bi sekilde gorecegiz. faceletsler ile jsf 2.0 asagidaki gibi kullaniyoruz.
template.xhtml sayfamiz.
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html">
Facelets - Template Example
Welcome
ve bu template`i
http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
template="/template.xhtml ">
Sayfa ust Kismi
bu sekilde cok cok rahat bi sekilde kullaniyoruz. dedigim gibi diger makalede cok genis bi sekilde kullanacaz.
Burada dikkat ettiyseniz,
bu sekilde bi satirimiz var, burada
Diger bi yenilikden bahsedecek olursak, jsf 1.2`de metodlarin parametre degerlerini kullanamiyorduk, yani parametre alan bi metodu cagrip parametre veremiyorduk. Jsf 2.0 ile parametre alan metodlara parametre gonderip kullanabiliyoruz, hemen basit ve bizim icin cok faydali olacak bi ornek uzeriden gosterirsek.
Mesala list.xhtml sayfamizda, datatable ile listenen satirlarinin birinin uzerine tikladigimizda detay sayfasinda verinin gosterilmesi
jsf 1.2 ile bunu,
HtlmDataTable`i kullanarak, getRowData metodunu cagrip secilen satirdaki nesneyim bizim Object nesnemiz`e atiyorduk, yani
public class UserBean{
User selectedUser;
HtmlDatatable dataTable;
public HtmlDatatable getDataTable(){
return dataTable;
}
public void setDataTable(HtmlDatatable dataTable){
this.dataTable = dataTable;
}
public String detail(){
selectedUser = dataTable.getRowData();
return "detail";
}
binding="#{userBean.dataTable}" value="#{userBean.list}" var="user">
.......
......
genel itibariyle busekilde kullaniyorduk, yani HtmlDatatable componentinin ozellikleri kullanip, datatable`imizi buna binding yaparak yapmaya calisiyorduk. ve birde bunun faces-config.xml ayar dosyalari falani var :)..
Peki ayni ornegi jsf 2.0 nasil yapabiliriz,
@ManagedBean
public class UserBean{
User selectedUser;
public String detail(User user){
selectedUser = user;
return "detail";
}
="#{userBean.detail(user)}" value="user.name"/>
......
.....
gordugunuz gibi bu kadar basit, yani datatable`dan gelen user nesnesini, commandLinki`imizin action`unda parametre olarak giriyoruz ve bunu detail metodumuza parametre olarak gondererek ve esitliyoruz :).
Bu uygulamaya asagidaki sekilde... Netbeans`de kullanimi..
DataBean.java
package net.aslan.jsf.controller;
import java.io.Serializable;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import net.aslan.beans.Person;
import net.aslan.beans.PersonRemote;
/**
* */
@ManagedBean
@SessionScoped
public class DataBean implements Serializable {
@EJB
private PersonRemote pr;
private Person selectedPerson;
public List getPersons() {
return pr.findAll();
}
public String detail(Person person) {
selectedPerson = person;
return "detail?faces-redirect=true&includeViewParams=true";
// bu sekilde kullaninca veriyi kabetmeden url`i oldugu sayfada gosterebiliriz.
// istenildigi durumda faces-config.xml`de navigation`lardada kullanilabilir.
}
public Person getSelectedPerson() {
return selectedPerson;
}
public void setSelectedPerson(Person selectedPerson) {
this.selectedPerson = selectedPerson;
}
}
Person.java
package net.aslan.beans;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
/**
*
* @author ertugrul
*/
@Entity
public class Person implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
private String lastname;
private String email;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Person)) {
return false;
}
Person other = (Person) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "accr.beans.Person[id=" + id + "]";
}
}
PersonRemote.java
package net.aslan.beans;
import java.util.List;
/**
*
* @author ertugrul
*/
public interface PersonRemote {
public void create(Person Person);
public void edit(Person Person);
public List findAll();
}
PersonEJB.java
package net.aslan.beans;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
/**
*
* @author ertugrul
*/
@Stateless
public class PersonEJB implements PersonRemote {
@PersistenceContext
EntityManager em;
public void create(Person Person) {
em.persist(Person);
}
public void edit(Person Person) {
em.merge(Person);
}
public List findAll() {
return em.createQuery("select object(o) from Person as o").getResultList();
}
}
index.xhtml
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
styleClass="datatable" cellpadding="2"
cellspacing="0" rowClasses="row-odd, row-even">
detail.xhtml
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
datatablestyle.css
.datatable{
border: 1px solid olive;
}
.datatable thead th{
background-color: #dfdfdf;
border-bottom: 1px solid olive;
padding: 4px;
}
.row-odd td{
padding: 4px;
background-color: #ddffcc;
}
.row-even td{
padding: 4px;
background-color: #cceebb;
}
dataTable tfoot {
background-color: #999;
}
yaptigimizdan bahsetmeye calisacagim. Oncelikle jsf 2.0`in bize cok buyuk kolayliklar sagladigini belirtmek isterim, mesala artik applicatin.xml
dedigimiz diger bi adiyla faces-config.xml dosyasini jsf 2.0 ile kullanmamiza gerek kalmiyor, herseyi annotation`lar yardimi ile
kolaylikla yapiyoruz, ve bize xml ayar dosyalari ile ugrasmak degil, rahat rahat kod olusturmak kaliyor. Ilk karsilastirmamizdan baslayalim isterseniz.
Diyelim ki, birtane Backing Bean`imin olsun.
jsf 1.2 ile asagidaki sekilde kullaniyorduk.
UserBean.java
public class UserBean{
private String name;
getter / setter;
}
faces-config.xml
bu sekilde kullaniyorduk, ama jsf 2.0 ile yapacagimiz sey cok basit, tek yapmamiz gereken classimiz uzerinde annotation olarak gostermek :)
Jsf 2.0 ile
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name="userBean")
@RequestScoped
public class UserBean{
@ManagedProperty("Ertugrul")
private String name;
getter / setter;
}
hepsi bukadar. Artik UserBean backing beanimiz hazir. normal bi sekilde kullanabiliriz. Ve tabiki istenildi
durumda projede faces-config.xml dosyasi kullanilabilinir.
Bu sekilde annotationlar yardimi ile converter`larimizi, validator`larimizi olusturabiliriz, bunlarida karsilastiracak olursak
Jsf 1.2 ile kullanimi
bu sekilde faces-config.xml icinde olusturuyorduk ve, kullanirken
ve validatorlarida ayni sekilde kullaniyorduk. simdi jsf 2.0 ile ne kadar kolay yapilidigina bakalim.
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
@FacesConverter(value = "dateConverter")
public class DateConverter implements Converter {
}
bu sekilde classimizi converter olarak gosteriyoruz ve,
yapmamiz gereken bukadar. validatorlarimizida ayni sekilde kullaniyoruz
import javax.faces.validator.FacesValidator;
@FacesValidator(value = "emailValidator")
public class EmailValidator implements Validator {
}
bu sekilde,
Kendi olusturdugumuz custom componentlerimizide, diger http://www.jtpd.org/wiki/257311 makalemizde oldugu gibi yine annotation ile belirtiyoruz ve kullanabiliyoruz.
Gordugunuz gibi faces-config.xml ayar dosyasina hic bi sekilde ihtiyacimiz kalmadi..
Peki jsf 1.2 ile jsf 2.0 farklar bu kadar, elbetteki hayir. Simdi tek tek inceleyelim.
Oncelikle benimde daha once cok sorun yasadigim, url`nin diger sayfaya gittiginde degismeden kalmasi, diger sayfaya giderken url`nin
degismesi icin
Jsf 2.0 ile birlikte cok guzel bi cozum yolunu bulunmus ve benimde cok hosuma gitti :)
kullanimi asagidaki sekilde,
tek yapmamiz gereken
degistirebiliyoruz ve en guzelide verileri kaybetmiyoruz :).
Bu kismi ayrintili bi sekilde incelemek icin, asagidaki linkden faydalanabilirsiniz.
http://blogs.sun.com/enterprisetechtips/entry/post_redirect_get_and_jsf
Ve bu ozelliklerden daha dogrusunu soylemek gerekirse, J2EE 6 ile gelen yeniklerden ve JSP page`inin yerine facelets`lar gibi cok hizli calisan ve cok cok kullanisli olan bi teknolojilenin J2ee specification`a eklemesi.
facelets`larin bize ne gibi yararlar saglandigi baska bir makalede genis
ve uygulamali bir sekilde gorecez. burada facelets`lar ile gelen template ozelliginden biraz bahsetmek istiyorum. Uygulamamiz icin sablaon olusturmak ve bunu jsp`de oldugu gibi her sayfada tekrar tekrar kullanmak gibi cok buyuk bi zahmetten kurtariyor bizi, butun bunlari diger bi makelede uyuglamali
bi sekilde gorecegiz. faceletsler ile jsf 2.0 asagidaki gibi kullaniyoruz.
template.xhtml sayfamiz.
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html">
Howto Samples
ve bu template`i
http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
Sayfa ust Kismi
#{userBean.name}
bu sekilde cok cok rahat bi sekilde kullaniyoruz. dedigim gibi diger makalede cok genis bi sekilde kullanacaz.
Burada dikkat ettiyseniz,
bu sekilde bi satirimiz var, burada
Diger bi yenilikden bahsedecek olursak, jsf 1.2`de metodlarin parametre degerlerini kullanamiyorduk, yani parametre alan bi metodu cagrip parametre veremiyorduk. Jsf 2.0 ile parametre alan metodlara parametre gonderip kullanabiliyoruz, hemen basit ve bizim icin cok faydali olacak bi ornek uzeriden gosterirsek.
Mesala list.xhtml sayfamizda, datatable ile listenen satirlarinin birinin uzerine tikladigimizda detay sayfasinda verinin gosterilmesi
jsf 1.2 ile bunu,
HtlmDataTable`i kullanarak, getRowData metodunu cagrip secilen satirdaki nesneyim bizim Object nesnemiz`e atiyorduk, yani
public class UserBean{
User selectedUser;
HtmlDatatable dataTable;
public HtmlDatatable getDataTable(){
return dataTable;
}
public void setDataTable(HtmlDatatable dataTable){
this.dataTable = dataTable;
}
public String detail(){
selectedUser = dataTable.getRowData();
return "detail";
}
.......
......
genel itibariyle busekilde kullaniyorduk, yani HtmlDatatable componentinin ozellikleri kullanip, datatable`imizi buna binding yaparak yapmaya calisiyorduk. ve birde bunun faces-config.xml ayar dosyalari falani var :)..
Peki ayni ornegi jsf 2.0 nasil yapabiliriz,
@ManagedBean
public class UserBean{
User selectedUser;
public String detail(User user){
selectedUser = user;
return "detail";
}
......
.....
gordugunuz gibi bu kadar basit, yani datatable`dan gelen user nesnesini, commandLinki`imizin action`unda parametre olarak giriyoruz ve bunu detail metodumuza parametre olarak gondererek ve esitliyoruz :).
Bu uygulamaya asagidaki sekilde... Netbeans`de kullanimi..
DataBean.java
package net.aslan.jsf.controller;
import java.io.Serializable;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import net.aslan.beans.Person;
import net.aslan.beans.PersonRemote;
/**
* */
@ManagedBean
@SessionScoped
public class DataBean implements Serializable {
@EJB
private PersonRemote pr;
private Person selectedPerson;
public List
return pr.findAll();
}
public String detail(Person person) {
selectedPerson = person;
return "detail?faces-redirect=true&includeViewParams=true";
// bu sekilde kullaninca veriyi kabetmeden url`i oldugu sayfada gosterebiliriz.
// istenildigi durumda faces-config.xml`de navigation`lardada kullanilabilir.
}
public Person getSelectedPerson() {
return selectedPerson;
}
public void setSelectedPerson(Person selectedPerson) {
this.selectedPerson = selectedPerson;
}
}
Person.java
package net.aslan.beans;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
/**
*
* @author ertugrul
*/
@Entity
public class Person implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
private String lastname;
private String email;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Person)) {
return false;
}
Person other = (Person) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "accr.beans.Person[id=" + id + "]";
}
}
PersonRemote.java
package net.aslan.beans;
import java.util.List;
/**
*
* @author ertugrul
*/
public interface PersonRemote {
public void create(Person Person);
public void edit(Person Person);
public List
}
PersonEJB.java
package net.aslan.beans;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
/**
*
* @author ertugrul
*/
@Stateless
public class PersonEJB implements PersonRemote {
@PersistenceContext
EntityManager em;
public void create(Person Person) {
em.persist(Person);
}
public void edit(Person Person) {
em.merge(Person);
}
public List
return em.createQuery("select object(o) from Person as o").getResultList();
}
}
index.xhtml
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
cellspacing="0" rowClasses="row-odd, row-even">
detail.xhtml
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
Detail Person
datatablestyle.css
.datatable{
border: 1px solid olive;
}
.datatable thead th{
background-color: #dfdfdf;
border-bottom: 1px solid olive;
padding: 4px;
}
.row-odd td{
padding: 4px;
background-color: #ddffcc;
}
.row-even td{
padding: 4px;
background-color: #cceebb;
}
dataTable tfoot {
background-color: #999;
}
19 Nisan 2011 Salı
Oracle Alert Log
Oracle'ın alert.log kronolojik mesajları ve günlük veritabanı işlemi kaynaklanan hataları kaydeder. Ayrıca, Trace files ve dump files incelemek icin vardir.
Alert log icinde asagidaki mesajlar vardir.
- startup ve shutdown mesajlari
- Operator konsole mesajlar
- Tracle files hata nedenleri
- Database uzerinde CREATE, ALTER ve DROP SQL ifadelerinin tablespce uzerinde kullanilmasi ve rollback segmentlerde.
- ORA-00600 : Internal(dahili) hatalari
- ORA-01578 errors (block corruption)
- ORA-00060 errors (deadlocks)
Alert log text formatindadir ve isteniler bir editor ile acilabilir. BACKGROUND_DUMP_DEST parametersi ile directory`si bulunabilir.
select value from v$parameter where name = 'background_dump_dest';Eger background_dump_dest belirtilmemisse, oracle alert logu,
$ORACLE_HOME/diag/RDBMS/dbname/ORACLE_SID/trace directory`i icine yazar.
18 Nisan 2011 Pazartesi
CETURK AZERBAYCAN, ORALCE KONFERANS
Bugüne kadar Türkiye'de çok farklý konu ve teknoloji ile ilgili yaptýðý ücretsiz etkinliklerle biliþim sektörünün geliþmesine katkýda bulunan CETURK, Türkiye'deki biliþim topluluklarý arasýnda bir ilke daha imza atarak Azerbaycan'da gerçekleþtireceði Oracle Konferansý ile yurtdýþý etkinliklerine baþlýyor. Azerbaycan Oracle Konferansý 7 Mayýs 2001 tarihinde Azerbaycan Teknik Üniversitesi'nde alanýnda uzman konuþmacýlarýn katýlýmýyla ücretsiz olarak gerçekleþecektir.
Konferansa Türkiye'den Talip Hakan Öztürk, Azerbaycan'dan Kamran Agayev, Ramin Orucov ve Teymur Hacýyev katýlacaktýr.
Ayrýntýlý bilgi için týklayýnýz.
Etkinliðe kayýt için týklayýnýz.
15 Nisan 2011 Cuma
Windows 7 Yeni Disk yaratma
http://www.sevenforums.com/tutorials/2674-partition-volume-create-new.html
14 Nisan 2011 Perşembe
ORA-00205: error in identifying controlfile, check alert log for more info
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 839282688 bytes
Fixed Size 2217992 bytes
Variable Size 494929912 bytes
Database Buffers 339738624 bytes
Redo Buffers 2396160 bytes
ORA-00205: error in identifying control file, check alert log for more info
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 839282688 bytes
Fixed Size 2217992 bytes
Variable Size 494929912 bytes
Database Buffers 339738624 bytes
Redo Buffers 2396160 bytes
ORA-00205: error in identifying control file, check alert log for more info
Eger sizde benim gibi yukaridaki hatayi aldiysaniz. sorun ORACLE_SID `nin ASM olmamasidir.
Çözüm; Oracle SID'sini ASM'ye çevirmek..
sqlplus / as sysdba
SQL>shutdown immediate;
exit
2.export ORACLE_SID=+ASM
SQL>shutdown immediate;
exit
2.export ORACLE_SID=+ASM
SQL> startup
yada
SQL> startup force
ORACLE instance started.
Total System Global Area 839282688 bytes
Fixed Size 2217992 bytes
Variable Size 494929912 bytes
Database Buffers 339738624 bytes
Redo Buffers 2396160 bytes
Database mounted.
Database opened.
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ WRITE
SQL>
Re: ORA-01102: cannot mount database in EXCLUSIVE mode
Faced the same issue just now... Here's what you do:
First at command prompt check:
ps -eaf | grep smon
You would definitely find 2 entries for the current database...
Export ORACLE_HOME,ORACLE_SID, login to SQL and type:
shutdown immediate
Then logout of sql and again grep for smon... Kill that particular process using kill -9
Then login to SQL and type:
startup
The database would surely startup now.. Try and let us know!
First at command prompt check:
ps -eaf | grep smon
You would definitely find 2 entries for the current database...
Export ORACLE_HOME,ORACLE_SID, login to SQL and type:
shutdown immediate
Then logout of sql and again grep for smon... Kill that particular process using kill -9
Then login to SQL and type:
startup
The database would surely startup now.. Try and let us know!
Oracle Initialization Parameters - Ve aciklamalari
- O7_DICTIONARY_ACCESSIBILITY : Objeler uzerindeki bir system yetkidir, default degeri false`dir. Eger true yapilirisa, yetkiler verilen user, her schema`daki table`lar uzerinde sorgu yapabilir.
- ACTIVE_INSTANCE_COUNT : Bu parameter yanlizca cluster sistemlerde icin kullanilir ve aktif instance sayisini verir.
- ARCHIVE_LAG_TARGET : Stand by da maximum kaydedilebilir redos sayisi.
- ASM_DISKGROUPS : ASM instance`de mount olunmus asm disk grublarini verir. Ve ALTER DISKGROUP ALL MOUNT statement`indeki tum degisiklikler bu parametereye yansitilir.
- ASM_DISKSTRING : Bu parameter belirtilen ASM diskgrouplarin discovery olmasi, ve virgulle ayirarak onlari listemeye yarar, bir diskgroup iki defa discovery olunmaz.
- ASM_POWER_LIMIT : Bu parametre disklerin defult rebalancing powerini verir. Default degeri 1`dir ve 11`e kadar cikabilir. 0 olursa rebalancing kapali demektir. Bu parametrenin degeri arttikca rebalancing islemi daha hizli bi sekilde tamamlanir, ama I/O cok yuksek olur.
- ASM_PREFFERED_READ_FAILURE_GROUPS : İleride olası durumlar için tanımladığımız failure, yani başarısızlık gruplarını ifade eden parametredir. Amacı arttırılmış kopyalama ve daha fazla sağlamlık için kullanılacak disk'lerin gruplanmasıdır. Bu parametre yanliz Cluster sistemlerde kullanilir.
- AUDIT_FILE_DEST : AUDIT_FILE_DEST parametresi audit kayıtlarının nerede tutulacağının set edildiği parametredir.
- AUDIT_SYS_OPERATION : SYS userının auditlenip auditlenmemesi ile ilgili, eğer SYS userının sessionlarıda auditlenecekse AUDIT_SYS_OPERATIONS parametresi TRUE olarak set edilmelidir.
- AUDIT_SYSLOG_LEVEL : Bu parametre sadece Unix ortamlarda kullanılmaktadır. Bu parametre manuel olarak initSID.ora dosyasına eklenilerek set edilebilir. İki farklı değer alabilir.
- AUDIT_TRIAL : AUDIT_TRIAL`in acik veya kapali olmasi icin kullanilan parametredir.NONE ; Auditing disable anlamına gelir.
Audit_trail parametresini DB olarak set ettiğimizde belirlediğimiz audit kriterlerine uygun sessionlar geldikçe bu tabloda dolmaya başlayacaktır.
select sessionid, userid, userhost, terminal, action# from sys.aud$
SESSIONID USERID USERHOST TERMINAL ACTION#14708 KAMIL WORKGROUP\KHOME KHOME 101
Virtual Box Shared Folders
Host : Windows 7, guest Oracle enterprise linux,
Asagidaki kod yardimi ile, windows ve linux arasinda dosyalari rahatlikla paylasabiliriz.
Asagidaki kod yardimi ile, windows ve linux arasinda dosyalari rahatlikla paylasabiliriz.
# mkdir /tmp/share
# sudo mount -t vboxsf VBox_shared /tmp/share/
13 Nisan 2011 Çarşamba
ORA-00845: MEMORY_TARGET not supported on this system
Yukaridaki hatayi aldigimizda, asagidaki degisiklileri yaparsak sorun cozulmus olur.
# umount tmpfs # mount -t tmpfs shmfs -o size=1500m /dev/shm # df -h /dev/shm Filesystem Size Used Avail Use% Mounted on shmfs 1.5G 285M 1.2G 19% /dev/shm
Oracle 11gR2 Default Listener - Grid Infrastructure home
Yukaridaki hatayi aldigimizda yapmamiz gereken, grid ile beraber yuklenen listeneri silip yeniden eklemek
How to resolve Could not validate ASMSNMP password due to following error- "ORA-01031: insufficient privileges"
>Oracle 11g R2 grid
goto grid home /bin
[grid@node1 bin]$ orapwd file=/u01/app/11.2.0/grid/dbs/orapw+ASM password=oracle_4U
[grid@node1 dbs]$ scp orapw+ASM Node2:/u01/app/11.2.0/grid/dbs/
[grid@node1 dbs]$ scp orapw+ASM Node3:/u01/app/11.2.0/grid/dbs/
Login in to Oracle database as
export ORACLE_SID=+ASM1
export ORACLE_HOME=/u01/app/11.2.0/grid
[grid@node1 bin]$ sqlplus / as sysasm
SQL>create user asmsnmp identified by oracle_4U;
SQL> grant sysdba to asmsnmp;
12 Nisan 2011 Salı
CRS-4013: This command is not supported in a single-node configuration.
In 11gR2 RAC configuration, after planned shutdown I wanted to start the Grid infrastructure. So I issued crsctl start crs command, which resulted in following error
Being a development cluster, initially I thought someone have messed up with the RAC configuration by switching OFF the RAC. So to check the current configuration I issued following commands.
This command returned value 1. Which means RAC was ON.
There was nothing obvious in the log, which points to the cause of this error. Also CRS was running on other node.
Tried with few more things
But still could not start the CRS.
Finally deconfigured the CRS
Then again configured it
Last approach worked, but I could not ascertain the root cause of this error.
# crsctl start crs CRS-4013: This command is not supported in a single-node configuration. CRS-4000: Command Start failed, or completed with errors.
Being a development cluster, initially I thought someone have messed up with the RAC configuration by switching OFF the RAC. So to check the current configuration I issued following commands.
cd $GRID_HOME/rdbms/lib ar -t libknlopt.a | grep -c kcsm.o (return 0 if RAC is disabled or a number >0 if enabled)
This command returned value 1. Which means RAC was ON.
There was nothing obvious in the log, which points to the cause of this error. Also CRS was running on other node.
Tried with few more things
# crsctl start resource -all # /etc/init.d/ohasd start
But still could not start the CRS.
Finally deconfigured the CRS
# /oragrid/crs/install rootcrs.pl -deconfig -force
Then again configured it
# /oragrid/root.sh
Last approach worked, but I could not ascertain the root cause of this error.
PRCR-1001 : Resource ora.asm does not exist
> srvctl status asm
PRCR-1001 : Resource ora.asm does not existSizde Benim gibi yukaridaki hata ile karsilastiysaniz, asagidaki adimalari takip ederek sorun cozebiliriz;
> export ORACLE_SID=+ASM
> srvctl add asm -p $ORACLE_HOME/dbs/init${ORACLE_SID}.ora
> srvctl status asm
ASM is not running. > srvctl start asm or > sqlplus '/ as sysasm' startup
Asagidaki parametreleri kullanarak ASM hakkinda daha detayli bilgiler gorebilirsiniz. > crsctl status resource ora.asm
NAME=ora.asm
TYPE=ora.asm.type
TARGET=ONLINE
STATE=ONLINE on ertugrula
Kaydol:
Kayıtlar (Atom)
