2007年12月13日木曜日

[oracle]ユーザーに権限を与える

前回インポートについて書きましたが、DBAのロール権限を持っていないと出来ないことが発覚。
(これに気づくまで約1日かかってました。最初から知ってる人に聞くのが一番って事ですね)

まずはじめに権限を持ってるユーザーでログインします。


ロールをユーザーに付与する
GRANT ロール TO 権限を与えるユーザー名 [IDENTIFIED BY password][WITH ADMIN OPTION];

ロールをユーザーに付与するには、GRANT文で付与するロール名を指定し、TO句で付与するユーザー名を指定します。

IDENTIFIED BY句
IDENTIFIED BY句に続けてパスワードを指定すると、既存ユーザーを明確に識別できます(ユーザーが存在しない場合は新規にユーザーが作成されます)。

WITH ADMIN OPTION句WITH ADMIN OPTION句を指定すると、
  ・ロールがGLOBALロールでない場合、そのロールをほかのロールに付与可能
  ・ロールをほかのロールから取り消すことが可能 
  ・ロールへのアクセスに必要な認可を変更するため、ロールを変更可能 
  ・ロールを削除可能になります。

ということです。

2007年12月11日火曜日

[oracle]dmpファイルのインポートとエクスポート

そんなに項目がないのであればツールなどでSQLを書けばいいんだけれど、かなり大きなモノになると大変なのでdmpファイルにするらしい。

oracle crientがインストールされていることが最低条件です。

dmpファイルの作成方法
DOSプロンプトを開いて
exp ユーザ名/パスワード@設定しているtns file=作ったファイルを置く場所ファイル名 log=ファイルを置く場所作ったファイルに関するログファイル

これでdmpファイルという形でエクスポートされている。

次にインポート
imp ユーザ名/パスワード@設定しているtns file=dmpファイルが置いてある場所ファイル名 log=dmpファイルが置いてある場所作ったファイルに関するログファイル

これでインポートできるはずです。

どうやらバージョンが違うoracleでエクスポートするとインポートできないらしい。

まぁそれ以前に同じバージョンで渡されたdmpファイルがインポートできなかったのでこれであっているかの自信がないです。

[oracle]ユーザーの追加

まずはじめにDOSプロンプトを開いて
sqlplus ユーザー名/パスワード@設定しているtns
と入力しSQLPLUSを開く

SQLPLUSを開いたら
登録したいユーザー名とパスワードを入力する。
create user '登録したいユーザー名' identified by '登録したいパスワード';

権限を与えるために
create role '登録したユーザー名'_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 TABLEto '登録したユーザー名'_ROLE;

これらの権限を与えるため
grant '登録したユーザー名'_ROLE to '登録したユーザー名' ;


これでユーザーの登録が完了するはず。