Java protobuf
2021年6月10日 星期四
2021年6月3日 星期四
在 OracleLinux 上安裝 oracle database (19c)
oracle 是透過 oracle-database-preinstall 和 oracle-database-ee 的
rpm 安裝,所以會少掉很多設定的地方,像是環境變數,新建 linux 的 group 和
user 之類的部份。
環境:
y04 是 linux 使用者的 id
在 VMWare 下新安裝的 OracleLinux (OracleLinux-R8-U4-x86_64-dvd_iso)
已安裝 JAVA JDK
用到的檔案,下載到 \home\y04\Downloads,這個位置
compat-libcap1-1.10-7.el7.x86_64.rpm
http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libcap1-1.10-7.el7.x86_64.rpm
oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
oracle-database-ee-19c-1.0-1.x86_64.rpm
oracle 官網自行下載
過程(安裝 database)
透過內建的 firefox 把下列檔案抓回來
oracle database 要用到的套件
http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libcap1-1.10-7.el7.x86_64.rpm
oracle preinstall 會幫忙處理一些新增 group 和 user 的動作
https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
oracle database 本體,直接到 oracle 官網自行下載
oracle-database-ee-19c-1.0-1.x86_64.rpm
以下所有操作均在 terminal 下執行
關防火牆
systemctl stop firewalld.service
關防火牆的自動啟動
systemctl disable firewalld.service
檢查關閉狀態
systemctl status firewalld.service
dead 表示未啟動開啟啟動、inactive 表示現在是關閉
安裝相依套件
sudo yum install libstdc++-devel ksh glibc-devel libaio-devel
sudo yum localinstall /home/y04/Downloads/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
sudo yum localinstall /home/y04/Downloads/compat-libcap1-1.10-7.el7.x86_64.rpm
安裝 oracle database preinstall
sudo yum localinstall /home/y04/Downloads/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
配置 oracle 帳號的環境變量 (preinstall 會在 linux 新增一個名字叫 oracle 的帳戶)
su - root //切換到 root 帳號
passwd oracle //重設 oracle 密碼為 123
su - oracle //切換到 oracle 帳號
vi ~/.bash_profile //用 vim 開 .bash_profile
確認下面設定有在 .bash_profile
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=ORCLCDB
#防止安裝過程出現亂碼
export LANG=en_US.UTF-8
#設定Oracle使用者端字元集,必須與Oracle安裝時設定的字元集保持一致,
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
su - root //切換到 root 帳號
安裝 oracle database
sudo yum localinstall /home/y04/Downloads/oracle-database-ee-19c-1.0-1.x86_64.rpm
配置腳本 (簡單檢查一下腳本內容,可以略過)
su – root
cd /etc/init.d/
vi oracledb_ORCLCDB-19c
執行腳本前置 (執行腳本之前的動作,主要是應對一些執行腳本過程中可能發生的問題)
對應「java.library.path 系統變數遺漏或無效」
(The java.library.path system variable is missing or invalid. Please set java.library.path with a correct value and retry the operation.)
yum install libnsl
對應「檔案 "/etc/oratab" 無法存取.」
(File "etc/oratab" is not accessible)
這個異常好像不會中斷腳本的執行
解法參考(https://www.cnblogs.com/datalife/archive/2011/03/15/1985253.html)
原因是安裝 oracle database 的時候,少 執行一個 root.sh
cd /opt/oracle/product/19c/dbhome_1/
./root.sh
執行腳本
su – root
cd /etc/init.d/
./oracledb_ORCLCDB-19c configure
重開機
過程(建立 database 到 client 可連入)
改 listener.ora 為允許 client 連入
修改 listener.ora 的內容,將原本的
listener.ora 的位置應該在 \opt\oracle\product\19c\dbhome_1\network\admin
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
改成
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
然後啟動或重啟 listener
lsnrctl status //oracle database listener 查詢狀態
> lsnrctl start //oracle database listener 啟動
lsnrctl stop //oracle database listener 停止
> lsnrctl reload //oracle database listener 重啟
啟動及設定 oracle
su - oracle
sqlplus / as sysdba
--啟動 database
--未啟動的錯誤 ORA-01034: ORACLE not available
SQL>startup;
SQL>alter database open;
SQL>exit;
--修改 datbase 的 sys 和 system 這兩個使用者的密碼,都改成 abc
SQL>alter user system identified by "abc";
SQL>alter user sys identified by "abc";
--查當前 sid
SQL>select instance from v$thread; --return ORCLCDB
or
SQL>select * from v$version;
SQL>select sys_context('userenv','instance_name') from dual; --return ORCLCDB
到這步應該外部就可以連入
測試用的軟體 (DBeaver)
host: 192.168.1.113 //看你自己的 linux ip
port: 1521 //oracle default
database (=sid=service): ORCLCDB //前面步驟查的
username: system //內建的
password: abc //前面設的
到這邊如果都順利的話就可以連入 oracle database 中了,接下來就是建立自己要用的測試資料庫
su - oracle
sqlplus / as sysdba
-- 確認 database 啟動了
SQL>startup;
SQL>alter database open; --or SQL>alter pluggable database all open;
SQL>select * from v$version; --先查當前版本,讓 dual 有東西
SQL>select sys_context ('USERENV', 'CON_NAME') from dual; --知道當前容器在 CDB$ROOT
SQL>select pdb from v$services; --查有那些 pdb,應廳會有一個 ORCLPDB1
or
SQL>show pdbs;
SQL>alter session set container=ORCLPDB1; --把 session 指定到 PDB
SQL>alter database open;
SQL>create user y04 identified by "y04"; --在當前 session 中建立一個 y04 且密碼為 y04 的帳號
SQL>grant dba to y04; --設定 y04 的資料庫權限,正常是不會直接給 dba 這個權限,不過我還不熟,先這樣吧
然後外部就可以用 y04 了,一樣外部用 DBeaver 連入
測試用的軟體 (DBeaver)
host: 192.168.1.113 //看你自己的 linux ip
port: 1521 //oracle default
database (=sid=service): orclpdb1 //就是pdb,因為剛剛已經把 session 切到這個 pdb 了,所以要改用這個
username: y04
password: y04
註1 本機 sqlplus 登入 y04 的方式
sqlplus 帳號/密碼@host/database(=sid=service)
sqlplus y04/y04@localhost/orclpdb1
註2 .base_profile
#oracle資料庫安裝目錄
export ORACLE_BASE=/opt/oracle
#oracle資料庫路徑
export ORACLE_HOME=$ORACLE_BASE/product/19c/dbhome_1
#oracle啟動資料庫範例名
export ORACLE_SID=ORCLCDB
#xterm視窗模式安裝
export ORACLE_TERM=xterm
#設定時間格式
NLS_DATE_FORMAT="YYYY:MM:DDHH24:MI:SS"
#新增系統環境變數
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
#新增系統環境變數
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
#防止安裝過程出現亂碼
#export LANG=en_US.gbk
export LANG=en_US.UTF-8
#設定Oracle使用者端字元集,必須與Oracle安裝時設定的字元集保持一致,
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8