我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Oracle字符集从GBK升级到Utf8的方法是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Oracle字符集从GBK升级到Utf8的方法是什么

本篇内容介绍了“Oracle字符集从GBK升级到Utf8的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1、导出前准备(单实例单监听)  

a.关闭zabbix 监控  

配置--主机--primary-new-qpdb

b.停应用停监听杀会话

lsnrctl stop LISTENER

杀会话:

export ORACLE_SID=qppri
ps -ef|grep 
$ORACLE_SID|grep 
-v ORA_|grep 
LOCAL=NO|awk 
'{print $2}'|xargs 
kill -9

c.确保无用户会话、无事务:

set linesize 
1000
set pagesize 
3000
col event for a30
col status for a10
col blkses for 
99999
col username for a14
col module for a45
col program for a40
col machine for a25
col state for a20
col cmd for a23
col sql_id for a20
select s.inst_id,s.sid,s.event,s.state,s.status,
s.last_call_et lcet,s.sql_id,s.username,c.command_name cmd,s.module,s.program,s.machine
from gv$session s,gv$sqlcommand c
where s.type='USER'
and s.inst_id=c.inst_id
and s.command=c.command_type
order by s.username,s.sql_id,s.module,s.program;


select 'alter system disconnect session '''||sid||','||serial#||''' immediate;' from v$session 
where type='USER';
alter system disconnect session 
'2375,38626' immediate;


select inst_id,START_TIME,(sysdate-to_date(START_TIME,'mm/dd/yy hh34:mi:ss'))*24 eslaped_hours,
USED_UBLK*8/1024 MB 
from gv$transaction 
order by 4,3;

d.主库切几次日志,并确保备库无延迟,设置主库远程归档路径为defer

主库:

alter system switch logfile;

备库:

col name for a20
col value for a20
col unit for a30
col TIME_COMPUTED for a20
col DATUM_TIME for a20
set linesize 
1000
select * 
from v$dataguard_stats;

主库:

alter system set log_archive_dest_state_2='defer' scope=both;

e.备库停止应用,并关闭

alter database recover managed standby database cancel;
shutdown immmediate;

f.导出数据

vi exp_qp.sh
#!/bin/bash
. /home/oracle/.bash_profile
export ORACLE_SID=qppri
export NLS_LANG=American_America.AL32UTF8

#####variable SCHES#######
SCHES="CONFIG,
DEVQ_DP,
ACCOUNT,
BOPS,
CONFIGSVR,
MESSAGE,
OPENFIRE,
MON,
IDEXCHANGE,
QPWEB,
QP_MAPI_BASE,
QP_MJCORE_BASE,
QP_CORE_BASE,
QP_CRM_BASE,
CIF_BASE,
IDEXCHANGE_BASE,
GOLD_COIN_CORE_BASE,
SS_CORE_BASE,
SS_SYN_OUT_BASE,
BENCH_CAPTCHA_BASE,
CONFIG_SERVER_DISTRIB_BASE,
DEV_BANXIA,
BOPS_BASE,
BOPS_COMMON_BASE,
OA_FRONT_BASE,
KEY_CORE_BASE,
BOPS_QP_BASE"

expdp \'/ as sysdba\' 
schemas=${SCHES}  directory=EXPDP_DATA 
dumpfile=qpasdwsx_%U.dmp 
parallel=4 logfile=expdp_qp.log 
compression=all

g.查出存在直方图统计信息的列:

export NLS_LANG=American_America.AL32UTF8

vi zft.sql
set echo off
set termout off
set linesize 
1000
col cmd for a160
set pagesize 
0
set feedback off
set heading off
set trimout 
on
set trimspool 
on
spool   
'/home/oracle/cy/stats.sql'
select 'select '||column_name||' from '||owner||'.'||table_name||' where '||column_name||' is not null and 1=2;' cmd
from dba_tab_col_statistics 
where histogram <>'NONE'
and table_name 
not like 'BIN$%'
and owner 
in ('CONFIG','DEVQ_DP','ACCOUNT','BOPS','CONFIGSVR','MESSAGE','OPENFIRE','MON','IDEXCHANGE','DW_QPDB','QPWEB','QP_MAPI_BASE','QP_MJCORE_BASE','QP_CORE_BASE','QP_CRM_BASE','CIF_BASE','IDEXCHANGE_BASE','GOLD_COIN_CORE_BASE','SS_CORE_BASE','SS_SYN_OUT_BASE','BENCH_CAPTCHA_BASE','CONFIG_SERVER_DISTRIB_BASE','DW_USER','DEV_BANXIA','BOPS_BASE','BOPS_COMMON_BASE','OA_FRONT_BASE','KEY_CORE_BASE','BOPS_QP_BASE');
spool off
set feedback 
on
set heading 
on
set termout 
on
set echo 
on

h.删除数据

vi duser.sql
drop user CONFIG                         cascade; 
drop user DEVQ_DP                        cascade;
drop user ACCOUNT                        cascade;
drop user BOPS                           cascade;
drop user CONFIGSVR                      cascade;
drop user MESSAGE                        cascade;
drop user OPENFIRE                       cascade;
drop user MON                            cascade;
drop user IDEXCHANGE                     cascade;
drop user DW_QPDB                        cascade;
drop user QPWEB                          cascade;
drop user QP_MAPI_BASE                   cascade;
drop user QP_MJCORE_BASE                 cascade;
drop user QP_CORE_BASE                   cascade;
drop user QP_CRM_BASE                    cascade;
drop user CIF_BASE                       cascade;
drop user IDEXCHANGE_BASE                cascade;
drop user GOLD_COIN_CORE_BASE            cascade;
drop user SS_CORE_BASE                   cascade;
drop user SS_SYN_OUT_BASE                cascade;
drop user BENCH_CAPTCHA_BASE             cascade;
drop user CONFIG_SERVER_DISTRIB_BASE     cascade;
drop user DEV_BANXIA                     cascade;
drop user BOPS_BASE                      cascade;
drop user BOPS_COMMON_BASE               cascade;
drop user OA_FRONT_BASE                  cascade;
drop user KEY_CORE_BASE                  cascade;
drop user BOPS_QP_BASE                   cascade;

i.手动删除DW_USER用户的视图:

select lOWER(OWNER)||'.'||lower(view_name) 
from dba_views 
where owner='DW_USER';

vi dview.sql
drop view dw_user.qpmjc_message_push_setting               ;
drop view dw_user.qpmjc_login_info                         ;
drop view dw_user.qpmjc_game_winning_rule_link             ;
drop view dw_user.qpmjc_game_winning_rule_config           ;
drop view dw_user.qpmjc_game_rule_config                   ;
drop view dw_user.qpmjc_client_push_msg_his                ;
drop view dw_user.qpmjc_client_push_msg                    ;
drop view dw_user.qpmjc_board_wall_card                    ;
drop view dw_user.qpmjc_board_user_settle_detail           ;
drop view dw_user.qpmjc_board_user_settle                  ;
drop view dw_user.qpmjc_board_user                         ;
drop view dw_user.qpmjc_board_ro_usr_act_fbd               ;
drop view dw_user.qpmjc_board_round_match_group            ;
drop view dw_user.qpmjc_board_round_match                  ;
drop view dw_user.qpmjc_board_round                        ;
drop view dw_user.qpmjc_board_meld_group_card              ;
drop view dw_user.qpmjc_board_meld_group                   ;
drop view dw_user.qpmjc_board_hand_card                    ;
drop view dw_user.qpmjc_board_discard                      ;
drop view dw_user.qpmjc_board_act_msg_seq                  ;
drop view dw_user.qpmjc_board_act_card_link                ;
drop view dw_user.qpmjc_board_action                       ;
drop view dw_user.qpmjc_board                              ;
drop view dw_user.qpmjc_base_card_config                   ;
drop view dw_user.qpc_room_user                            ;
drop view dw_user.qpc_room_purchase_fund_bill              ;
drop view dw_user.qpc_room_property_config_link            ;
drop view dw_user.qpc_room_dismiss_apply                   ;
drop view dw_user.qpc_room_dismiss_apl_user_chos           ;
drop view dw_user.qpc_room                                 ;
drop view dw_user.qpc_role_user_link                       ;
drop view dw_user.qpc_role_authority_link                  ;
drop view dw_user.qpc_role                                 ;
drop view dw_user.qpc_property_value_config                ;
drop view dw_user.qpc_property_config                      ;
drop view dw_user.qpc_group_user_invite_join_his           ;
drop view dw_user.qpc_group_user_invite_join               ;
drop view dw_user.qpc_group_user_apply_join_his            ;
drop view dw_user.qpc_group_user_apply_join                ;
drop view dw_user.qpc_group_user                           ;
drop view dw_user.qpc_group_type_config                    ;
drop view dw_user.qpc_group_play_prop_cfg_link             ;
drop view dw_user.qpc_group_playway_room_link              ;
drop view dw_user.qpc_group_playway                        ;
drop view dw_user.qpc_group_notice                         ;
drop view dw_user.qpc_group                                ;
drop view dw_user.qpc_game_sort                            ;
drop view dw_user.qpc_game                                 ;
drop view dw_user.qpc_area_sort                            ;
drop view dw_user.qpcm_staff_role_link                     ;
drop view dw_user.qpcm_staff_role                          ;
drop view dw_user.qpcm_staff_group                         ;
drop view dw_user.qpcm_staff                               ;
drop view dw_user.gldcoin_trans_code                       ;
drop view dw_user.gldcoin_sub_trans_code                   ;
drop view dw_user.gldcoin_general_account                  ;
drop view dw_user.gldcoin_freeze_type                      ;
drop view dw_user.gldcoin_freeze                           ;
drop view dw_user.gldcoin_deposit_type                     ;
drop view dw_user.gldcoin_deposit                          ;
drop view dw_user.gldcoin_charge_biz_type                  ;
drop view dw_user.gldcoin_account_type                     ;
drop view dw_user.gldcoin_account_log                      ;
drop view dw_user.gldcoin_account                          ;
drop view dw_user.cif_user                                 ;

2、改字符集

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;
ALTER DATABASE NATIONAL CHARACTER 
SET INTERNAL_USE UTF8;
shutdown immediate;
startup;
set lines 
1000;
select * 
from nls_database_parameters;

alter system 
set job_queue_processes=1000;
alter system 
set aq_tm_processes=1;

3、导入数据

导入元数据

vi imp_qp.sh
#!/bin/bash
. /home/oracle/.bash_profile
export ORACLE_SID=qppri
export NLS_LANG=American_America.AL32UTF8
impdp \'/ as sysdba\' 
directory=EXPDP_DATA 
dumpfile=qpasdwsx_%U.dmp 
parallel=4 logfile=impdp_qp.log 
content=metadata_only

修改字段

因为字符集不同字段宽度不够,需要提前测试

alter table CONFIG.CFG_CN_CHAR_DICT modify value 
CHAR(3);
alter table DATA_HANYU_CORE_BASE.HANZI modify HANZI VARCHAR2(6);
... ...
alter table BOPS_BASE.BPBS_SORT_MENU modify SORT_MENU_NAME VARCHAR2(48);
alter table SS_SYN_OUT_BASE.OABASE_ROLE modify ROLE_NAME VARCHAR2(48);

导入数据

impdp \'/ as sysdba\'  directory=EXPDP_DATA dumpfile=qpasdwsx_%U.dmp parallel=4 logfile=impdp_qp.log exclude=statistics table_exists_action=append

创建DW_USER的视图:

运行脚本创建非加密视图:

dw_user.qpmjc_game_winning_rule_link
dw_user.qpmjc_game_winning_rule_config
dw_user.qpmjc_game_rule_config
dw_user.qpmjc_client_push_msg_his
dw_user.qpmjc_client_push_msg
dw_user.qpmjc_board_wall_card
dw_user.qpmjc_board_user_settle_detail
dw_user.qpmjc_board_user_settle
dw_user.qpmjc_board_user
dw_user.qpmjc_board_ro_usr_act_fbd
dw_user.qpmjc_board_round_match_group
dw_user.qpmjc_board_round_match
dw_user.qpmjc_board_round
dw_user.qpmjc_board_meld_group_card
dw_user.qpmjc_board_meld_group
dw_user.qpmjc_board_hand_card
dw_user.qpmjc_board_discard
dw_user.qpmjc_board_act_msg_seq
dw_user.qpmjc_board_act_card_link
dw_user.qpmjc_board_action
dw_user.qpmjc_board
dw_user.qpmjc_base_card_config
dw_user.qpc_room_user
dw_user.qpc_room_purchase_fund_bill
dw_user.qpc_room_property_config_link
dw_user.qpc_room_dismiss_apply
dw_user.qpc_room_dismiss_apl_user_chos
dw_user.qpc_room
dw_user.qpc_role_user_link
dw_user.qpc_role_authority_link
dw_user.qpc_role
dw_user.qpc_property_value_config
dw_user.qpc_property_config
dw_user.qpc_group_user_invite_join_his
dw_user.qpc_group_user_invite_join
dw_user.qpc_group_user_apply_join_his
dw_user.qpc_group_user_apply_join
dw_user.qpc_group_user
dw_user.qpc_group_type_config
dw_user.qpc_group_play_prop_cfg_link
dw_user.qpc_group_playway_room_link
dw_user.qpc_group_playway
dw_user.qpc_group_notice
dw_user.qpc_group
dw_user.qpc_game_sort
dw_user.qpc_game
dw_user.qpc_area_sort
dw_user.qpcm_staff_role_link
dw_user.qpcm_staff_role
dw_user.qpcm_staff_group
dw_user.qpcm_staff
dw_user.gldcoin_trans_code
dw_user.gldcoin_sub_trans_code
dw_user.gldcoin_general_account
dw_user.gldcoin_freeze_type
dw_user.gldcoin_freeze
dw_user.gldcoin_deposit_type
dw_user.gldcoin_deposit
dw_user.gldcoin_charge_biz_type
dw_user.gldcoin_account_type
dw_user.gldcoin_account_log
dw_user.gldcoin_account

dw_user.qpmjc_message_push_setting   视图失效,引用的表对象不存在,无需创建
dw_user.qpmjc_login_info             视图失效,引用的表对象不存在,无需创建

gold_coin_core_base.gldcoin_account
gold_coin_core_base.gldcoin_account_log
gold_coin_core_base.gldcoin_account_type
gold_coin_core_base.gldcoin_charge_biz_type
gold_coin_core_base.gldcoin_deposit
gold_coin_core_base.gldcoin_deposit_type
gold_coin_core_base.gldcoin_freeze
gold_coin_core_base.gldcoin_freeze_type
gold_coin_core_base.gldcoin_general_account
gold_coin_core_base.gldcoin_sub_trans_code
gold_coin_core_base.gldcoin_trans_code
qp_core_base.qpc_area_sort
qp_core_base.qpc_game
qp_core_base.qpc_game_sort
qp_core_base.qpc_group
qp_core_base.qpc_group_notice
qp_core_base.qpc_group_playway
qp_core_base.qpc_group_playway_room_link
qp_core_base.qpc_group_play_prop_cfg_link
qp_core_base.qpc_group_type_config
qp_core_base.qpc_group_user
qp_core_base.qpc_group_user_apply_join
qp_core_base.qpc_group_user_apply_join_his
qp_core_base.qpc_group_user_invite_join
qp_core_base.qpc_group_user_invite_join_his
qp_core_base.qpc_property_config
qp_core_base.qpc_property_value_config
qp_core_base.qpc_role
qp_core_base.qpc_role_authority_link
qp_core_base.qpc_role_user_link
qp_core_base.qpc_room
qp_core_base.qpc_room_dismiss_apl_user_chos
qp_core_base.qpc_room_dismiss_apply
qp_core_base.qpc_room_property_config_link
qp_core_base.qpc_room_purchase_fund_bill
qp_core_base.qpc_room_user
qp_crm_base.qpcm_staff
qp_crm_base.qpcm_staff_group
qp_crm_base.qpcm_staff_role
qp_crm_base.qpcm_staff_role_link
qp_mjcore_base.qpmjc_base_card_config
qp_mjcore_base.qpmjc_board
qp_mjcore_base.qpmjc_board_action
qp_mjcore_base.qpmjc_board_act_card_link
qp_mjcore_base.qpmjc_board_act_msg_seq
qp_mjcore_base.qpmjc_board_discard
qp_mjcore_base.qpmjc_board_hand_card
qp_mjcore_base.qpmjc_board_meld_group
qp_mjcore_base.qpmjc_board_meld_group_card
qp_mjcore_base.qpmjc_board_round
qp_mjcore_base.qpmjc_board_round_match
qp_mjcore_base.qpmjc_board_round_match_group
qp_mjcore_base.qpmjc_board_ro_usr_act_fbd
qp_mjcore_base.qpmjc_board_user
qp_mjcore_base.qpmjc_board_user_settle
qp_mjcore_base.qpmjc_board_user_settle_detail
qp_mjcore_base.qpmjc_board_wall_card
qp_mjcore_base.qpmjc_client_push_msg
qp_mjcore_base.qpmjc_client_push_msg_his
qp_mjcore_base.qpmjc_game_rule_config
qp_mjcore_base.qpmjc_game_winning_rule_config
qp_mjcore_base.qpmjc_game_winning_rule_link

手动创建加密视图:

create or replace view cif_base.cif_user_view as 
select     
USER_ID,             
LOGIN_NAME,          
(encryptor(LOGIN_PASSWORD)) LOGIN_PASSWORD,                                                        
(encryptor(REAL_NAME))  REAL_NAME,        
STATUS,              
(encryptor(EMAIL)) EMAIL,                                                                 
(encryptor(QQ))  QQ,                  
CAN_LOGIN,           
CERT_TYPE,           
(encryptor(CERT_NO)) cert_no,     
substr(CERT_NO,1,6) certno6, substr(CERT_NO,-12,8) birthdaynum,substr(CERT_NO,-2,1) sexnum,                                                                 
GMT_CREATE,          
GMT_MODIFIED,       
EMAIL_VALIDATE,      
QQ_VALIDATE,         
(encryptor(cell)) cell,   
 substr(cell,1,7) cell7,             
CELL_VALIDATE,       
(encryptor(ACCOUNT_PASSWORD)) ACCOUNT_PASSWORD,    
NICK_NAME,           
USER_TYPE_NAME,      
DOMAIN,              
SUB_DOMAIN,          
GMT_CHANGE_IDENTITY, 
SEX ,                
BIRTHDAY,            
ONE_AUTH_ID 
from cif_base.cif_user with read only;         

grant 
select on cif_base.cif_user_view to dw_user;
create view dw_user.cif_user as select *  from cif_base.cif_user_view with read only;

以下视图本不存在,无需创建

create or replace view cif_base.cif_one_auth_view as 
select     
ONE_AUTH_ID,
AUTH_NAME,
AUTH_NAME_TYPE,
GMT_CREATE,
GMT_MODIFIED,
(encryptor(CELL))  CELL,
CELL_VALIDATE,
DOMAIN,
SUB_DOMAIN,
DEFAULT_USER_ID,
LOGIN_PASSWORD,
CAN_LOGIN,
 ACCOUNT_PASSWORD,
(encryptor(REAL_NAME)) REAL_NAME,
(encryptor(EMAIL))  EMAIL,
(encryptor(QQ))  QQ,
 CERT_TYPE,
(encryptor(CERT_NO))  CERT_NO,
 EMAIL_VALIDATE,
 QQ_VALIDATE,
 GMT_CHANGE_IDENTITY,
 SEX,
 (encryptor(BIRTHDAY))  BIRTHDAY    from    cif_base.cif_one_auth;


grant 
select on cif_base.cif_one_auth_view to dw_user;
create view dw_user.cif_one_auth as select *  from cif_base.cif_one_auth_view with read only;



授权DW_USER用户:
grant CONNECT to DW_USER;
grant RESOURCE to DW_USER;
grant 
SELECT on QP_CORE_BASE.QPC_GROUP to DW_USER;
grant 
SELECT on QP_CORE_BASE.QPC_ROOM to DW_USER;
grant 
SELECT on QP_CORE_BASE.QPC_GROUP_USER to DW_USER;
grant 
SELECT on QP_CORE_BASE.QPC_ROOM_PURCHASE_FUND_BILL to DW_USER;
grant 
SELECT on QP_CORE_BASE.QPC_ROOM_USER to DW_USER;
grant 
SELECT on QP_CORE_BASE.QPC_GROUP_PLAYWAY_ROOM_LINK to DW_USER;
grant 
SELECT on QP_CORE_BASE.QPC_GROUP_PLAYWAY to DW_USER;
grant 
SELECT on QP_MJCORE_BASE.QPMJC_BOARD to DW_USER;
grant 
SELECT on QP_MJCORE_BASE.QPMJC_BOARD_USER_SETTLE_DETAIL to DW_USER;
grant 
SELECT on QP_MJCORE_BASE.QPMJC_BOARD_USER to DW_USER;
grant 
SELECT on QP_MJCORE_BASE.QPMJC_BOARD_USER_SETTLE to DW_USER;
grant 
SELECT on QP_CRM_BASE.QPCM_STAFF to DW_USER;
grant 
SELECT on QP_CRM_BASE.QPCM_STAFF_ROLE_LINK to DW_USER;
grant 
SELECT on QP_CRM_BASE.QPCM_STAFF_GROUP to DW_USER;
grant 
SELECT on QP_CRM_BASE.QPCM_STAFF_ROLE to DW_USER;
grant 
SELECT on CIF_BASE.CIF_USER_VIEW to DW_USER;
grant 
SELECT on GOLD_COIN_CORE_BASE.GLDCOIN_DEPOSIT_TYPE to DW_USER;
grant 
SELECT on GOLD_COIN_CORE_BASE.GLDCOIN_ACCOUNT_TYPE to DW_USER;
grant 
SELECT on GOLD_COIN_CORE_BASE.GLDCOIN_ACCOUNT to DW_USER;
grant 
SELECT on GOLD_COIN_CORE_BASE.GLDCOIN_ACCOUNT_LOG to DW_USER;
grant 
SELECT on GOLD_COIN_CORE_BASE.GLDCOIN_DEPOSIT to DW_USER;
grant UNLIMITED TABLESPACE to DW_USER;

编译失效对象:

@?/rdbms/admin/utlrp.sql
select owner,object_name,subobject_name,status 
from dba_objects 
where status='INVALID';

收集统计信息:

export NLS_LANG=American_America.AL32UTF8
@/home/oracle/cy/stats.sql


vi gstats.sh
#!/bin/bash
. /home/oracle/.bash_profile
export ORACLE_SID=qppri
sqlplus / as sysdba <<ASDEOF
set timing on
exec dbms_stats.GATHER_DATABASE_STATS(options 
=> 
'gather',degree 
=> 
16);
exit;
ASDEOF

开启监听:

lsnrctl start LISTENER

开启zabbix监控:

配置---主机----primary-new-qpdb

通知应用

导出:10分钟  采用压缩9G 导入:54min

问题:

ORA-39082: Object type ALTER_FUNCTION:"QP_MJCORE_BASE"."SPLIT" created with compilation warnings    原本就无效 ORA-39082: Object type VIEW:"CIF_BASE"."CIF_USER_VIEW" created with compilation warnings       缺少加密函数

原本无效的对象:

OWNER              OBJECT_NAME            SUBOBJECT_NAME             STATUS

------------------ --------------------- -------------------------- -------
DW_QPDB            CIF_USER_LOG                                     INVALID
DW_QPDB            CIF_USER                                         INVALID
... ...
115 rows selected.

获取dw_user的权限:

/home/oracle/cy/schemas.txt
DW_USER

/home/oracle/cy/cuser.sh
#!/bin/bash
. /home/oracle/.bash_profile
export ORACLE_SID=qppri
echo > /home/oracle/cy/cuserfin.sql
cat /home/oracle/cy/schemas.txt|while read line;
do
line=`echo $line | tr '[:lower:]' '[:upper:]'`
rm -f /home/oracle/cy/cuser1.sql
sqlplus 
-s  / as sysdba <<cyeof
set echo off
set termout off
set linesize 
1000
set pagesize 
0
set feedback off
set heading off
set trimout on
set trimspool on
set long 
999999
col cmd 
for a150
spool   
'/home/oracle/cy/cuser1.sql'
select dbms_metadata.get_ddl('USER','$line') CMD from dual;
select 
'/' from dual;
select 
'create role '||granted_role||';' CMD from dba_role_privs where 
grantee='$line' and granted_role not 
in ('SELECT_CATALOG_ROLE','CONNECT','RESOURCE','RECOVERY_CATALOG_OWNER','DBA','EXP_FULL_DATABASE','IMP_FULL_DATABASE')
union all
select 
'grant '||granted_role||' to '||grantee||' with admin option;' CMD from dba_role_privs where 
grantee='$line' and 
admin_option='YES'
union all
select 
'grant '||granted_role||' to '||grantee||';' CMD from dba_role_privs where 
grantee='$line' and 
admin_option='NO'
union all
select 
'grant '||privilege||' on '||owner||'.'||table_name||' to '||grantee||' with grant option;' CMD from dba_tab_privs where 
grantee='$line' and 
grantable='YES'
union all
select 
'grant '||privilege||' on '||owner||'.'||table_name||' to '||grantee||';' CMD from dba_tab_privs where 
grantee='$line' and 
grantable='NO'
union all
select 
'grant '||privilege||' on '||owner||'.'||table_name||' to '||grantee||' with grant option;' CMD from dba_tab_privs 
where grantee 
in (select granted_role from dba_role_privs where 
grantee='$line' and granted_role not 
in ('SELECT_CATALOG_ROLE','CONNECT','RESOURCE','RECOVERY_CATALOG_OWNER','DBA','EXP_FULL_DATABASE','IMP_FULL_DATABASE')) and 
grantable='YES'
union all
select 
'grant '||privilege||' on '||owner||'.'||table_name||' to '||grantee||';' CMD from dba_tab_privs 
where grantee 
in (select granted_role from dba_role_privs where 
grantee='$line' and granted_role not 
in ('SELECT_CATALOG_ROLE','CONNECT','RESOURCE','RECOVERY_CATALOG_OWNER','DBA','EXP_FULL_DATABASE','IMP_FULL_DATABASE')) and 
grantable='NO'
union all
select 
'grant '||privilege||' to '||grantee||' with admin option;' CMD from dba_sys_privs where 
grantee='$line' and 
admin_option='YES'
union all
select 
'grant '||privilege||' to '||grantee||';' CMD from dba_sys_privs where 
grantee='$line' and 
admin_option='NO'
union all
select 
'grant '||privilege||' to '||grantee||' with admin option;' CMD from dba_sys_privs 
where grantee 
in (select granted_role from dba_role_privs where 
grantee='$line' and granted_role not 
in ('SELECT_CATALOG_ROLE','CONNECT','RESOURCE','RECOVERY_CATALOG_OWNER','DBA','EXP_FULL_DATABASE','IMP_FULL_DATABASE')) and 
admin_option='YES'
union all
select 
'grant '||privilege||' to '||grantee||';' CMD from dba_sys_privs 
where grantee 
in (select granted_role from dba_role_privs where 
grantee='$line' and granted_role not 
in ('SELECT_CATALOG_ROLE','CONNECT','RESOURCE','RECOVERY_CATALOG_OWNER','DBA','EXP_FULL_DATABASE','IMP_FULL_DATABASE')) and 
admin_option='NO'
union all
select case when 
max_bytes=-1 then 'alter user '||username||' quota unlimited on '||tablespace_name||';' else
'alter user '||username||' quota '||max_bytes/1024/1024||'M on '||tablespace_name||';' end CMD 
from dba_ts_quotas where 
username='$line';
spool off
set feedback on
set heading on
set termout on
set echo on
exit;
cyeof
echo "------------------------------------------  SCHEMA: ${line}  BEGIN -----------------------------------------------" >> /home/oracle/cy/cuserfin.sql
echo "                                                                                                                  " >> /home/oracle/cy/cuserfin.sql
cat /home/oracle/cy/cuser1.sql >> /home/oracle/cy/cuserfin.sql
echo "                                                                                                                  " >> /home/oracle/cy/cuserfin.sql
echo "------------------------------------------  SCHEMA: ${line}  END   -----------------------------------------------" >> /home/oracle/cy/cuserfin.sql
echo "                                                                                                                  " >> /home/oracle/cy/cuserfin.sql
done

“Oracle字符集从GBK升级到Utf8的方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Oracle字符集从GBK升级到Utf8的方法是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

oracle字符集转换的方法是什么

Oracle字符集转换的方法有以下几种:1. 使用ALTER DATABASE语句来修改数据库的字符集。例如,可以使用以下语句将数据库的字符集从US7ASCII修改为AL32UTF8:ALTER DATABASE CHARACTER SET
2023-10-07

oracle更改字符集的方法是什么

要更改Oracle数据库的字符集,可以通过以下步骤来实现:确保在更改字符集之前备份数据库,以防发生意外情况。确定当前数据库的字符集。可以通过查询NLS_DATABASE_PARAMETERS视图来查看当前的字符集设置。使用ALTER DAT
oracle更改字符集的方法是什么
2024-05-14

oracle查看字符集的方法是什么

Oracle数据库中查看字符集的方法有多种,以下是其中两种常用的方法:使用SQL查询NLS_DATABASE_PARAMETERS视图:SELECT parameter, valueFROM NLS_DATABASE_PARAMETERS
oracle查看字符集的方法是什么
2024-04-09

oracle字符集查看的方法是什么

要查看Oracle数据库的字符集,可以使用以下方法之一:使用SQL查询语句查看数据库的字符集:SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTER
oracle字符集查看的方法是什么
2024-04-09

oracle字符集修改的方法是什么

在Oracle数据库中,可以通过ALTER DATABASE语句来修改数据库的字符集。以下是修改Oracle数据库字符集的步骤:首先,需要备份数据库以防止数据丢失。确认当前数据库的字符集。可以通过以下SQL语句来查询数据库的字符集:SELE
oracle字符集修改的方法是什么
2024-04-09

oracle设置中文字符集的方法是什么

要将Oracle设置为中文字符集,可以采取以下方法:1. 在安装Oracle数据库时选择中文字符集。在安装过程中,选择相应的语言和字符集,例如选择Simplified Chinese(中文简体)和AL32UTF8(Unicode UTF-8
2023-09-23

oracle建表设置字符集的方法是什么

在Oracle中,可以使用以下方法来设置表的字符集:1. 在创建表时指定字符集:```CREATE TABLE table_name (column1 datatype,column2 datatype,...)TABLESPACE tab
2023-09-23

xp升级到win7的方法是什么

这篇文章主要讲解了“xp升级到win7的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“xp升级到win7的方法是什么”吧!xp升级到win7傻瓜教程1、首先建议使用第三方软件来一键
2023-06-30

oracle数据库字符集修改的方法是什么

要修改Oracle数据库的字符集,可以通过以下步骤:确定当前数据库的字符集:可以通过查询V$NLS_PARAMETERS视图来确定当前数据库的字符集。创建数据库导出文件:在修改字符集之前,需要先备份数据库以防止数据丢失。可以使用expdp命
oracle数据库字符集修改的方法是什么
2024-04-09

oracle数据库字符集查询的方法是什么

要查询 Oracle 数据库的字符集,可以使用以下 SQL 查询:SELECT parameter, valueFROM nls_database_parametersWHERE parameter = NLS_CHARACTERSE
oracle数据库字符集查询的方法是什么
2024-04-09

plsql字符集设置的方法是什么

在PL/SQL中,可以通过设置NLS_LANG参数来指定字符集。NLS_LANG参数可以在环境变量中设置,也可以在会话级别中通过ALTER SESSION语句来设置。具体方法如下:在环境变量中设置NLS_LANG参数:在操作系统的环境变量
plsql字符集设置的方法是什么
2024-04-22

MySQL查看字符集的方法是什么

MySQL查看字符集的方法有两种:1. 使用SHOW VARIABLES语句:在MySQL命令行客户端中,输入以下命令:```SHOW VARIABLES LIKE 'character_set_%';```这将显示所有相关的字符集相关变量
2023-09-23

oracle中字符转数字的方法是什么

在Oracle数据库中,可以使用以下方法将字符转换为数字:1. 使用TO_NUMBER函数:TO_NUMBER函数将一个字符串参数转换为对应的数字类型。语法如下:```sqlTO_NUMBER(string, [format_mask],
2023-08-29

Oracle字符串拆分的方法是什么

这篇文章主要介绍了Oracle字符串拆分的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Oracle字符串拆分的方法是什么文章都会有所收获,下面我们一起来看看吧。Oracle字符串拆分比如把一列 a,
2023-07-05

oracle拆分字符串的方法是什么

Oracle数据库中可以使用SUBSTR函数来拆分字符串。SUBSTR函数的语法如下:SUBSTR(string, start_position, length)其中,string是要拆分的字符串,start_position是要开始提取
oracle拆分字符串的方法是什么
2024-04-09

linux设置字符集编码的方法是什么

查看当前系统字符集编码:使用命令`locale`查看当前系统的语言环境、字符集编码等信息。修改字符集编码:可以通过修改`/etc/locale.gen`文件来添加或删除语言环境和字符集编码。修改后需要使用命令`locale-gen`来更新系
2023-05-13

MySQL字符集性能优化的方法是什么

MySQL字符集性能优化的方法包括:选择合适的字符集:尽量选择较小的字符集,如latin1比utf8更节省存储空间和查询时间。使用合适的字段类型:根据实际需求选择合适的字段类型和长度。例如,使用VARCHAR而不是CHAR来存储变长字符。合
MySQL字符集性能优化的方法是什么
2024-04-09

编程热搜

目录