Menu

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

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/hosts 
127.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.conf
fs.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.conf
oracle              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]$ ./runInstaller
bash: ./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' 
               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

#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..

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;
             /

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;

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;

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
 

 

 
   


      Howto Samples
   


   
     
        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
 
 
   


#{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";
}


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">

   

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

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> 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!

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.
    NONEAuditing 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, actionfrom 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.

# 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

# 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 exist

Sizde 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