専門家に聞いた!繰り返す痔の原因は!? >>

Ver. Oracle9i R2
OS Win2k AS

以上の環境にて、インストール時に設定したキャラクタ・セットを後から確認する方法をどなたかご存知でしょうか。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

sqlplus でsystemで接続して



select * from nls_database_parameters
where parameter ='NLS_CHARACTERSET';
で確認できます。

例)
PARAMETER
-------------------------
VALUE
-------------------------
NLS_CHARACTERSET
JA16SJIS
    • good
    • 0
この回答へのお礼

無事解決致しました。

OUIで設定していると、初期設定を忘れがちになってしまうので助かりました。ありがとうございます。

お礼日時:2007/04/15 21:30

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QOracle12cでユーザのSQLPLUSログイン

基本的な質問ですみません。Oracle 12cを初めて使うのですが、すごく単純に、ユーザを作成し、そのユーザでデータベースオブジェクト(テーブルなど)を作成する拡張子が.sqlのスクリプトを流したいです。

11gまでの場合、システムユーザでCREATE USERしたのちに、コマンドプロンプトを立ち上げて
C:\Scripts> SQLPLUS <USER>/<PASSWORD> @createtables.sql
とするだけで良かったと思います。

今回、12cではユーザの考え方が変わっており、CDBとPDBを作成しました。
> SQLPLUS /NOLOG
SQL> CONN SYS AS SYSDBA
(上記のようにローカル接続するとCDBに接続される)

SQL> ALTER SESSION SET CONTAINER=PDB1; // PDBへ移動
SQL> SHOW CON_NAME // 念のため現在接続中のPDBの名前確認
SQL> STARTUP;
(これでマウント状態だったPDB1がOPENしてREAD WRITEになる)

この状態でCREATE USER文を実行してPDB1上でユーザを作成。

ここからなんですが、PDBやCDBへのログイン方法はわかたのですが、PDB上で作成したユーザにはどのようにしてログインするのでしょうか? ログインしてテーブル作成をしたいです。また、テーブル作成のスクリプト文(.sql)があるのでそれを流したい場合は、コマンドプロンプトからどのように実行すればよいでしょうか?

基本的な質問で恐縮ですが、宜しくお願いします。

基本的な質問ですみません。Oracle 12cを初めて使うのですが、すごく単純に、ユーザを作成し、そのユーザでデータベースオブジェクト(テーブルなど)を作成する拡張子が.sqlのスクリプトを流したいです。

11gまでの場合、システムユーザでCREATE USERしたのちに、コマンドプロンプトを立ち上げて
C:\Scripts> SQLPLUS <USER>/<PASSWORD> @createtables.sql
とするだけで良かったと思います。

今回、12cではユーザの考え方が変わっており、CDBとPDBを作成しました。
> SQLPLUS /NOLOG
SQL> CONN SYS AS SYSDBA
...続きを読む

Aベストアンサー

こんにちわ。

> ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。
上のtnsnames.ora の設定は、CDB に接続するためのものです。
新しい接続文字列で、SERVICE_NAME にPDB名を指定したものを作成して
試してみて下さい。

QOracleでインスタンスを複数にしたい

初めて質問させていただきます。
Oracleの初心者です。
仕事でOracleインスタンスを複数にして欲しいと言われ方法を
検索したのですが、なかなか見つかりません。。
どうしたら、インスタンスを複数にできますか?
初歩的(?)なことで恥ずかしいのですが分からなくて困っています。
回答よろしくお願い致します。

Aベストアンサー

old インスタンスから new インスタンスを作成する場合以下のような流れでできるかと思います。

1.old インスタンスを起動して CREATE CONTROLFILE 文のトレースを出力。
alter database backup controlfile to trace;
2.old インスタンスを停止。
3.old インスタンスのファイルを new インスタンスを作成する場所にコピー。
4.old インスタンスの初期化パラメータファイルをコピーして new インスタンス用の初期化パラメータファイルを作成。
5.new インスタンス用のパスワードファイルを作成。
6.new インスタンス用のログ出力ディレクトリ (bdump とか) を作成。
7.ORACLE_SID を "new" にセットしてデータベースを nomount で起動。
8.1 で出力されたトレースの "old" を "new" に書き換えて実行。
9.データベースを resetlogs オプション付きでオープン。

Qbatファイルからsql文実行

クライアントOS:WIN2000
Oracle:9i(サーバ(UNIX)上にあります)

現在、クライアントからbatを起動し、SQL文を投げ、結果を取得したいと思っております。
(SQL文は単純にTBLをカウントしているだけです)

・batの中身
sqlplus %UID%/%PASS%@%SID% @test.sql > output

結果は取得出来るのですが、余分な情報も結果に出力されてしまいます。結果のみを出力させるにはどうすればよろしいでしょうか?

・余分な情報
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
に接続されました。

Aベストアンサー

sqlplus に -S オプションを追加してみればどうでしょうか。

参考URL:http://biz.rivus.jp/sqlplus_overview.html

QNLS_CHARACTERSETについて

NLS_CHARACTERSETについて

Oracle10gStandardEdition+MiracleLinux4.0にてDBを構築したのですが、
インストール時のパラメータを
NLS_LANG=Japanese_Japan.JA16SJIS
としても日本語が文字化けしてしまいます。
こちらのサイトも含め調べましたところ、
NLS_CHARACTERSETが「WE8ISO8859P1」となっており、日本語が対応していない
ことが判明しました。
こちらの値を「JA16SJIS」に変更して再インストールしたのですが設定が変りません。
値を設定してパラメータを変更するにはどのようにすればよろしいでしょうか。
ご回答よろしくお願いいたします。

Aベストアンサー

NLS_LANGとNLS_CHARACTERSETは全く別物です。
NLS_CHARACTERSETはデータベースの文字セットでデータベース(インスタンス)作成時に指定して、変更できません。
NLS_LANGは端末側の文字コードの指定です。TeraTermとかXWindowsとかの文字コードをして今します。

Q異なる文字コードの環境にインポートするには

下記のようにサーバがあります。
・Aサーバ(Solaris)
・Bサーバ(Windows)

下記のように文字コードが異なります。
・Aサーバ(JA16EUCTILDE)
・Bサーバ(JA16SJIS)
※Oracleのバージョンは同じです。

AサーバでエクスポートしたdmpファイルをBサーバにインポートしたいと考えています。
文字コードが異なるdmpファイルをインポートするにはどのようにしたらいいのでしょうか。また注意点などあるのでしょうか。

テストする環境が今ないため、試す事ができません。
些細な事でも何でも構いませんのでアドバイスいただけませんでしょうか。
宜しくお願いします。

Aベストアンサー

ゴールとなるBサーバが、JA16SJISであるなら、何をしようが、
JA16SJISで表現できる文字コード以外文字化けする。

NLS_LANGをJA16SJISに設定したクライアントで、
(1)Aサーバからエクスポート
(2)Bサーバへインポート
するのと一緒。

今回の場合、それで問題が出るなら、DB作成時のキャラクタセットの選択ミスであり
エクスポート/インポートで何とかできる問題ではない。

最初にも書いていますが、必ず文字化けが起こるわけではないので、注意してください。
クライアントPCのOSやミドルウエアに何を使うかで、JA16SJISでも問題なく使えますので。

QSQL実行結果の出力を見やすくしたい

Oracle 10gを使用して勉強をしています。
SQL実行結果の出力が見にくくて困っています。
以下、(1)は自分が実行したSQL文ですが、(2)のように見やすく出力したいです。

どのようにすればよいのでしょうか?
また参考となるWEB URLがある場合、頂けたら嬉です。

(1)自分が実行したSQL文
SQL> select
2 sid,serial#,username,osuser,program,machine,terminal
3 from v$session
4 where type = 'USER';

SID SERIAL# USERNAME
---------- ---------- ------------------------------
OSUSER PROGRAM
------------------------------ ------------------------------------------------
MACHINE
----------------------------------------------------------------
TERMINAL
------------------------------
543 39 SYS
oracleuser sqlplus@HOGE-net (TNS V1-V3)
HOGE-net
pts/1


SID SERIAL# USERNAME
---------- ---------- ------------------------------
OSUSER PROGRAM
------------------------------ ------------------------------------------------
MACHINE
----------------------------------------------------------------
TERMINAL
------------------------------
544 5 SYS
oracleuser sqlplus@HOGE-net (TNS V1-V3)
HOGE-net
pts/0


(2)こんな感じで出力させたいです。
select
sid,serial#,username,osuser,program,machine,terminal
from v$session
where type = 'USER';

SID SERIAL# USERNAME OSUSER PROGRAM  MACHINE   TERMINAL
---- ------- --------- ------ ---------- ---------  --------
139     2      TEST Owner sqlplus.exe   HOGE_XP HOGE_XP
144     20    SYSTEM      ORACLE.EXE HOGE_XP  HOGE_XP

Oracle 10gを使用して勉強をしています。
SQL実行結果の出力が見にくくて困っています。
以下、(1)は自分が実行したSQL文ですが、(2)のように見やすく出力したいです。

どのようにすればよいのでしょうか?
また参考となるWEB URLがある場合、頂けたら嬉です。

(1)自分が実行したSQL文
SQL> select
2 sid,serial#,username,osuser,program,machine,terminal
3 from v$session
4 where type = 'USER';

SID SERIAL# USERNAME
---------- ---------- ---------------------------...続きを読む

Aベストアンサー

set pages 10000 lines 10000 trims on
col username for a30
col osuser for a30
col program for a30
col machine for a30
col terminal for a30

select
sid,serial#,username,osuser,program,machine,terminal
from v$session
where type = 'USER';

こんな感じでどうですか?
ちなみに、a30は30文字分の幅という意味です。
number 型のデータの場合には指定方法がかわりますが、
number 型はそのままでも表示が乱れることはあまりないので、
それほど気にしなくてもよいでしょう。

QSIDとSERVICE_NAMEの違いとは?

tnsnames.oraの中の(CONNECT_DATA=に SIDだったりSERVICE_NAMEだったりしますが、どのような違いがあるのでしょうか?
どちらでもつながるのでいいかとは思いますが、何かメリット・デメリットでもあるのでしょうか?
それとも過去の遺物が未だ共存しているだけでしょうか?
SIDはインスタンスにつけられた名前だと知っていますが、SERVICE_NAMEってなんですか?

Aベストアンサー

SIDはインスタンスの識別子、service_nameはサービス名。
インスタンスとサービスの違いはRAC を勉強されるとよくわかると思います。

サービス名は初期化パラメータのservice_namesで設定します。
設定されていない場合は先述のとおりdb_unuque_name.db_domainになります。
(これが同義と誤解されやすい原因となっているわけですが)

ところで、service_namesパラメータですが、複数形になっていることからもわかるように、複数のサービス名をコンマ区切りで指定できるようになっています。

これをこのように使います。

2ノードRAC環境で、インスタンス1(SID=hoge1)、インスタンス2(SID=hoge2)があったとします。
ノードを意識することなく接続できるようにするためにクライアント側のtnsnames.oraにはこんな設定を追加します。

HOGE.EXAMPLE.COM
(DESCRIPTION =
(LOAD_BALANCE = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = host1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = host2)(PORT = 1521))
(CONNECT_DATA = (SERVER = DECIDATED)(SERVICE_NAME = hoge.example.com))
)

インスタンス1とインスタンス2のservice_namesパラメータにhoge.example.comを追加します。すると、インスタンス1とインスタンス2にラウンドロビンで接続できるようになります。

ここで、もしtnsnames.oraのservice_name=...がSID=hoge1だったらどうなるでしょう?
インスタンス2のSIDはhoge2ですから一致せず、インスタンス2には接続できず、いつもインスタンス1に繋がってしまいます。

次に、一時的にメンテナンスのためにインスタンス2にアクセスしてほしくないケースを考えます。service_nameであれば、インスタンス2のservice_namesパラメータからhoge.example.comを削除することで(動的に変更できます)直ちにインスタンス1にのみ接続されるようにできます。

ここで、もしORACLE_SIDだったら・・・変更のためにインスタンスの再起動が必要になってしまいますね?

最後にservice_namesは複数登録できます。3ノードRAC環境において、オンライン処理(service_name=ONLINE)、バッチ処理(service_name=BATCH)があったとします。
バッチ処理は1つのノード(インスタンス1)でのみ処理したいとします。オンライン処理は3つのノードでしたいとします。

そんなとき、service_nameであれば、

<<サーバ側の初期化パラメータ>>
1:service_names = online, batch
2:service_names = online
3.service_names = online

<<クライアント側のtnsnames.ora>>

オンライン処理
ONLINE.EXAMPLE.COM
(DESCRIPTION =
(LOAD_BALANCE = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = host1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = host2)(PORT = 1521))
(CONNECT_DATA = (SERVER = DECIDATED)(SERVICE_NAME = online.example.com))
)

BATCH.EXAMPLE.COM
(DESCRIPTION =
(LOAD_BALANCE = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = host1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = host2)(PORT = 1521))
(CONNECT_DATA = (SERVER = DECIDATED)(SERVICE_NAME = batch.example.com))
)

と、クライアント側では接続先サーバを気にすることなく構成できますね?
BATCHのノードを1から2にしたい場合の変更はサーバ側のみでできますよね?
serivce_namesの"batch"設定をノード2に移すだけです。

SIDはインスタンスの識別子、service_nameはサービス名。
インスタンスとサービスの違いはRAC を勉強されるとよくわかると思います。

サービス名は初期化パラメータのservice_namesで設定します。
設定されていない場合は先述のとおりdb_unuque_name.db_domainになります。
(これが同義と誤解されやすい原因となっているわけですが)

ところで、service_namesパラメータですが、複数形になっていることからもわかるように、複数のサービス名をコンマ区切りで指定できるようになっています。

これをこのように...続きを読む

QOracleで流したSQLのログを取得できますか?

ASP+Oracle9iで作られたシステムがあります。
Oracleの設定などは前任者がしており、まともな引継ぎを受けないまま私が維持運用員となりました。
現在DBからあるレコードが消えてしまい(最初から作られてない可能性もあり)、顧客からクレームがついています。
状況から考えて怪しいプログラムを調査したのですが、原因不明でした。
そこで、Oracleの方で今まで流れたSQLをログとして保存していれば手がかりがつかめるのではないかと思い、情報を探しているのですが見つからないので教えて頂きたいのです。
私はOracleの知識(管理面について)が殆どなく、Oracleを使うことはできるが、Oracleの設定がどういう状況になっているか調べることもできず、資料もありません。

1.そもそもOracleにSQLをログとして保存する機能があるのか?
2.あるとすれば、保存機能が有効になっているか、保存したファイルがどこにあるかをどこで確認できるか?

以上の点についてご存知の方、どうぞ回答よろしくお願いします。

Aベストアンサー

OracleのSQL実行痕跡は以下に示すものの中にあります。
ただし、それぞれの設定レベル、保存方法によって、参照できる範囲は変わります。

1.オンラインREDOログとアーカイブログ
  オンラインREDOログはすべてのOracleデータベースに存在します。
  ですが、そのREDOログのサイズとシステムのアクセス量によって保存期間は変化します。アーカイブログ設定しておけば、古いREDOログはアーカイブとして吐き出されます。
  これらは#1の方がおっしゃったLOGMINERで実行済みSQLを調査することができます。
  アーカイブログモードになっているかどうかは、下記で確認できます。
   SQL> select log_mode from v$database;

  また、どのアーカイブログファイルを調査するかは下記を参照すれば良いと思います。
   SQL> select name,to_char(completion_time, 'yyyy/mm/dd hh24:mi') adate from v$archived_log;

2.フラッシュバック問い合わせ
  これは初期化パラメータUNDO_MANAGEMENTがAUTOに設定されており、かつUNDO_RETENTIONが保存期間として適切に設定されている場合のみ使用できます。
  やっていることは、UNDO表領域(旧RBS用表領域)の中に残っている実行履歴を参照しています。したがって、データベース設計時にフラッシュバック問い合わせを前提としていない限り、使える可能性は低いです。

3.その他
  監査を実行していれば、実行SQLを取得できる可能性があります。
  ただし、監査レベルなどを理解しておかないと、すべてのSQLが取得されていない可能性がありますので、難しいかもしれません。

OracleのSQL実行痕跡は以下に示すものの中にあります。
ただし、それぞれの設定レベル、保存方法によって、参照できる範囲は変わります。

1.オンラインREDOログとアーカイブログ
  オンラインREDOログはすべてのOracleデータベースに存在します。
  ですが、そのREDOログのサイズとシステムのアクセス量によって保存期間は変化します。アーカイブログ設定しておけば、古いREDOログはアーカイブとして吐き出されます。
  これらは#1の方がおっしゃったLOGMINERで実行済みSQLを調査することができま...続きを読む

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

QSQLのVARCHARとVARCHAR2の違い

SQLについての質問です。
文字列型のVARCHARとVARCHAR2の違いについて教えてください。
まだ、初心者なのでなるべく分かりやすくお願いします。

Aベストアンサー

データベースによって、データ型の定義が違います。
私が知っている限りでは、
MS-SQLserverなどでは、可変長の文字列はvarcharですが、
Oracleでは、varchar2です。
他にも、MSのdatetimeに相当するものが、Oracleはdate型、という具合に名前が違います。
お使いのDBに沿ったデータ型の定義を調べると良いのではないでしょうか?
それぞれ違うと思いますよ。(似てると言えば似ているけど。)


人気Q&Aランキング