Oracle 10g XE install

OracleXEUniv.exe

→ web login用に使用する「system」ユーザのパスワードを設定する → TODO netstat -ano でリスニングポートがワンサカ

Oracel web login

http://127.0.0.1:8081/apexへアクセス

user : system
pass : インストール時に設定したパスワード
  • 作成されるデフォルトオブジェクト

      表領域  ファイル名                          サイズ(MB)  最大サイズ(MB)  自動拡張可
      SYSAUX  C:\ORACLEXE\ORADATA\XE\SYSAUX.DBF   430         32,768          YES
      SYSTEM  C:\ORACLEXE\ORADATA\XE\SYSTEM.DBF   340         600             YES
      UNDO    C:\ORACLEXE\ORADATA\XE\UNDO.DBF     90          500             YES
      USERS   C:\ORACLEXE\ORADATA\XE\USERS.DBF    100         5,120           YES
    
  • 作成されるユーザ

      HR
      SYSTEM?
      ほか?
    
  • 環境変数設定

       ORACLE_BASE     C:\oracle\
       ORACLE_HOME     C:\oraclexe\app\oracle\product\10.2.0\server
       ORACLE_SID      [sample name]
       Path            %ORACLE_HOME%\bin
    

新規インスタンス(SID)作成(文字コード変換 XEデフォルトAL32UTF8→現行9i用JA16SJIS)

参考: Oracle Database 10g XE(Windows版)の文字コードを変換する方法

  1. 文字コードを一時的にSJISに設定する。Oracleからの標準出力を見るため。

    set NLS_LANG=JAPANESE_JAPAN.JA16SJISTILDE
    
  2. Oracleを停止

    oradim -SHUTDOWN -SID XE -SHUTTYPE SRVC,INST -SHUTMODE ABORT
    →  OracleServiceXEのサービスのみ停止される(OracleXETNSListenerは起動のまま)
    
  3. 新規Oracleインスタンスの作成
    (SID,databasename,username,passwordをすべて[sample name]で記載してます)

    コマンドプロンプトを起動し、下記をコマンドを実行する。
    
    mkdir C:\oraclexe\app\oracle\admin\[sample name]\adump
    mkdir C:\oraclexe\app\oracle\admin\[sample name]\bdump
    mkdir C:\oraclexe\app\oracle\admin\[sample name]\cdump
    mkdir C:\oraclexe\app\oracle\admin\[sample name]\dpdump
    mkdir C:\oraclexe\app\oracle\admin\[sample name]\pfile
    mkdir C:\oraclexe\app\oracle\admin\[sample name]\udump
    mkdir C:\oraclexe\oradata\[sample name]
    
  4. 初期化パラメータファイル新規作成 C:\oraclexe\app\oracle\product\10.2.0\server\database\init[sample name].ora 内容は以下 java_pool_size=0 large_pool_size=4194304 shared_pool_size=62914560 streams_pool_size=0 audit_file_dest=‘C:\oraclexe\app\oracle\admin[sample name]\adump’ background_dump_dest=‘C:\oraclexe\app\oracle\admin[sample name]\bdump’ compatible=‘10.2.0.1.0’ control_files=‘C:\oraclexe\oradata[sample name]\control.dbf’ core_dump_dest=‘C:\oraclexe\app\oracle\admin[sample name]\cdump’ db_name=’[sample name]' dispatchers=’(PROTOCOL=TCP) (SERVICE=XEXDB)' job_queue_processes=2 open_cursors=300 os_authent_prefix=’' pga_aggregate_target=40M remote_login_passwordfile=‘EXCLUSIVE’ sessions=20 sga_target=140M shared_servers=1 undo_management=‘AUTO’ undo_tablespace=‘UNDO’ user_dump_dest=‘C:\oraclexe\app\oracle\admin[sample name]\udump’

  5. Windowsのサービスを作成

    set ORACLE_SID=[sample name] →環境設定に設定しているが、再起動していないと必要か? oradim -NEW -SID [sample name] -INTPWD nandi -PFILE C:\oraclexe\app\oracle\product\10.2.0\server\database\init[sample name].ora -startmode auto → 作成されるサービスは二つか? OracleService[sample name] OracleJobScheduler[sample name]

    ※[-INTPWD INTERNALアカウントのパスワード]
        →  DBインスタンス作成時に作られるユーザ
                ユーザ名    デフォルトパスワード    説明
                internal    oracle                  初期インスタンス用のユーザ(Oracle9ではなくなっている)
                system      manager                 Oracleの管理者用のDBAアカウント
                scott       tiger                   Oracleのサンプル表のサンプルユーザ
        →  nandiってなんだ?
    
  6. ORACLE インスタンスを起動

    sqlplus / as sysdba SQL> startup nomount → ORA-01081: ???????Oracle???????? - ??????????????? → ORA-01081: すでに稼働中のOracleは起動できません - まずシャットダウンしてください 文字化けしている。さらにサービス作成で起動している? → サービスORACLE[sample name]を停止してみる SQL> startup nomount → ORA-03113: 通信チャネルでend-of-fileが検出されました → 再度[sample name]サービスを立ち上げてみる SQL> startup nomount → ORA-24324: サービス・ハンドルが初期化されていません。 ORA-01041: 内部エラーが発生しました。hostdefエクステンションが存在しません。

    →  一度サービスを削除しなおす
    

    サービスの削除 oradim -DELETE -SID [sample name] →作成された[sample name]のサービス二つが削除される 再度作成 oradim -NEW -SID [sample name] -INTPWD nandi -PFILE C:\oraclexe\app\oracle\product\10.2.0\server\database\init[sample name].ora -startmode auto

    →  OPW-00005: 同一名のファイルがあります。 - 削除または名前を変更してください。
        インスタンスが作成されました。
    

    再度 > sqlplus / as sysdba SQL> startup nomount → ORA-01081: ???????Oracle???????? - ??????????????? → 起動しているのならOKか?→無視して続ける

  7. データベース作成 SQL>以下をそのまま貼り付け create database [sample name] logfile group 1 (‘C:\oraclexe\oradata[sample name]\redo1.dbf’) size 32M, group 2 (‘C:\oraclexe\oradata[sample name]\redo2.dbf’) size 32M, group 3 (‘C:\oraclexe\oradata[sample name]\redo3.dbf’) size 32M character set JA16EUCTILDE national character set utf8 datafile ‘C:\oraclexe\oradata[sample name]\system.dbf’ size 240M autoextend on next 16M maxsize unlimited extent management local sysaux datafile ‘C:\oraclexe\oradata[sample name]\sysaux.dbf’ size 48M autoextend on next 8M maxsize unlimited undo tablespace undo datafile ‘C:\oraclexe\oradata[sample name]\undo.dbf’ size 48M autoextend on default temporary tablespace temp tempfile ‘C:\oraclexe\oradata[sample name]\temp.dbf’ size 8M autoextend on;

        →  データベースが作成されました。
    
  8. スクリプトの実行 @C:\oraclexe\app\oracle\product\10.2.0\server\RDBMS\ADMIN\catalog.sql (1分くらいかかる。) @C:\oraclexe\app\oracle\product\10.2.0\server\RDBMS\ADMIN\catproc.sql (5分くらいかかる。) connect system/manager @C:\oraclexe\app\oracle\product\10.2.0\server\sqlplus\admin\pupbld.sql quit

  9. Windowsの環境変数にORACLE_SIDを登録する。 変数:ORACLE_SID 値:[sample name] →すでに作成済み

  10. OracleService[sample name]サービスを右クリック→自動起動設定する

    → XEのサービスは手動起動に設定

  11. Oracle Textのインストール sqlplus sys/manager as sysdba

    @?\ctx\admin\catctx manager SYSAUX TEMP NOLOCK

    connect CTXSYS/manager @?\ctx\admin\defaults\drdefja.sql quit

  12. 確認 sqlplusコマンドを実行しログインできるかどうか確認する。初期ユーザはsystem、パスワードはmanagerである。

    sqlplus system/manager SQL>

  13. インスタンスの切り替え方法 XEを停止して[sample name]を起動 oradim -SHUTDOWN -SID XE -SHUTTYPE SRVC,INST -SHUTMODE ABORT oradim -STARTUP -SID [sample name] [sample name]を停止してXEを起動 oradim -SHUTDOWN -SID [sample name] -SHUTTYPE SRVC,INST -SHUTMODE ABORT oradim -STARTUP -SID XE

  14. listener.ora、tnsnames.oraの設定変更

    ※GLOBAL_DBNAME は tnsnames.ora の SERVICE_NAME と、SID_NAME は接続するインスタンス名と一致しないといけない。 http://d.hatena.ne.jp/yohei-a/20090601/1243837379 http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/network.111/E05726-02/listener.htm http://itref.fc2web.com/oracle/net.html

    listener.oraは以下で作成(originalは.oraファイルと同一フォルダにあります)

    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = [db hostname].[sample_name.local])(PORT = 1521))
          (ADDRESS = (PROTOCOL = IPC)(KEY = [sample name]))
        )
      )
    
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = [sample name].[sample_name.local])
          (ORACLE_HOME = C:\oraclexe\app\oracle\product\10.2.0\server)
          (SID_NAME = [sample name])
        )
      )
    
    DEFAULT_SERVICE_LISTENER = [sample name].[sample_name.local]
    

    tnsnames.oraは以下で作成

    [sample name].[sample_name.local] =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = [db hostname].[sample_name.local])(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = [sample name])
        )
      )
    XE =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = [db hostname].[sample_name.local])(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = XE)
        )
      )
    
    →[samplename]サービス、リスナー再起動
    

15.表領域作成

sqlplus sys/manager as sysdba

CREATE TABLESPACE USERS
DATAFILE 'C:\oraclexe\oradata\[sample name]\USERS01.DBF'
SIZE 30M
AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED;

削除は
    sqlplus / as sysdba
    drop tablespace users including contents;
    rm C:\oraclexe\oradata\[sample name]\USERS01.DBF
確認は
    sqlplus / as sysdba
    select * from dba_tablespaces;
    select * from dba_data_files;

16.ユーザ[sample name]作成

CREATE USER [sample name] IDENTIFIED BY [sample name]
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;

権限付与
GRANT
CONNECT, RESOURCE, DROP ANY TABLE, ANALYZE ANY, ALTER SESSION, CREATE DATABASE LINK,
CREATE SYNONYM, CREATE VIEW ,Create Sequence ,Execute Any PROCEDURE ,Create TABLE ,Create Any INDEX
TO [sample name];

→接続できるかテスト
    sqlplus [sample name]/[sample name]@[sample name]
        →×
    sqlplus [sample name]/[sample name]@[sample name].[sample_name.local]
        →○かなりおそいが。
    sqlplus [sample name]/[sample name]@[sample name]
        →○
    sqlplus [sample name]/[sample name]@[db hostname].[sample_name.local]
        →○かなりおそいが。
    OracleXETNSListenerを停止してもつながる?

17.ユーザ[sample_name_dev]作成

CREATE USER [sample_name_dev] IDENTIFIED BY [sample_name_dev]
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;

権限付与
GRANT
CONNECT, RESOURCE, DROP ANY TABLE, ANALYZE ANY, ALTER SESSION, CREATE DATABASE LINK,
CREATE SYNONYM, CREATE VIEW ,Create Sequence ,Execute Any PROCEDURE ,Create TABLE ,Create Any INDEX
TO [sample_name_dev];
  1. export,import

    [old hostname]にて
        exp file=c:\[samplename].db.20110806.dmp userid=[sample name]/[sample name]@[sample name] owner=[sample name],[sample_name_dev]
    [db hostname]にて
        imp file=D:\[samplename].db.20110806.dmp userid=system/manager fromuser=[sample_name_dev] touser=[sample_name_dev]
        imp file=D:\[samplename].db.20110806.dmp userid=system/manager fromuser=[sample name] touser=[sample name]
    

    →imp時に以下エラーが出た場合は、何がimpされたかわからないので、再度user作成し直し IMP-00058: Oracleエラー20が発生しました。 ORA-00020: 最大プロセス数(%s)を超えましたユーザー名 →原因不明なので、ユーザ削除し、再度作成するとうまくいきました。 ユーザ削除 sqlplus system/manager as sysdba or sqlplus / as sysdba drop user [sample name] cascade; drop user [sample_name_dev] cascade;

/****************************************************************************************/ ◎本番移行時手順◎

①ユーザ削除([sample name],[sample_name_dev])@[db hostname] sqlplus system/manager as sysdba or sqlplus / as sysdba drop user [sample name] cascade; drop user [sample_name_dev] cascade;

②ユーザ作成と権限付与 – [sample name]ユーザ CREATE USER [sample name] IDENTIFIED BY [sample name] DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;

GRANT CONNECT, RESOURCE, DROP ANY TABLE, ANALYZE ANY, ALTER SESSION, CREATE DATABASE LINK,
CREATE SYNONYM, CREATE VIEW ,CREATE SEQUENCE ,EXECUTE ANY PROCEDURE ,CREATE TABLE ,CREATE ANY INDEX
TO [sample name];

-- [samplename]_DEVLPユーザ
CREATE USER [sample_name_dev] IDENTIFIED BY [sample_name_dev]
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;

GRANT CONNECT, RESOURCE, DROP ANY TABLE, ANALYZE ANY, ALTER SESSION, CREATE DATABASE LINK,
CREATE SYNONYM, CREATE VIEW ,CREATE SEQUENCE ,EXECUTE ANY PROCEDURE ,CREATE TABLE ,CREATE ANY INDEX
TO [sample_name_dev];

③運用ストップ ④データEXPORT@[old hostname] – ファイルは適切な場所へお願いします exp file=c:[sample name].db.dmp userid=[sample name]/[sample name]@[sample name] owner=[sample name],[sample_name_dev] ⑤データIMPORT@[db hostname] – ファイルは適切な場所へお願いします imp file=c:[sample name].db.dmp userid=system/manager fromuser=[sample_name_dev] touser=[sample_name_dev] imp file=c:[sample name].db.dmp userid=system/manager fromuser=[sample name] touser=[sample name]

  →imp時に以下エラーが出た場合は、何がimpされたかわからないので、再度user作成し直し
    IMP-00058: Oracleエラー20が発生しました。
    ORA-00020: 最大プロセス数(%s)を超えましたユーザー名

⑥WEB、APサーバ立ち上げで運用開始 /****************************************************************************************/

////////////////////以下memo

lsnrctl start lsnrctl stop lsnrctl status

sqlplus sys/manager as sysdba set trimout on set heading off set pagesize 0

set linesize 500 set colsep ’ ' set trimout on set heading off set pagesize 0