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)
文字コードを一時的にSJISに設定する。Oracleからの標準出力を見るため。
set NLS_LANG=JAPANESE_JAPAN.JA16SJISTILDE
Oracleを停止
oradim -SHUTDOWN -SID XE -SHUTTYPE SRVC,INST -SHUTMODE ABORT → OracleServiceXEのサービスのみ停止される(OracleXETNSListenerは起動のまま)
新規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]
初期化パラメータファイル新規作成 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’
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ってなんだ?
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か?→無視して続ける
データベース作成 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;
→ データベースが作成されました。
スクリプトの実行 @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
Windowsの環境変数にORACLE_SIDを登録する。 変数:ORACLE_SID 値:[sample name] →すでに作成済み
OracleService[sample name]サービスを右クリック→自動起動設定する
→ XEのサービスは手動起動に設定
Oracle Textのインストール sqlplus sys/manager as sysdba
@?\ctx\admin\catctx manager SYSAUX TEMP NOLOCK
connect CTXSYS/manager @?\ctx\admin\defaults\drdefja.sql quit
確認 sqlplusコマンドを実行しログインできるかどうか確認する。初期ユーザはsystem、パスワードはmanagerである。
sqlplus system/manager SQL>
インスタンスの切り替え方法 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
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];
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