2020年12月26日土曜日

PXE ブートサーバ

# dnf -y install tftp-server
# systemctl enable --now tftp
# firewall-cmd --add-service=tftp --permanent
# firewall-cmd --reload

# dnf -y install dhcp-server
# vi /etc/dhcp/dhcpd.conf


# systemctl enable --now dhcpd
# firewall-cmd --add-service=dhcp --permanent
# firewall-cmd --reload

2020年12月2日水曜日

Django データベース アクセス

きれいにまとめてある。

https://qiita.com/KeAt/items/55fdedc8cac7c6852043

https://opendata-web.site/blog/entry/22/


Django公式

https://docs.djangoproject.com/ja/3.0/ref/models/fields/

https://docs.djangoproject.com/ja/3.0/ref/models/querysets/


save()              追加または更新

create()      オブジェクトの作成と保存を一つの処理で行う

add()              ManyToManyFieldのデータ追加

update()      一括更新

get_or_create()     データを取得、なければ追加

update_or_create()  データを更新、なければ追加

bulk_create()     一括追加



【書き込み】

Store( s_uuid      = user.uuid,

       c_uuid      = data['uuid'],

       scode       = scode,

       loc_a_uuid  = form.instance.a_uuid,

       date_update = datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f'),

       date_joined = form.instance.date_joined,

).save( using='default')


【読み込み】

qs  = Store.objects.filter( pk=uuid ).last()

qs  = Store.objects.get( pk=uuid )

scode = qs.scode


so  = Store.objects.filter( s_uuid=uuid ).first()

so  = Store.objects.filter( s_uuid=uuid ).last()

qs0 = Store.objects.filter( s_uuid=uuid )

so  = Store.objects.get( pk=uuid )

qs1  = Store.objects.values('c_uuid','scode')

dc   = Store.objects.values('c_uuid','scode').first()

scode = so.gcode

scode = qs0.first().scode

scode = qs1.scode

scode = dc[ 'scode' ]



2020年11月15日日曜日

VLAN構築

# nmcli device
# nmcli c s
NAME UUID TYPE DEVICE
enp1s0 3d64f6a1-a3eb-4dad-ad20-c52a21f5c060 ethernet enp1s0
virbr0 02b891f8-55be-4f44-8a18-d3ec680f01b0 bridge virbr0
# nmcli c add type vlan ifname vlan10 con-name vlan10 dev enp1s0 id 10
# nmcli c mod vlan10 ipv4.method manual ipv4.address 192.168.10.220/24
# nmcli c u vlan10

# nmcli c del vlan10
# nmcli c del enp1s0
# nmcli connection add type ethernet ifname enp1s0 con-name enp1s0

【例】
1) ホスト側
# nmcli c del vlan10
# nmcli c del vlan20
# nmcli c del vlan80
# nmcli c del vlan90

# nmcli c add type vlan ifname vlan10 con-name vlan10 dev enp39s0 id 10
# nmcli c add type vlan ifname vlan20 con-name vlan20 dev enp39s0 id 20
# nmcli c add type vlan ifname vlan80 con-name vlan80 dev enp39s0 id 80
# nmcli c add type vlan ifname vlan90 con-name vlan90 dev enp39s0 id 90

# nmcli c mod vlan10 ipv4.method manual ipv4.address 192.168.10.220/24
# nmcli c mod vlan20 ipv4.method manual ipv4.address 192.168.20.220/24
# nmcli c mod vlan80 ipv4.method manual ipv4.address 192.168.80.220/24
# nmcli c mod vlan90 ipv4.method manual ipv4.address 192.168.90.220/24

# nmcli c u vlan10
# nmcli c u vlan20
# nmcli c u vlan80
# nmcli c u vlan90

# nmcli c del vlan10
# nmcli c del vlan20
# nmcli c del vlan80
# nmcli c del vlan90

2)ゲスト側
# nmcli c mod enp1s0 ipv4.method manual ipv4.address 192.168.10.1/24
# nmcli c mod enp1s0 ipv4.method manual ipv4.address 192.168.20.1/24
# nmcli c mod enp1s0 ipv4.method manual ipv4.address 192.168.80.1/24
# nmcli c mod enp1s0 ipv4.method manual ipv4.address 192.168.90.1/24

# nmcli c u enp1s0

https://qiita.com/kanatatsu64/items/b7b8eca17202386d27e3

https://qiita.com/hana_shin/items/59e8492057d8686465e8

2020年10月30日金曜日

ssh X11forwarding

1)  リモート側(Xクライアント)

# vi /etc/ssh/sshd_config

X11DisplayOffset 10

X11Forwarding yes

X11UseLocalhost no

XauthLocation /usr/bin/xauth

# systemctl restart sshd


2) 起動

sshpass -p パスワード ssh  -X -C -p 22  xxx.xxx.xxx.xxx





2020年9月29日火曜日

CentOS8にZabbix5.0インストール

CentOS8 にzabbix 5.0 をインストール
# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
# dnf clean all
# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf 
# dnf install zabbix-web-japanese
# dnf install zabbix-agent2 
# dnf install zabbix-get

インストール済み:
OpenIPMI-libs-2.0.27-1.el8.x86_64 apr-1.6.3-9.el8.x86_64
apr-util-1.6.1-6.el8.x86_64 apr-util-bdb-1.6.1-6.el8.x86_64
apr-util-openssl-1.6.1-6.el8.x86_64 centos-logos-httpd-80.5-2.el8.noarch
fping-4.2-2.el8.x86_64 httpd-2.4.37-21.module_el8.2.0+494+1df74eae.x86_64
httpd-filesystem-2.4.37-21.module_el8.2.0+494+1df74eae.noarch httpd-tools-2.4.37-21.module_el8.2.0+494+1df74eae.x86_64
mod_http2-1.11.3-3.module_el8.2.0+486+c01050f0.1.x86_64 nginx-filesystem-1:1.14.1-9.module_el8.0.0+184+e34fea82.noarch
php-bcmath-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64 php-common-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
php-fpm-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64 php-gd-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
php-json-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64 php-ldap-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
php-mbstring-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64 php-mysqlnd-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
php-pdo-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64 php-xml-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
unixODBC-2.3.7-1.el8.x86_64 zabbix-agent-5.0.4-1.el8.x86_64
zabbix-apache-conf-5.0.4-1.el8.noarch zabbix-server-mysql-5.0.4-1.el8.x86_64
zabbix-web-5.0.4-1.el8.noarch zabbix-web-deps-5.0.4-1.el8.x86_64
zabbix-web-mysql-5.0.4-1.el8.noarch

完了しました!

# mysql -uroot -p
Enter password:                   
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.3.17-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.000 sec)
MariaDB [(none)]> create user zabbix@localhost identified by 'password';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]> quit;
Bye
# systemctl restart zabbix-server zabbix-agent httpd php-fpm
# systemctl enable zabbix-server zabbix-agent httpd php-fpm
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

Enter password:                  
# vi /etc/zabbix/zabbix_server.conf
DBPassword=password

# vi /etc/php-fpm.d/zabbix.conf
; php_value[date.timezone] = Europe/Rigal
php_value[date.timezone] = Asia/Tokyo

#  vi /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=1
EnableRemoteCommands=1
Server=192.168.100.254
ServerActive=192.168.100.254:10051
Hostname=Zabbix server
HostMetadataItem=system.uname
Include=/etc/zabbix/zabbix_agentd.d/*.conf

# journalctl -xe
# ausearch -c 'sh' --raw | audit2allow -M my-sh
# semodule -X 300 -i my-sh.pp
.
.
.      
#  usermod -aG wheel zabbix
# vi /etc/sudoers.d/zabbix
zabbix ALL=(root)NOPASSWD:/usr/bin/nmap
Defaults                     requiretty
Defaults:root         !requiretty
Defaults                     requiretty
Defaults:%wheel  !requiretty
                              

# systemctl restart zabbix-server zabbix-agent httpd php-fpm
Job for zabbix-server.service failed because the control process exited with error code.
See "systemctl status zabbix-server.service" and "journalctl -xe" for details.
# journalctl -xe
-- Unit zabbix-server.service has begun starting up.

9月 29 16:22:11 libre.com zabbix_server[33342]: zabbix_server [33342]: Cannot initialize IPC services: Cannot access path "/var/run/zabbix": [13] Permission denied.

# ausearch -c 'zabbix_server' --raw | audit2allow -M my-zabbixserver
# semodule -X 300 -i my-zabbixserver.pp

# ausearch -c 'php-fpm' --raw | audit2allow -M my-phpfpm
# semodule -X 300 -i my-phpfpm.pp

# systemctl restart zabbix-server zabbix-agent httpd php-fpm
# systemctl enable zabbix-server zabbix-agent httpd php-fpm

Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-server.service → /usr/lib/systemd/system/zabbix-server.service.
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-agent.service → /usr/lib/systemd/system/zabbix-agent.service.
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.

# dnf install zabbix-web-japanese

# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --add-port=10050/tcp --zone=public --permanent
# firewall-cmd --add-port=10051/tcp --zone=public --permanent
# firewall-cmd --reload

# dnf install zabbix-get
Zabbix エージェントの動作確認
# zabbix_get -s 127.0.0.1 -k agent.version
5.0.4


【フロントエンドの設定】
http://localhost/zabbix
user: Admin
password: zabbix




【背景イメージの登録】
   管理→一般設定→表示設定→イメージ→タイプ→背景
【スクリプトの登録】 (コマンドの登録)
  管理→スクリプト→スクリプトの作成
【ダッシュボードへのお気に入り登録】
  「マップ」「スクリプト」の一覧から該当項目を選択して★マークでお気に入入りに登録。
    ※zabbix3.2では、ダッシュボードの「お気に入り」ウジェットから表示項目を選択登録。
      ちょっと悩んだ!!


■zabbix エージェントのインストール(Ver. 5.4)
# dnf install https://repo.zabbix.com/zabbix/5.4/rhel/8/x86_64/zabbix-apache-conf-5.4.7-1.el8.noarch.rpm
# dnf install https://repo.zabbix.com/zabbix/5.4/rhel/8/x86_64/zabbix-agent2-5.4.7-1.el8.x86_64.rpm

# vi /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
 LogFile=/var/log/zabbix/zabbix_agent2.log
 LogFileSize=1
 Server=192.168.100.254
 ServerActive=192.168.100.254:10051
 Hostname=Zabbix Server
 HostMetadata=CentOS
 HostMetadataItem=system.uname
 Include=/etc/zabbix/zabbix_agent2.d/*.conf
AllowKey=system.run[*]

※ AllowKeyを設定した場合は、下記も設定
# visudo
# Allos zabbix to run all commands without password.
zabbix ALL=NOPASSWD: ALL

# firewall-cmd --add-port=10050/tcp --zone=public --permanent
# firewall-cmd --reload
# systemctl start zabbix-agent2
# systemctl enable zabbix-agent2

<確認>
# zabbix_get -s 192.168.100.101  -k agent.version

※ agent2 は、「go」で書き直したもの。
※ SElinux忘れないように!!

スクリプト:なぜかホストに反映されない!!!

■zabbixエージェントでmysql監視
・ローカルユーザ
CREATE USER 'zbx_monitor'@'localhost' IDENTIFIED BY '<password>'; 
GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'localhost';

CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '<password>';
 GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';

# mkdir /var/lib/zabbix
# chown zabbix:zabbix /var/lib/zabbix
# cd /var/lib/zabbix
# vi  /var/lib/zabbix/.my.cnf          # agent2 不要?                                             
[client]
user='zbx_monitor'
password='<password>'

※zabbix-agent2の場合
下記マクロ追加
設定→ホスト→dbsv→マクロ
{$MYSQL.DSN} localhost
{$MYSQL.PASSWORD}  PASSWORD
{$MYSQL.USER} zbx_monitor

警告がでるので、
設定→ホスト→dbsv→マクロ→継承したマクロとホストマクロ
{$MYSQL.BUFF_UTIL.MIN.WARN}       50→40

# systemctl restart zabbix-agent2


■オラクル監視(zabbix-agent2 oracle監視)

・オラクルクライアントのインストール
https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html

# dnf  localinstall  oracle-instantclient19.13-basic-19.13.0.0.0-2.x86_64.rpm

# cat /etc/ld.so.conf.d/oracle-instantclient.conf
/usr/lib/oracle/19.13/client64/lib                               # 確認

https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/src/go/plugins/oracle/README.md

# sqlp / as sysdba

create pluggable database zabbix admin user zbx_admin identified by  <password>;
alter pluggable database zabbix open;
alter pluggable database all save state;
alter session set container=zabbix;

CREATE USER zbx_monitor IDENTIFIED BY <PASSWORD>;
-- Grant access to the zbx_monitor user.
GRANT CONNECT, CREATE SESSION TO zbx_monitor;
GRANT SELECT ON DBA_TABLESPACE_USAGE_METRICS TO zbx_monitor;
GRANT SELECT ON DBA_TABLESPACES TO zbx_monitor;
GRANT SELECT ON DBA_USERS TO zbx_monitor;
GRANT SELECT ON SYS.DBA_DATA_FILES TO zbx_monitor;
GRANT SELECT ON V_$ACTIVE_SESSION_HISTORY TO zbx_monitor;
GRANT SELECT ON V_$ARCHIVE_DEST TO zbx_monitor;
GRANT SELECT ON V_$ASM_DISKGROUP TO zbx_monitor;
GRANT SELECT ON V_$DATABASE TO zbx_monitor;
GRANT SELECT ON V_$DATAFILE TO zbx_monitor;
GRANT SELECT ON V_$INSTANCE TO zbx_monitor;
GRANT SELECT ON V_$LOG TO zbx_monitor;
GRANT SELECT ON V_$OSSTAT TO zbx_monitor;
GRANT SELECT ON V_$PGASTAT TO zbx_monitor;
GRANT SELECT ON V_$PROCESS TO zbx_monitor;
GRANT SELECT ON V_$RECOVERY_FILE_DEST TO zbx_monitor;
GRANT SELECT ON V_$RESTORE_POINT TO zbx_monitor;
GRANT SELECT ON V_$SESSION TO zbx_monitor;
GRANT SELECT ON V_$SGASTAT TO zbx_monitor;
GRANT SELECT ON V_$SYSMETRIC TO zbx_monitor;
GRANT SELECT ON V_$SYSTEM_PARAMETER TO zbx_monitor;


$ zabbix_get -s 192.168.254.203 -k agent.version

$ zabbix_get -s host  -k oracle.ping["{$ORACLE.CONNSTRING}","{$ORACLE.USER}","{$ORACLE.PASSWORD}","{$ORACLE.SERVICE}"]

zabbix_get -s 192.168.254.203 -k oracle.ping["tcp://192.168.254.203:1521","zbx_monitor","password","zabbix.world"]

※ Oracle Database 'ORCL': Force logging is deactivated for DB with active Archivelog
sql> SELECT log_mode, force_logging FROM v$database;
sql> alter DATABASE FORCE LOGGING;

$ zabbix_get -s 192.168.254.203 -k agent.version

$ zabbix_get -s 192.168.254.203 -k 'oracle.instance.info["tcp://192.168.254.203:1521","zbx_monitor","password","zabbix.world"]'
 Connection failed: ORA-00000: DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: Too many open files". See https://oracle.github.io/odpi/doc/installation.html#linux for help.

# zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf -t 'oracle.instance.info["tcp://192.168.254.203:1521","zbx_monitor","password","zabbix.world"]'


2020年9月18日金曜日

CentOS8 VLCインストール

# dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

# dnf -y install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm

# dnf -y install vlc --enablerepo=epel

2020年8月20日木曜日

CentOS8 4K ディスプレイ マウスカーソルを大きくする。

【マウスポインタ拡大】
# dnf install dconf-editor
$ dconf-editor
/org/gnome/desktop/interface/cursor-size
Use default value  -> off
Custom value -> 48

2020年8月2日日曜日

LVM ファイルシステムのマウント

# mount /dev/nvme0n1p3 /mnt/m2
mount: /mnt/m2: 未知のファイルシステムタイプ 'LVM2_member' です.

#  fdisk -l /dev/nvme0n1
ディスク /dev/nvme0n1: 953.9 GiB, 1024209543168 バイト, 2000409264 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: CF0AC781-3B8D-47EF-9919-C722FCFC6598

デバイス       開始位置   終了位置     セクタ サイズ タイプ
/dev/nvme0n1p1     2048    1230847    1228800   600M EFI システム
/dev/nvme0n1p2  1230848    3327999    2097152     1G Linux ファイルシステム
/dev/nvme0n1p3  3328000 2000408575 1997080576 952.3G Linux LVM

# pvs
  PV             VG   Fmt  Attr PSize   PFree
  /dev/nvme0n1p3 cl   lvm2 a--  952.28g    0
  /dev/sda3      cl00 lvm2 a--  464.17g    0

#  vgdisplay cl
  --- Volume group ---
  VG Name               cl
  System ID            
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               952.28 GiB
  PE Size               4.00 MiB
  Total PE              243784
  Alloc PE / Size       243784 / 952.28 GiB
  Free  PE / Size       0 / 0  
  VG UUID               r9wuW5-nnFa-Wvvd-rFFJ-W443-pKW7-oSnE5b

VG nameを変更する場合(同じ場合UUIDで変更)
# vgrename  r9wuW5-nnFa-Wvvd-rFFJ-W443-pKW7-oSnE5b cl-rename

# vgscan --mknodes
  Found volume group "cl00" using metadata type lvm2
  Found volume group "cl" using metadata type lvm2


# lvscan
  ACTIVE            '/dev/cl00/swap' [15.74 GiB] inherit
  ACTIVE            '/dev/cl00/home' [<398.43 GiB] inherit
  ACTIVE            '/dev/cl00/root' [50.00 GiB] inherit
  ACTIVE            '/dev/cl/root' [146.69 GiB] inherit
  ACTIVE            '/dev/cl/home' [745.05 GiB] inherit
  ACTIVE            '/dev/cl/swap' [<60.54 GiB] inherit

# mount /dev/cl/home /mnt/m2

inactiveの場合activeに変更
# vgchange -ay
  3 logical volume(s) in volume group "cl01" now active
  3 logical volume(s) in volume group "cl00" now active
  3 logical volume(s) in volume group "cl" now active

2020年8月1日土曜日

CentOS8インストール

■CentOS8.2インストール
1)OSインストール
               https://www.centos.org/download/






2)tweaks起動( メニューバー設定)
       拡張機能の必要なものをON

3)入力ソースに「日本語(かな漢字)をインストール
# dnf -y install libkkc libkkc-data ibus-kkc
再起動
 











4) epelリポジトリの登録
# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
# dnf repolist all   ←確認

5)clamのインストール(設定は別途)
# dnf --enablerepo=epel install clamav clamav-scanner-systemd clamav-update

6) zabbix リポジトリの登録
# dnf install https://repo.zabbix.com/zabbix/5.4/rhel/8/x86_64/zabbix-release-5.4-1.el8.noarch.rpm
※ 最新版のURLを確認

7) zabbix クライアントのインストール(設定は別途)
# dnf install https://repo.zabbix.com/zabbix/5.4/rhel/8/x86_64/zabbix-agent2-5.4.7-1.el8.x86_64.rpm

8)mariadbのインストール
   a.)  リポジトリ登録
           下記でrepoファイル作成。
           http://downloads.mariadb.org/mariadb/repositories/
          # vi  /etc/yum.repos.d/mariadb.repo
    b.) インストール
          #  dnf install MariaDB

※ 各項目の設定は別途


【CentOS8 インストールUSB からresucueモード起動】

CentOS8 ブートでロックして 起動しなくなったのでレスキューモードで復旧

# hostnamectl set-hostname buffy.com
# nmcli device
# nmcli connection up enp39s0
# ip a
# nmcli device
# ip a

# chroot /mnt/sysimage
# dnf install grub2-efi-x64-modules.noarch
# lsblk
# grub2-install /dev/nvme0n1
# grub2-mkconfig -o /boot/grub2/grub.cfg  # not UEFI
# grub2-mkconfig -o / boot / efi / EFI / centos /grub.cfg      #for UEFI
# touch /.autorelabel

# systemctl status initrd-switch-root.service
Failed to switch root: Specified switch root path 'sysroot' does not seem to be an OS Tree. os-release file is missing.
initrd-switch-root.service:Main process exited, code=exited, status=1/FAILURE
initrd-switch-root.service:Failed with result 'exit-code'.

# cp /boot/initramfs-*.x86_64.img /root    #backup
# dracut --force --regenerate-all

2020年7月22日水曜日

guacamole rdp 接続できない。

# journalctl -u guacd -f

guacd[6309]: WARNING: Support for protocol "rdp" is not installed

【NG】
# rpm -qa guacd  *rdp*
freerdp-libs-2.0.0-4.rc4.el7_8.x86_64
freerdp-devel-2.0.0-4.rc4.el7_8.x86_64

 【OK】
 # rpm -qa guacd *rdp*
freerdp-libs-1.0.2-15.el7.x86_64
freerdp-devel-1.0.2-15.el7.x86_64




【対応】
# yum remove  freerdp-libs

# vi /etc/yum.repos.d/CentOS-Vault.repo
# C7.6.1810
[C7.6.1810-base]
name=CentOS-7.6.1810 - Base
baseurl=http://vault.centos.org/7.6.1810/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1 ←一時的に1にする。

# yum install freerdp-devel-1.0.2-15.el7

# vi /etc/yum.repos.d/CentOS-Vault.repo
 enabled=0 ←0に戻す。

2020年6月18日木曜日

Django プロジェクト作成

1.環境構築
1-1 インストールモジュールとバージョン

$ python3 --version
Python 3.6.8

$ mysql --version
mysql  Ver 8.0.18 for Linux on x86_64 (MySQL Community Server - GPL)

$  mysql --version
mysql  Ver 15.1 Distrib 10.3.17-MariaDB, for Linux (x86_64) using readline 5.1

1-2 pythonのインストール

python Ver3.6をインストール

# yum install python36 python3-libs python36-devel
# python36 -m ensurepip       # pip(パッケージ管理ツール) を使えるようにする。
                              # 以降は、pipでパッケージをインストール。

1-3 python仮想実行環境の構築
pythonは、様々なバージョンの組み合わせの仮想実行環境を構築する事ができます。
# cd /usr/bin
# ln -s /usr/libexec/platform-python3.6 python36
# mkdir ~/Python_env
# cd ~/Python_env
# python36 -m venv venv36-d30
(# chmod -R a+rq /usr/local/venv36-d30)             # 一般ユーザで実行する場合
$ source ~/Python_env/venv36-d30/bin/activate

※下記環境がセットされる。
VIRTUAL_ENV=/home/takahab/Pyhton_env/venv/venv36
PATH=/home/takahab/Python_env/venv/venv36-d30/bin:$PATH
deactivate () {}

※ 必要なモジュールをpip3でインストールする。

1-4 Djangoのインストール
Django 3.0をインストール
$ pip3 install --upgrade pip
$ pip3 install Django

$ pip3 list
Package    Version
---------- -------
asgiref             3.2.10
Django             3.0.9
pip                     20.2
pytz                   2020.1
setuptools     39.2.0
sqlparse          0.3.1


1-5 モジュール更新( アプリケーションのバージョン環境に合わせる)

$ source /usr/local/venv36-d30/bin/activate
$ pip3 install --upgrade pip   (--proxy=http://192.168.1.xx:3128)
$ pip3 list
$ pip3 list --outdated               # 更新モジュールを表示します。
$ pip3 list --outdated | awk 'NR>2 {print $1}' | xargs pip3 install -U
$ pip3 freeze>requirements.txt
$ pip3 install -r requirements.txt   # requirements.txt内のバージョンの
                                     # モジュールをインストールします。

1-6 Djangoプロジェクトの作成

$ django-admin startproject Config
$ mv Config Project
$ cd Project
$ python36 manage.py startapp app

Project
├── Config
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-36.pyc
│   │   └── settings.cpython-36.pyc
│   ├── asgi.py
│   ├── settings.py          # 各種設定
│   ├── urls.py
│   └── wsgi.py              # Web Server Gateway Interface(ウィズギー)
├── app
│   ├── __init__.py
│   ├── admin.py

│   ├── apps.py
│   ├── migrations            # データベース定義を自動的に作成管理するコードが自動生成される。
│   │   └── __init__.py
│   ├── models.py             # データベースフィルド定義
│   ├── tests.py
│   └── views.py              # GET/POST 処理
└── manage.py


1-7 settings.pyの編集

$ vi ./Config/settings.py
LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'

INSTALLED_APPS = [
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  'app.apps.ApiConfig',             # 追記
]


$ vi Config/urls.py
from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),

    path('app/', include('app.urls',   namespace='app')),    # 追記
]


# 以下、新規ファイル作成
$ vi app/urls.py
from django.urls import path
from . import views

app_name = 'app'

urlpatterns = [
    path('',        views.Index_View.as_view(), name='index') ,
    path('index/',  views.Index_View.as_view(), name='index') ,
]


2 デーベース

2-1 mysqlデータベース設定

mysql> create database django;            # django用空DB作成

mysql> use mysql
mysql> select user, host, plugin from user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| admin            | %         | mysql_native_password |<--※
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)
mysql> quit

2-2 settings.pyの設定

$ vi Config/settings.py
import pymysql
pymysql.install_as_MySQLdb()
※  mysqlデータベースのバージョンによって初期化方法は異ります。

DATABASES = {
   'default': {
      'ENGINE': 'django.db.backends.mysql',
      'NAME': 'django',       # 予め空DBを作成しておく。
      'USER': 'admin',
      'PASSWORD':'password',
      'HOST': '',
      'PORT': '',
      'OPTIONS': {
            'charset': 'utf8mb4',
      },
      'ATOMIC_REQUESTS': True,
   },
   'service_db': {
      'ENGINE': 'django.db.backends.mysql',
      'NAME': 'service_data',   # 予め空DBを作成しておく。
      'USER': 'admin',
      'PASSWORD':'password',
      'HOST': '',
      'PORT': '',
      'OPTIONS': {
            'charset': 'utf8mb4',
      },
      'ATOMIC_REQUESTS': False,
   }
}

※  mysqlデータベースのインストール方法は省略します。

2-3 oracleの設定
# python36 -m pip install cx_oracle

ここから該当バージョンのドライバをタウンロード
https://www.oracle.com/technetwork/jp/database/features/instant-client/index-352321-ja.html
instantclient-basic-linux.x64-11.2.0.4.0.zip

# cd /opt/libs
# unzip instantclient-basic-linux.x64-11.2.0.4.0.zip
# ln -s /opt/libs/instantclient_11_2 /opt/libs/oracle
# vi /etc/profile
export LD_LIBRARY_PATH=/opt/libs/oracle:$LD_LIBRARY_PATH
# . /etc/profile

# vi /etc/sysconfig/httpd
LD_LIBRARY_PATH=/opt/libs/oracle:$LD_LIBRARY_PATH



3. サービスの起動(デバック起動)
3-1 起動前準備

1) キャシュクリア
$ vi clean
rm -f  app/migrations/000?_initial.py
rm -f  app/migrations/000?_auto_*.py
rm -rf app/migrations/__pycache__

2) マイグレションと起動
$ vi build
echo python36 manage.py makemigrations-------------------------------
python36 manage.py makemigrations

echo python36 manage.py migrate--------------------------------------
python36 manage.py migrate

echo python36 manage.py createsuperuser------------------------------
python36 manage.py createsuperuser

echo python36 manage.py runserver 0.0.0.0:8000-----------------------
python36 manage.py runserver 0.0.0.0:8000

3-2 起動
$ ./clean
$ ./build
ユーザ名、mail、パスワード入力

※ 2回目以降のユーザ名入力は、[Cntl+C]でキャンセルする事ができます。


4. Apache連携_(20210726更新)

VENV仮想環境を構築してから下記を行う。
0) コンパイル環境とHTTPD開発環境をインストール
# dnf group install "Development Tools"
# dnf install httpd-devel
# dnf install python36-devel
# curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
# dnf install MariaDB-devel

1) WSGIインストール
$ pip3 install mod-wsgi
$ pip3 install mod-wsgi-httpd
※ mod-wsgi-httpdは、少し時間がかかる


$  pip3 freeze|grep wsgi
mod-wsgi==4.8.0
mod-wsgi-httpd==2.4.46.1

# vi /etc/httpd/conf.modules.d/20-wsgi.conf
LoadModule wsgi_module /var/www/wsgi/test/myenv/venv36-d324/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so

# vi /etc/httpd/conf.d/wsgi.conf

#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300

WSGISocketPrefix /var/run/wsgi

WSGIDaemonProcess test user=apache group=apache processes=10 threads=15 \
       home=/var/www/wsgi/test\
       python-home=/var/www/wsgi/test/myenv/venv36-d324 \
       python-path=/var/www/wsgi/test/django:/var/www/wsgi/test/myenv/venv36-d324/lib/python3.6/site-packages

WSGIScriptAlias  /test /var/www/wsgi/test/Config/wsgi.py process-group=test

Alias /static/  /var/www/wsgi/test/static/
Alias /media/   /var/www/wsgi/test/media/

WSGIPassAuthorization on

<Location /test>
       WSGIProcessGroup test
</Location>




4. Apache連携

VENV仮想環境を構築してから下記を行う。

0) コンパイル環境とHTTPD開発環境をインストール
# dnf install httpd
# dnf group install "Development Tools"
# dnf install httpd-devel

1) WSGIインストール
# pip3 install mod-wsgi
# pip3 install mod-wsgi-httpd
# ※ mod-wsgi-httpdは、少し時間がかかる。
# pip3 freeze|grep wsgi
mod-wsgi==4.6.5
mod-wsgi-httpd==2.4.35.1
# ls /usr/local/venv36/lib64/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so

※ pip3 install mod-wsgiで下記エラーが発生
※RuntimeError: The 'apxs' command appears not to be installed or is not executable.
下記をインストール
# dnf install httpd-devel

2) Apache(httpd)の設定
# vi /etc/httpd/conf.modules.d/20-wsgi.conf
LoadModule wsgi_module /usr/local/venv36/lib64/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so
# httpd -M|grep wsgi
wsgi_module (shared)
# vi /etc/httpd/conf.d/wsgi.conf
#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300 

WSGIApplicationGroup %{GLOBAL}

WSGISocketPrefix /var/run/wsgi

WSGIDaemonProcess test user=apache group=apache processes=1 threads=100 maximum-requests=10000 \
       home=/var/www/wsgi/test \
       python-home=/var/www/wsgi/test/myenv/venv36-d324 \
       python-path=/var/www/wsgi/test/django:/var/www/wsgi/test/myenv/venv36-d324/lib/python3.6/site-packages \
       lang=ja_JP.utf8

WSGIScriptAlias  /test /var/www/wsgi/test/Config/wsgi.py process-group=test

Alias /static/  /var/www/wsgi/test/static/
Alias /media/   /var/www/wsgi/test/media/

WSGIPassAuthorization on

<Location /test>
       WSGIProcessGroup test 
</Location>


# vi /etc/sysconfig/httpd
LD_LIBRARY_PATH=/opt/libs/oracle:$LD_LIBRARY_PATH

# mkdir /var/www/wsgi

# apachectl configtest
Syntax OK
# curl localhost/analyze
# systemctl restart httpd

※pip3 install 時のエラー
ERRPR:   /bin/sh: mariadb_config: コマンドが見つかりません
# yum install MariaDB-devel
ERROR: /usr/bin/ld: -lmariadb が見つかりません
# yum install MariaDB-shared
ERROR: ImportError: Unable to find zbar shared library
# yum install zbar

5. ディレクトリ体型

Analyze                          # プロジェクト
├── Config                       # プロジェクトの設定
│   ├── routers.py
│   ├── settings.py              # 各種設定
│   ├── urls.py                  # URL(ベース)
│   └── wsgi.py
├── README
├── Users                        # ログインアプリ
│   ├── __init__.py
│   ├── __pycache__
│   ├── migrations
│   ├── admin.py
│   ├── apps.py
│   ├── forms.py
│   ├── models.py                # データベースが自動生成される。
│   ├── tests.py
│   ├── urls.py
│   └── views.py                 # リクエスト(get/post)を受けてレスポンスを返す。
├── api                          # クラウドAPI
│   ├── __init__.py
│   ├── __pycache__
│   ├── admin.py
│   ├── apis_net.py
│   ├── apis_ttg.py
│   ├── apps.py
│   ├── database_net.py
│   ├── database_ttg.py
│   ├── errors.py
│   ├── main.py
│   ├── models.py
│   ├── sliputil.py
│   ├── tables.py
│   ├── tests.py
│   ├── totalizer.py
│   ├── urls.py
│   └── views.py
├── app                          # 顧客情報照会アプリ
│   ├── __init__.py
│   ├── __pycache__
│   ├── migrations
│   ├── admin.py
│   ├── apps.py
│   ├── business.py
│   ├── forms.py
│   ├── jasper.py
│   ├── models.py
│   ├── ora2xls.py
│   ├── oracle.py               # oracle sql クラス定義
│   ├── oracle_base.py          # oracle sql ベースクラス
│   ├── oracle0.py              # oracle sql ファイル(サンプル)
│   ├── oracle1.py              # oracle sql ファイル(コールセンター用SQL)
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── menu                          # メニューアプリ
│   ├── __init__.py
│   ├── __pycache__
│   ├── migrations
│   ├── admin.py
│   ├── apps.py
│   ├── forms.py
│   ├── menus.py
│   ├── models.py
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── shop                         # レジ検証アプリ(ネットショップ)
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── core
│   │   ├── README
│   │   ├── carts.py
│   │   ├── cipher.py
│   │   ├── cloud.py
│   │   ├── databases.py
│   │   ├── payments.py
│   │   ├── settings.py
│   │   └── slips.py
│   ├── forms.py
│   ├── migrations
│   ├── models.py
│   ├── tests.py
│   ├── urls.py
│   ├── utils.py
│   └── views.py

├── assets                       # static 収集領域
├── static                       # static 格納場所(bootstrap,js,css 等 )
├── media                        # upload 等領域
├── templates                    # Django テンプレート
│   ├── Users
│   ├── app
│   ├── menu
│   └── shop

├── env                          # 仮想環境設定シェル
├── clean                        # キャッシュ/マイグレション情報クリアシェル
└── build                        # マイグレーション&デバック実行


6. djangoフレームワーク

6-1 構造


    DB────>sql────>VIEW────>context──── template── SCREEN(data table)  # 検索、並び換えが可能
                             │                  └──>SCREEN(chartjs)    # 各種グラフ
                             ├─── jasperReport(pdf)
                             ├─── jasperReport(excel)   # ページ区切り有
                             ├─── jasperReport(csv)     # ページ区切り有
                             ├─── jasperReport(json)    # ページ区切り有
                             ├─── dataGenerator(excel)  # ページ区切り無
                             ├─── dataGenerator(csv)    # ページ区切り無
                             └─── dataGenerator(json)   # ページ区切り無


views.py

  context ={ 'fields':{ 'key1':val1, 'key2:val2 } }

template.html

       {% for key, val in fields.items %}
          {{ key }}:{{ val }}
       {% endfor %}


  ※  python 表記

       fields = context[ 'fields' ]
       for key , val in fields.items():
          print( key, ':', val )

2020年6月4日木曜日

CentOS8 samba インストール

sh-4.4# dnf -y install samba
sh-4.4#  which smbd nmbd
/sbin/smbd
/sbin/nmbd
sh-4.4# systemctl start smb nmb
sh-4.4#  systemctl enable smb nmb
Created symlink /etc/systemd/system/multi-user.target.wants/smb.service → /usr/lib/systemd/system/smb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/nmb.service → /usr/lib/systemd/system/nmb.service.

sh-4.4# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp39s0
  sources:
  services: cockpit dhcpv6-client mysql ssh
  ports: 3389/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

sh-4.4#  firewall-cmd --add-service=samba --permanent
success
sh-4.4#  firewall-cmd --reload
success
sh-4.4#  firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp39s0
  sources:
  services: cockpit dhcpv6-client mysql samba ssh
  ports: 3389/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

sh-4.4# vi /etc/samba/smb.conf
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.

[global]
workgroup = WORKGROUP
server string = SAMBA SERVER Version %v
netbios name = fs
security = user

passdb backend = tdbsam

dos charset = CP932
wins support = yes
# printing = cups
# printcap name = cups
load printers = no
disable spoolss = yes
# cups options = raw

[Share]
comment = Share Folder for All Users
path = /home/share/
browsable = yes
read only = no

[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes

#[printers]
# comment = All Printers
# path = /var/tmp
# printable = Yes
# create mask = 0600
# browseable = No
#
#[print$]
# comment = Printer Drivers
# path = /var/lib/samba/drivers
# write list = @printadmin root
# force group = @printadmin
# create mask = 0664
# directory mask = 0775
sh-4.4#
sh-4.4# cd /home
sh-4.4# mkdir share
sh-4.4# chmod -R a+rwx share
sh-4.4# chown -R nobody:nobody share
sh-4.4# # systemctl restart smb nmb
sh-4.4# systemctl status smb nmb
● smb.service - Samba SMB Daemon
   Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-06-04 15:22:26 JST; 59min ago
     Docs: man:smbd(8)
           man:samba(7)
           man:smb.conf(5)
 Main PID: 27908 (smbd)
   Status: "smbd: ready to serve connections..."
    Tasks: 4 (limit: 26213)
   Memory: 19.7M
   CGroup: /system.slice/smb.service
           ├─27908 /usr/sbin/smbd --foreground --no-process-group
           ├─27911 /usr/sbin/smbd --foreground --no-process-group
           ├─27912 /usr/sbin/smbd --foreground --no-process-group
           └─27913 /usr/sbin/smbd --foreground --no-process-group

 6月 04 15:22:26 libra.jp systemd[1]: Starting Samba SMB Daemon...
 6月 04 15:22:26 libra.jp smbd[27908]: [2020/06/04 15:22:26.332766,  0] ../../lib/util/become_daemon.c>
 6月 04 15:22:26 libra.jp smbd[27908]:   daemon_ready: daemon 'smbd' finished starting up and ready to>
 6月 04 15:22:26 libra.jp systemd[1]: Started Samba SMB Daemon.

● nmb.service - Samba NMB Daemon
   Loaded: loaded (/usr/lib/systemd/system/nmb.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-06-04 15:22:26 JST; 59min ago
     Docs: man:nmbd(8)
           man:samba(7)
           man:smb.conf(5)
 Main PID: 27909 (nmbd)
   Status: "nmbd: ready to serve connections..."
    Tasks: 1 (limit: 26213)
   Memory: 5.3M
   CGroup: /system.slice/nmb.service
           └─27909 /usr/sbin/nmbd --foreground --no-process-group

 6月 04 15:23:00 libra.jp nmbd[27909]:
 6月 04 15:23:00 libra.jp nmbd[27909]:   Samba name server LIBRA is now a local master browser for wor>
 6月 04 15:23:00 libra.jp nmbd[27909]:
 6月 04 15:23:00 libra.jp nmbd[27909]:   *****
 6月 04 15:23:00 libra.jp nmbd[27909]: [2020/06/04 15:23:00.369477,  0] ../../source3/nmbd/nmbd_become>
 6月 04 15:23:00 libra.jp nmbd[27909]:   *****
 6月 04 15:23:00 libra.jp nmbd[27909]:
 6月 04 15:23:00 libra.jp nmbd[27909]:   Samba name server LIBRA is now a local master browser for wor>
 6月 04 15:23:00 libra.jp nmbd[27909]:
 6月 04 15:23:00 libra.jp nmbd[27909]:   *****


sh-4.4# pdbedit -a -u takahab -f "Masanobu Takahashi"
new password:
retype new password:
Unix username:        takahab
NT username:       
Account Flags:        [U          ]
User SID:             S-1-5-21-3479312465-2406587434-1385072247-1000
Primary Group SID:    S-1-5-21-3479312465-2406587434-1385072247-513
Full Name:            Masanobu Takahashi
Home Directory:       \\fs\takahab
HomeDir Drive:     
Logon Script:       
Profile Path:         \\fs\takahab\profile
Domain:               FS
Account desc:       
Workstations:       
Munged dial:       
Logon time:           0
Logoff time:          木, 07  2月 2036 00:06:39 JST
Kickoff time:         木, 07  2月 2036 00:06:39 JST
Password last set:    木, 04  6月 2020 16:03:13 JST
Password can change:  木, 04  6月 2020 16:03:13 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
sh-4.4# pdbedit -L
takahab:1000:Masanobu Takahashi
sh-4.4# pdbedit -L -v -w
---------------
Unix username:        takahab
NT username:       
Account Flags:        [U          ]
User SID:             S-1-5-21-3479312465-2406587434-1385072247-1000
Primary Group SID:    S-1-5-21-3479312465-2406587434-1385072247-513
Full Name:            Masanobu Takahashi
Home Directory:       \\fs\takahab
HomeDir Drive:     
Logon Script:       
Profile Path:         \\fs\takahab\profile
Domain:               FS
Account desc:       
Workstations:       
Munged dial:       
Logon time:           0
Logoff time:          木, 07  2月 2036 00:06:39 JST
Kickoff time:         木, 07  2月 2036 00:06:39 JST
Password last set:    木, 04  6月 2020 16:03:13 JST
Password can change:  木, 04  6月 2020 16:03:13 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
LM hash             : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
NT hash             : 2C356A91505CE6E3673D17DDB5BCC0E4

2020年5月13日水曜日

Django Object of type 'UUID' is not JSON serializable

Django のpkをuuid に変えたところ、

ERROR :   Object of type 'UUID' is not JSON serializable

下記で解消。

vi models.py
#
# Fixed for the following error by takahab
# ERROR: Object of type 'UUID' is not JSON serializable
#
#--------------------ここから-------------------------------
from json import JSONEncoder
from uuid import UUID
JSONEncoder_olddefault = JSONEncoder.default
def JSONEncoder_newdefault(self, o):
    if isinstance(o, UUID): return str(o)
    return JSONEncoder_olddefault(self, o)
JSONEncoder.default = JSONEncoder_newdefault
#-----------------ここまで----------------------------------

2020年4月29日水曜日

xsane gimp blender インストール

# dnf install gimp xsane xsane-gimp

https://www.blender.org/download/

# xz -dv  blender-2.83.3-linux64.tar.xz
# mkdir /opt/blender
# mv  blender-2.83.3-linux64.tar /opt/blender
# cd /opt/blender
# tar xvf blender-2.83.3-linux64.tar
# cd /usr/local/bin
# ln -s /opt/blender/blender-2.83.3-linux64/blender blender

blender 日本語化
edit->Preferences->interface->Translation->Language


【ブラザースキャナー設定】
ダウンロード
https://support.brother.co.jp/j/b/downloadlist.aspx?c=jp&lang=ja&prod=dcpj982n&os=127

# rpm -ihv brscan4-0.4.9-1.x86_64.rpm
# rpm -ihv brscan-skey-0.3.1-1.x86_64

# brsaneconfig4 -a name=DCP-J982N model=DCP-J982N ip=192.168.1.200

設定を消す場合。
# rm /etc/opt/brother/scanner/brscan4/brsanenetdevice4.cfg

2020年4月19日日曜日

CentOS8 oracle19 インストール

【オラクルバックアップ】

$ exp user/password@sid  file=/tmp/FULL.dmp log=/tmp/FULL.log full=y

$ nice -n 19 openssl enc -aes-256-cbc -e -in FULL.dmp -out FULL.dmp.enc


【マウントした他ディスクにデータを置く場合。】
/u01にデータを格納するディスクをあらかじめマウント
# midir /u01
# vi /etc/fstab
/dev/vdb /u01 xfs defaults
# sync;reboot

※ メモリーは、8G以上が望ましいと思われる。(4Gだと、insufficient free space 発生?)

# dnf -y install binutils gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libgcc.i686 libstdc++ libstdc++-devel libXi libXtst libnsl make sysstat

# grep MemTotal /proc/meminfo
MemTotal: 3825716 kB
# grep SwapTotal /proc/meminfo
SwapTotal: 2097148 kB
# df -h /tmp
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mapper/rl-root 17G 5.3G 12G 31% /

# df -h /dev/shm
ファイルシス サイズ 使用 残り 使用% マウント位置
tmpfs 1.9G 0 1.9G 0% /dev/shm

※ HugePage無効化の確認。(有効の場合は、ORACLE自動メモリ管理が動作しない。)
#  cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
--------------------無効化は、GRUB修正---------------------------------------------------------------
# vi /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=ol/root rd.lvm.lv=ol/swap rhgb quiet transparent_hugepage=never"
#  grub2-mkconfig -o /boot/grub2/grub.cfg
# systemctl reboot
---------------------------------------------------------------------------------------------------------------
※IOスケジューラの確認
# cat /sys/block/vda/queue/scheduler
[mq-deadline] kyber bfq none


【カーネルパラメータ設定】
# vi /home/oracle/settings.sh
echo =========================変更前=============================
sysctl -a | grep -e aio-max-nr  -e  file-max -e shmmax -e shmmni -e shmall 

MEMTOTAL=$(free -b | sed -n '2p' | awk '{print $2}')
SHMMAX=$(expr $MEMTOTAL / 2)
SHMMNI=4096
PAGESIZE=$(getconf PAGE_SIZE)

cat > /etc/sysctl.d/90-oracle_database_sysctl.conf << __EOF__
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmax = $SHMMAX
kernel.shmall = $(expr \( $SHMMAX / $PAGESIZE \) \* \( $SHMMNI / 16 \))
kernel.shmmni = $SHMMNI
kernel.sem = 250 32000 100 128
kernel.panic_on_oops = 1
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
__EOF__
echo ========================変更後==============================
sysctl -a | grep -e aio-max-nr  -e  file-max -e shmmax -e shmmni -e shmall 

# sh /home/oracle/settings.sh

# vi /etc/security/limits.d/90-oracle_database_limits.conf                          # 新規作成
oracle          soft    nproc           2047
oracle          hard    nproc           16384   
oracle          soft    nofile          1024
oracle          hard    nofile          65536   
oracle          soft    stack           10240   
oracle          hard    stack           32768   
oracle          hard    memlock         134217728
oracle          soft    memlock         134217728
oracle          soft    data            unlimited
oracle          hard    data            unlimited

# sync;systemctl reboot


【グループとユーザの作成】
# i=2000; for group in oinstall dba oper backupdba dgdba kmdba asmdba asmoper asmadmin racdba; do
groupadd -g $i $group; i=$(expr $i + 1)
done
# useradd -u 2000 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba,racdba -d /home/oracle oracle
# passwd oracle

# su  - oracle
$ vi ~/.bash_profile
export ORACLE_BASE=/u01/app/oracle       # ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRATY_PATH:$ORACLE_HOME/lib
export ORACLE_SID=orcl
export LANG=ja_JP.utf-8
export NLS_LANG=Japanese_Japan.AL32UTF8
export CV_ASSUME_DISTID=RHEL8.2
export TNS_ADMIN
umask 022

$ . ./.bash_profile


【ダウンロード LINUX.X64_193000_db_home.zip】

# su - oracle
$ mkdir oracle19c
$ mv LINUX.X64_193000_db_home.zip  ~/oracle19c/
# su
# mkdir -p /u01/app/oracle/product/19c/dbhome_1 
# chown -R oracle:oinstall /u01/app
# chmod -R 775 /u01

# mkdir -p /u01/app/oraInventory
# chown oracle:oinstall /u01/app/oraInventory
# chmod -R 775 /u01

# su - oracle
$ ln -s /u01/app/oracle/product/19c/dbhome_1 database
$ unzip ~/oracle19c/LINUX.X64_193000_db_home.zip -d ~/database/

$ cd database
$ export LANG=C
$  ./runInstaller

1) Set up Software Only
2) Single instance database installation
3) Enterprise Edition
4) Oracle base:  /u01/app/oracle
5) Inventory Directory:  /u01/app/oraiventory
     oralinventory Group Name: oinstall
6) dba/oper/backupdba/dgdba/kmdba/racdba
7) Automatically run configuration scripts              # Autoにしなければ、手動で実行。
    Use "root" user credential   
    Password  xxxxxxx
8) Verification Result Swap Size :  Ignore All

The registration of Oracle Database was successful 
close

# su - oracle
$ export LANG=C
$ dbca
1) Create a database
2) Advanced configuration
3) Oracle Single Instance database/ Custom Database
4) Global database name: orcl.world
     SID: orcl           
     Create as Container database
     Create a Container database with on or more PDBs
     PDB name: pdb_orcl
5) Use following for the database storage attributes/ File System /
      {ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/ Use oracle-Managed Files(OMF)
6) Fast Recovery Option ( Specify Fast .../ Enable archiving )
7) Create new listener (Listener name:LISTENER   port:1521)
8) Database components ( all off )
9) Memory: Use Automatic Shared Memory Management
10) Sizing:8192/320
11) Character sets: Use Unicode (AL32UTF8)  japaneze/japan
12) Conneciton mode:Shared server mode
13) Samle schemas(off)
14) Management Option: Cofigure Enterprise Manger(EM) database express/5500
       Cofigure EM database express port as global port -> on
15) Use the same administrative password for al accounts( **%00****% )
16) Creation Option : Create database

すごく時間がかかる!!!

※dbca 日本語が字化けする。
$ vi /u01/app/oracle/product/19c/dbhome_1/bin/dbca
#JRE_DIR=/home/oracle/oracle19c/jdk/jre
JRE_DIR=/usr/lib/jvm/jre

1) 起動
# firewall-cmd --zone=public --add-port=5500/tcp --permanent
# firewall-cmd --zone=public --add-port=1521/tcp --permanent
# firewall-cmd --reload

$ sqlplus user@password@databasename   (or sid )
or
$ sqlplus / as sysdba
SQL> staratup
SQL>  alter user sys identified by password;
SQL> show con_name                                       # Container Name 確認

■ EM Expressの有効化
SQL> exec DBMS_XDB_CONFIG.SETHTTPSPORT(5500);
SQL> select dbms_xdb_config.getHttpsPort() from dual;
SQL> exec dbms_xdb_config.SetGlobalPortEnabled(TRUE);
SQL> exit

$ lsnrctl status LISTENER
$ lsnrctl start    LISTENER
$ lsnrctl stop     LISTENER

URL: https://localhost:5500/em
USR: sys
PW:password
Container Name:CDB$ROOT 

※初期パスワード
sys         : change_on_install
system : manager
→初期パスワードでは、emのログインできなかった。
    パスワード設定を行う必要あり。

【起動手順-まとめ】
■起動
$ sqlpluse / as sysdba
sql > startup
SQL>  alter user sys identified by password;
sql> exec DBMS_XDB_CONFIG.SETHTTPSPORT(5500);
sql> select dbms_xdb_config.getHttpsPort() from dual;
sql> exec dbms_xdb_config.SetGlobalPortEnabled(TRUE);
$!
URL https://192.168.100.203:5500/em
URL: https://localhost:5500/em
USR: sys
PW:password
Container Name:CDB$ROOT 
※起動するまでに少し時間がかかる。

■ PDB作成(データベースの作成)
$ sqlplus / as sysdba
sql> show con_name
sql> create pluggable database salespdb admin user salesadm identified by password;

sql> alter pluggable database salespdb open;
sql> show pdbs        <- マウント状態確認
sql>  alter session set container=salespdb;
sql> create user admin identified by password;
sql> alter USER admin identified by "new password";
sql> grant connect to admin;
sql> grant create table to admin;
sql> grant SELECT any table ,UPDATE any table ,DELETE any table ,INSERT any table to admin;
sql> grant CREATE any table to admin;
sql> grant DROP any table to admin;
sql> grant unlimited tablespace to admin;

sql>  grant create any index to admin;
sql> grant drom any index to admin;
sql> grant alter table to admin;

sql> alter pluggable database salespdb close;
sql> drop pluggable database salespdb including datafiles;

sql> conn admin @pdb_orcl
sql> col table_name for a30
sql> col tablespace_name for a15
sql> select table_name,tablespace_name, num_rows, status, blocks from user_tables;
sql> def
sql> alter pluggable database pdb_orcl close immediate;               # 指定PDB停止
sql>  alter pluggable database all close immediate;                            # 全停止
sql>  shutdown immediate;                                                                            # CDB停止 


※ パスワードを無期限に変更
sql> alter profile default limit password_life_time unlimited;
※ ロック解除
sql> alter user <username> account unlock;
※ 再設定
sql> alter user ADMIN identified by "パスワード";
※ 確認 
sql> select * from dba_profiles where resource_name = 'PASSWORD_LIFE_TIME';
sql>SELECT u.username, p.limit FROM dba_users u
        INNER JOIN dba_profiles p    ON         u.profile = p.profile
                                                                    AND p.resource_name = 'PASSWORD_LIFE_TIME'  
        WHERE u.username = 'ADMIN';

$ sqlp admin/PW%xxxxxx%@localhost:1521/arcsdbms.world
$ cat file | sqlp -s admin/PW%xxxxxx%@localhost:1521/arcsdbms.world

Dbeaver でアクセス可能
サービス名:salespdb.world
ID:                  admin
PW:                   password


■ オラクル自動起動
# vi /etc/oratab
orcl:/u01/app/oracle/product/19c/dbhome_1:Y

vi /etc/sysconfig/env.oracle
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
PATH=$PATH:/usr/bin:$ORACLE_HOME/bin
LD_LIBRARY_PATH=$LD_LIBRATY_PATH:$ORACLE_HOME/lib
NLS_LANG=Japanese_Japan.AL32UTF8
ORACLE_SID=orcl

# vi /etc/systemd/system/oracle.service
[Unit]
Description=Oracle Databaes Service
After=network.target oraclelsnr.service
[Service]
Type=forking
RemainAfterExit=yes
TimeoutStopSec=5min
EnvironmentFile=/etc/sysconfig/env.oracle
ExecStart=/u01/app/oracle/product/19c/dbhome_1/bin/dbstart  $ORACLE_HOME ExecStop=/u01/app/oracle/product/19c/dbhome_1/bin/dbshut   $ORACLE_HOME Restart=no
User=oracle
Group=oinstall
KillMode=none
[Install]
WantedBy=multi-user.target

# systemctl daemon-reload
# systemctl start oracle

■ pdbの自動起動
sql> alter pluggable database salespdb open;
sql> alter pluggable database all save state;
sql> alter pluggable database pdb1, pdb2 save state;        #個別の場合
※ 上記コマンドは、今の状態をセーブするコマンドなので、起動した状態で実行。

【ZABBIXでoracle監視】 
Rocky8.7 + oracle19c + zabbix6.4


ホストマクロ設定(ホスト→マクロ→ホストマクロ)
{$ORACLE.CONNSTRING}   : tcp://localhost:1521
{$ORACLE.SERVICE}              : zabbix
{$ORACLE.PASSWORD}        : zbx%xxxxxx%
{$ORACLE.USER}                     : zabbix_mon

Install Oracle Instant Client.

SQL> create pluggable database zabbix admin user zbx_admin identified by "zbx%xxxxxxxx%" file_name_convert=( 'ORCLCDB','ZABBIX');
sql> alter pluggable database zabbix open;
SQL> alter session set container=ZABBIX;

To create Oracle user with required privileges, run:
CREATE USER zabbix_mon IDENTIFIED BY  "zbx%xxxxxx%";
-- Grant access to the zabbix_mon user.
GRANT CONNECT, CREATE SESSION TO zabbix_mon;
GRANT SELECT ON DBA_TABLESPACE_USAGE_METRICS TO zabbix_mon;
GRANT SELECT ON DBA_TABLESPACES TO zabbix_mon;
GRANT SELECT ON DBA_USERS TO zabbix_mon;
GRANT SELECT ON SYS.DBA_DATA_FILES TO zabbix_mon;
GRANT SELECT ON V_$ACTIVE_SESSION_HISTORY TO zabbix_mon;
GRANT SELECT ON V_$ARCHIVE_DEST TO zabbix_mon;
GRANT SELECT ON V_$ASM_DISKGROUP TO zabbix_mon;
GRANT SELECT ON V_$DATABASE TO zabbix_mon;
GRANT SELECT ON V_$DATAFILE TO zabbix_mon;
GRANT SELECT ON V_$INSTANCE TO zabbix_mon;
GRANT SELECT ON V_$LOG TO zabbix_mon;
GRANT SELECT ON V_$OSSTAT TO zabbix_mon;
GRANT SELECT ON V_$PGASTAT TO zabbix_mon;
GRANT SELECT ON V_$PROCESS TO zabbix_mon;
GRANT SELECT ON V_$RECOVERY_FILE_DEST TO zabbix_mon;
GRANT SELECT ON V_$RESTORE_POINT TO zabbix_mon;
GRANT SELECT ON V_$SESSION TO zabbix_mon;
GRANT SELECT ON V_$SGASTAT TO zabbix_mon;
GRANT SELECT ON V_$SYSMETRIC TO zabbix_mon;
GRANT SELECT ON V_$SYSTEM_PARAMETER TO zabbix_mon;

SQL> create profile ZABBIX limit PASSWORD_LIFE_TIME unlimited;
SQL> alter user zabbix_mon profile ZABBIX;
SQL> alter profile ZABBIX limit PASSWORD_LIFE_TIME unlimited;

接続確認
$ vi   /opt/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora << __EOF__
ZABBIX =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ip-192-168-200-201.ap-northeast-1.compute.internal)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ZABBIX)
    )
  )
__EOF__
$ sqlplus zabbix_mon/zbx%xxxxxx%@zabbix
$ zabbix_get -s oracle-host -k oracle.ping["{$ORACLE.CONNSTRING}","{$ORACLE.USER}","{$ORACLE.PASSWORD}","{$ORACLE.SERVICE}"]
zabbix_get -s 192.168.200.201 -k
$ oracle.ping["tcp://localhost:1521","ZABBIX_MON","zbx%xxxxxx%","ZABBIX"]

【ZABBIXで監視】
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> alter session set container=PDB_ORCL;
 セッションが変更されました。

SQL> startup
プラガブル・データベースがオープンされました。
SQL> CREATE USER zbx_monitor IDENTIFIED BY "No%xxxxxx%" DEFAULT TABLESPACE SYSTEM TEMPORARY TABLESPACE TEMP PROFILE DEFAULT ACCOUNT UNLOCK;
ユーザーが作成されました。
SQL> GRANT CONNECT TO zbx_monitor;
SQL> GRANT RESOURCE TO zbx_monitor;
SQL> ALTER USER zbx_monitor DEFAULT ROLE ALL;
SQL> GRANT SELECT ANY TABLE TO zbx_monitor;
SQL> GRANT CREATE SESSION TO zbx_monitor;
 SQL> GRANT SELECT ANY DICTIONARY TO zbx_monitor;
SQL> GRANT UNLIMITED TABLESPACE TO zbx_ monitor;
SQL> GRANT SELECT ANY DICTIONARY TO zbx_monitor;
SQL> GRANT SELECT ON V_$SESSION TO zbx_monitor;
SQL> GRANT SELECT ON V_$SYSTEM_EVENT TO zbx_monitor;
SQL> GRANT SELECT ON V_$EVENT_NAME TO zbx_monitor;
SQL> GRANT SELECT ON V_$RECOVERY_FILE_DEST TO zbx_monitor;

SQL> create profile ZABBIX limit PASSWORD_LIFE_TIME unlimited;
SQL> alter user zbx_monitor profile ZABBIX;
SQL> alter profile ZABBIX limit PASSWORD_LIFE_TIME unlimited;
SQL>  select * from dba_profiles where profile='ZABBIX' and resource_name='PASSWORD_LIFE_TIME';
PROFILE      RESOURCE_NAME             RESOURCE   LIMIT              COM INH IMP
---------------------------------------------------------------------------------------------------
ZABBIX         PASSWORD_LIFE_TIME    PASSWORD   UNLIMITED  NO    NO   NO
SQL> quit

※ ユーザ確認
set lines 400
col account_status for a10
col username for a20
col last_login for a40
col default_tablespace for a10
select con_id, user_id, username,default_tablespace, account_status,  expiry_date, last_login, common from cdb_users where common!='YES';

※ データベース/テーブル/列確認
$ sqlp / as sysdba
sql> show pdbs        <- マウント状態確認
sql>  alter session set container=arcsdbms;

$ sqlp arcsdbcb@localhost:1521/arcsdbms.world
sql> select table_name,tablespace_name, num_rows, status, blocks from user_tables;
sql> desc table名



【エラー】
ORA-28000: the account is locked

$ sqlp / as sysdba
sql> show pdbs        <- マウント状態確認
sql>  alter session set container=arcsdbms;
sql > col username for a20
sql > col profile for a20
sql> select username, account_status, profile from dba_users where username = 'ADMIN';
sql > alter user ADMIN account lock;
sql> alter user ADMIN account unlock;
sql>  alter USER ADMIN identified by "new password";

$ sqlp admin@localhost:1521/arcsdbms.world








########################
ここまで確認ずみ
以下、未整備












※接続できなかった。
ORA-01102: cannot mount database in EXCLUSIVE mode
# ps -ef | grep ora_ | grep $ORACLE_SID
# ipcs -b
# ipcrm -m 
→プロセスや共有メモリを調べたが結局OSの再起動で解除された。

ORA-12777: A non-continuable error encountered.  Check the error stack for additional information [ksm_check_ob_paths:1], [ORACLE_BASE], [], [].
→ORACLE_BASEが設定されていない。(.bash_profile)
ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated
→ $ mkdir /home/oracle/app/oracle/fast_recovery_area
ORA-09925: Unable to create audit trail file
→audit_file_dest='/home/oracle/app/oracle/admin/ORCL/adump'
      $ mkdir /home/oracle/app/oracle/admin/ORCL/adump
ORA-12162: TNS:net service name is incorrectly specified
→export ORACLE_SID=asdb を.profileに追加。
ORA-00205: error in identifying control file, check alert log for more info
→show parameter control_files;
ORA-12541: TNS: リスナーがありません

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 06-AUG-2020 08:41:17

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

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                06-AUG-2020 08:19:48
Uptime                    0 days 0 hr. 21 min. 29 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Log File         /usr/oracle/database/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
The listener supports no services
The command completed successfully

$ sqlplus /nolog
SQL> conn / as sysdba
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/usr/oracle/database/dbs/initorcl.ora'

dbca 日本語が字化けする。
$ vi /home/oracle/oracle19c/bin/dbca
#JRE_DIR=/home/oracle/oracle19c/jdk/jre
JRE_DIR=/usr/lib/jvm/jre

$ alternatives --config java    でjavaの場所を確認。

SQL> startup
ORA-12777:
ORA-08275: Environment variable unset
→export ORACLE_BASE=/u01/app/oracle              # .bash_profile に追加
ORA-01102: cannot mount database in EXCLUSIVE mode
→何か残ったようだ、再起動したらエラーは出なかった。


■ CDB切り替え
SQL> startup pfile=/u01/app/oracle/admin/CXDNEXT/pfile/init.ora.11162021183614
SQL> SELECT SYS_CONTEXT ('USERENV', 'CON_NAME') FROM DUAL;      # 現在のコンテナ
SQL> select instance_name,status  from v$instance;
SQL> col name for a40
SQL> select name, con_id, dbid, con_uid, guid from v$containers order by con_id;
SQL> select dbid, name, cdb from v$database;
SQL> alter session set container=arcsdbms;
SQL> show pdbs
SQL> create user admin identified by casio00;
SQL> alter user admin identified by password;
SQL> startup
SQL> STARTUP PLUGGABLE DATABASE arcsdbms OPEN READ WRITE;
SQL> alter session set container=CDB$ROOT;

SQL> set pagesize 100
SQL> col PROPERTY_VALUE for a40
SQL> col PROPERTY_NAME for a40
SQL> SELECT PROPERTY_NAME, PROPERTY_VALUE  FROM   DATABASE_PROPERTIES;




$ vi /u01/app/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /home/oracle/database/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))


ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = SHARED)
      (SERVICE_NAME = orcl.world)
    )
  )

PDB_ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pdb_orcl.world)
    )
  )

$ sqlplus monitor/No%xxxxxxx%@PDB_ORCL
SQL*Plus: Release 19.0.0.0.0 - Production on 水 12月 15 18:21:35 2021
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
に接続されました。


1) インスタンス一覧(show databases;)
SQL> select * from v$instance;
SQL> select host_name, instance_name,status  from v$instance;
2)テーブル一覧
SQL> col status for a20
SQL> col cluster_name for a20
SQL> col tablespace_name for a40
SQL> set pagesize 100
SQL> select table_name tablespace_name, cluster_name, status, blocks, empty_blocks  from user_tables order by table_name;

ユーザテーブル:USER_TABLES
アクセス可能:  ALL_TABLES
DB内全て    :  DBA_TABLES

SQL> SELECT OWNER,TABLE_NAME FROM ALL_TABLES;
3) session確認
SQL> select USERNAME,OSUSER,MACHINE,TERMINAL,PROGRAM from v$session;

4)役割確認
select grantee, privilege from dba_sys_privs where grantee='SYS';

$ sqlplus / as sysdba
sql> startup
sql> show pdbs        <- マウント状態確認
sql> alter pluggable database pdb_orcl open;
sql> show pdbs        <- オープン状態確認( read write )
sql> alter pluggable database pdb_orcl close;

・共通ユーザ作成
SQL> create user c##user1 identified by password container = all;   # 共通ユーザ作成
SQL> drop user c##user1 ;         # 共通ユーザ削除
※共通ユーザは 接頭語[c##]が必要。

・ローカルユーザ作成
sql> alter pluggable database pdb_orcl open;
SQL> alter session set container = pdb_orcl;    # pdb に接続
SQL> create user pdb_user1 identified by  password container = current;
sql> grant dba to pdb_user1;
sql> ALTER USER username IDENTIFIED BY "new_password" ;
sql> alter pluggable database pdb_orcl close;


■ zabbix-oci-dbaas-master 入手

# ./zabbix-oci-dbaas-master/deploy_zabbix-oci-dbaas.sh "monitor" "No%xxxxxx%"
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/sql/db_active.sql' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/sql/db_active.sql'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/sql/db_asmdata.sql' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/sql/db_asmdata.sql'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/sql/db_asmreco.sql' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/sql/db_asmreco.sql'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/sql/db_block.sql' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/sql/db_block.sql'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/sql/db_connection.sql' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/sql/db_connection.sql'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/sql/db_filesize.sql' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/sql/db_filesize.sql'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/sql/db_fra.sql' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/sql/db_fra.sql'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/sql/db_invalid.sql' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/sql/db_invalid.sql'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/sql/db_jobs.sql' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/sql/db_jobs.sql'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/sql/db_lock.sql' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/sql/db_lock.sql'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/sql/db_metric.sql' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/sql/db_metric.sql'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/sql/db_redo.sql' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/sql/db_redo.sql'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/sql/db_rman.sql' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/sql/db_rman.sql'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/sql/db_size.sql' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/sql/db_size.sql'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/sql/db_tbssysaux.sql' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/sql/db_tbssysaux.sql'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/sql/db_tbssystem.sql' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/sql/db_tbssystem.sql'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/sql/db_tbsundotbs1.sql' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/sql/db_tbsundotbs1.sql'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/sql/db_tbsusers.sql' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/sql/db_tbsusers.sql'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/sql/db_uptime.sql' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/sql/db_uptime.sql'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/sql/tb_list.sql' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/sql/tb_list.sql'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/sql/tb_size.sql' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/sql/tb_size.sql'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/zabbix-oci-dbaas.conf.org' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/zabbix-oci-dbaas.conf'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/zabbix-oci-dbaas.sh' -> '/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/zabbix-oci-dbaas.sh'
'./zabbix-oci-dbaas-master/zabbix-oci-dbaas/zabbix_agentd.conf' -> '/etc/zabbix/zabbix_agent2.d/zabbix-oci-dbaas.conf'

# vi /etx/zabbix/zabbix_agent2.conf
 UnsafeUserParameters=1
※他のリモート実行は設定済みとする。

# systemctl restart zabbix-agent2

※ 感謝
https://qiita.com/y-araki-qiita/items/f25e02182c7f279c0199




■ PDB作成(データベースの作成)
$ sqlplus / as sysdba
SQL> show con_name
SQL> alter session set container=PDB$SEED;
SQL> select file_name from dba_data_files;
FILE_NAME
----------------------------------------------------------------------------------------------------------------
/u01/app/oracle/oradata/ORCL/datafile/o1_mf_system_k5lfwyh0_.dbf
/u01/app/oracle/oradata/ORCL/datafile/o1_mf_sysaux_k5lfwyh4_.dbf
/u01/app/oracle/oradata/ORCL/datafile/o1_mf_undotbs1_k5lfwyh5_.dbf

SQL> conn / as sysdba
SQL> !mkdir /u01/app/oracle/oradata/ARCSDBMS

SQL> create pluggable database arcsdbms admin user admin identified by cXsXo00
   file_name_convert = ('/u01/app/oracle/oradata/ORCL/datafile/',
   '/u01/app/oracle/oradata/ARCSDBMS/');

-------------------------------------------------------------------------------------------
SQL> create pluggable database arcsdbms admin user admin identified by cXsXo00
   file_name_convert = ('/u01/app/oracle/oradata/ORCL/D317E86834565E66E055BE8FB122BE6E/datafile/',
   '/u01/app/oracle/oradata/ARCSDBMS/');
--------------------------------------------------------------------------------------------
SQL> !ls -l /u01/app/oracle/oradata/ARCSDBMS/

SQL> ALTER PLUGGABLE DATABASE arcsdbms UNPLUG INTO '/oracle/data/arcsdbms.xml';
SQL> alter session set container=arcsdbms;

SQL> DROP PLUGGABLE DATABASE arcsdbms INCLUDING DATAFILES;

ドロップしてから、再作成すると。
RA-01276: ファイル/u01/app/oracle/oradata/ARCSDBMS/o1_mf_system_jvjo4qhc_.dbfは追加できません。ファイルにOracle Managed Filesのファイル名があります。
作成できない!!なぜ?
# systemctl enable oracle

※ SElinuxわすれずに!!
# journalctl -xe

・プラガブル・データベースの自動起動
sqlp / as sysdba
sql> alter pluggable database pdb_orcl open;
sql> alter pluggable database pdb_orcl save state;









■ PDB作成(データベースの作成)
$ sqlplus / as sysdba
SQL> show con_name
SQL> alter session set container=PDB$SEED;
SQL> select file_name from dba_data_files;
FILE_NAME
----------------------------------------------------------------------------------------------------------------
/u01/app/oracle/oradata/ORCL/datafile/o1_mf_system_k5lfwyh0_.dbf
/u01/app/oracle/oradata/ORCL/datafile/o1_mf_sysaux_k5lfwyh4_.dbf
/u01/app/oracle/oradata/ORCL/datafile/o1_mf_undotbs1_k5lfwyh5_.dbf

SQL> conn / as sysdba
SQL> !mkdir /u01/app/oracle/oradata/ARCSDBMS

SQL> create pluggable database arcsdbms admin user admin identified by cXsXo00
   file_name_convert = ('/u01/app/oracle/oradata/ORCL/datafile/',
   '/u01/app/oracle/oradata/ARCSDBMS/');

-------------------------------------------------------------------------------------------
SQL> create pluggable database arcsdbms admin user admin identified by cXsXo00
   file_name_convert = ('/u01/app/oracle/oradata/ORCL/D317E86834565E66E055BE8FB122BE6E/datafile/',
   '/u01/app/oracle/oradata/ARCSDBMS/');
--------------------------------------------------------------------------------------------
SQL> !ls -l /u01/app/oracle/oradata/ARCSDBMS/

SQL> ALTER PLUGGABLE DATABASE arcsdbms UNPLUG INTO '/oracle/data/arcsdbms.xml';
SQL> alter session set container=arcsdbms;

SQL> DROP PLUGGABLE DATABASE arcsdbms INCLUDING DATAFILES;

ドロップしてから、再作成すると。
RA-01276: ファイル/u01/app/oracle/oradata/ARCSDBMS/o1_mf_system_jvjo4qhc_.dbfは追加できません。ファイルにOracle Managed Filesのファイル名があります。
作成できない!!なぜ?






$ sqlplus / as sysdba
SQL> show con_name
SQL> alter session set container=PDB$SEED;
SQL> select file_name from dba_data_files;
FILE_NAME
----------------------------------------------------------------------------------------------------------------
/u01/app/oracle/oradata/ORCL/D317E86834565E66E055BE8FB122BE6E/datafile/o1_mf_system_jvjo4qhc_.dbf
/u01/app/oracle/oradata/ORCL/D317E86834565E66E055BE8FB122BE6E/datafile/o1_mf_sysaux_jvjo4sm5_.dbf
/u01/app/oracle/oradata/ORCL/D317E86834565E66E055BE8FB122BE6E/datafile/o1_mf_undotbs1_jvjo4tk1_.dbf

SQL> conn / as sysdba
SQL> !mkdir /u01/app/oracle/oradata/ARCSDBMS
SQL> create pluggable database arcsdbms admin user admin identified by casio00
   file_name_convert = ('/u01/app/oracle/oradata/ORCL/D317E86834565E66E055BE8FB122BE6E/datafile/',
   '/u01/app/oracle/oradata/ARCSDBMS/');
SQL> !ls -l /u01/app/oracle/oradata/ARCSDBMS/


SQL> ALTER PLUGGABLE DATABASE arcsdbms UNPLUG INTO '/oracle/data/arcsdbms.xml';
SQL> DROP PLUGGABLE DATABASE arcsdbms INCLUDING DATAFILES;

ドロップしてから、再作成すると。
RA-01276: ファイル/u01/app/oracle/oradata/ARCSDBMS/o1_mf_system_jvjo4qhc_.dbfは追加できません。ファイルにOracle Managed Filesのファイル名があります。

oracle   hard   nofile   65536
oracle   soft   nproc    16384
oracle   hard   nproc    16384
oracle   soft   stack    10240
oracle   hard   stack    32768
oracle   hard   memlock  134217728
oracle   soft   memlock  134217728
oracle   soft   data     unlimited
oracle   hard   data     unlimited


【カーネルパラメータ設定】
# vi /home/oracle/settings.sh
echo =========================変更前=============================
sysctl --system
MEMTOTAL=$(free -b | sed -n '2p' | awk '{print $2}')
SHMMAX=$(expr $MEMTOTAL / 2)
SHMMNI=4096
PAGESIZE=$(getconf PAGE_SIZE)

cat > /etc/sysctl.d/50-oracle.conf << __EOF__
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmax = $SHMMAX
kernel.shmall = $(expr \( $SHMMAX / $PAGESIZE \) \* \( $SHMMNI / 16 \))
kernel.shmmni = $SHMMNI
kernel.sem = 250 32000 100 128
kernel.panic_on_oops = 1
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
__EOF__
echo ========================変更後==============================
sysctl --system

# sh settings.sh
=========================変更前===========================
* Applying /usr/lib/sysctl.d/10-default-yama-scope.conf ...
kernel.yama.ptrace_scope = 0
* Applying /usr/lib/sysctl.d/50-coredump.conf ...
kernel.core_pattern = |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h %e
* Applying /usr/lib/sysctl.d/50-default.conf ...
kernel.sysrq = 16
kernel.core_uses_pid = 1
kernel.kptr_restrict = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.promote_secondaries = 1
net.core.default_qdisc = fq_codel
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
* Applying /usr/lib/sysctl.d/50-libkcapi-optmem_max.conf ...
net.core.optmem_max = 81920
* Applying /usr/lib/sysctl.d/50-pid-max.conf ...
kernel.pid_max = 4194304
* Applying /usr/lib/sysctl.d/60-libvirtd.conf ...
fs.aio-max-nr = 1048576
* Applying /etc/sysctl.d/99-sysctl.conf ...
* Applying /etc/sysctl.conf ...
=========================変更後=============================
* Applying /usr/lib/sysctl.d/10-default-yama-scope.conf ...
kernel.yama.ptrace_scope = 0
* Applying /usr/lib/sysctl.d/50-coredump.conf ...
kernel.core_pattern = |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h %e
* Applying /usr/lib/sysctl.d/50-default.conf ...
kernel.sysrq = 16
kernel.core_uses_pid = 1
kernel.kptr_restrict = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.promote_secondaries = 1
net.core.default_qdisc = fq_codel
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
* Applying /usr/lib/sysctl.d/50-libkcapi-optmem_max.conf ...
net.core.optmem_max = 81920
* Applying /etc/sysctl.d/50-oracle.conf ...
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmax = 16748978176
kernel.shmall = 1046811136
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
kernel.panic_on_oops = 1
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
* Applying /usr/lib/sysctl.d/50-pid-max.conf ...
kernel.pid_max = 4194304
* Applying /usr/lib/sysctl.d/60-libvirtd.conf ...
fs.aio-max-nr = 1048576
* Applying /etc/sysctl.d/99-sysctl.conf ...
* Applying /etc/sysctl.conf ...
==========================================================
【参考】https://www.server-world.info/query?os=CentOS_8&p=oracle19c&f=2

ログアウトして、oracleユーザでログイン仕直す。
$  cd database
$ export CV_ASSUME_DISTID=RHEL8.2
$ export LANG=C
$ ./runInstaller
1) Set up Software Only
2) Single instance database installation
3) Enterprise Edition
4) Oracle base:  /u01/app/oracle
5) Inventory Directory:  /u01/app/oraiventory
     oralinventory Group Name: oinstall
6) dba/oper/backupdba/dgdba/kmdba/racdba
7) Automatically run configuration scripts
    Use "root" user credential   
    Password  xxxxxxx
8) Verification Result Swap Size :  Ignore All











シャットダウン時の後処理 (shutdown)

# vi /etc/systemd/system/drop.service [Unit] Description= stop httpgwd DefaultDependencies=no Before=shutdown.target RefuseManualStart=true ...