0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Oracle Databaseログイン方法

Posted at

新人のHさんへ。1年目が終わりかけているのにDBにログインが出来なくてっていうのはちょっとね。

免責
土日に勢いで書いてるから間違ってるかも。雰囲気だけでもつかんで。

①事前準備。

# id tanaka
# useradd -G dba,asmdba,backupdba,dgdba,kmdba,racdba,oper tanaka
# id tanaka
# passwd tanaka
# su - oracle
$ sqlplus /nolog
SQL> conn / as sysdba
SQL> create user tanaka identified by tanaka;
SQL> grant connect to tanaka;
SQL> conn tanaka/tanaka
SQL show user
SQL> exit
$ su - tanaka
$ vi .bash_profile     # 修正内容は↓を確認。
$ cat .bash_profile
[root@localhost ~]# id tanaka
id: tanaka: no such user
[root@localhost ~]# useradd -G dba,asmdba,backupdba,dgdba,kmdba,racdba,oper tanaka
[root@localhost ~]# id tanaka
uid=9003(tanaka) gid=9004(tanaka) groups=9004(tanaka),2002(dba),2003(asmdba),2004(backupdba),2005(dgdba),2006(kmdba),2007(racdba),2008(oper)
[root@localhost ~]# passwd tanaka
ユーザー tanaka のパスワードを変更。
新しいパスワード:
よくないパスワード: このパスワードは 8 未満の文字列です。
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
[root@localhost ~]#
[root@localhost ~]# su - oracle
最終ログイン: 2023/03/19 (日) 16:00:57 JST gatewayから開始日時 pts/1
[oracle@localhost ~]$ sqlplus /nolog

SQL*Plus: Release 19.0.0.0.0 - Production on 日 3月 19 16:43:05 2023
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

SQL> conn / as sysdba
接続されました。
SQL> create user tanaka identified by tanaka;

ユーザーが作成されました。

SQL> grant connect to tanaka;

権限付与が成功しました。

SQL> conn tanaka/tanaka
接続されました。
SQL> show user
ユーザーは"TANAKA"です。
SQL> exit
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0との接続が切断されました。
[oracle@localhost ~]$ su - tanaka
パスワード:
最終ログイン: 2023/03/19 (日) 16:46:52 JST日時 pts/0
[tanaka@localhost ~]$ vi .bash_profile
[tanaka@localhost ~]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=${ORACLE_BASE}/product/19.3.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
export LANG=ja_JP.UTF-8
export NLS_LANG=Japanese_Japan.AL32UTF8
export LD_PATH_LIBRARY=${LD_PATH_LIBRARY}:${ORACLE_HOME}/lib
umask 022

[tanaka@localhost ~]$

②コマンドの基本書式

基本書式(sqlplusから直接DBへ接続する場合)
$ sqlplus <ユーザ名>/<パスワード>@<Oracle Net接続識別子> (as sysdbaとか as sysoperとか)

基本書式(sqlplusでSQLコンソールに入り、connectでDBへ接続する場合)
$ sqlplus /nolog
SQL> CONNECT  <ユーザ名>/<パスワード>@<Oracle Net接続識別子> (as sysdbaとか as sysoperとか)

※CONNECTはCONNに省略可能
※sysでログインする際はas sysdbaの指定が必要(systemはいらない)
※OS認証とパスワード認証がある(③を参照)
※sqlplusにはSQLコンソールに入るが、DBに接続しない/nologオプションがある。(psやhistoryコマンドでパスワードが漏洩しないなどのメリット。最近のOracleではそもそも表示されなくなっているかもしれない)
※Oracle Databaseには外部クライアントから接続するときのために、受け口となるリスナープロセスがある。
 このリスナープロセス経由で接続することも可能。(ローカルからOracle Net接続識別子を指定することも可能)
※パスワード認証でパスワードを指定しないと、直後にパスワード入力を促すプロンプトが表示される。

③OS認証とパスワード認証の2種類がある。

OS認証
OSが認証したユーザにてログインする(Oracleの認証が不要となる)OUIをやったときに、事前に作成したOSグループ(dba,oper等)とOSDBAとかOSOPER等をマッピングさせたけど、あれ。
WS000012.JPG

マッピングしたOSグループに所属しているOSユーザは「<ユーザ名>/<パスワード>」ではなく、「/」でログインできる。
逆に言うと、所属させていないグループ(権限)ではログインできない。今回は試していないけど。
例:tanakaユーザをoperに所属させない場合、sysoperでログインできない。
パスワード認証
Oracleの認証にてログインする。create userするときに指定した名前とパスワードを使うやつ。

【OS認証】

$ sqlplus /nolog
SQL> conn / as sysdba
SQL show user
SQL> conn / as sysbackup
SQL show user
SQL> conn / as syskm
SQL> show user
[tanaka@localhost ~]$ sqlplus /nolog

SQL*Plus: Release 19.0.0.0.0 - Production on 日 3月 19 16:56:17 2023
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

SQL> conn / as sysdba
接続されました。
SQL> show user
ユーザーは"SYS"です。
SQL> conn / as sysbackup
接続されました。
SQL> show user
ユーザーは"SYSBACKUP"です。
SQL> conn / as syskm
接続されました。
SQL> show user
ユーザーは"SYSKM"です。
SQL>

【パスワード認証】

$ sqlplus /nolog
SQL> conn tanaka/tanaka
SQL> show user
[tanaka@localhost ~]$ sqlplus /nolog

SQL*Plus: Release 19.0.0.0.0 - Production on 日 3月 19 17:00:28 2023
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

SQL> conn tanaka/tanaka
接続されました。
SQL> show user
ユーザーは"TANAKA"です。
SQL>

④リスナー経由での接続

外部のクライアントから接続する際には受け口が必要。それがリスナープロセス。
外部から繋ぐため、IPアドレスとかポート番号とかが必要。
例えば以下。

sqlplus username/password@hostname:port/service_name
[tanaka@localhost ~]$ sqlplus tanaka/tanaka@localhost:1521/orcl

SQL*Plus: Release 19.0.0.0.0 - Production on 日 3月 19 17:07:40 2023
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

最終正常ログイン時間: 日 3月  19 2023 17:00:38 +09:00


Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
に接続されました。
SQL>

※外部からとか言ったけど、↑みたいに別にローカルからリスナーを経由することも可能。

また、↑は簡易接続と呼ばれるやつで、IPアドレスとかポート番号を設定ファイルにまとめておくことも可能。
それがtnsnames.ora。

$ cd /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/
$ cat tnsnames.ora | grep -A 8 "^ORCL ="
$ sqlplus tanaka/tanaka@orcl
[oracle@localhost ~]$ cd /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/
[oracle@localhost admin]$
[oracle@localhost admin]$ cat tnsnames.ora | grep -A 8 "^ORCL ="
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

[oracle@localhost admin]$ sqlplus tanaka/tanaka@orcl

SQL*Plus: Release 19.0.0.0.0 - Production on 日 3月 19 17:10:50 2023
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

最終正常ログイン時間: 日 3月  19 2023 17:07:40 +09:00


Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
に接続されました。
SQL>
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?