■富士通Primergy

・富士通primergyにRHELをインストールする方法はわかりやすくしてるようで逆にわかりづらい。同梱のハードウェア管理ツール(名前忘れた)でブートしてウィザードが走り出して途中でRHELインストールディスクの挿入してインストールする。最初からハードウェア管理ツールも一緒にインストールされる。パーティションの作成の自由度が小さくなる(なぜか)。RHELをインストールしたことがある人から見たら逆にわかりづらいし上記の手順でインストールするメリットってなんかあるんだろうか・・・。

 

■VMware vSphere

・vMotion

 vCSA(vCenter Server Appliance)自身もvMotionでライブマイグレーションできる。

・vSphere HA

 vCSAが動作してるESXiを強制終了したらvCSAは普通のVM同様ほかのESXi上で再起動される。

 

■Oracle 19cとSEHA(クラスタウェア)

・rmanでオフラインバックアップ

・rmanでリストアとリカバリ

・crlctlコマンド

 - crlctl relocate?とかでテイクオーバー

・srvctlコマンド

・起動順序

 クラスタウェアを先に起動してoracleインスタンスを起動する

・停止順序

 oracleインスタンスを停止してからクラスタウェアを停止する

・oracleの起動(nomount、mount、open)

 

形式科学などが存在していることの要請と実証できない知見の仕分けなど

 

ヒトは形式科学の範疇に含まれる自然言語と数学を発見(もしくは発明)しブラッシュアップしてきた。

数学にせよ自然言語にせよ経験から帰納して構築した体系(名前空間も含む)はそれによって模擬しようとする(構築時点の)現実世界や手続きより「なぜか」冗長的であった。(何かの発想やひらめきで数学や言葉を思いついた時点ですでにその数学や言葉がその時までにひらめいた人自身でも想像が及んでいない世界や手続きの側面を描き出せる余地を「なぜか」備えてしまっていた)

つまり何かの成功体験からある時点の数学や自然言語を構成した場合、その構成された体系は人類がまだ未体験な部分の現実世界や手続きまでも「いっしょに」に記述可能な状態にあったことが幾つかのケースで確認された。

形式科学におけるこの不思議な状態こそが数式をいじって理論物理学の新仮説を探索せしめたり、未経験領域に対する言葉遊びを実行して途方もない想像や空想を描き出すことを可能にした。

人類にとっての「正解」は経験による実証を伴う科学的裏付けがある知見のみである。それゆえに人類にとっての「真実」は実証を伴う自然科学的知見のみである。

それ以外(実証を伴わない知見)は仮説である。(たとえどんなに荘厳で相互に連関があって美しかったとしても)

この立場で言えば何らかの宗教の教義もある時点において荘厳な想像力を発揮できるだけの卓越した能力を持つ天才によって「想像された」創造物という見解を持つことも可能であるかもしれない。(宗教はセンシティブなテーマなので俺ごときでは断定はできない)

もちろん哲学に関しても実証を伴っていない時点では壮大なフィクションと捉えるしかない立場もあるかもしれない。

俺の主張には下記のような非論理的な前提がある。

・世界というものが存在していることを前提としている

・形式科学の範疇に含まれる対象が存在していることを前提してる

・経験だけを唯一の実証の手段であると前提している

・超越的な存在を認めていない

・知りえないものを語ることを無意味であるとして放棄している

・人智とは全く別のところで世界や形式科学が対象とする「模型空間」が「存在している」ことを要請している

・進化論を要請している

・「進化」の結果としてヒトの脳に世界や手続きを記述しうる基底となるパーツが一式網羅的に備わっていることを前提にしている。

 

 

2.9.ていうかsqlplusが文字化け

[oracle@centos7_3 ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Jul 7 22:57:40 2022
Version 19.3.0.0.0

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

 

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
?????????   ←ここ
SQL>

 

↓このサイトを猿真似

 

[oracle@centos7_3 ~]$ export NLS_LANG=Japanese_Japan.AL32UTF8
[oracle@centos7_3 ~]$ sqlplus / as sysdba


SQL*Plus: Release 19.0.0.0.0 - Production on 木 7月 7 23:01:54 2022
Version 19.3.0.0.0

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

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
に接続されました。  ←なおったダニ
SQL>

 

oracleユーザの.bashrcに書いとくダニ

[oracle@centos7_3 ~]$ echo "export NLS_LANG=Japanese_Japan.AL32UTF8" >> ~/.bashrc
[oracle@centos7_3 ~]$ tail -2 ~/.bashrc
export PATH=$PATH:$ORACLE_HOME/bin
export NLS_LANG=Japanese_Japan.AL32UTF8

 

3.DDL

■やること

3-1.ユーザ作成

3-2.ユーザ権限変更

3-3.データベース作成

3-4.インスタンス作成

3-5.スキーマ作成

3-6.プロファイル作成

 

3-1.ユーザ作成

下記の条件でユーザを作成する

・プロファイル:C##HOGE01

・デフォルト表領域:USERS

・一時表領域:TEMP

・ユーザ名:HOGEORA01

・パスワード:P@ssw0rd

 

①「C##HOGE01」プロファイルの作成

SQL> CREATE PROFILE C##HOGE01 LIMIT
  2  SESSIONS_PER_USER UNLIMITED
  3  CONNECT_TIME 60
  4  IDLE_TIME 60
  5  CPU_PER_SESSION DEFAULT
  6  CPU_PER_CALL DEFAULT
  7  LOGICAL_READS_PER_SESSION DEFAULT
  8  LOGICAL_READS_PER_CALL DEFAULT
  9  PRIVATE_SGA DEFAULT
 10  COMPOSITE_LIMIT DEFAULT;

プロファイルが作成されました。

→プロファイルが作成された臭い。

 

①「C##HOGE」プロファイルの「DEFAULT,PASSWORD_LIFE_TIME」の確認

SQL> select profile || ',' || resource_name || ',' || limit from dba_profiles where profile = 'C##HOGE01' and resource_name = 'PASSWORD_LIFE_TIME';

PROFILE||','||RESOURCE_NAME||','||LIMIT
--------------------------------------------------------------------------------
C##HOGE01,PASSWORD_LIFE_TIME,DEFAULT

 

②ユーザ作成前

SQL> SELECT USERNAME FROM ALL_USERS WHERE USERNAME = 'HOGEORA01';
 

レコードが選択されませんでした。

→「HOGEORA01」ユーザはまだ居ない。

 

③ユーザ作成

SQL> CREATE USER HOGEORA01 IDENTIFIED BY "P@ssw0rd" DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP PROFILE C##HOGE01;
CREATE USER HOGEORA01 IDENTIFIED BY "P@ssw0rd" DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP PROFILE C##HOGE01
            *
行1でエラーが発生しました。:
ORA-65096: 共通ユーザーまたはロール名が無効です

→「HOGEORA01」に難癖付けられた

エラーコードORA-65096をググったら、下記のような記事を見つけた。

 

上記を読むと、Oracle12c以降が備えるマルチテナント・アーキテクチャの仕組みを理解する必要があるらしい。

Oracle11gまでは、1つのインスタンスには1つのデータベースしかなかったけど、Oracle12cからは1つのインスタンスには1つのコンテナ・データベース(CDB)と、その下にプラガブル・データベース(PDB)と呼ばれる子DB(複数作成可能)が存在するかたちになるとのこと。(複雑やんけ)

11gまでと同様にOracleに接続した場合は、コンテナ・データベース(CDB)に接続されるが、CDBではユーザスキーマ(ローカルユーザー)を作成することができないとのこと。( ORA-65096 のエラーになるらしい)。ローカルユーザーは、実際にデータを管理するプラガブル・データベース(PDB)に接続して作成する必要があるとのこと。

※ローカル・ユーザーとは、特定のPDBのみに存在するユーザーのことで、共通ユーザーとは、各コンテナ(ルートと各PDB)に同名のユーザーが存在する場合のことで、ユーザー名に接頭辞(C##)が必要になるらしい。

そんで上記サイトでは、まず現在接続しているデータベースを確認白と書かれている。
SQL*Plus上で、show con_name を実行するらしい。

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT

→CDBやんけ

プラガブル・データベース(PDB)に接続し直すために、まず、PDBの名前と現在のOPEN_MODEを確認しろとのこと。

 

SQL> SELECT NAME, OPEN_MODE FROM V$PDBS;

NAME
--------------------------------------------------------------------------------
OPEN_MODE
----------
PDB$SEED
READ ONLY

ORCLPDB1
MOUNTED

→ORCLPDB1がMOUNTEDになってるダニ。

PDBのOPEN_MODEが「MOUNTED」の状態では、まだPDBが起動していない状態のため、以下のようにしてPDBを起動する必要があるとのこと。

 

SQL> alter pluggable database ORCLPDB1 open;

プラガブル・データベースが変更されました。

 

※PDBを停止する場合は、以下のようにするとのこと。

 

SQL> alter pluggable database ORCLPDB1 close immediate;

プラガブル・データベースが変更されました。

 

とりあえずPDBを起動してPDBのOPEN_MODEを確認するダニ。

SQL> alter pluggable database ORCLPDB1 open;

SQL> SELECT NAME, OPEN_MODE FROM V$PDBS;

NAME
--------------------------------------------------------------------------------
OPEN_MODE
----------
PDB$SEED
READ ONLY

ORCLPDB1
READ WRITE          ←ここが「READ WRITE」だったら、PDBは起動中でPDBに接続できるらしいダニ。

 

PDBへの接続は下記とのこと。

 

SQL> alter session set container = ORCLPDB1;

セッションが変更されました。
 

再度、現在接続しているデータベースを確認するダニ。

 

SQL> SHOW CON_NAME

CON_NAME
------------------------------
ORCLPDB1

 

→とりあえずPDBにつながったみたいダニ。

 

PDBに接続した状態でもう一度ユーザーを作成してみるダニ。

 

SQL> CREATE USER HOGEORA01 IDENTIFIED BY "P@ssw0rd" DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP PROFILE C##HOGE01;

ユーザーが作成されました。      ←ユーザが作成された臭い!

 

確認するダニ。

 

SQL> SELECT USERNAME FROM ALL_USERS WHERE USERNAME = 'HOGEORA01';

USERNAME
--------------------------------------------------------------------------------
HOGEORA01

 

ユーザが作られたあああああああ><

 

SQL> SELECT * FROM ALL_USERS WHERE USERNAME = 'HOGEORA01';

USERNAME
--------------------------------------------------------------------------------
   USER_ID CREATED  COM O INH
---------- -------- --- - ---
DEFAULT_COLLATION
--------------------------------------------------------------------------------
IMP ALL
--- ---
HOGEORA01
       106 22-07-08 NO  N NO
USING_NLS_COMP
NO  NO

 

ログインできるかな?

[oracle@centos7_3 ~]$ sqlplus HOGEORA01/P@ssw0rd

SQL*Plus: Release 19.0.0.0.0 - Production on 金 7月 8 00:17:06 2022
Version 19.3.0.0.0

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

ERROR:
ORA-12154: TNS: 指定された接続識別子を解決できませんでした


ユーザー名を入力してください:

 

→接続できない><

 

3-2.ユーザ権限変更

作成したHOGEORA01ユーザに、「CREATE SESSION」権限と、「SELECT ANY DICTIONARY」権限を付与するダニ。

 

[oracle@centos7_3 ~]$ sqlplus / as sysdba

---(略)---

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT

 

CDBのままでGRANT文使ってHOGEORA01ユーザに権限付与できるかやってみる。

まず、権限付与する前の確認。

SQL> SELECT GRANTEE || ',' || PRIVILEGE FROM DBA_SYS_PRIVS WHERE GRANTEE ='HOGEORA01';

レコードが選択されませんでした。

 

ちなみにCDBにHOGEORA01ユーザってそもそもいないよね?

 

SQL> SELECT USERNAME FROM ALL_USERS WHERE USERNAME = 'HOGEORA01';

レコードが選択されませんでした。

 

なので、HOGEORA01ユーザに権限付与するとかは全部PDBに接続するのが前提。

 

SQL> SELECT NAME, OPEN_MODE FROM V$PDBS;

NAME
--------------------------------------------------------------------------------
OPEN_MODE
----------
ORCLPDB1
READ WRITE   ←ここを見る。

 

SQL> alter session set container = ORCLPDB1;

セッションが変更されました。

SQL> SELECT USERNAME FROM ALL_USERS WHERE USERNAME = 'HOGEORA01';

USERNAME
--------------------------------------------------------------------------------
HOGEORA01

 

もう一度権限を確認。

 

SQL> SELECT GRANTEE || ',' || PRIVILEGE FROM DBA_SYS_PRIVS WHERE GRANTEE ='HOGEORA01';

レコードが選択されませんでした。

→権限はない。(当然だけど)

 

権限を付与する。

 

SQL> GRANT CREATE SESSION,SELECT ANY DICTIONARY to HOGEORA01;

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

→なんかできた臭い。

もう一度権限を確認。

 

SQL> SELECT GRANTEE || ',' || PRIVILEGE FROM DBA_SYS_PRIVS WHERE GRANTEE ='HOGEORA01';

GRANTEE||','||PRIVILEGE
--------------------------------------------------
HOGEORA01,SELECT ANY DICTIONARY
HOGEORA01,CREATE SESSION

 

→なんか権限が付与された臭い。

もう一度sqlplusでログインできるか試してみる。

 

[oracle@centos7_3 ~]$ sqlplus HOGEORA01/P@ssw0rd

SQL*Plus: Release 19.0.0.0.0 - Production on 金 7月 8 00:39:23 2022
Version 19.3.0.0.0

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

ERROR:
ORA-12154: TNS: 指定された接続識別子を解決できませんでした

 

→だめだw

もういちどsysでログインしてPDBに接続してHOGEORA01にconnect, resourceロールを与えてみる。(上記サイトの猿真似)

 

SQL> grant connect, resource to HOGEORA01;

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

 

もう一回sqlplusでHOGEORA01ユーザがログインできるか試す。

 

[oracle@centos7_3 ~]$ sqlplus HOGEORA01/P@ssw0rd

----(略)----

ERROR:
ORA-12154: TNS: 指定された接続識別子を解決できませんでした

 

だめやんw

 

接続先にPDBを指定しなくちゃいけないみたい

[oracle@centos7_3 ~]$ sqlplus HOGEORA01/P@ssw0rd@ORCLPDB1

----(略)----

ERROR:
ORA-12154: TNS: 指定された接続識別子を解決できませんでした

もしかして「P@ssw0rd」の「@」が紛らわしい?

 

パスワードロック?

もう一人別のユーザをつくる。

(PDBへの接続までは省略)

 

SQL> CREATE USER HOGEORA02 IDENTIFIED BY "Passw0rd" DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP PROFILE DEFAULT;

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

 

SQL> grant connect, resource to HOGEORA02;

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

 

[oracle@centos7_3 ~]$ sqlplus HOGEORA02/Passw0rd@ORCLPDB1

SQL*Plus: Release 19.0.0.0.0 - Production on 金 7月 8 01:07:27 2022
Version 19.3.0.0.0

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

ERROR:
ORA-12154: TNS: 指定された接続識別子を解決できませんでした

→意味不明

 

 

 

3-3.データベース作成

3-4.インスタンス作成

3-5.スキーマ作成

3-6.プロファイル作成

 

 

4.DML

■やること

4-1.簡単なDML(insert、select、update、delete)のテスト