Loading... 要从多个Oracle数据库和MySQL数据库中获取所有表的信息,可以通过编写shell脚本来实现自动化查询。下面分别提供针对Oracle和MySQL数据库的解决方案,并最后整合为一个综合脚本示例。 ### 针对Oracle数据库 对于Oracle数据库,可以通过编写shell脚本调用SQL*Plus工具来执行SQL查询。首先,确保你的环境已经配置了正确的 `ORACLE_HOME`和 `PATH`变量,以及有权限访问所需的数据库实例。 ```bash #!/bin/bash # Oracle数据库连接信息配置 ORACLE_INSTANCES=("db1" "db2") # 请替换为实际的数据库实例名或TNS别名 ORACLE_HOME=/path/to/oracle/home # 设置Oracle主目录路径 for db in "${ORACLE_INSTANCES[@]}"; do echo "Fetching tables from Oracle database: $db" # 使用sqlplus执行查询,这里查询所有用户的表 ${ORACLE_HOME}/bin/sqlplus -S / as sysdba <<EOF SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF SELECT owner, table_name FROM all_tables WHERE owner NOT IN ('SYS', 'SYSTEM'); EXIT; EOF echo "-----------------------------" done ``` 这段脚本遍历配置好的Oracle数据库实例列表,对每个数据库执行SQL查询,列出除 `SYS`和 `SYSTEM`外所有用户的表名和所属模式。  ### 针对MySQL数据库 对于MySQL,可以利用 `mysql`命令行工具和信息架构库(information_schema)来查询所有数据库中的表。同样,确保你有权限访问MySQL服务器,并且知道相应的用户名和密码。 ```bash #!/bin/bash # MySQL数据库连接信息配置 MYSQL_USER=username MYSQL_PASS=password MYSQL_HOST=hostname MYSQL_PORTS=("3306" "3307") # 如果有多个端口,请列出来 for port in "${MYSQL_PORTS[@]}"; do echo "Fetching tables from MySQL on port $port" mysql -u${MYSQL_USER} -p${MYSQL_PASS} -h${MYSQL_HOST} -P${port} -Bse \ "SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.TABLES WHERE TABLE_TYPE='BASE TABLE';" echo "-----------------------------" done ``` 这段脚本遍历指定的MySQL端口,对每个端口连接的MySQL服务器执行SQL查询,列出所有基表的模式名和表名。 ### 综合脚本示例 将上述两段脚本整合,你可以创建一个更全面的脚本,同时处理Oracle和MySQL数据库的表信息收集任务。请根据实际情况调整数据库连接参数。 ```bash #!/bin/bash # Oracle部分 ORACLE_INSTANCES=("db1" "db2") ORACLE_HOME=/path/to/oracle/home # MySQL部分 MYSQL_USER=username MYSQL_PASS=password MYSQL_HOST=hostname MYSQL_PORTS=("3306" "3307") echo "Oracle Database Tables:" for db in "${ORACLE_INSTANCES[@]}"; do ${ORACLE_HOME}/bin/sqlplus -S / as sysdba <<EOF SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF SELECT owner, table_name FROM all_tables WHERE owner NOT IN ('SYS', 'SYSTEM'); EXIT; EOF echo "-----------------------------" done echo "MySQL Database Tables:" for port in "${MYSQL_PORTS[@]}"; do mysql -u${MYSQL_USER} -p${MYSQL_PASS} -h${MYSQL_HOST} -P${port} -Bse \ "SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.TABLES WHERE TABLE_TYPE='BASE TABLE';" echo "-----------------------------" done ``` 请注意,此脚本假设你有足够的权限访问所有提到的数据库。在实际部署前,请确保对脚本中的数据库凭据、主机名和端口进行适当的修改和验证。此外,处理数据库操作时,务必谨慎操作,避免因错误的脚本执行造成数据损坏或服务中断。 #### [云服务器/高防CDN推荐](https://www.tsyvps.com/) #### [蓝易云](https://www.tsyvps.com/)国内/海外高防云服务器推荐 <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="https://www.tsyvps.com" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(https://www.8kiz.cn/img/6.png);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">免备案-五网CN2服务器【点我购买】</p> <div class="inster-summary text-muted"> <span style='color: red;'>蓝易云采用KVM高性能架构,稳定可靠,安全无忧!<br>蓝易云服务器真实CN2回国线路,不伪造,只做高质量海外服务器。</span> </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> --- **<span style='color:#000000'>免备案五网CN2云服务器:[www.tsyvps.com](https://www.tsyvps.com)</span>** **<span style='color:#000000'>蓝易云安全企业级高防CDN:[www.tsycdn.com](https://www.tsycdn.com)</span>** **<span style='color:#DC143C'>持有增值电信营业许可证:B1-20222080【资质齐全】</span>** **<span style='color:#DC143C'>蓝易云香港五网CN2 GIA/GT精品网络服务器。拒绝绕路,拒绝不稳定。</span>** 最后修改:2024 年 05 月 06 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏