SQLの窓

2018年08月25日


Oracle : ユーザ(スキーマ)の作成

他のデータベースと違って、Oracle ではユーザを作成する事は、create database と同じ意味になりますが、ユーザだけ作成しても権限が全く無く、利用可能にするには権限を持つユーザが、権限を与える必要があります。

開発環境が一つの Oracle の場合はやみくもに以下の処理を行う事はできませんが、PC 内に自由に使える Oracle をインストールした場合は以下の手順でユーザを作成するといいと思います。

1) 作成するユーザ専用のテーブルスペース作成
 ( テーブルスペースは共有できますが、開発管理上別々のほうが良い )
2) ユーザ作成
3) 権限を与える

※ 一連の作業は SYSTEM ユーザで行って下さい。

create tablespace LIGHTBOX_SPACE
	datafile 'C:\ORACLEXE\ORADATA\XE\LIGHTBOX.DBF'
	size 5M
	autoextend on
	next 1M
	maxsize unlimited
	segment space management AUTO;

create user LIGHTBOX
	identified by LIGHTBOX
	default tablespace LIGHTBOX_SPACE
	temporary tablespace TEMP
	quota unlimited on LIGHTBOX_SPACE
	account UNLOCK;

grant 
	 ALTER PROFILE
	,ALTER SESSION
	,ALTER SYSTEM
	,ALTER TABLESPACE
	,ALTER USER
	,CREATE ANY DIRECTORY
	,CREATE PROCEDURE
	,CREATE PROFILE
	,CREATE PUBLIC SYNONYM
	,CREATE ROLE
	,CREATE ROLLBACK SEGMENT
	,CREATE SEQUENCE
	,CREATE SESSION
	,CREATE SYNONYM
	,CREATE TABLE
	,CREATE TABLESPACE
	,CREATE TRIGGER
	,CREATE VIEW
	,DROP ANY DIRECTORY
	,EXECUTE ANY PROCEDURE
	,SELECT ANY DICTIONARY
	,SELECT ANY SEQUENCE
	,SELECT ANY TABLE
to LIGHTBOX;

TEMP は、Oracle をインストールした時に作成される一般的な一時用表領域です。一つの PC で開発環境を作るのであれば TEMP を使うといいと思います。

datafile の場所は、ハードディスクであればどこでもいいですが、開発管理上、既にインストールされている場所が良いと思います。拡張子は .dbf である必要はありません。ユーザが作成した表領域である事を明示する為に、.ORA のように変更してもかまいません。


関連する記事

Oracle 10g Express Edition のインストール
サービス開始 : Oracle 10g Express
Oracle インストール後の初期設定

Oracle11g + Windows : PC名を変更してしまった場合の対処方法



posted by lightbox at 2018-08-25 23:26 | Oracle : 環境 | このブログの読者になる | 更新情報をチェックする

2018年05月28日


Oracle SQLPlus でスキーマの作成

Oracle は他の RDBMS と違ってテーブルを作ってアクセスするようにする為にいろいろなものを作成して設定する必要があります。

ここでは、SQLPlus を使用して SQL と コマンドを使用してテーブルを作成する事ができる状態までの環境を作成します。

一応、SQLPlus の環境としては、以下の記事で作成したものを使用しますが、普通に SQLPlus に SYSTEM ユーザでログインすれば可能なはずです( as SYSDBA は使用したほうがいいと思いますが )

Oracle 11g 学習環境の作成 : SQLPlus の環境作成
( この記事内で、データファイルを置くパスを確認しています )

環境作成用の sql を3つ作成する

SQLPlus のワークディレクトリに置きます。専用のフォルダに置いて作業するといいと思います。
create tablespace STUDY
datafile 'C:\APP\LIGHTBOX\ORADATA\ORCL\STUDY.DBF'
	size 5M
	autoextend on
	next 1M
	maxsize unlimited
segment space management AUTO;


create user LIGHTBOX
	identified by study
	default tablespace STUDY
	temporary tablespace TEMP
	quota unlimited on STUDY
	account unlock;

create role STUDY_ROLE;

grant 
	 ALTER PROFILE 
	,ALTER SESSION 
	,ALTER SYSTEM 
	,ALTER TABLESPACE 
	,ALTER USER 
	,CREATE PROCEDURE 
	,CREATE PROFILE 
	,CREATE PUBLIC SYNONYM 
	,CREATE ROLE 
	,CREATE ROLLBACK SEGMENT 
	,CREATE SEQUENCE 
	,CREATE SESSION 
	,CREATE SYNONYM 
	,CREATE TABLE 
	,CREATE TABLESPACE 
	,CREATE TRIGGER 
	,CREATE VIEW 
	,EXECUTE ANY PROCEDURE 
	,SELECT ANY DICTIONARY 
	,SELECT ANY SEQUENCE 
	,SELECT ANY TABLE
to STUDY_ROLE;

grant STUDY_ROLE to LIGHTBOX;

この3つの SQL を順番に実行します。SQLPlus 内では、それぞれ以下のように入力すると実行されます。
@tablespace
@createuser
@createrole
全て実行した後は、ユーザが lightbox パスワードが study でログインできるはずです。 (ユーザパスワードの変更は alter user で実行します) recyclebin を使用しないようにする デフォルトでは使用する事になっているので、テーブル一覧に不明な recyclebin 用のテーブルが表示されたりします。もともと、削除したテーブルの復帰用なので学習には不向きで邪魔なだけなので使用しないようにします。 ▼ SQLPlus で以下を実行してください
alter system set recyclebin = off deferred;
DEFERREDキーワード は次のセッションで有効にするという意味です。SQLPlus ではいったん quit して再度接続すると有効になっていると思います。確認は以下の SQLPlus コマンド を実行して下さい。
show parameter recyclebin
SQL で見る場合は 『select * from V$PARAMETER where name = 'recyclebin';』ですが、SQLPlus では見づらいのでコマンドを使用して下さい。 データ作成 mdb よりデータを作成する スクリプト(32ビット用/cscript.exe で呼び出せば 64ビット)のダウンロード 26、27、29 行目を環境に合わせて変更 ※ ディレクトリオブジェクトの作成 関連する記事 Oracle 11g 学習環境の作成 : SQLPlus の環境作成
posted by lightbox at 2018-05-28 11:26 | Oracle : 環境 | このブログの読者になる | 更新情報をチェックする

Oracle 11g 学習環境の作成 : SQLPlus の環境作成

手元の環境は、Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production です。32ビットなので、64ビットのPC では少しいろいろありますが、スキーマ作成に関して基本は SQL を用意してコマンドを入力して実行するという手順になります。

Oracle をインストールしたユーザであれば問題無いはすですが、ユーザが ora_dba グループに入っている事を確認します。



1) sqlplus 用のフォルダを用意して、そこで sqlplus を実行

c:\tools\oracle というフォルダを作成しました。そこに、コマンドプロンプトのショートカットを作成します。
※ Windows システムツールの中にあるので、コピーして使用しますが、無ければ直接 cmd.exe でショートカットを作成します。
※ アイコンを右クリックして『その他』=>『ファイルの場所を開く』でそこからコピーします

2) ショートカットの情報を変更

a) リンク先は、このように入力すると Oracle インストール済みならばフルパスを補完してくれます。
b) 作業フォルダーはクリアすればカレントフォルダで起動します。



c) 詳細設定では念のため管理者権限にチェックしておきます。



タイトルは何でもいいので、全般タブで変更します。



3) sqlplus の初期設定用 login.sql をフォルダに置く
SET VERIFY OFF
SET SERVEROUTPUT ON
SET LINESIZE 200
SET PAGESIZE 1000
--SET AUTOCOMMIT IMM

行頭の -- は行コメントです。
※ SET SERVEROUTPUT ON を指定しないと、DBMS_OUTPUT の結果が表示されません
※ SET AUTOCOMMIT IMM を指定すると、SQL の UPDATE 時に 自動的にコミットされます

4) sqlplus を実行してコマンドウインドウの設定を行う

コマンドウインドウ上でドラッグでコピー、右クリックでペーストできるように簡易編集モードを ON にします。



作業しやすいように好みの幅にコマンドウインドウサイズを変更します。



5) login.sql の内容が反映されているかを確認する

SQL プロンプトで show all と入力して、SERVEROUTPUT が ON である事を確認する





6) Oracle のデータの場所を確認しておく

以下を入力して *.DBF ファイルの場所を確認します。

select * from DBA_DATA_FILES;

スキーマを作成する際に、データファイルと表領域を事前に作成するので確認します。




データ作成

mdb よりデータを作成する スクリプト(32ビット用/cscript.exe で呼び出せば 64ビット)のダウンロード

26、27、29 行目を環境に合わせて変更

※  ディレクトリオブジェクトの作成


関連する記事

Oracle SQLPlus でスキーマの作成




posted by lightbox at 2018-05-28 11:25 | Oracle : 環境 | このブログの読者になる | 更新情報をチェックする

2018年03月28日


Oracle に学習用DB の 販売管理C.mdb をインポートする

かなり昔に作成したものを引っ張り出して来ています。Oracle 環境も 32 ビット環境なので、64ビットマシンで 32 ビット環境を動かす為、ODBC ドライバや cscript.exe も32ビットを使用する必要があります。

1) 32ビット用 ODBC アドミニストレーター : C:\Windows\SysWOW64\odbcad32.exe
2) 32ビット用 ドライバ一覧 : HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI
3) 32ビット用 cscript.exe(VBScript用) : C:\Windows\SysWOW64\cscript.exe
(64ビット環境では特に気にせず見えているもので実行できると思います)

これらの環境を使ってインポートするセットが以下からダウンロードできます。


同梱の hanbaic.bat を実行する前にスクリプトの環境部分を書き換えます。

インストール結果



関連する記事

Oracle 11g 学習環境の作成 : SQLPlus の環境作成

Oracle SQLPlus でスキーマの作成


hanbaiC_oracle11g_nvarchar.vbs

1) ODBC ドライバ : Oracle in OraDb11g_home1
    32ビット用 ドライバ一覧より自分の環境に該当するものを使用します。
2) 接続文字列 : lightbox-pc:1521/ORCL 
    PC名:ポート/サービス名 です。PCとポート 
    は、"C:\app\%USERNAME%\product\11.1.0\db_1\NETWORK\ADMIN\listener.ora" を参照します。
    ( Oracle がインストールされているフォルダの product\バージョン\db_n\NETWORK\ADMIN\listener.ora )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = lightbox-PC)(PORT = 1521))
    )
  )

3) strSc = "lightbox" の lightbox は作成済みのスキーマ(ユーザ)名です
' ************************************************
' 管理者権限でコマンドプロンプトで実行を強制して、
' 最後に pause する
' ************************************************
Set Shell = CreateObject("Shell.Application")
Set WshShell = Wscript.CreateObject("WScript.Shell")
if Wscript.Arguments.Count = 0 then
	ScriptFullName = WScript.ScriptFullName
	Shell.ShellExecute "cmd.exe", "/c cscript.exe """ & ScriptFullName & """ dummy_param & pause", "", "runas", 1
	WScript.Quit
end if

' ************************************************
' 基本設定
' Microsoft ODBC for Oracle で実行できます
' DSN を作成して動作確認して指定して下さい
' ( 参考:http://lightbox.matrix.jp/ginpro/patio.cgi?mode=view&no=225&type=ref )
' ************************************************
' このスクリプトが存在するディレクトリを取得
strCurDir = WScript.ScriptFullName
strCurDir = Replace( strCurDir, WScript.ScriptName, "" )
strMdbPath = strCurDir & "販売管理C.mdb"

' Oracle のホスト文字列
' ( ローカル・ネット・サービス名 )
strTarget = "{Oracle in OraDb11g_home1}"	' ODBC ドライバ
strDBQ = "lightbox-pc:1521/ORCL"	' ネット・サービス名として XE のみでも OK
' スキーマ(ユーザ)
strSc = "lightbox"
' パスワード
strPwd = InputBox("パスワードを入力して下さい")

strDummy = "DUMMY" & Replace(Date,"/","") & Replace(Time,":","")

strMessage = "対象 MDB は " & strMdbPath & "です" & vbCrLf & vbCrLf

strMessage = strMessage & "▼ Oracleの環境です" & vbCrLf
strMessage = strMessage & "ODBC ドライバ : " & strTarget & vbCrLf
strMessage = strMessage & "インスタンス : " & strDBQ & vbCrLf
strMessage = strMessage & "USER(スキーマ) : " & strSc & vbCrLf
strMessage = strMessage & "PASS : " & strPwd & vbCrLf & vbCrLf
strMessage = strMessage & "一時テーブル : " & strDummy & vbCrLf & vbCrLf

strMessage = strMessage & "既にテーブルが存在する場合はメッセージが出ません" & vbCrLf
strMessage = strMessage & "それ以外ではエラーメッセージが出ますが、問題ありません"
if vbCancel = MsgBox( strMessage, vbOkCancel ) then
	Wscript.Quit
end if

' ************************************************
' 処理用文字列設定
' ************************************************
' MDB の接続文字列
strConnectMdb = _
"Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & strMdbPath & ";"

' Microsoft の Oracle 用 ODBC ドライバの接続文字列 (1)
strConnectOracle = _
"[ODBC;Driver=" & strTarget & ";DBQ=" & strDBQ &";UID=" & strSc & ";PWD=" & strPwd & "]"

' Microsoft の Oracle 用 ODBC ドライバの接続文字列 (2)
strConnectOracle2 = _
"Provider=MSDASQL;Driver=" & strTarget & ";DBQ=" & strDBQ &";UID=" & strSc & ";PWD=" & strPwd

' ************************************************
' 初期処理
' ************************************************
Set Cn = CreateObject("ADODB.Connection")
Set Cn2 = CreateObject("ADODB.Connection")
Cn.Open strConnectMdb
Cn2.Open strConnectOracle2

' ************************************************
' コード名称マスタ
' ************************************************
Query = _
"create table " & strDummy & " (" & _
"	区分 NUMBER(4,0)" & _
"	,コード NVARCHAR2(10)" & _
"	,名称 NVARCHAR2(50)" & _
"	,数値1 NUMBER(8,0)" & _
"	,数値2 NUMBER" & _
"	,作成日 DATE" & _
"	,更新日 DATE" & _
"	,primary key(区分,コード)" & _
")"
Call OracleTransfer( "コード名称マスタ", "[コード名称マスタ]", Query )

' ************************************************
' コントロールマスタ
' ************************************************
Query = _
"create table " & strDummy & " (" & _
"	キー NVARCHAR2(1)" & _
"	,売上日付 DATE" & _
"	,売上伝票 NUMBER(8,0)" & _
"	,会社名 NVARCHAR2(50)" & _
"	,組織コード NVARCHAR2(4)" & _
"	,起算月 NUMBER(2,0)" & _
"	,primary key(キー)" & _
")"
Call OracleTransfer( "コントロールマスタ","[コントロールマスタ]", Query )

' ************************************************
' メッセージマスタ
' ************************************************
Query = _
"create table " & strDummy & " (" & _
"	コード NVARCHAR2(4)" & _
"	,メッセージ NVARCHAR2(100)" & _
"	,primary key(コード)" & _
")"
Call OracleTransfer( "メッセージマスタ","[メッセージマスタ]", Query )

' ************************************************
' 取引データ
' ************************************************
Query = _
"create table " & strDummy & " (" & _
"	取引区分 NVARCHAR2(2)" & _
"	,伝票番号 NUMBER(8,0)" & _
"	,行 NUMBER(2,0)" & _
"	,取引日付 DATE" & _
"	,取引先コード NVARCHAR2(4)" & _
"	,商品コード NVARCHAR2(4)" & _
"	,数量 NUMBER" & _
"	,単価 NUMBER" & _
"	,金額 NUMBER" & _
"	,更新済 NVARCHAR2(1)" & _
"	,primary key(取引区分,伝票番号,行)" & _
")"
Call OracleTransfer( "取引データ","[取引データ]", Query )

' ************************************************
' 商品マスタ
' ************************************************
Query = _
"create table " & strDummy & " (" & _
"	商品コード NVARCHAR2(4)" & _
"	,商品名 NVARCHAR2(50)" & _
"	,在庫評価単価 NUMBER" & _
"	,販売単価 NUMBER" & _
"	,商品分類 NVARCHAR2(3)" & _
"	,商品区分 NVARCHAR2(1)" & _
"	,作成日 DATE" & _
"	,更新日 DATE" & _
"	,備考 NVARCHAR2(2000)" & _
"	,削除フラグ NVARCHAR2(1)" & _
"	,primary key(商品コード)" & _
")"
Call OracleTransfer( "商品マスタ","[商品マスタ]", Query )

' ************************************************
' 商品分類マスタ
' ************************************************
Query = _
"create table " & strDummy & " (" & _
"	商品分類 NVARCHAR2(3)" & _
"	,名称 NVARCHAR2(50)" & _
"	,作成日 DATE" & _
"	,更新日 DATE" & _
"	,primary key(商品分類)" & _
")"
Call OracleTransfer( "商品分類マスタ","[商品分類マスタ]", Query )

' ************************************************
' 得意先マスタ
' ************************************************
Query = _
"create table " & strDummy & " (" & _
"	得意先コード NVARCHAR2(4)" & _
"	,得意先名 NVARCHAR2(50)" & _
"	,得意先区分 NVARCHAR2(1)" & _
"	,担当者 NVARCHAR2(4)" & _
"	,郵便番号 NVARCHAR2(7)" & _
"	,住所1 NVARCHAR2(100)" & _
"	,住所2 NVARCHAR2(100)" & _
"	,作成日 DATE" & _
"	,更新日 DATE" & _
"	,締日 NUMBER(2,0)" & _
"	,締日区分 NUMBER(1,0)" & _
"	,支払日 NUMBER(2,0)" & _
"	,備考 NVARCHAR2(100)" & _
"	,primary key(得意先コード)" & _
")"
Call OracleTransfer( "得意先マスタ","[得意先マスタ]", Query )

' ************************************************
' 社員マスタ
' ************************************************
Query = _
"create table " & strDummy & " (" & _
"	社員コード NVARCHAR2(4)" & _
"	,氏名 NVARCHAR2(50)" & _
"	,フリガナ NVARCHAR2(50)" & _
"	,所属 NVARCHAR2(4)" & _
"	,性別 NUMBER(1,0)" & _
"	,作成日 DATE" & _
"	,更新日 DATE" & _
"	,給与 NUMBER" & _
"	,手当 NUMBER" & _
"	,管理者 NVARCHAR2(4)" & _
"	,生年月日 DATE" & _
"	,primary key(社員コード)" & _
")"
Call OracleTransfer( "社員マスタ","[社員マスタ]", Query )

' ************************************************
' 郵便番号マスタ
' ************************************************
Query = _
"create table " & strDummy & " (" & _
"	郵便番号 NVARCHAR2(7)" & _
"	,都道府県名カナ NVARCHAR2(255)" & _
"	,市区町村名カナ NVARCHAR2(255)" & _
"	,町域名カナ NVARCHAR2(255)" & _
"	,都道府県名 NVARCHAR2(255)" & _
"	,市区町村名 NVARCHAR2(255)" & _
"	,町域名 NVARCHAR2(255)" & _
")"
Call OracleTransfer( "郵便番号マスタ","[郵便番号マスタ]", Query )

' ************************************************
' 入金予定データ
' ************************************************
Query = _
"create table " & strDummy & " (" & _
"	得意先コード NVARCHAR2(4)" & _
"	,支払日 DATE" & _
"	,伝票合計金額 NUMBER(10,0)" & _
"	,伝票番号 NUMBER(10,0)" & _
")"
Call OracleTransfer( "入金予定データ","[入金予定データ]", Query )

' ************************************************
' 商品集計
' ************************************************
Query = _
"create table " & strDummy & " (" & _
"	商品コード NVARCHAR2(4)" & _
"	,経過月 NUMBER(2,0)" & _
"	,当月売上数量 NUMBER(10,0)" & _
"	,当月売上金額 NUMBER(10,0)" & _
"	,更新日 DATE" & _
"	,組織コード NVARCHAR2(4)" & _
"	,primary key(商品コード,経過月)" & _
")"
Call OracleTransfer( "商品集計","[商品集計]", Query )

' ************************************************
' 得意先集計
' ************************************************
Query = _
"create table " & strDummy & " (" & _
"	請求先 NVARCHAR2(4)" & _
"	,経過月 NUMBER(2,0)" & _
"	,当月売上金額 NUMBER(10,0)" & _
"	,更新日 DATE" & _
"	,組織コード NVARCHAR2(4)" & _
"	,primary key(請求先,経過月)" & _
")"
Call OracleTransfer( "得意先集計","[得意先集計]", Query )

' ************************************************
' 社員変更履歴
' ************************************************
Query = _
"create table " & strDummy & " (" & _
"	社員コード NVARCHAR2(4)" & _
"	,氏名 NVARCHAR2(50)" & _
"	,フリガナ NVARCHAR2(50)" & _
"	,所属 NVARCHAR2(4)" & _
"	,性別 NUMBER(1,0)" & _
"	,作成日 DATE" & _
"	,更新日 DATE" & _
"	,給与 NUMBER" & _
"	,手当 NUMBER" & _
"	,管理者 NVARCHAR2(4)" & _
"	,生年月日 DATE" & _
")"
Call OracleTransfer( "社員変更履歴","[社員変更履歴]", Query )

' ************************************************
' ビュー
' ************************************************
Query = _
"create or replace view V_商品一覧 as" & _
"	SELECT 商品マスタ.商品コード" & _
"	, 商品マスタ.商品名" & _
"	, 商品マスタ.販売単価" & _
"	, 商品分類マスタ.商品分類" & _
"	, 商品分類マスタ.名称 AS 分類名" & _
"	, 商品マスタ.商品区分" & _
"	, コード名称マスタ.名称 AS 区分名" & _
" from" & _
"	(商品マスタ LEFT JOIN 商品分類マスタ" & _
"	ON 商品マスタ.商品分類 = 商品分類マスタ.商品分類" & _
"	) LEFT JOIN コード名称マスタ" & _
"	ON 商品マスタ.商品区分 = コード名称マスタ.コード" & _
" where" & _
"	コード名称マスタ.区分 = 3 and 削除フラグ is NULL"
RunOracle( Query )

Query = _
"create or replace view V_売上日付 as" & _
"	SELECT コントロールマスタ.売上日付" & _
"	FROM コントロールマスタ" & _
"	WHERE コントロールマスタ.キー = '1'"
RunOracle( Query )

Query = _
"create or replace view V_得意先台帳 as" & _
"	SELECT 取引データ.取引先コード" & _
"	, 得意先マスタ.得意先名" & _
"	, 取引データ.取引日付" & _
"	, 取引データ.取引区分" & _
"	, 取引データ.伝票番号" & _
"	, 取引データ.行" & _
"	, 取引データ.商品コード" & _
"	, 商品マスタ.商品名" & _
"	, 取引データ.数量" & _
"	, 取引データ.単価" & _
"	, 取引データ.金額" & _
" from" & _
"	(取引データ INNER JOIN 商品マスタ" & _
"	ON 取引データ.商品コード=商品マスタ.商品コード" & _
"	) INNER JOIN 得意先マスタ" & _
"	ON 取引データ.取引先コード=得意先マスタ.得意先コード" & _
" where" & _
"	取引データ.取引区分 = '10'"
RunOracle( Query )

Query = _
"create or replace view V_社員一覧 as" & _
" select 社員コード" & _
"	,氏名" & _
"	,フリガナ" & _
"	,名称1.名称 as 性別" & _
"	,所属" & _
"	,名称2.名称 as 所属名" & _
" from 社員マスタ" & _
"	,コード名称マスタ 名称1" & _
"	,コード名称マスタ 名称2" & _
" where to_char(性別) = 名称1.コード" & _
"   and 名称1.区分 = 1" & _
"   and 所属 = 名称2.コード" & _
"   and 名称2.区分 = 2"
RunOracle( Query )

Query = _
"create or replace view" & _
"	PROC_ERROR" & _
" as" & _
" select * " & _
" from USER_ERRORS"
RunOracle( Query )

Query = _
"create or replace view" & _
"	PROC_LIST" & _
" as" & _
" select OBJECT_NAME as ""プロシージャ名"" " & _
"	,STATUS as ""状態""  " & _
"	,OBJECT_TYPE  as ""タイプ"" " & _
"	,CREATED  as ""作成日"" " & _
"	,LAST_DDL_TIME  as ""更新日"" " & _
" from USER_OBJECTS " & _
" where OBJECT_TYPE in ('FUNCTION','PROCEDURE') "
RunOracle( Query )

Query = _
"create or replace view" & _
"	PROC_TEXT" & _
" as" & _
" select * from USER_SOURCE"
RunOracle( Query )

' ************************************************
' 終了
' ************************************************

Cn2.Close
Cn.Close

Wscript.Echo "処理が終了しました"

' ************************************************
' Oracle 転送
' ************************************************
function OracleTransfer( strTarget, strTable, QueryCreate )

	Dim Query

	Query = "drop table " & strTarget
	RunOracle( Query )

	RunOracle( QueryCreate )

	Query = "insert into " & strConnectOracle & "." & strDummy & _
	" select * from " & strTable

	RunMdb( Query )

	Query = "alter table " & strDummy & " rename to " & strTarget
	RunOracle( Query )

end function

' ************************************************
' MDB 実行
' ************************************************
function RunMdb( Query )

	on error resume next
	Cn.Execute Query
	if Err.Number <> 0then
		Wscript.Echo Err.Description & vbCrLf & Query
	end if
	on error goto 0

end function

' ************************************************
' Oracle 実行
' ************************************************
function RunOracle( Query )

	on error resume next
	Cn2.Execute Query
	if Err.Number <> 0then
		Wscript.Echo Err.Description & vbCrLf & Query
	end if
	on error goto 0

end function






posted by lightbox at 2018-03-28 15:44 | Oracle : 環境 | このブログの読者になる | 更新情報をチェックする

2010年04月28日


Oracle11g をXPモード内でインストールして仮想PCとして複製する

この環境はアカデミックライセンス下で、学習目的の為の初期インストール時に
おけるパックアップの為のテストです。
まず、仮想PCを作成しますが、XPモードインストール時のものでは無く複製したも
のを使っています。

関連する記事

XPモードの複製


元々XPモードをインストールした Administrator ユーザのユーザーディレクトリ
にあった差分ファイルを lightbox ユーザーにコピーして仮想PCを作成し、
そこに、Oracle11g を数台分インストールした後、インストール後の差分データを
別PCにコピーして稼働可能させるテストです。

元の仮想PCは、親PCの PC名に対して頭に V を付けて区別し、外部のネットワーク
にIPアドレスを持つ一つのPCとして見えるようにしています。この際、親PCは、DHCP
で IP アドレスを取得していますが、Oracle がインストールされる仮想PC は、固定
PC を割り振っています。

このインストールでは、Oracleへの の接続確認を Oracle 純正の ODBC ドライバで
確認し、エンタープライズマネージャーを起動してサービスが正しく動いている事
を確認しています。

1) Oracle サービス
2) TNS リスナー
3) エンタープライズマネージャ用(Console)

次に、この差分ファイルを別PC にコピーしたものと、単純にそのPC に複製したもの
からそれぞれ新しい仮想PCを作成して、PC名とIP アドレスがユニークになるように
変更します。PC 名を変更すると、再起動となるので、その前に 仮想PCに親PCと同じ
ユーザを作成して、Administrators グループに追加します。

Oraxpmode1

そして、統合機能を有効にする時に、新しく作った親PCと同じユーザで資格情報を登録
して、次より自動的にログインするようにします。それ以外は、問題を排除する為に、
Windows のファイアーウォールを停止して「手動」にし、セキュリティソフトがイン
ストールされている場合は、後に最適な設定ができるまで無効にしておきます。
( 仮想PCでかつ、実運用は行わないのでセキュリティソフトは必要ありません )

再起動後、PC名を変更した事が原因で、Oracle が動かなくなりますが、以下の手順
で正しく起動する事を、約20台のPCで確認しています


関連する記事

Oracle11g + Windows : PC名を変更してしまった場合の対処方法



posted by lightbox at 2010-04-28 13:00 | Oracle : 環境 | このブログの読者になる | 更新情報をチェックする

2010年04月26日


Oracle11g + Windows : PC名を変更してしまった場合の対処方法

2014/08/27
Oracle のオンラインマニュアルがリンク切れになっていたので対処しました


影響の出かたとして、接続できなくなりますが対処の内容は二通りです。

1) テキストファイルである、定義ファイルの変更

2) Enterprise Manager Configuration Assistant(EMCA)による処理


1) は昔からポピュラーです。listener.ora と tnsnames.ora の内部に書かれてしまっている PC名(またはIPアドレス)を正しく変更します。これは、DHCP のPC に Oracle をインストールするというような特殊な場合も含まれます。経験からすると、10g では、DHCP だと IP が書かれてるようでした。

ファイルの場所は、インストールディレクトリ(ORACLE_HOME)内の、product\バージョン\db_インストール番号\NETWORK\ADMIN 内です。( ORACLE_HOME は、レジストリを参照 )

▼ Oracle 10g Express Edition の tnsnames.ora 内のエントリのサンプル( HOST = mypc_name )
XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = mypc_name)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )


2) はエンタープライズマネージャが動かなくなるので、定義情報を再作成する必要がありますが、11g のマニュアルに正しい処理方法が書かれています。
( 目次ページはこちら の 『6 サーバー・プールおよびOracle Enterprise Manager Database Controlの構成』)

実際テストして検証しました。以下がその具体的な内容です。
※ 環境変数は必ずしも必要で無いかもしれません。設定しても入力が必要でした
※ パスワードはインストール時に全て manager としています。 
※ 設定後、エンタープライズマネージャのポートが 10g と同じポートに設定されました



※ 管理対象データベースのOracleホームおよびシステム識別子(SID)
※ を指定するように、次の環境変数を設定します。

ORACLE_HOME
ORACLE_SID

ORACLE_HOME は、レジストリ情報から取り出します


DB・ホスト名またはIPアドレス変更時のEMCAの使用方法

emca -deconfig dbcontrol db -repos drop
( この場合は emca -config dbcontrol db -repos create )
または
emca -deconfig dbcontrol db
( この場合は emca -config dbcontrol db -repos recreate )
>emca -deconfig dbcontrol db -repos drop

EMCAの開始: 2010/04/23 10:48:04
EM Configuration Assistant, リリース11.1.0.5.0 Production
Copyright (c) 2003, 2005, Oracle.  All rights reserved.

次の情報を入力してください:
データベースのSID: orcl
リスナーのポート番号: 1521
SYSユーザーのパスワード:
SYSMANユーザーのパスワード:

続行しますか。 [はい(Y)/いいえ(N)]: y
2010/04/23 10:49:00 oracle.sysman.emcp.EMConfig perform
情報: この操作はC:\app\lightbox\cfgtoollogs\emca\orcl\emca_2010_04_23_10_48_03.l
ogでロギングされています。
2010/04/23 10:49:01 oracle.sysman.emcp.EMDBPreConfig performDeconfiguration
警告: このデータベースにはEMが構成されていません。EM固有の処理は実行できません。

2010/04/23 10:49:01 oracle.sysman.emcp.EMReposConfig invoke
情報: EMリポジトリの削除中(少し時間がかかります)...
2010/04/23 10:51:13 oracle.sysman.emcp.EMReposConfig invoke
情報: リポジトリは正常に削除されました
Enterprise Managerの構成が正常に完了しました
EMCAの終了: 2010/04/23 10:51:13

emca -config dbcontrol db -repos create
または
emca -config dbcontrol db -repos recreate
>emca -config dbcontrol db -repos create

EMCAの開始: 2010/04/23 11:00:08
EM Configuration Assistant, リリース11.1.0.5.0 Production
Copyright (c) 2003, 2005, Oracle.  All rights reserved.

次の情報を入力してください:
データベースのSID: orcl
リスナーのポート番号: 1521
SYSユーザーのパスワード:
DBSNMPユーザーのパスワード:
SYSMANユーザーのパスワード:
SYSMANユーザーのパスワード: 通知用の電子メール・アドレス (オプション):
通知用の送信メール(SMTP)サーバー (オプション):
-----------------------------------------------------------------

次の設定が指定されています

データベースのORACLE_HOME ................ C:\app\lightbox\product\11.1.0\db_1

ローカル・ホスト名 ................ VPC-028B
リスナーのポート番号 ................ 1521
データベースのSID ................ orcl
通知用の電子メール・アドレス ...............
通知用の送信メール(SMTP)サーバー ...............

-----------------------------------------------------------------
続行しますか。 [はい(Y)/いいえ(N)]: y
2010/04/23 11:01:09 oracle.sysman.emcp.EMConfig perform
情報: この操作はC:\app\lightbox\cfgtoollogs\emca\orcl\emca_2010_04_23_11_00_08.l
ogでロギングされています。
2010/04/23 11:01:10 oracle.sysman.emcp.EMReposConfig createRepository
情報: EMリポジトリの作成中(少し時間がかかります)...
2010/04/23 11:07:19 oracle.sysman.emcp.EMReposConfig invoke
情報: リポジトリは正常に作成されました
2010/04/23 11:07:24 oracle.sysman.emcp.EMReposConfig uploadConfigDataToRepositor
y
情報: 構成データをEMリポジトリにアップロード中(少し時間がかかります)...
2010/04/23 11:08:08 oracle.sysman.emcp.EMReposConfig invoke
情報: 構成データが正常にアップロードされました
2010/04/23 11:08:13 oracle.sysman.emcp.util.DBControlUtil configureSoftwareLib
情報: ソフトウェア・ライブラリは正常に構成されました。
2010/04/23 11:08:13 oracle.sysman.emcp.EMDBPostConfig configureSoftwareLibrary
情報: プロビジョニング・アーカイブのデプロイ中...
2010/04/23 11:08:27 oracle.sysman.emcp.EMDBPostConfig configureSoftwareLibrary
情報: プロビジョニング・アーカイブは正常にデプロイされました。
2010/04/23 11:08:28 oracle.sysman.emcp.util.DBControlUtil secureDBConsole
情報: Database Controlの保護中(少し時間がかかります)...
2010/04/23 11:08:38 oracle.sysman.emcp.util.DBControlUtil secureDBConsole
情報: Database Controlは正常に保護されました。
2010/04/23 11:08:38 oracle.sysman.emcp.util.DBControlUtil startOMS
情報: Database Controlの起動中(少し時間がかかります)...
2010/04/23 11:09:28 oracle.sysman.emcp.EMDBPostConfig performConfiguration
情報: Database Controlは正常に起動されました
2010/04/23 11:09:28 oracle.sysman.emcp.EMDBPostConfig performConfiguration
情報: >>>>>>>>>>> Database ControlのURLはhttps://VPC-028B:5500/emです <<<<<<<<<<
<
2010/04/23 11:09:30 oracle.sysman.emcp.EMDBPostConfig invoke
警告:
************************  WARNING  ************************

管理リポジトリは、Enterprise Managerデータが暗号化されるセキュア・モードで配置さ
れています。暗号化キーはファイルC:\app\lightbox\product\11.1.0\db_1\VPC-028B_orc
l\sysman\config\emkey.oraに配置されています。このファイルが失われると暗号化デー
タを使用できなくなるため、このファイルは必ずバックアップしてください。

***********************************************************
Enterprise Managerの構成が正常に完了しました
EMCAの終了: 2010/04/23 11:09:30



▼ 以下は参考情報です。上記処理で一括で問題は解決されるはずです
TNS構成を変更した場合のEMCAの使用方法
emca -config dbcontrol db

Database Controlの構成後に明示的にポートを割り当て
emca -reconfig ports [-cluster]


posted by lightbox at 2010-04-26 14:29 | Oracle : 環境 | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり