User Tools

Site Tools


管理oracle

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
管理oracle [2019/12/26 04:13]
jordan [服务器端备份与还原:使用expdp和impdp进行备份与还原]
管理oracle [2023/03/08 16:09] (current)
xujianglong ↷ Page moved from 内部资料:管理oracle to 管理oracle
Line 1: Line 1:
-启动与停止Oracle+====== 启动与停止Oracle ======
  
-Oracle配置+====== Oracle配置 ======
  
-Oracle备份与还原+====== Oracle备份与还原 ======
  
-## 客户端备份与还原:使用exp与imp进行备份与还原+===== 客户端备份与还原:使用exp与imp进行备份与还原 =====
  
 使用imp和exp前,需要先执行下面的命令设置编码格式 使用imp和exp前,需要先执行下面的命令设置编码格式
  
-```bash+<code bash>
 export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
-``` +</code> 
- +<code bash>
-```bash+
 exp <user_id>/<password> file=<file_path> exp <user_id>/<password> file=<file_path>
  
Line 19: Line 18:
 #imp前先确认该用户的所有表、约束、触发器、存储过程、视图、序列等都已经删除 #imp前先确认该用户的所有表、约束、触发器、存储过程、视图、序列等都已经删除
 imp <user_id>/<password> fromuser=<origin_username> touser=<target_username> file=<dmp_file_path> imp <user_id>/<password> fromuser=<origin_username> touser=<target_username> file=<dmp_file_path>
-```+</code> 
 +===== sqlplus执行sql脚本 ===== 
 + 
 +打开sqlplus,连接后执行''%%@<file_name_with_file_path>%%''
  
-## sqlplus执行sql脚本 +<code bash>
-打开sqlplus,连接后执行```@<file_name_with_file_path>``` +
-```bash+
 sqlplus /nolog sqlplus /nolog
 +# 最好在sqlplus中先执行spool <filename>以将输出重定向到文件,执行完sql后执行spool off关闭重定向
 sql>@<file_name_with_path> sql>@<file_name_with_path>
-```+</code> 
 +===== 服务器端备份与还原:使用expdp和impdp进行备份与还原 =====
  
-## 服务器端备份与还原使用expdpimpdp进行备份与还原+参考[[https://blog.51cto.com/shitou118/310033|expdp impdp 数据库导入导出命令详解-石头博客-51CTO博客]]
  
-参考:[expdp impdp 数据库导入导出命令详解-石头博客-51CTO博客](https://blog.51cto.com/shitou118/310033) +<code bash>
-```bash+
 # 导出 # 导出
 expdp <username>/<password>@<host>:<port>/<sid> schemas=<username> dumpfile=expdp.dmp DIRECTORY=DATA_PUMP_DIR; expdp <username>/<password>@<host>:<port>/<sid> schemas=<username> dumpfile=expdp.dmp DIRECTORY=DATA_PUMP_DIR;
 # 导入 # 导入
 impdp <username>/<password>@<host>:<port>/<sid> DIRECTORY=DATA_PUMP_DIR dumpfile=expdp.dmp schemas=<username>; impdp <username>/<password>@<host>:<port>/<sid> DIRECTORY=DATA_PUMP_DIR dumpfile=expdp.dmp schemas=<username>;
-```+</code> 
 +====== Oracle用户管理 ======
  
-# Oracle用户管理+===== 新建用户 =====
  
-## 新建用户+参考[[https://chartio.com/resources/tutorials/how-to-create-a-user-and-grant-permissions-in-oracle/|How to Create a User and Grant Permissions in Oracle]]
  
-参考[How to Create a User and Grant Permissions in Oracle](https://chartio.com/resources/tutorials/how-to-create-a-user-and-grant-permissions-in-oracle/+<code sql>
- +
-```sql+
 create user <user_name> identified by <password> default tablespace <tablespace_name>; --创建新用户,并指定默认表空间(可以不指定),password含有@符号时会报错,如果希望包含@符号,不清楚如何实现 create user <user_name> identified by <password> default tablespace <tablespace_name>; --创建新用户,并指定默认表空间(可以不指定),password含有@符号时会报错,如果希望包含@符号,不清楚如何实现
 grant connect, resource, dba to <user_name>; --为用户授予权限 grant connect, resource, dba to <user_name>; --为用户授予权限
-``` +</code> 
- +===== 删除用户 =====
-## 删除用户+
  
-```sql+<code sql>
 drop user <user_name>; --禁止删除sys用户和system用户 drop user <user_name>; --禁止删除sys用户和system用户
-```+</code> 
 +====== Oracle表空间管理 ======
  
-# Oracle表空间管理+===== 新建表空间 =====
  
-## 新建表空间 +<code sql>
- +
-```sql+
 create tablespace <tablespace_name> datafile '<file_path>' size <size_in_m_or_g> autoextend on; --创建自动扩展的表空间 create tablespace <tablespace_name> datafile '<file_path>' size <size_in_m_or_g> autoextend on; --创建自动扩展的表空间
-```+</code> 
 +===== 修改表的表空间 =====
  
-命令行重启Oracle +详见:[[https://stackoverflow.com/questions/18327671/how-to-move-table-from-one-tablespace-to-another-in-oracle-11g|oracle11g - How to move table from one tablespace to another in oracle 11g - Stack Overflow]] 
-```bash+ 
 +<code sql> 
 +ALTER TABLE <TABLE NAME to be moved> MOVE TABLESPACE <destination TABLESPACE NAME>; --移动到新的表空间 
 +alter index <owner>."<index_name>" rebuild; --移动表空间会导致索引失效,因此需要重建索引 
 +</code> 
 +====== 命令行重启Oracle ====== 
 + 
 +<code bash>
 su oracle --登录  su oracle --登录 
 sqlplus /nolog --进入SQLPLUS sqlplus /nolog --进入SQLPLUS
-``` +</code> 
- +<code sql>
-```sql+
 connect / as sysdba --切换管理员登录 connect / as sysdba --切换管理员登录
 shutdown --关闭 shutdown --关闭
 startup  --启动 startup  --启动
-``` +</code> 
- +====== 数据库对象解锁 ======
-数据库对象解锁+
  
-```sql+<code sql>
 --数据库对象解锁 --数据库对象解锁
 SELECT B.Owner, B.Object_Name, A.Oracle_Username, A.OS_User_Name   SELECT B.Owner, B.Object_Name, A.Oracle_Username, A.OS_User_Name  
Line 87: Line 91:
 ); );
 ALTER SYSTEM KILL SESSION '<session>, <session>'; ALTER SYSTEM KILL SESSION '<session>, <session>';
-```+</code> 
 +====== 删除表、视图、序列等 ======
  
-# 删除表、视图、序列等 +<code sql>
-```sql+
 BEGIN BEGIN
    FOR cur_rec IN (SELECT object_name, object_type    FOR cur_rec IN (SELECT object_name, object_type
Line 130: Line 134:
    END LOOP;    END LOOP;
 END; END;
-```+</code> 
 +====== 解决数据库系统序列值比最大id小导致无法插入数据的问题 ======
  
-常见Oracle管理问题+<code sql> 
 +--解决数据库系统序列值比最大id小导致无法插入数据的问题 
 +declare 
 +   v_rlt number(8):=1; 
 + begin 
 +    <<fst_loop>> 
 +    LOOP 
 +      SELECT  "TQYDZY"."ISEQ$$_92176".nextval INTO v_rlt FROM dual; 
 +      dbms_output.put_line('v_rlt = '||v_rlt); 
 +      exit fst_loop when v_rlt > 5242;--序列的期望值 
 +    end loop; 
 +      dbms_output.put_line('LOOP循环已经结束!'); 
 + end; 
 +</code> 
 +====== 常见Oracle管理问题 ======
  
-## 没有任何数据的表格不能导出的解决办法+===== 没有任何数据的表格不能导出的解决办法 =====
  
 自Oracle11g R2开始,插入第一条数据才分配空间,所以没有数据的表默认没有分配空间,使用exp命令无法导出这些表。 自Oracle11g R2开始,插入第一条数据才分配空间,所以没有数据的表默认没有分配空间,使用exp命令无法导出这些表。
  
-解决办法是执行下面的sql得到修改表的空间分配方案的sql命令,再执行这些sql([点击查看更多信息](https://confluence.atlassian.com/kb/exporting-a-database-does-not-export-some-tables-744326156.html)):+解决办法是执行下面的sql得到修改表的空间分配方案的sql命令,再执行这些sql([[https://confluence.atlassian.com/kb/exporting-a-database-does-not-export-some-tables-744326156.html|点击查看更多信息]]):
  
-```sql+<code sql>
 BEGIN BEGIN
     FOR i IN (SELECT table_name FROM user_tables WHERE segment_created = 'NO') LOOP     FOR i IN (SELECT table_name FROM user_tables WHERE segment_created = 'NO') LOOP
Line 146: Line 165:
     END LOOP;     END LOOP;
 END; END;
-```+</code> 
管理oracle.1577304784.txt.gz · Last modified: 2021/02/10 21:29 (external edit)