最近腾讯的云主机到期了,没有续费,当时备份的时候只备份了文件,忘记备份 crontab -l 的定时任务了,导致定时访问 的 Always Free Oracle Autonomous Data Warehouse database ,超过一定时间(应该是 7 天)没有连接被暂停了。

Your inactive Always Free Oracle Autonomous Transaction Processing Database database was paused because it received no connections for several days. Data stored in this database is preserved, and you will see it marked as Stopped.

由于之前是两台机器每台机器定时访问一个 Always Free Oracle **Autonomous ** 的数据库,这一个主机到期了,就导致其中一个没有定时访问数据库,导致数据库被暂停。这就想着是否可以在一个 oracle 客户端访问多个 Oracle Autonomous database呢,因为oracle cloud上的Autonomous database 是启用了 Wallet的,在 $ORACLE_HOME/network/admin/ 下面的Wallet 会重名,导致只有一个生效。

-rw-r–r– 1 oracle oinstall 5349 Jul 4 2024 cwallet.sso
-rw-r–r– 1 oracle oinstall 5304 Jul 4 2024 ewallet.p12
-rw-r–r– 1 oracle oinstall 5710 Jul 4 2024 ewallet.pem
-rw-r–r– 1 oracle oinstall 3192 Jul 4 2024 keystore.jks
-rw-r–r– 1 oracle oinstall 691 Jul 4 2024 ojdbc.properties
-rw-r–r– 1 oracle oinstall 3025 Jul 4 2024 README
-rw-r–r– 1 oracle oinstall 114 Jul 4 2024 sqlnet.ora
-rw-r–r– 1 oracle oinstall 1275 Jul 4 2024 tnsnames.ora
-rw-r–r– 1 oracle oinstall 2056 Jul 4 2024 truststore.jks
-rw-r–r– 1 oracle oinstall 21988 Jul 4 2024 Wallet_lalaku.zip

那如何解决呢,这里通过设置 TNS_ADMIN 变量来解决。

默认的 TNS_ADMIN是 $ORACLE_HOME/network/admin/

我们在shell 脚本里设置不同的 TNS_ADMIN,但是需要注意的是,Wallet 解压之后,需要同步修改sqlnet.ora

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
cat 23c.sh
. ~/.bash_profile
export TNS_ADMIN=/home/oracle/23c/
sqlplus -S admin/"liups##23c"@db23ai_high << !
set heading off
set feedback off
set pagesize 0
set verify off
set echo off
alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
select sysdate today from dual;
insert into o values(sysdate);
--select * from o;
select count(1) from o;
exit;
!
exit

1
2
3
[oracle@ydora01 23c]$ cat sqlnet.ora
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/home/oracle/23c/")))
SSL_SERVER_DN_MATCH=yes

修改 sqlnet.ora 里的 DIRECTORY 为 TNS_ADMIN 的目录。

1
2
3
4
5
6
7
8
9
10
11
12
13
-rw-r--r--. 1 oracle oinstall  5349 Sep 10 09:30 cwallet.sso
-rw-r--r--. 1 oracle oinstall 5304 Sep 10 09:30 ewallet.p12
-rw-r--r--. 1 oracle oinstall 5710 Sep 10 09:30 ewallet.pem
-rw-r--r--. 1 oracle oinstall 3193 Sep 10 09:30 keystore.jks
-rw-r--r--. 1 oracle oinstall 691 Sep 10 09:30 ojdbc.properties
-rw-r--r--. 1 oracle oinstall 3013 Sep 10 09:30 README
-rw-r--r--. 1 oracle oinstall 117 Feb 22 21:24 sqlnet.ora
-rw-r--r--. 1 oracle oinstall 1260 Sep 10 09:30 tnsnames.ora
-rw-r--r--. 1 oracle oinstall 2056 Sep 10 09:30 truststore.jks
-rw-r--r--. 1 oracle oinstall 21986 Feb 22 21:29 Wallet_db23ai.zip
-rw-r--r--. 1 oracle oinstall 21959 Feb 22 21:08 Wallet_liups-4.zip
[oracle@ydora01 23c]$ pwd
/home/oracle/23c

这样就可以愉快的连接多个 oracle cloud 的 Always Free Oracle Autonomous Data Warehouse database了。

原文作者: liups.com

原文链接: http://liups.com/posts/9fcb0668/

许可协议: 知识共享署名-非商业性使用 4.0 国际许可协议