#!/bin/bash
# 设置Oracle 11g数据库的字符集为AL32UTF8
# 设置数据库的环境变量
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export ORACLE_SID=ORCL
export PATH=$PATH:$ORACLE_HOME/bin
# 检查当前的字符集
echo "当前字符集设置为:"
echo $NLS_LANG
# 修改字符集为AL32UTF8
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
echo "修改后的字符集设置为:"
echo $NLS_LANG
# 连接到数据库
sqlplus / as sysdba <<EOF
-- 检查数据库的字符集
SELECT parameter, value FROM nls_database_parameters WHERE parameter IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');
-- 修改数据库的字符集和国家字符集
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8;
SHUTDOWN IMMEDIATE;
STARTUP;
-- 再次检查数据库的字符集
SELECT parameter, value FROM nls_database_parameters WHERE parameter IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');
EXIT;
EOF
# 输出修改完成的提示
echo "Oracle 11g数据库字符集已经修改为AL32UTF8。"
这段代码首先设置Oracle数据库的环境变量,然后使用sqlplus
连接到数据库,并执行必要的步骤来修改字符集。修改字符集的步骤包括关闭数据库、打开数据库到MOUNT状态、启用有限制模式、设置作业队列进程和AQ\_TM进程数量为0、修改字符集、重启数据库。最后,代码检查字符集是否已经修改成功,并输出相应的提示信息。这个过程需要在具备适当权限的用户下执行。