วันนี้จะ clone oracle 12c non-cdb มาที่ oracle database container จาก link นี้อะนะ => https://oracle-base.com/articles/12c/multitenant-clone-remote-pdb-or-non-cdb-12cr1
มี task ที่ต้องสร้าง database link เพื่อให้ container ใช้ dblink มา select data จาก non-cdb ได้ปรากฎว่าเจอ error
ORA-02085: การเชื่อมโยงฐานข้อมูล DBLINK.DB_DOMAIN เชื่อมต่อกับ DATABASE
ORA-02085: database link DBLINK.DOMAIN connects to DATABASE
ลองตรวจสอบค่า ทั้ง db_domain และ global_name
SELECT * FROM V$PARAMETER WHERE NAME LIKE '%global%' OR NAME LIKE '%domain%';
แก้ปัญหาดังนี้
ALTER SYSTEM SET GLOBAL_NAMES=FALSE SCOPE=BOTH;
อันนี้แก้ไขระดับ instance เลย
ALTER SESSION SET GLOBAL_NAMES=FALSE SCOPE=BOTH;
แก้ไขระดับ Session นั้นๆ ที่เข้ามาใน database source
รันที่ Source Database เพราะว่าการให้ GLOBAL_NAMES เป็น TRUE คือแสดงว่าเรากำลังใช้ database domain ลองศึกษาเพิ่มเติมได้จาก link => https://docs.oracle.com/cd/B28359_01/server.111/b28310/ds_admin001.htm หรือใน oracle support ก็มีนะ (Doc ID 210630.1)
เราก็พยายามแก้ไขนะใช้เวลา 3 ชม พยายามหาทางให้สามารถ connect ด้วย dblink ได้ ปรากฎว่าติดที่ DBName และ GLOBAL_NAME เป็นชื่อเดียวกัน (= ="
มีอะไรที่ผมเข้าใจผิดแจ้งด้วยนะครับ
Young Oracle DBA Thailand ..
Jan 26, 2016
Jan 22, 2016
สำหรับผู้เริ่มต้นศึกษา Oracle Database ไฝ่ฝันจะเป็น DBA ในอนาคตอันใกล้
เข้ามาอ่านนี่อยากเป็น DBA ใช่ไหม ?
บอกไว้ก่อนนะถ้าเลือกเดินทางนี้แล้วก่อนจะเป็น DBA ได้จริงๆ ต้องใช้เวลาฝึกเยอะครับ คิดว่าฝึกเองอย่างน้อยก็ 1 ปี ยกเว้นมีคนชี้แนะแนวทาง 2 เดือนก็เป็นแล้ว ถ้าเราขยันจริงๆ
สิ่งที่ควรรู้
- Operating System Concept ภายใน OS มันทำงานยังไง และที่สำคัญคือพวกคำสั่งพื้นฐานใน Server Linux, Window, AIX, Solaris เลือกมาสักอันนึงแล้วลองเล่นดู เช่น Linux คำสั่ง ls , df , grep , aux , find , ps และอื่นๆ ที่ List มาให้ (เท่าที่นึกได้ตอนนี้อะนะ) ควรใช้ให้เป็นให้หมดนะครับ
- CPU, Memory, Disk (I/O) คืออะไรตอนมหาลัย ไม่รู้มีสอนไหมนะ แต่พวกนี้เวลาเกิดปัญหาระบบช้าแล้ว DBA มักโดนถามก่อน ถ้าเราไม่รู้มันคืออะไรนี่ลำบากเลย โดยทั่วไป CPU จะ share กันทั้ง OS ตัว Memory จะถูกกำหนดในแต่ละ Instance และ I/O กรณีอยู่ mount point เดียวกันก็ share resource กัน ใน oracle database เราสามารถกำหนด tablespace ให้อยู่หลาย mount point ได้เพื่อให้สามารถดึงข้อมูลได้ไวขึ้น
- Shell / Batch Script เราต้องมีความรู้ในการเขียน Shell และ Batch Script ทั้งคู่นะ พวก vi ใน linux นี่ต้องรู้เลย ใช้เยอะมากสำหรับการ monitor และการผูก Job ใน linux จะใช้ crontab กัน window ผมใช้ schedule job นะ
- Database Tool สำหรับผู้มาสายขี้เกียจหน่อยก็ใช้ Tool นะ เช่น Toad ตัวนี้สุดยอดเลยตั้งแต่ใช้งานมา คือแทบจะไม่ต้องจำ command เลยครับ แต่ถ้าเจอหัวหน้าพวกสาย command line เค้าจะบ่นเอานะ เพราะเวลาเราเจอปัญหาแล้วจำ command ไม่ได้จะทำช้า หรือบางเครื่องไม่มี Tool จะลำบาก แนะนำว่าใช้ Tool ให้ชีวิตง่ายขึ้น และอย่าลืมฝึก command line ไว้แก้ปัญหาเฉพาะหน้าด้วย
- Database Parameter ภายใน database จะมี parameter สำคัญที่ใช้ตอนติดตั้งอยู่เช่น SGA, PGA, Oracle SID, Oracle Home,Session, Process และอื่นๆ ถ้าจะให้ดีเราต้องศึกษา parameter แต่ละตัวก่อนติดตั้ง
สิ่งที่ควรทำพื้นฐาน
- พิมพ์ดีดให้ได้ 35 คำ/นาที งง หละสิ ผมเป็น DBA นะครับ ! เหตุผลคือเวลาเราทำงานเพื่อความเป็น Professional ควรทำให้ได้นะ แล้ว User จะงงว่ามันพิมพ์อะไรของมัน
- Install Oracle Database ลองติดตั้ง Oracle Database เลยผิดๆถูกๆ ชั่งมันก่อน กด Next ไป ให้เราคุ้นกับเมนูก่อน เริ่มยังไงหละ
มีอะไรที่ผมเข้าใจผิดแจ้งด้วยนะครับ
Young Oracle DBA Thailand ..
บอกไว้ก่อนนะถ้าเลือกเดินทางนี้แล้วก่อนจะเป็น DBA ได้จริงๆ ต้องใช้เวลาฝึกเยอะครับ คิดว่าฝึกเองอย่างน้อยก็ 1 ปี ยกเว้นมีคนชี้แนะแนวทาง 2 เดือนก็เป็นแล้ว ถ้าเราขยันจริงๆ
สิ่งที่ควรรู้
- Operating System Concept ภายใน OS มันทำงานยังไง และที่สำคัญคือพวกคำสั่งพื้นฐานใน Server Linux, Window, AIX, Solaris เลือกมาสักอันนึงแล้วลองเล่นดู เช่น Linux คำสั่ง ls , df , grep , aux , find , ps และอื่นๆ ที่ List มาให้ (เท่าที่นึกได้ตอนนี้อะนะ) ควรใช้ให้เป็นให้หมดนะครับ
- CPU, Memory, Disk (I/O) คืออะไรตอนมหาลัย ไม่รู้มีสอนไหมนะ แต่พวกนี้เวลาเกิดปัญหาระบบช้าแล้ว DBA มักโดนถามก่อน ถ้าเราไม่รู้มันคืออะไรนี่ลำบากเลย โดยทั่วไป CPU จะ share กันทั้ง OS ตัว Memory จะถูกกำหนดในแต่ละ Instance และ I/O กรณีอยู่ mount point เดียวกันก็ share resource กัน ใน oracle database เราสามารถกำหนด tablespace ให้อยู่หลาย mount point ได้เพื่อให้สามารถดึงข้อมูลได้ไวขึ้น
- Shell / Batch Script เราต้องมีความรู้ในการเขียน Shell และ Batch Script ทั้งคู่นะ พวก vi ใน linux นี่ต้องรู้เลย ใช้เยอะมากสำหรับการ monitor และการผูก Job ใน linux จะใช้ crontab กัน window ผมใช้ schedule job นะ
- Database Tool สำหรับผู้มาสายขี้เกียจหน่อยก็ใช้ Tool นะ เช่น Toad ตัวนี้สุดยอดเลยตั้งแต่ใช้งานมา คือแทบจะไม่ต้องจำ command เลยครับ แต่ถ้าเจอหัวหน้าพวกสาย command line เค้าจะบ่นเอานะ เพราะเวลาเราเจอปัญหาแล้วจำ command ไม่ได้จะทำช้า หรือบางเครื่องไม่มี Tool จะลำบาก แนะนำว่าใช้ Tool ให้ชีวิตง่ายขึ้น และอย่าลืมฝึก command line ไว้แก้ปัญหาเฉพาะหน้าด้วย
- Database Parameter ภายใน database จะมี parameter สำคัญที่ใช้ตอนติดตั้งอยู่เช่น SGA, PGA, Oracle SID, Oracle Home,Session, Process และอื่นๆ ถ้าจะให้ดีเราต้องศึกษา parameter แต่ละตัวก่อนติดตั้ง
สิ่งที่ควรทำพื้นฐาน
- พิมพ์ดีดให้ได้ 35 คำ/นาที งง หละสิ ผมเป็น DBA นะครับ ! เหตุผลคือเวลาเราทำงานเพื่อความเป็น Professional ควรทำให้ได้นะ แล้ว User จะงงว่ามันพิมพ์อะไรของมัน
- Install Oracle Database ลองติดตั้ง Oracle Database เลยผิดๆถูกๆ ชั่งมันก่อน กด Next ไป ให้เราคุ้นกับเมนูก่อน เริ่มยังไงหละ
- ไป download software ก่อนเข้า www.oracle.com เลยแล้วหาดูนะเมนู download อะ
- เลือก OS ที่จะลง Window, Linux ลองเครื่องตัวเองก่อนก็ได้
- ณ ตอนนี้มี version 11g และ 12c ลอง 11g ก่อนก็ดี
- กดติดตั้งแล้วค่อยกลับไปอ่านหัวข้อ Database Parameter
เยอะ .. ความขี้เกียจมาแล้ว .. บายจ้า เลิกงานละ เราตรงเวลาเสมอ
Young Oracle DBA Thailand ..
Select data จาก view ไม่ได้ ทั้งที่มีสิทธิ
ปัญหาคือ select data จาก view ไม่ได้ ทั้งที่มีสิทธิ (ทำไมเกิดไรขึ้น ?)
เพิ่มสิทธิดู view จากการสั่งแบบนี้
CMD> SQLPLUS / AS SYSDBA
SQL> GRANT SELECT ON A.VIEW TO B;
ลอง select data ดูสิ
SQL> SELECT * FROM A.VIEW;
ไม่ได้ (= ="
แก้ปัญหาดังนี้
- ดูที่ A.VIEW ว่ามัน select table , view หรือ execute procedure , fuction ที่ schema อื่นอีกบ้างไหม คือถ้าใช่เราต้อง Grant แบบ "WITH GRANT OPTION" ที่ object ของ schema อื่นด้านใน A.View ทั้งหมดให้ A สามารถส่งสิทธินี้ให้ B ดูได้ด้วยแค่นั้นแหละ
ตัวอย่างนะ
GRANT SELECT ON C.TABLE TO A WITH GRANT OPTION;
มีอะไรที่ผมเข้าใจผิดแจ้งด้วยนะครับ
Young Oracle DBA Thailand ..
เพิ่มสิทธิดู view จากการสั่งแบบนี้
CMD> SQLPLUS / AS SYSDBA
SQL> GRANT SELECT ON A.VIEW TO B;
ลอง select data ดูสิ
SQL> SELECT * FROM A.VIEW;
ERROR at line 1:
ORA-01031: "insufficient privileges"
ไม่ได้ (= ="
แก้ปัญหาดังนี้
- ดูที่ A.VIEW ว่ามัน select table , view หรือ execute procedure , fuction ที่ schema อื่นอีกบ้างไหม คือถ้าใช่เราต้อง Grant แบบ "WITH GRANT OPTION" ที่ object ของ schema อื่นด้านใน A.View ทั้งหมดให้ A สามารถส่งสิทธินี้ให้ B ดูได้ด้วยแค่นั้นแหละ
ตัวอย่างนะ
GRANT SELECT ON C.TABLE TO A WITH GRANT OPTION;
มีอะไรที่ผมเข้าใจผิดแจ้งด้วยนะครับ
Young Oracle DBA Thailand ..
Jul 8, 2011
Can't select data from view [ORA-01031: "insufficient privileges"]
Hello i'm new DBA this is my first article
Problem : I can't select data from view
first i run this command
SQLPLUS / AS SYSDBA
SQL> GRANT SELECT ON SCHEMA_A.VIEWNAME TO SCHEMA_B;
second login to schama B and run this command
SQL> SELECT * FROM SCHEMA_A.VIEWNAME;
Solution
- Verify this SCHEMA_A.VIEWNAME is select to table , view or execute procedure , funtion in another schema
example
GRANT SELECT ON SCHEMA_C.TABLENAME TO SCHEMA_A WITH GRANT OPTION;
hope this helps
Problem : I can't select data from view
first i run this command
SQLPLUS / AS SYSDBA
SQL> GRANT SELECT ON SCHEMA_A.VIEWNAME TO SCHEMA_B;
second login to schama B and run this command
SQL> SELECT * FROM SCHEMA_A.VIEWNAME;
ERROR at line 1:
ORA-01031: "insufficient privileges"
Solution
- Verify this SCHEMA_A.VIEWNAME is select to table , view or execute procedure , funtion in another schema
- If "yes" you must grant "WITH GRANT OPTION" to SCHEMA_A it will grant to schema B too
example
GRANT SELECT ON SCHEMA_C.TABLENAME TO SCHEMA_A WITH GRANT OPTION;
hope this helps
Subscribe to:
Posts (Atom)